{
  "openapi": "3.0.0",
  "info": {
    "version": "3.0.0",
    "title": "Didit Verification API",
    "description": "पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।"
  },
  "servers": [
    {
      "url": "https://verification.didit.me"
    }
  ],
  "tags": [],
  "paths": {
    "/system/healthcheck": {
      "get": {
        "summary": "सेवा हेल्थचेक (सार्वजनिक, गैर-प्रमाणीकृत)",
        "description": "सार्वजनिक अनअथेंटिकेटेड लाइवनेस प्रोब। सेवा, DB, कैश और ब्रोकर ठीक होने पर `{status: \"ok\", timestamp}` के साथ `HTTP 200` लौटाता है।",
        "operationId": "get_system_healthcheck",
        "x-didit-sdk": {
          "resource": "system",
          "method": "healthcheck",
          "auth": "public",
          "server": false
        },
        "tags": [
          "System"
        ],
        "security": [
          {}
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "सेवा स्वस्थ है और अनुरोध स्वीकार कर रही है। बॉडी हमेशा `{\"status\": \"ok\", \"timestamp\": \"<iso8601>\"}` होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "timestamp"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok"
                      ],
                      "description": "लाइवनेस मार्कर। 200 रिस्पॉन्स पर हमेशा लिटरल स्ट्रिंग `\"ok\"`।",
                      "example": "ok"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time",
                      "description": "वह सर्वर समय जिस पर हेल्थचेक का मूल्यांकन किया गया था, मिलीसेकंड सटीकता और `Z` (UTC) प्रत्यय के साथ ISO 8601 में।",
                      "example": "2026-04-21T16:42:50.445Z"
                    }
                  }
                },
                "examples": {
                  "Healthy": {
                    "summary": "सेवा चालू है",
                    "value": {
                      "status": "ok",
                      "timestamp": "2026-04-21T16:42:50.445Z"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "सेवा अस्वस्थ है — कॉन्फ़िगर किए गए हेल्थ-चेक प्लगइन्स (डेटाबेस, कैश, ब्रोकर) में से एक विफल हो रहा है। रिस्पॉन्स बॉडी जानबूझकर न्यूनतम रखी गई है; HTTP स्टेटस ही निर्णायक संकेत है। एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "5XX": {
            "description": "सत्यापन सेवा की स्थिति खराब है या उस तक पहुँचा नहीं जा सकता। किसी भी गैर-2xx रिस्पॉन्स को \"अस्वस्थ\" मानें और एक्सपोनेंशियल बैकऑफ़ के साथ पुनः प्रयास करें।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -i https://verification.didit.me/system/healthcheck"
          },
          {
            "lang": "Python",
            "label": "Python (requests)",
            "source": "import requests\n\nresp = requests.get(\"https://verification.didit.me/system/healthcheck\", timeout=5)\nresp.raise_for_status()\nprint(resp.json())  # {'status': 'ok', 'timestamp': '2026-04-21T16:42:50.445Z'}"
          },
          {
            "lang": "JavaScript",
            "label": "Node.js (fetch)",
            "source": "const res = await fetch(\"https://verification.didit.me/system/healthcheck\");\nif (!res.ok) throw new Error(`Didit unhealthy: ${res.status}`);\nconst body = await res.json();\nconsole.log(body); // { status: 'ok', timestamp: '2026-04-21T16:42:50.445Z' }"
          }
        ]
      }
    },
    "/v3/email/risk/": {
      "post": {
        "summary": "ईमेल पते का जोखिम स्कोर निकालें",
        "description": "बिना OTP भेजे डिलिवरेबिलिटी, डिस्पोज़ेबल-पता, ब्रीच, क्रॉस-सत्र मिलान, और सामान्यीकृत जोखिम-इंटेलिजेंस संकेत लौटाएं। यह endpoint एक API सत्र बनाता है और इसकी id को `request_id` के रूप में लौटाता है।\n\n**निर्णय।** शीर्ष-स्तरीय `status`, `email.status` को दर्शाता है। यह सामान्यतः `Approved` होता है; जोखिम मूल्यांकन के परिणामस्वरूप `In Review` या `Declined` हो सकता है।\n\n**कम्पैटिबिलिटी एलियास।** लाइव रिस्पॉन्स सामान्यीकृत इंटेलिजेंस ऑब्जेक्ट को `email.email_intelligence` और `email.enrichment` दोनों के रूप में प्रस्तुत करते हैं। इनके मान एक समान हैं। नए इंटीग्रेशन `email.enrichment` को पढ़ सकते हैं। जब कोई उपयोग योग्य इंटेलिजेंस डेटा वापस नहीं आता है, तो दोनों कुंजियाँ अनुपस्थित होती हैं।\n\n**बिलिंग।** लाइव कॉल Email Risk API मूल्य निर्धारण का उपयोग करती हैं। लुकअप शुरू होते ही अनुरोध बिल योग्य हो जाता है, भले ही कुछ बेस्ट-एफ़र्ट फ़ील्ड अनुपलब्ध हों।\n\n**सैंडबॉक्स।** सैंडबॉक्स कुंजियाँ ईमेल भेजे बिना, क्रेडिट खर्च किए बिना, सत्र बनाए बिना या Networks में योगदान दिए बिना अनुरोध को मान्य करती हैं और डिटरमिनिस्टिक स्वीकृत डेटा लौटाती हैं।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं - यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** POST/PATCH/DELETE endpoints पर प्रति API कुंजी प्रति मिनट 300 अनुरोधों का साझा राइट बजट (लेन-देन निर्माण और इवेंट इनजेशन के लिए 600 अनुरोधों का अलग बजट है)।\n\n**सोशल फ़ुटप्रिंट।** `email_social` ब्लॉक जोड़ने के लिए `enable_social` को `true` पर सेट करें: ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पता पंजीकृत है, प्रति-श्रेणी गणना और उपलब्ध प्रोफ़ाइल विवरण के साथ। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जाँच की गई थी और यह पता उनमें से किसी पर भी नहीं मिला - एक मान्य, बिल योग्य उत्तर। जब ऐड-ऑन का अनुरोध नहीं किया गया था या जाँच पूरी नहीं हो सकी, तो यह ब्लॉक अनुपस्थित होता है, और उस स्थिति में इसका बिल नहीं लिया जाता है। बिलिंग इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `email_social` इकाई जोड़ती है।",
        "operationId": "post_v3email_risk",
        "x-didit-sdk": {
          "resource": "email",
          "method": "assess_risk",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/email/risk/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email\": \"alice@example.com\",\n    \"country_code\": \"US\",\n    \"vendor_data\": \"lead-123\",\n    \"metadata\": {\"source\": \"signup_prescreen\"}\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.email.assess_risk(\n    email=\"alice@example.com\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.email.assessRisk({\n  email: \"alice@example.com\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.AssessRisk(ctx, didit.EmailRiskRequest{\n\tEmail: \"alice@example.com\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.EmailRiskRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.email().assessRisk(EmailRiskRequest.builder()\n        .email(\"alice@example.com\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->email->assessRisk([\n    'email' => 'alice@example.com',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.email.assess_risk(email: \"alice@example.com\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Email.AssessRiskAsync(new EmailRiskRequest\n{\n    Email = \"alice@example.com\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailRiskRequest"
              },
              "examples": {
                "Minimal": {
                  "summary": "डिफ़ॉल्ट मानों के साथ किसी पते का स्कोर निकालें",
                  "value": {
                    "email": "alice@example.com"
                  }
                },
                "Full context": {
                  "summary": "सिग्नलों, देश संकेत और सहसंबंध ID के साथ स्कोरिंग करें",
                  "value": {
                    "email": "alice@example.com",
                    "country_code": "US",
                    "signals": {
                      "ip": "192.0.2.1",
                      "device_id": "8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2",
                      "device_platform": "web",
                      "os_version": "14.4",
                      "app_version": "1.2.34",
                      "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15"
                    },
                    "vendor_data": "lead-123",
                    "metadata": {
                      "source": "signup_prescreen"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जोखिम मूल्यांकन पूरा हो गया। निर्णय के लिए `status` का निरीक्षण करें; पूर्ण लुकअप के लिए HTTP हमेशा `200` होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailRiskResponse"
                },
                "examples": {
                  "Clean address": {
                    "summary": "डेटा उल्लंघन के जोखिम से मुक्त डिलीवरी योग्य पता",
                    "value": {
                      "request_id": "82397be9-5921-4970-a979-2d5b43e08b33",
                      "status": "Approved",
                      "email": {
                        "status": "Approved",
                        "email": "alice@example.com",
                        "is_breached": false,
                        "breaches": [],
                        "is_disposable": false,
                        "is_undeliverable": false,
                        "verification_attempts": 0,
                        "verified_at": null,
                        "warnings": [],
                        "lifecycle": [],
                        "matches": [],
                        "email_intelligence": {
                          "score": 4.0,
                          "deliverable": "high",
                          "breach_risk_level": "Low",
                          "breach_risk_index": 4,
                          "is_recent_breach": false,
                          "is_frequent_breached": false,
                          "is_disposable": false,
                          "is_free_domain": false,
                          "is_breached": false,
                          "no_of_breaches": 0,
                          "reason_codes": []
                        },
                        "enrichment": {
                          "score": 4.0,
                          "deliverable": "high",
                          "breach_risk_level": "Low",
                          "breach_risk_index": 4,
                          "is_recent_breach": false,
                          "is_frequent_breached": false,
                          "is_disposable": false,
                          "is_free_domain": false,
                          "is_breached": false,
                          "no_of_breaches": 0,
                          "reason_codes": []
                        }
                      },
                      "vendor_data": "lead-123",
                      "metadata": {
                        "source": "signup_prescreen"
                      },
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  },
                  "Breached address": {
                    "summary": "पता ज्ञात उल्लंघनों में पाया गया",
                    "value": {
                      "request_id": "d1e5c2a8-6f30-4c1a-8b2d-3e4f5a6b7c8d",
                      "status": "In Review",
                      "email": {
                        "status": "In Review",
                        "email": "bob@example.org",
                        "is_breached": true,
                        "breaches": [
                          {
                            "name": "ExampleBreach2023",
                            "domain": "example.org",
                            "breach_date": "2023-06-01",
                            "breach_emails_count": 1200000,
                            "description": "A data breach affecting example.org accounts.",
                            "logo_path": "https://logos.example.org/example.png",
                            "data_classes": [
                              "email_addresses",
                              "passwords"
                            ],
                            "is_verified": true
                          }
                        ],
                        "is_disposable": false,
                        "is_undeliverable": false,
                        "verification_attempts": 0,
                        "verified_at": null,
                        "warnings": [],
                        "lifecycle": [],
                        "matches": [],
                        "email_intelligence": {
                          "score": 58.0,
                          "deliverable": "high",
                          "breach_risk_level": "High",
                          "breach_risk_index": 72,
                          "is_recent_breach": true,
                          "is_frequent_breached": true,
                          "is_disposable": false,
                          "is_free_domain": true,
                          "is_breached": true,
                          "no_of_breaches": 4,
                          "reason_codes": [
                            {
                              "code": "IR-F784B630",
                              "direction": "risk",
                              "message": "Email's digital footprint diversity is Very Low",
                              "impact_level": "low"
                            }
                          ]
                        },
                        "enrichment": {
                          "score": 58.0,
                          "deliverable": "high",
                          "breach_risk_level": "High",
                          "breach_risk_index": 72,
                          "is_recent_breach": true,
                          "is_frequent_breached": true,
                          "is_disposable": false,
                          "is_free_domain": true,
                          "is_breached": true,
                          "no_of_breaches": 4,
                          "reason_codes": [
                            {
                              "code": "IR-F784B630",
                              "direction": "risk",
                              "message": "Email's digital footprint diversity is Very Low",
                              "impact_level": "low"
                            }
                          ]
                        }
                      },
                      "vendor_data": "lead-125",
                      "metadata": null,
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/EmailRiskValidationError"
          },
          "403": {
            "$ref": "#/components/responses/RiskPermissionDenied"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/ip/risk/": {
      "post": {
        "summary": "IP पते का जोखिम स्कोर निकालें",
        "description": "दिए गए IP पते के लिए जियोलोकेशन, नेटवर्क स्वामित्व, VPN/Tor और डेटा-सेंटर फ़्लैग, थ्रेट डेटा और `country_mismatch` लौटाएं। यह endpoint एक API सत्र बनाता है और इसकी id को `request_id` के रूप में लौटाता है।\n\n**निर्णय।** जब निर्धारित देश `claimed_country` के साथ मेल नहीं खाता, या जब पता VPN, Tor या डेटा-सेंटर इंफ़्रास्ट्रक्चर से जुड़ा होता है, तो `status` `In Review` होता है। अन्यथा यह `Approved` होता है।\n\n**बेस्ट एफ़र्ट।** IP एनरिचमेंट बेस्ट एफ़र्ट है। यदि कोई एनरिचमेंट स्रोत उपयोग योग्य डेटा नहीं लौटाता है, तो endpoint `ip.ip_address: null`, `ip.country_mismatch: null`, और एक खाली `ip.threat` ऑब्जेक्ट के साथ स्वीकृत रिस्पॉन्स लौटाता है।\n\n**बिलिंग।** लाइव कॉल IP Risk API मूल्य निर्धारण का उपयोग करती हैं। लुकअप शुरू होते ही अनुरोध बिल योग्य हो जाता है।\n\n**सैंडबॉक्स।** सैंडबॉक्स कुंजियाँ क्रेडिट खर्च किए बिना, सत्र बनाए बिना या Networks में योगदान दिए बिना अनुरोध को मान्य करती हैं और डिटरमिनिस्टिक स्वीकृत डेटा लौटाती हैं।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं - यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** POST/PATCH/DELETE endpoints पर प्रति API कुंजी प्रति मिनट 300 अनुरोधों का साझा राइट बजट (लेन-देन निर्माण और इवेंट इनजेशन के लिए 600 अनुरोधों का अलग बजट है)।",
        "operationId": "post_v3ip_risk",
        "x-didit-sdk": {
          "resource": "ip",
          "method": "assess_risk",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/ip/risk/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"ip_address\": \"8.8.8.8\",\n    \"claimed_country\": \"ESP\",\n    \"user_agent\": \"Mozilla/5.0\",\n    \"vendor_data\": \"lead-123\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.ip.assess_risk(\n    ip_address=\"8.8.8.8\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.ip.assessRisk({\n  ip_address: \"8.8.8.8\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IP.AssessRisk(ctx, didit.IPRiskRequest{\n\tIPAddress: \"8.8.8.8\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.IPRiskRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.ip().assessRisk(IPRiskRequest.builder()\n        .ipAddress(\"8.8.8.8\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->ip->assessRisk([\n    'ip_address' => '8.8.8.8',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.ip.assess_risk(ip_address: \"8.8.8.8\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Ip.AssessRiskAsync(new IPRiskRequest\n{\n    IpAddress = \"8.8.8.8\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IPRiskRequest"
              },
              "examples": {
                "Minimal": {
                  "summary": "डिफ़ॉल्ट मानों के साथ किसी पते का स्कोर निकालें",
                  "value": {
                    "ip_address": "8.8.8.8"
                  }
                },
                "With claimed country": {
                  "summary": "बेमेल का पता लगाने के लिए दावा किए गए देश के साथ स्कोरिंग करें",
                  "value": {
                    "ip_address": "8.8.8.8",
                    "claimed_country": "ESP",
                    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15",
                    "vendor_data": "lead-123"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जोखिम मूल्यांकन पूरा हो गया। निर्णय के लिए `status` का निरीक्षण करें; पूर्ण लुकअप के लिए HTTP हमेशा `200` होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IPRiskResponse"
                },
                "examples": {
                  "Clean residential IP": {
                    "summary": "आवासीय पता, दावा किया गया देश मेल खाता है",
                    "value": {
                      "request_id": "9a96ed2a-721e-4b86-8cbf-d61eda529279",
                      "status": "Approved",
                      "ip": {
                        "status": "Approved",
                        "ip_address": "192.0.2.10",
                        "ip_country": "Spain",
                        "ip_country_code": "ES",
                        "ip_state": "Madrid",
                        "ip_city": "Madrid",
                        "latitude": 40.4168,
                        "longitude": -3.7038,
                        "isp": "Example Telecom",
                        "organization": "Example Telecom SA",
                        "is_vpn_or_tor": false,
                        "is_data_center": false,
                        "time_zone": "Europe/Madrid",
                        "time_zone_offset": "+0200",
                        "asn_number": 3352,
                        "asn_organization": "EXAMPLE-TELECOM",
                        "connection_type": "broadband",
                        "carrier": "Example Telecom",
                        "proxy_type": null,
                        "claimed_country": "ESP",
                        "country_mismatch": false,
                        "threat": {}
                      },
                      "vendor_data": "lead-123",
                      "metadata": null,
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  },
                  "Datacenter mismatch": {
                    "summary": "डेटा-सेंटर का पता जो दावा किए गए देश के साथ विरोधाभासी है",
                    "value": {
                      "request_id": "5b1d4e9a-3c7b-4f8e-9a2d-1b0c9d8e7f6a",
                      "status": "In Review",
                      "ip": {
                        "status": "In Review",
                        "ip_address": "8.8.8.8",
                        "ip_country": "United States",
                        "ip_country_code": "US",
                        "ip_state": "California",
                        "ip_city": "Mountain View",
                        "latitude": 37.386,
                        "longitude": -122.0838,
                        "isp": "Google",
                        "organization": "Google LLC",
                        "is_vpn_or_tor": true,
                        "is_data_center": true,
                        "time_zone": "America/Los_Angeles",
                        "time_zone_offset": "-0700",
                        "asn_number": 15169,
                        "asn_organization": "GOOGLE, US",
                        "connection_type": "hosting",
                        "carrier": null,
                        "proxy_type": "VPN",
                        "claimed_country": "ESP",
                        "country_mismatch": true,
                        "threat": {
                          "is_proxy": true,
                          "is_data_center": true,
                          "is_tor": false
                        }
                      },
                      "vendor_data": "lead-126",
                      "metadata": null,
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/IPRiskValidationError"
          },
          "403": {
            "$ref": "#/components/responses/RiskPermissionDenied"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/phone/risk/": {
      "post": {
        "summary": "फ़ोन नंबर का जोखिम स्कोर निकालें",
        "description": "किसी फ़ोन नंबर को रीसॉल्व करें और OTP भेजे बिना कैरियर, लाइन-प्रकार, पोर्टिंग, डिस्पोज़ेबल-नंबर, क्रॉस-सत्र मिलान और नॉर्मलाइज़्ड जोखिम-इंटेलिजेंस संकेत प्राप्त करें। यह endpoint एक API सत्र बनाता है और उसकी id को `request_id` के रूप में लौटाता है।\n\n**निर्णय।** शीर्ष-स्तरीय `status`, `phone.status` को दर्शाता है। यह आम तौर पर `Approved` होता है; जोखिम मूल्यांकन से `In Review` या `Declined` प्राप्त हो सकता है।\n\n**कंपैटिबिलिटी उपनाम।** लाइव रिस्पॉन्स नॉर्मलाइज़्ड इंटेलिजेंस ऑब्जेक्ट को `phone.phone_intelligence` और `phone.enrichment` दोनों के रूप में प्रदर्शित करते हैं। इनके मान एक समान होते हैं। नए इंटीग्रेशन `phone.enrichment` को पढ़ सकते हैं। जब कोई उपयोगी इंटेलिजेंस डेटा वापस नहीं मिलता है, तो दोनों कुंजियाँ अनुपस्थित होती हैं।\n\n**बिलिंग।** लाइव कॉल Phone Risk API मूल्य निर्धारण का उपयोग करते हैं। लुकअप शुरू होते ही अनुरोध बिल योग्य हो जाता है, भले ही कुछ सर्वोत्तम-प्रयास फ़ील्ड अनुपलब्ध हों।\n\n**सैंडबॉक्स।** सैंडबॉक्स कुंजियाँ अनुरोध को मान्य करती हैं और बिना OTP भेजे, क्रेडिट का उपभोग किए, सत्र बनाए या Networks में योगदान दिए नियतात्मक स्वीकृत डेटा लौटाती हैं।\n\n**प्रमाणीकरण।** `x-api-key` में अपने एप्लिकेशन की API कुंजी भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं - यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** POST/PATCH/DELETE endpoints पर प्रति API कुंजी प्रति मिनट 300 अनुरोधों का साझा राइट बजट (लेन-देन निर्माण और इवेंट अंतर्ग्रहण का 600 का एक अलग बजट होता है)।\n\n**सोशल फ़ुटप्रिंट।** `phone_social` ब्लॉक जोड़ने के लिए `enable_social` को `true` पर सेट करें: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह नंबर पंजीकृत है, प्रति-श्रेणी गणना और उपलब्ध प्रोफ़ाइल विवरण के साथ। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जाँच की गई थी और नंबर उनमें से किसी पर भी नहीं मिला - एक मान्य, बिल योग्य उत्तर। जब ऐड-ऑन का अनुरोध नहीं किया गया था या जाँच पूरी नहीं की जा सकी थी, तो यह ब्लॉक अनुपस्थित रहता है, और उस स्थिति में इसका बिल नहीं लिया जाता है। बिलिंग इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `phone_social` यूनिट जोड़ती है।",
        "operationId": "post_v3phone_risk",
        "x-didit-sdk": {
          "resource": "phone",
          "method": "assess_risk",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/phone/risk/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"phone_number\": \"+14155552671\",\n    \"country_code\": \"US\",\n    \"vendor_data\": \"lead-123\",\n    \"metadata\": {\"source\": \"signup_prescreen\"}\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.phone.assess_risk(\n    phone_number=\"+14155552671\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.phone.assessRisk({\n  phone_number: \"+14155552671\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.AssessRisk(ctx, didit.PhoneRiskRequest{\n\tPhoneNumber: \"+14155552671\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.PhoneRiskRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.phone().assessRisk(PhoneRiskRequest.builder()\n        .phoneNumber(\"+14155552671\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->phone->assessRisk([\n    'phone_number' => '+14155552671',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.phone.assess_risk(phone_number: \"+14155552671\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Phone.AssessRiskAsync(new PhoneRiskRequest\n{\n    PhoneNumber = \"+14155552671\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PhoneRiskRequest"
              },
              "examples": {
                "Minimal": {
                  "summary": "डिफ़ॉल्ट मानों के साथ किसी संख्या का स्कोर निकालें",
                  "value": {
                    "phone_number": "+14155552671"
                  }
                },
                "Full context": {
                  "summary": "सिग्नलों, देश संकेत और सहसंबंध ID के साथ स्कोरिंग करें",
                  "value": {
                    "phone_number": "+14155552671",
                    "country_code": "US",
                    "signals": {
                      "ip": "192.0.2.1",
                      "device_id": "8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2",
                      "device_platform": "ios",
                      "device_model": "iPhone17,2",
                      "os_version": "18.0.1",
                      "app_version": "1.2.34",
                      "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.0 Mobile/15E148 Safari/604.1"
                    },
                    "vendor_data": "lead-123",
                    "metadata": {
                      "source": "signup_prescreen"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जोखिम मूल्यांकन पूरा हो गया। निर्णय के लिए `status` का निरीक्षण करें; पूर्ण लुकअप के लिए HTTP हमेशा `200` होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneRiskResponse"
                },
                "examples": {
                  "Clean mobile number": {
                    "summary": "इंटेलिजेंस कवरेज वाला साफ़ मोबाइल नंबर",
                    "value": {
                      "request_id": "4fd09d2e-9bc9-4c4e-9c46-7f625ac0ab62",
                      "status": "Approved",
                      "phone": {
                        "status": "Approved",
                        "phone_number_prefix": "+1",
                        "phone_number": "4155552671",
                        "full_number": "+14155552671",
                        "country_code": "US",
                        "country_name": "United States",
                        "carrier": {
                          "name": "Example Mobile",
                          "type": "mobile"
                        },
                        "is_disposable": false,
                        "is_virtual": false,
                        "verification_method": null,
                        "verification_attempts": 0,
                        "verified_at": null,
                        "warnings": [],
                        "lifecycle": [],
                        "matches": [],
                        "phone_intelligence": {
                          "score": 3.0,
                          "phone_type_risk": "Low",
                          "phone_trust_index": 97,
                          "network_stability_index": 95,
                          "is_disposable": false,
                          "is_ported": false,
                          "is_recently_ported": false,
                          "carrier_type": "mobile",
                          "reason_codes": []
                        },
                        "enrichment": {
                          "score": 3.0,
                          "phone_type_risk": "Low",
                          "phone_trust_index": 97,
                          "network_stability_index": 95,
                          "is_disposable": false,
                          "is_ported": false,
                          "is_recently_ported": false,
                          "carrier_type": "mobile",
                          "reason_codes": []
                        }
                      },
                      "vendor_data": "lead-123",
                      "metadata": {
                        "source": "signup_prescreen"
                      },
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  },
                  "Number in review": {
                    "summary": "समीक्षा के लिए फ़्लैग किया गया डिस्पोज़ेबल या वर्चुअल नंबर",
                    "value": {
                      "request_id": "8c22e1f0-4b3d-4a3a-9d1e-2f6b7c8d9e0f",
                      "status": "In Review",
                      "phone": {
                        "status": "In Review",
                        "phone_number_prefix": "+44",
                        "phone_number": "7700900123",
                        "full_number": "+447700900123",
                        "country_code": "GB",
                        "country_name": "United Kingdom",
                        "carrier": {
                          "name": "Example VoIP",
                          "type": "voip"
                        },
                        "is_disposable": true,
                        "is_virtual": true,
                        "verification_method": null,
                        "verification_attempts": 0,
                        "verified_at": null,
                        "warnings": [],
                        "lifecycle": [],
                        "matches": [],
                        "phone_intelligence": {
                          "score": 72.0,
                          "phone_type_risk": "High",
                          "phone_trust_index": 28,
                          "network_stability_index": 40,
                          "is_disposable": true,
                          "is_ported": true,
                          "is_recently_ported": true,
                          "carrier_type": "voip",
                          "reason_codes": [
                            {
                              "code": "IR-5AC67A32",
                              "direction": "risk",
                              "message": "Phone type identified as non-mobile",
                              "impact_level": "medium"
                            }
                          ]
                        },
                        "enrichment": {
                          "score": 72.0,
                          "phone_type_risk": "High",
                          "phone_trust_index": 28,
                          "network_stability_index": 40,
                          "is_disposable": true,
                          "is_ported": true,
                          "is_recently_ported": true,
                          "carrier_type": "voip",
                          "reason_codes": [
                            {
                              "code": "IR-5AC67A32",
                              "direction": "risk",
                              "message": "Phone type identified as non-mobile",
                              "impact_level": "medium"
                            }
                          ]
                        }
                      },
                      "vendor_data": "lead-124",
                      "metadata": null,
                      "created_at": "2026-09-01T10:30:00.123456+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/PhoneRiskValidationError"
          },
          "403": {
            "$ref": "#/components/responses/RiskPermissionDenied"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/": {
      "post": {
        "summary": "एक सत्यापन सत्र बनाएँ",
        "description": "एक उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र बनाएं और अपने अंतिम उपयोगकर्ता के लिए रीडायरेक्ट या एम्बेड करने हेतु एक होस्टेड सत्यापन `url` के साथ `session_token` प्राप्त करें। `workflow_id` यह चुनता है कि कौन से सत्यापन चरण चलेंगे और सत्र KYC है या KYB।\n\nजब भी किसी उपयोगकर्ता या व्यवसाय को सत्यापित करने की आवश्यकता हो, इसे अपने बैकएंड से कॉल करें (ब्राउज़र से कभी नहीं — API कुंजी एक सीक्रेट है): साइनअप पर, किसी संवेदनशील कार्रवाई से पहले, या जब पुनः सत्यापन की आवश्यकता हो। पूर्वापेक्षाएँ: एक प्रकाशित वर्कफ़्लो (कंसोल के [Workflows](https://docs.didit.me/hi/console/workflows) पेज में बनाया गया) और उपलब्ध क्रेडिट वाली एक एप्लिकेशन API कुंजी। सैंडबॉक्स एप्लिकेशन क्रेडिट जाँच को बायपास कर देते हैं।\n\n**आइडेम्पोटेंसी:** जब `vendor_data` प्रदान किया जाता है और उसी `vendor_data` वाला एक अधूरा सत्र (`Not Started`, `In Progress`, `Resubmitted`, या `Awaiting User`) वर्कफ़्लो के **वर्तमान नवीनतम प्रकाशित संस्करण** पर पहले से मौजूद होता है (और उस सत्र के पास पहले से ही एक होस्टेड सत्यापन URL होता है), तो डुप्लिकेट बनाने के बजाय मौजूदा सत्र लौटाया जाता है (फिर भी `201`) — जिसमें इसके `callback` और `metadata` को नए प्रदान किए गए मानों के साथ अपडेट कर दिया जाता है। वर्कफ़्लो के पुराने संस्करण पर बनाया गया अधूरा सत्र (जिसे बाद में फिर से प्रकाशित किया गया है) दोबारा उपयोग **नहीं** किया जाता है; इसके बजाय नवीनतम प्रकाशित संस्करण से जुड़ा एक नया सत्र बनाया जाता है। `Approved`, `Declined`, `In Review`, `Expired`, `Abandoned`, या `Kyc Expired` वाले सत्रों का कभी भी दोबारा उपयोग नहीं किया जाता है।\n\n**साइड इफ़ेक्ट:** होस्टेड सत्यापन URL जेनरेट और संग्रहीत किया जाता है; यदि `contact_details.send_notification_emails` `true` है और एक ईमेल प्रदान किया गया है, तो एक सत्यापन आमंत्रण ईमेल भेजा जाता है। वर्कफ़्लो के कॉन्फ़िगर किए गए सत्र समाप्ति समय के बाद सत्र समाप्त हो जाता है। KYB वर्कफ़्लो के लिए, `contact_details.phone` और `expected_details` को अनदेखा कर दिया जाता है।",
        "operationId": "post_v3_session_create",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "201": {
            "description": "सत्र बनाया गया (या वापस लौटाया गया, यदि वर्कफ़्लो के नवीनतम प्रकाशित संस्करण पर समान `vendor_data` वाला कोई अधूरा सत्र पहले से मौजूद है)। रिस्पॉन्स सीरियलाइज़ किया गया सत्र है, जिसमें उपयोगकर्ता को रीडायरेक्ट करने के लिए होस्टेड सत्यापन `url` शामिल है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "session_id",
                    "session_number",
                    "session_token",
                    "url",
                    "vendor_data",
                    "metadata",
                    "status",
                    "workflow_id",
                    "workflow_version",
                    "callback"
                  ],
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "सत्यापन सत्र का विशिष्ट पहचानकर्ता। `GET /v3/session/{sessionId}/decision/` को कॉल करते समय इस id का उपयोग करें।",
                      "example": "11111111-2222-3333-4444-555555555555"
                    },
                    "session_number": {
                      "type": "integer",
                      "description": "आपके एप्लिकेशन के अंदर सत्र को सौंपी गई अनुक्रमिक, आसानी से पढ़ी जाने वाली संख्या। सहायता और डैशबोर्ड के लिए उपयोगी।",
                      "example": 43762
                    },
                    "session_token": {
                      "type": "string",
                      "description": "12-वर्ण का URL-सुरक्षित token जो अंतिम उपयोगकर्ता को `url` पर होस्ट किए गए सत्यापन प्रवाह तक पहुँचने के लिए अधिकृत करता है। सत्र समाप्त होने तक मान्य। इसे एक सीक्रेट की तरह मानें — इसे रखने वाला कोई भी व्यक्ति इस सत्र के लिए सत्यापन प्रवाह खोल सकता है।",
                      "example": "3FaJ9wLqX2Mz"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri",
                      "description": "अंतिम उपयोगकर्ता को रीडायरेक्ट करने के लिए होस्टेड सत्यापन URL। URL में `session_token` एम्बेड होता है और, यदि कॉन्फ़िगर किया गया है, तो यह आपके व्हाइट लेबल डोमेन का उपयोग करता है। जब अनुरोध में `language` शामिल होता है, तो URL में एक भाषा पथ खंड होता है — `https://verify.didit.me/{language}/session/{session_token}` (उदा. `/es/session/...`); बिना `language` के, यह खंड छोड़ दिया जाता है।",
                      "example": "https://verify.didit.me/session/3FaJ9wLqX2Mz"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "वह पहचानकर्ता जिसे आपने सत्र को अपने सिस्टम में किसी उपयोगकर्ता या व्यवसाय से जोड़ने के लिए अनुरोध में पास किया था। ज्यों का त्यों वापस भेजा जाता है। प्रदान न किए जाने पर Null।",
                      "example": "user-123"
                    },
                    "metadata": {
                      "description": "सत्र निर्माण के समय संग्रहीत किया गया आपका मनमाना JSON payload। जैसा भेजा गया था वैसा ही वापस दोहराया जाता है — आपके द्वारा भेजा गया कोई भी JSON मान (ऑब्जेक्ट, स्ट्रिंग, संख्या, ऐरे) यथावत लौटाया जाता है, हालांकि एक JSON ऑब्जेक्ट की अनुशंसा की जाती है। अंतिम उपयोगकर्ता को नहीं दिखाया जाता। रिस्पॉन्स में हमेशा मौजूद रहता है; निर्माण के समय प्रदान न किए जाने पर `null` होता है।",
                      "example": {
                        "user_type": "premium",
                        "account_id": "ABC123"
                      }
                    },
                    "tags": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "सत्र पर मौजूद टैग, नाम के अनुसार।",
                      "example": [
                        "VIP",
                        "ONBOARDING Q4"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "Not Started",
                        "In Progress",
                        "Approved",
                        "Declined",
                        "In Review",
                        "Expired",
                        "Abandoned",
                        "Kyc Expired",
                        "Resubmitted",
                        "Awaiting User"
                      ],
                      "description": "सत्र की वर्तमान स्थिति। नए बनाए गए सत्र `Not Started` लौटाते हैं। यदि वर्कफ़्लो के नवीनतम प्रकाशित संस्करण पर उसी `vendor_data` के लिए कोई गैर-समाप्त सत्र पहले से मौजूद था, तो लौटाई गई स्थिति उस मौजूदा सत्र को दर्शाती है।",
                      "example": "Not Started"
                    },
                    "callback": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "फ़्लो पूरा करने के बाद उपयोगकर्ता को भेजा जाने वाला अंतिम रीडायरेक्ट URL। Didit इस URL में `?verificationSessionId={session_id}&status={status}` जोड़ता है। अनुरोध में प्रदान न किए जाने पर वर्कफ़्लो के कॉन्फ़िगर किए गए कॉलबैक URL पर फ़ॉलबैक करता है; दोनों सेट न होने पर `null`। जब एप्लिकेशन में अनुमत डोमेन होते हैं और यह URL उनके बाहर का कोई वेब URL होता है (उदाहरण के लिए सूची बदलने से पहले सेट किया गया वर्कफ़्लो डिफ़ॉल्ट), तो होस्टेड फ़्लो उपयोगकर्ता को उस पर रीडायरेक्ट नहीं करता है।",
                      "example": "https://example.com/verification/callback"
                    },
                    "workflow_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "उस वर्कफ़्लो का स्थिर पहचानकर्ता जिस पर यह सत्र चलता है। हमेशा वर्कफ़्लो का स्थिर समूह पहचानकर्ता — भले ही आपने अनुरोध में किसी विशिष्ट वर्कफ़्लो संस्करण UUID का संदर्भ दिया हो (बैकवर्ड-कम्पैटिबल लुकअप), रिस्पॉन्स में स्थिर `workflow_id` शामिल होता है। कंसोल में आपके द्वारा कॉन्फ़िगर किए गए वर्कफ़्लो के साथ सत्र को सहसंबंधित करने के लिए इसका उपयोग करें।",
                      "example": "11111111-2222-3333-4444-555555555555"
                    },
                    "workflow_version": {
                      "type": "integer",
                      "description": "प्रकाशित वर्कफ़्लो संस्करण की संस्करण संख्या जिस पर निर्माण के समय सत्र को पिन किया गया था। सत्र बनाए जाने पर Didit `workflow_id` को वर्कफ़्लो के नवीनतम प्रकाशित संस्करण में हल करता है, और वर्कफ़्लो को बाद में पुनः प्रकाशित किए जाने पर भी सत्र उसी संस्करण को चलाता रहता है।",
                      "example": 3
                    }
                  }
                },
                "examples": {
                  "KYC session": {
                    "summary": "KYC सत्र बनाया गया",
                    "value": {
                      "session_id": "11111111-2222-3333-4444-555555555555",
                      "session_number": 43762,
                      "session_token": "3FaJ9wLqX2Mz",
                      "url": "https://verify.didit.me/en/session/3FaJ9wLqX2Mz",
                      "vendor_data": "user-123",
                      "metadata": {
                        "user_type": "premium",
                        "account_id": "ABC123"
                      },
                      "status": "Not Started",
                      "workflow_id": "11111111-2222-3333-4444-555555555555",
                      "workflow_version": 3,
                      "callback": "https://example.com/verification/callback"
                    }
                  },
                  "KYB session": {
                    "summary": "KYB सत्र बनाया गया",
                    "value": {
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "session_number": 43763,
                      "session_token": "Yk7pQ2vN8aBc",
                      "url": "https://verify.didit.me/en/session/Yk7pQ2vN8aBc",
                      "vendor_data": "company-acme-001",
                      "metadata": {
                        "tier": "enterprise"
                      },
                      "status": "Not Started",
                      "workflow_id": "33333333-4444-5555-6666-777777777777",
                      "workflow_version": 1,
                      "callback": "https://example.com/kyb/callback"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "खराब अनुरोध — payload सत्यापन विफल रहा (अनुपलब्ध या अज्ञात `workflow_id`, अमान्य `language`, ब्लॉकलिस्ट किया गया `vendor_data`, विकृत `portrait_image`, बिना `country`/`poa_country` के `address`, अमान्य `sandbox_scenario`, `sign` दस्तावेज़, फ़ील्ड या मान जिन्हें वर्कफ़्लो का ई-हस्ताक्षर चरण अस्वीकार करता है, जैसे `signature_document_not_supported`, `signature_document_conversion_failed`, `field_anchor_not_found` या `field_value_missing`, आदि) या आपके संगठन के पास सत्र शुरू करने के लिए पर्याप्त क्रेडिट नहीं हैं।\n\nबॉडी त्रुटियुक्त फ़ील्ड नाम (या गैर-फ़ील्ड त्रुटियों के लिए `detail`) द्वारा कुंजीबद्ध एक ऑब्जेक्ट है। इनपुट-सत्यापन विफलताओं (उदा. अनुपलब्ध आवश्यक फ़ील्ड, अमान्य भाषा, अधिक आकार की पोर्ट्रेट छवि) के लिए मान **स्ट्रिंग्स की एक ऐरे** होते हैं और सत्र बनाते समय पाई गई विफलताओं (अज्ञात `workflow_id`, ब्लॉकलिस्ट किया गया `vendor_data`, चेहरा मिलान वर्कफ़्लो के लिए कोई संदर्भ चेहरा उपलब्ध नहीं) के लिए **सामान्य स्ट्रिंग** होते हैं। दोनों रूपों को संभालें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "गैर-फ़ील्ड त्रुटियों के लिए मानव-पठनीय त्रुटि संदेश (उदा. अपर्याप्त क्रेडिट)। फ़ील्ड-स्तरीय विफलताएँ इसके बजाय कुंजी के रूप में फ़ील्ड नाम का उपयोग करती हैं, जिसमें स्ट्रिंग या स्ट्रिंग की सरणी वाला मान होता है।",
                      "example": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                },
                "examples": {
                  "Missing workflow_id": {
                    "summary": "आवश्यक फ़ील्ड छोड़ा गया (स्ट्रिंग्स की सरणी का प्रारूप)",
                    "value": {
                      "workflow_id": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid workflow_id": {
                    "summary": "अज्ञात workflow_id (साधारण-स्ट्रिंग स्वरूप)",
                    "value": {
                      "workflow_id": "Invalid workflow_id."
                    }
                  },
                  "Insufficient credits": {
                    "summary": "संगठन के क्रेडिट समाप्त हो गए हैं",
                    "value": {
                      "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  },
                  "Blocklisted vendor_data": {
                    "summary": "vendor_data ब्लॉकलिस्ट किया गया है",
                    "value": {
                      "vendor_data": "This user or business has been blocked and cannot create new verification sessions."
                    }
                  },
                  "Portrait image too large": {
                    "summary": "portrait_image आकार सत्यापन में विफल रहता है",
                    "value": {
                      "portrait_image": [
                        "Image size exceeds 2MB."
                      ]
                    }
                  },
                  "No stored face for vendor_data": {
                    "summary": "portrait_image के बिना और vendor_data उपयोगकर्ता के लिए बिना किसी संग्रहीत चेहरे के चेहरा मिलान वर्कफ़्लो",
                    "value": {
                      "portrait_image": "No stored face image was found for this user. Send a portrait_image, or complete an approved verification with face liveness or an ID document for this vendor_data first."
                    }
                  },
                  "Portrait image required without vendor_data": {
                    "summary": "portrait_image के बिना और बिना vendor_data के चेहरा मिलान वर्कफ़्लो",
                    "value": {
                      "portrait_image": "A portrait image is required to perform face match for this workflow. Send a portrait_image, or provide the vendor_data of a user with a previously stored face image to reuse it."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफल रहा। एक गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। जब `x-api-key` हेडर मौजूद नहीं होता है या API कुंजी मान्य होती है लेकिन क्लाइंट के पास इस एप्लिकेशन में सत्र बनाने की अनुमति नहीं होती है (उदाहरण के लिए API कुंजी किसी भिन्न संगठन से संबंधित है), तो endpoint `403` लौटाता है। ये विफलताएं `{\"detail\": \"You do not have permission to perform this action.\"}` बॉडी साझा करती हैं। जांचें कि `x-api-key` हेडर मौजूद है और इच्छित एप्लिकेशन से संबंधित है, यदि आवश्यक हो तो [Auth API](/hi/auth-api/get-credentials) के माध्यम से एप्लिकेशन API कुंजी पुनः प्राप्त करें, और पुनः प्रयास करें।\n\n**हटाया गया एप्लिकेशन:** किसी एप्लिकेशन के हटाए जाने के कुछ मिनटों तक, उसकी किसी API कुंजी से किया गया अनुरोध `{\"detail\": \"This application was deleted.\", \"code\": \"application_deleted\"}` रिस्पॉन्स दे सकता है। पुनः प्रयास न करें: एप्लिकेशन और उसकी API कुंजियाँ अब मौजूद नहीं हैं। उन कुछ मिनटों के बाद, कुंजी को किसी भी अन्य अमान्य कुंजी की तरह अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "You do not have permission to perform this action."
                    },
                    "code": {
                      "type": "string",
                      "description": "मशीन-पठनीय कारण, केवल कुछ विफलताओं पर मौजूद। `application_deleted`: API कुंजी उस एप्लिकेशन की है जिसे हटा दिया गया था।",
                      "example": "application_deleted"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                },
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं या अमान्य API कुंजी",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "No permission": {
                    "summary": "क्लाइंट सत्र नहीं बना सकता",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Application deleted": {
                    "summary": "हटाए गए एप्लिकेशन की API कुंजी",
                    "value": {
                      "detail": "This application was deleted.",
                      "code": "application_deleted"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई — उसी API कुंजी / IP से 60-सेकंड की विंडो में 600 से अधिक सत्र-निर्माण अनुरोध। `Retry-After` का निरीक्षण करें और पुनः प्रयास करने से पहले प्रतीक्षा करें।\n\n**नोट:** स्रोत कोड `PAID_SESSION_RATE_LIMIT=600` (`sessions/serializers/session.py`) के साथ 10 कॉल/मिनट की `FREE_SESSION_RATE_LIMIT` भी परिभाषित करता है, लेकिन वह निःशुल्क स्तर सीमा **इस V3 endpoint पर लागू नहीं होती है** — रेट लिमिट मिडलवेयर प्लान की परवाह किए बिना 600/मिनट `SESSION_CREATE_RATE_LIMIT` लागू करता है। 600/मिनट ही एकमात्र सीमा है जिस तक आप यहाँ पहुँच सकते हैं।",
            "headers": {
              "Retry-After": {
                "description": "अनुरोध का पुनः प्रयास करने से पहले कॉलर को जितने सेकंड प्रतीक्षा करनी होगी।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 42
                }
              },
              "X-RateLimit-Limit": {
                "description": "जिस सीमा का उल्लंघन हुआ था, उसके लिए वर्तमान 60-सेकंड की विंडो में अनुमत अनुरोधों की अधिकतम संख्या (session-create के लिए 600)। सैंडबॉक्स-कोटा वैरिएंट पर अनुपस्थित।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "उल्लंघन की गई सीमा के लिए वर्तमान विंडो में अभी भी अनुमत अनुरोधों की संख्या। सैंडबॉक्स-कोटा संस्करण में अनुपस्थित।",
                "schema": {
                  "type": "integer",
                  "minimum": 0,
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "UTC epoch सेकंड जब वर्तमान रेट लिमिट विंडो रीसेट होती है। sandbox-quota वैरिएंट पर अनुपस्थित।",
                "schema": {
                  "type": "integer",
                  "minimum": 0,
                  "example": 1747497600
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "रेट लिमिट उल्लंघन का मानव-पठनीय स्पष्टीकरण। तीन सीमाओं में से कौन सी सीमा पार हुई है, यह पहचानने के लिए इस संदेश का उपयोग करें।",
                      "example": "Session creation rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                },
                "examples": {
                  "Session-create limit": {
                    "summary": "प्रति मिनट 600 से अधिक सत्र-निर्माण अनुरोध",
                    "value": {
                      "detail": "Session creation rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  },
                  "Sandbox session quota": {
                    "summary": "सैंडबॉक्स एप्लिकेशन ने 24 घंटों में 500 सत्रों की सीमा पार कर ली",
                    "value": {
                      "detail": "Sandbox session quota exceeded (500 sessions per 24h). Wait for the window to reset. Expected available in 3600 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/session/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"workflow_id\": \"11111111-2222-3333-4444-555555555555\",\n    \"vendor_data\": \"user-123\",\n    \"callback\": \"https://example.com/verification/callback\",\n    \"callback_method\": \"both\",\n    \"metadata\": {\"user_type\": \"premium\", \"account_id\": \"ABC123\"},\n    \"language\": \"en\",\n    \"contact_details\": {\n      \"email\": \"john.doe@example.com\",\n      \"send_notification_emails\": true,\n      \"email_lang\": \"en\",\n      \"phone\": \"+14155552671\"\n    },\n    \"expected_details\": {\n      \"first_name\": \"John\",\n      \"last_name\": \"Doe\",\n      \"date_of_birth\": \"1990-05-15\",\n      \"id_country\": \"USA\",\n      \"expected_document_types\": [\"P\", \"ID\"]\n    }\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.create(\n    workflow_id=\"11111111-2222-3333-4444-555555555555\",\n    vendor_data=\"user-123\",\n    callback=\"https://example.com/verification/callback\",\n    callback_method=\"both\",\n    metadata={\"user_type\": \"premium\", \"account_id\": \"ABC123\"},\n    language=\"en\",\n    contact_details={\n        \"email\": \"john.doe@example.com\",\n        \"send_notification_emails\": True,\n        \"email_lang\": \"en\",\n        \"phone\": \"+14155552671\",\n    },\n    expected_details={\n        \"first_name\": \"John\",\n        \"last_name\": \"Doe\",\n        \"date_of_birth\": \"1990-05-15\",\n        \"nationality\": \"USA\",\n        \"id_country\": \"USA\",\n        \"expected_document_types\": [\"P\", \"ID\"],\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.create({\n  workflow_id: \"11111111-2222-3333-4444-555555555555\",\n  vendor_data: \"user-123\",\n  callback: \"https://example.com/verification/callback\",\n  callback_method: \"both\",\n  metadata: { user_type: \"premium\", account_id: \"ABC123\" },\n  language: \"en\",\n  contact_details: {\n    email: \"john.doe@example.com\",\n    send_notification_emails: true,\n    email_lang: \"en\",\n    phone: \"+14155552671\",\n  },\n  expected_details: {\n    first_name: \"John\",\n    last_name: \"Doe\",\n    date_of_birth: \"1990-05-15\",\n    nationality: \"USA\",\n    id_country: \"USA\",\n    expected_document_types: [\"P\", \"ID\"],\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Create(ctx, didit.SessionsCreateParams{\n\tWorkflowID:     \"11111111-2222-3333-4444-555555555555\",\n\tVendorData:     didit.String(\"user-123\"),\n\tCallback:       didit.String(\"https://example.com/verification/callback\"),\n\tCallbackMethod: didit.Some(didit.SessionsCreateParamsCallbackMethod(\"both\")),\n\tMetadata:       didit.Some[any](map[string]any{\"user_type\": \"premium\", \"account_id\": \"ABC123\"}),\n\tLanguage:       didit.Some(didit.SessionsCreateParamsLanguage(\"en\")),\n\tContactDetails: didit.Some(didit.SessionsCreateParamsContactDetails{\n\t\tEmail:                  didit.String(\"john.doe@example.com\"),\n\t\tSendNotificationEmails: didit.Bool(true),\n\t\tEmailLang:              didit.Some(didit.SessionsCreateParamsContactDetailsEmailLang(\"en\")),\n\t\tPhone:                  didit.String(\"+14155552671\"),\n\t}),\n\tExpectedDetails: didit.Some(didit.SessionsCreateParamsExpectedDetails{\n\t\tFirstName:             didit.String(\"John\"),\n\t\tLastName:              didit.String(\"Doe\"),\n\t\tDateOfBirth:           didit.String(\"1990-05-15\"),\n\t\tNationality:           didit.String(\"USA\"),\n\t\tIDCountry:             didit.String(\"USA\"),\n\t\tExpectedDocumentTypes: didit.Some([]didit.SessionsCreateParamsExpectedDetailsExpectedDocumentTypes{\"P\", \"ID\"}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().create(SessionsCreateParams.builder()\n        .workflowId(\"11111111-2222-3333-4444-555555555555\")\n        .vendorData(\"user-123\")\n        .callback(\"https://example.com/verification/callback\")\n        .callbackMethod(SessionsCreateParams.CallbackMethod.of(\"both\"))\n        .metadata(Map.of(\"user_type\", \"premium\", \"account_id\", \"ABC123\"))\n        .language(SessionsCreateParams.Language.of(\"en\"))\n        .contactDetails(SessionsCreateParams.ContactDetails.builder()\n                .email(\"john.doe@example.com\")\n                .sendNotificationEmails(true)\n                .emailLang(SessionsCreateParams.ContactDetails.EmailLang.of(\"en\"))\n                .phone(\"+14155552671\")\n                .build())\n        .expectedDetails(SessionsCreateParams.ExpectedDetails.builder()\n                .firstName(\"John\")\n                .lastName(\"Doe\")\n                .dateOfBirth(LocalDate.parse(\"1990-05-15\"))\n                .nationality(\"USA\")\n                .idCountry(\"USA\")\n                .expectedDocumentTypes(List.of(SessionsCreateParams.ExpectedDetails.ExpectedDocumentTypes.of(\"P\"), SessionsCreateParams.ExpectedDetails.ExpectedDocumentTypes.of(\"ID\")))\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->create([\n    'workflow_id' => '11111111-2222-3333-4444-555555555555',\n    'vendor_data' => 'user-123',\n    'callback' => 'https://example.com/verification/callback',\n    'callback_method' => 'both',\n    'metadata' => ['user_type' => 'premium', 'account_id' => 'ABC123'],\n    'language' => 'en',\n    'contact_details' => [\n        'email' => 'john.doe@example.com',\n        'send_notification_emails' => true,\n        'email_lang' => 'en',\n        'phone' => '+14155552671',\n    ],\n    'expected_details' => [\n        'first_name' => 'John',\n        'last_name' => 'Doe',\n        'date_of_birth' => '1990-05-15',\n        'nationality' => 'USA',\n        'id_country' => 'USA',\n        'expected_document_types' => ['P', 'ID'],\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.create(\n  workflow_id: \"11111111-2222-3333-4444-555555555555\",\n  vendor_data: \"user-123\",\n  callback: \"https://example.com/verification/callback\",\n  callback_method: \"both\",\n  metadata: { user_type: \"premium\", account_id: \"ABC123\" },\n  language: \"en\",\n  contact_details: {\n    email: \"john.doe@example.com\",\n    send_notification_emails: true,\n    email_lang: \"en\",\n    phone: \"+14155552671\",\n  },\n  expected_details: {\n    first_name: \"John\",\n    last_name: \"Doe\",\n    date_of_birth: \"1990-05-15\",\n    nationality: \"USA\",\n    id_country: \"USA\",\n    expected_document_types: [\"P\", \"ID\"],\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.CreateAsync(new SessionsCreateParams\n{\n    WorkflowId = \"11111111-2222-3333-4444-555555555555\",\n    VendorData = \"user-123\",\n    Callback = \"https://example.com/verification/callback\",\n    CallbackMethod = new SessionsCreateParamsCallbackMethod(\"both\"),\n    Metadata = new Dictionary<string, object> { [\"user_type\"] = \"premium\", [\"account_id\"] = \"ABC123\" },\n    Language = new SessionsCreateParamsLanguage(\"en\"),\n    ContactDetails = new SessionsCreateParamsContactDetails\n    {\n        Email = \"john.doe@example.com\",\n        SendNotificationEmails = true,\n        EmailLang = new SessionsCreateParamsContactDetailsEmailLang(\"en\"),\n        Phone = \"+14155552671\",\n    },\n    ExpectedDetails = new SessionsCreateParamsExpectedDetails\n    {\n        FirstName = \"John\",\n        LastName = \"Doe\",\n        DateOfBirth = \"1990-05-15\",\n        Nationality = \"USA\",\n        IdCountry = \"USA\",\n        ExpectedDocumentTypes = new SessionsCreateParamsExpectedDetailsExpectedDocumentTypes[] { \"P\", \"ID\" },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "workflow_id"
                ],
                "properties": {
                  "workflow_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "वर्कफ़्लो का स्थिर पहचानकर्ता जो परिभाषित करता है कि सत्र कौन से सत्यापन चरणों को चलाएगा। वर्कफ़्लो कंसोल के [Workflows](/hi/console/workflows) पृष्ठ में बनाए और प्रबंधित किए जाते हैं। `workflow_id` अप्रत्यक्ष रूप से यह भी चुनता है कि सत्र KYC है या KYB।",
                    "example": "11111111-2222-3333-4444-555555555555",
                    "x-readme-id": "0.0"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "सत्यापित किए जा रहे उपयोगकर्ता के लिए एक विशिष्ट पहचानकर्ता, जैसे UUID, ईमेल या आंतरिक उपयोगकर्ता ID। इस फ़ील्ड का उपयोग इसके लिए किया जाता है: (1) **उपयोगकर्ता समूहीकरण** — समान vendor_data वाले सत्र Users टैब में समान उपयोगकर्ता प्रोफ़ाइल से लिंक होते हैं। (2) **क्रॉस-सत्र डुप्लिकेट डिटेक्शन** — डुप्लिकेट चेहरों, दस्तावेज़ों, फ़ोन नंबरों, ईमेल, IP पतों या डिवाइस फ़िंगरप्रिंट की जाँच करते समय, समान vendor_data वाले सत्रों को एक ही उपयोगकर्ता माना जाता है और मिलानों से बाहर रखा जाता है। vendor_data के बिना, प्रत्येक सत्र को एक अद्वितीय उपयोगकर्ता माना जाता है और सभी संभावित डुप्लिकेट सामने लाए जाते हैं। हम डुप्लिकेट डिटेक्शन में अनावश्यक डेटा कम करने के लिए हमेशा vendor_data प्रदान करने की पुरज़ोर अनुशंसा करते हैं।",
                    "example": "user-123",
                    "x-readme-id": "0.1"
                  },
                  "multi_account_segment": {
                    "type": "string",
                    "maxLength": 64,
                    "description": "आपके संगठन के भीतर वैकल्पिक डुप्लिकेट-डिटेक्शन क्षेत्र। डुप्लिकेट चेहरा जांच इस सत्र की तुलना केवल उसी सेगमेंट वाले अन्य सत्रों से करती है, ताकि अलग-अलग खाता आधार (व्यक्तिगत और व्यावसायिक खाते, या प्रति B2B सब-क्लाइंट एक) ऐसे व्यक्ति को फ़्लैग न करें जिसके पास वैध रूप से दोनों में एक-एक खाता है। एकल डिफ़ॉल्ट क्षेत्र का उपयोग करने के लिए इसे छोड़ दें, जिसका उपयोग आज प्रत्येक सत्र करता है। ब्लॉकलिस्ट और अनुमति सूची मिलान इस फ़ील्ड को अनदेखा करते हैं।",
                    "example": "business-accounts"
                  },
                  "callback": {
                    "type": "string",
                    "description": "सत्यापन पूरा होने के बाद उपयोगकर्ता को रीडायरेक्ट करने का URL। Didit स्वचालित रूप से क्वेरी पैरामीटर के रूप में `verificationSessionId` और `status` (Approved, Declined, In Review) जोड़ता है। मोबाइल कॉलबैक के लिए कस्टम URL स्कीम्स (जैसे `myapp://`) समर्थित हैं। यदि छोड़ दिया जाता है, तो वर्कफ़्लो के डिफ़ॉल्ट `callback_url` का उपयोग किया जाता है। जब एप्लिकेशन में अनुमत डोमेन (`PATCH /v3/webhook/` पर `allowed_domains`) होते हैं, तो एक `http` या `https` कॉलबैक उन ऑरिजिनों में से एक पर होना चाहिए (समान स्कीम, होस्ट और पोर्ट), अन्यथा `callback` पर 400 के साथ अनुरोध विफल हो जाता है: `callback must be on one of the application's allowed domains: https://app.example.com`। कस्टम URL स्कीम्स हमेशा स्वीकार किए जाते हैं।",
                    "example": "https://example.com/verification/callback",
                    "x-readme-id": "0.2"
                  },
                  "callback_method": {
                    "type": "string",
                    "description": "निर्धारित करता है कि प्रदान किए गए कॉलबैक URL पर रीडायरेक्ट को किस डिवाइस को संभालना चाहिए। केवल उस डिवाइस को रीडायरेक्ट करने के लिए `initiator` का उपयोग करें जिसने प्रवाह शुरू किया था, इसे पूरा करने वाले डिवाइस के लिए `completer`, या किसी भी डिवाइस को कॉलबैक ट्रिगर करने की अनुमति देने के लिए `both` का उपयोग करें। यदि आप कभी देखते हैं कि कॉलबैक विश्वसनीय रूप से ट्रिगर नहीं हो रहा है, तो हम इस मान को `both` पर सेट करने की अनुशंसा करते हैं।",
                    "enum": [
                      "initiator",
                      "completer",
                      "both"
                    ],
                    "default": "initiator",
                    "example": "both",
                    "x-readme-id": "0.3"
                  },
                  "metadata": {
                    "description": "सत्र के साथ संग्रहीत मनमाना JSON जो रिस्पॉन्स और webhooks में वापस लौटाया जाता है। कोई भी JSON मान स्वीकार किया जाता है (ऑब्जेक्ट, स्ट्रिंग, संख्या, ऐरे), लेकिन key/value युग्मों के एक JSON ऑब्जेक्ट की अनुशंसा की जाती है। अंतिम उपयोगकर्ता को नहीं दिखाया जाता। अपनी स्वयं की कोरिलेशन IDs, A/B वेरिएंट, या व्यावसायिक संदर्भ पास करने के लिए इसका उपयोग करें।",
                    "example": {
                      "user_type": "premium",
                      "account_id": "ABC123"
                    },
                    "x-readme-id": "0.4"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 50
                    },
                    "maxItems": 10,
                    "description": "सत्र बनाते समय नाम के आधार पर उसमें जोड़े गए टैग। अधिकतम 10, प्रत्येक 50 वर्णों तक। नाम केस-असंवेदनशील होते हैं और बड़े अक्षरों में संग्रहीत किए जाते हैं। जो नाम एप्लिकेशन में अभी तक मौजूद नहीं है, उसे एक नए टैग के रूप में बनाया जाता है। ये टैग कंसोल में सत्र पर दिखाई देते हैं, जहाँ आप उनके अनुसार फ़िल्टर कर सकते हैं।",
                    "example": [
                      "VIP",
                      "ONBOARDING Q4"
                    ]
                  },
                  "language": {
                    "type": "string",
                    "description": "सत्यापन प्रक्रिया इंटरफ़ेस के लिए भाषा कोड (ISO 639-1)। सत्यापन के दौरान अंतिम उपयोगकर्ता को दिखाई जाने वाली भाषा को नियंत्रित करता है। यदि प्रदान नहीं किया जाता है, तो ब्राउज़र की भाषा स्वचालित रूप से पहचानी जाएगी और उपयोग की जाएगी। सभी समर्थित भाषाएँ [यहाँ](/hi/integration/supported-languages) देखें।",
                    "enum": [
                      "en",
                      "ar",
                      "bg",
                      "bn",
                      "bs",
                      "ca",
                      "cnr",
                      "cs",
                      "da",
                      "de",
                      "el",
                      "es",
                      "et",
                      "fa",
                      "fi",
                      "fr",
                      "he",
                      "hi",
                      "hr",
                      "hu",
                      "hy",
                      "id",
                      "it",
                      "ja",
                      "ka",
                      "kk",
                      "ko",
                      "ky",
                      "lt",
                      "lv",
                      "mk",
                      "mn",
                      "ms",
                      "nl",
                      "no",
                      "pl",
                      "pt-BR",
                      "pt",
                      "ro",
                      "ru",
                      "sk",
                      "sl",
                      "so",
                      "sq",
                      "sr",
                      "sv",
                      "th",
                      "tr",
                      "uk",
                      "uz",
                      "vi",
                      "zh-CN",
                      "zh-TW",
                      "zh"
                    ],
                    "example": "en",
                    "x-readme-id": "0.5"
                  },
                  "contact_details": {
                    "type": "object",
                    "description": "उपयोगकर्ता संपर्क जानकारी जिसका उपयोग सूचनाओं, सत्यापन फ़ॉर्म को पहले से भरने और फ़ोन सत्यापन के लिए किया जा सकता है। इसमें ईमेल पता, संचार के लिए पसंदीदा भाषा और फ़ोन नंबर शामिल हैं।",
                    "example": {
                      "email": "john.doe@example.com",
                      "send_notification_emails": true,
                      "email_lang": "en",
                      "phone": "+14155552671"
                    },
                    "properties": {
                      "email": {
                        "type": "string",
                        "format": "email",
                        "description": "उपयोगकर्ता का ईमेल पता (उदा. \"john.doe@example.com\") जिसका उपयोग [ईमेल सत्यापन](/hi/core-technology/email-verification/overview) चरण के दौरान किया जाएगा। यदि प्रदान नहीं किया गया है, तो उपयोगकर्ता को इसे सत्यापन प्रवाह के दौरान प्रदान करना होगा।",
                        "example": "john.doe@example.com",
                        "x-readme-id": "1.0"
                      },
                      "send_notification_emails": {
                        "type": "boolean",
                        "default": false,
                        "description": "यदि true है और कोई ईमेल प्रदान किया गया है, तो Didit उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र बनने पर प्रारंभिक \"Verify your identity\" ईमेल एसिंक्रोनस रूप से भेजता है। Didit प्रदान किए गए ईमेल पते पर मैन्युअल समीक्षा की आवश्यकता वाले सत्रों के लिए सत्यापन स्थिति सूचनाएं भी भेजता है (उदा. 'In Review' से 'Approved' या 'Declined')। इससे उपयोगकर्ताओं को उनका सत्यापन पूरा होने के बाद आपके एप्लिकेशन पर लौटने में मदद मिलती है। यदि आपने सत्र के लिए व्हाइट लेबल सक्रिय किया है, तो भेजा गया ईमेल व्हाइट लेबल होगा।",
                        "example": true,
                        "x-readme-id": "1.1"
                      },
                      "email_lang": {
                        "type": "string",
                        "description": "ईमेल सूचनाओं के लिए भाषा कोड (ISO 639-1)। सभी ईमेल संचारों की भाषा को नियंत्रित करता है (उदा. \"en\", \"es\", \"fr\")। कोई संग्रहीत डिफ़ॉल्ट नहीं है — छोड़े जाने पर, सत्यापन आमंत्रण ईमेल भेजते समय सीधे अंग्रेज़ी (`en`) पर फ़ालबैक करता है। नीचे दिया गया enum एक स्नैपशॉट है; स्वीकृत मानों के लिए लाइव सोर्स ऑफ़ ट्रुथ [समर्थित भाषाएँ](/hi/integration/supported-languages) दस्तावेज़ है — किसी विशिष्ट कोड पर निर्भर रहने से पहले हमेशा इसे देखें।",
                        "enum": [
                          "en",
                          "ar",
                          "bg",
                          "bn",
                          "bs",
                          "ca",
                          "cnr",
                          "cs",
                          "da",
                          "de",
                          "el",
                          "es",
                          "et",
                          "fa",
                          "fi",
                          "fr",
                          "he",
                          "hi",
                          "hr",
                          "hu",
                          "hy",
                          "id",
                          "it",
                          "ja",
                          "ka",
                          "kk",
                          "ko",
                          "ky",
                          "lt",
                          "lv",
                          "mk",
                          "mn",
                          "ms",
                          "nl",
                          "no",
                          "pl",
                          "pt-BR",
                          "pt",
                          "ro",
                          "ru",
                          "sk",
                          "sl",
                          "so",
                          "sq",
                          "sr",
                          "sv",
                          "th",
                          "tr",
                          "uk",
                          "uz",
                          "vi",
                          "zh-CN",
                          "zh-TW",
                          "zh"
                        ],
                        "example": "en",
                        "x-readme-id": "1.2"
                      },
                      "phone": {
                        "type": "string",
                        "description": "E.164 प्रारूप में फ़ोन नंबर (उदा., \"+14155552671\") जिसका उपयोग [फ़ोन सत्यापन](/hi/core-technology/phone-verification/overview) चरण के दौरान किया जाएगा। यदि प्रदान नहीं किया गया है, तो उपयोगकर्ता को इसे सत्यापन प्रवाह के दौरान प्रदान करना होगा। व्यवसाय सत्यापन (KYB) वर्कफ़्लो के लिए अनदेखा किया जाता है। **महत्वपूर्ण:** यह फ़ोन नंबर केवल तभी लागू किया जाता है जब यह एक मान्य E.164 फ़ोन नंबर हो। यदि प्रदान किया गया नंबर अमान्य है या इसे पार्स नहीं किया जा सकता है, तो इसे अनदेखा कर दिया जाएगा और उपयोगकर्ता फ़ोन सत्यापन चरण के दौरान कोई भी मान्य फ़ोन नंबर दर्ज कर सकेगा।",
                        "example": "+14155552671",
                        "x-readme-id": "1.3"
                      }
                    },
                    "x-readme-id": "0.4"
                  },
                  "expected_details": {
                    "type": "object",
                    "description": "उपयोगकर्ता के पहचान दस्तावेज़, पते का प्रमाण, और अन्य सत्यापन चरणों से निकाले गए डेटा के विरुद्ध क्रॉस-सत्यापन के लिए उपयोग किए जाने वाले अपेक्षित उपयोगकर्ता विवरण। बेमेल होने पर निर्णय में चेतावनियों के रूप में दिखाया जाता है; कुछ फ़ील्ड (जैसे `id_country`, `expected_document_types`) उपयोगकर्ता-सामना करने वाले प्रवाह को भी बदलते हैं। व्यवसाय सत्यापन (KYB) वर्कफ़्लो के लिए केवल व्यवसाय फ़ील्ड (`company_name`, `registry_country`, `registration_number`) का उपयोग किया जाता है — वे उपयोगकर्ता के लिए कंपनी रजिस्ट्री खोज को पहले से भरते हैं — और सभी व्यक्ति-स्तरीय फ़ील्ड को अनदेखा कर दिया जाता है।",
                    "example": {
                      "first_name": "John",
                      "last_name": "Doe",
                      "date_of_birth": "1990-05-15",
                      "nationality": "USA",
                      "id_country": "USA",
                      "expected_document_types": [
                        "P",
                        "ID"
                      ]
                    },
                    "properties": {
                      "first_name": {
                        "type": "string",
                        "description": "उपयोगकर्ता का पहला नाम। उदाहरण के लिए, `John`। मिलान फ़ज़ी तुलना का उपयोग करता है, और आप ID Document और पते का प्रमाण दोनों वर्कफ़्लो के लिए कंसोल में नाम मिलान स्कोर थ्रेशोल्ड कॉन्फ़िगर करके कड़ाई को ट्यून कर सकते हैं।",
                        "example": "John",
                        "x-readme-id": "1.0"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "उपयोगकर्ता का अंतिम नाम। उदाहरण के लिए, `Doe`। मिलान फ़ज़ी तुलना का उपयोग करता है, और आप ID Document और पते का प्रमाण दोनों वर्कफ़्लो के लिए कंसोल में नाम मिलान स्कोर थ्रेशोल्ड कॉन्फ़िगर करके कड़ाई को ट्यून कर सकते हैं।",
                        "example": "Doe",
                        "x-readme-id": "1.1"
                      },
                      "date_of_birth": {
                        "type": "string",
                        "format": "date",
                        "description": "उपयोगकर्ता की जन्म तिथि, प्रारूप: YYYY-MM-DD। उदाहरण के लिए, `1990-05-15`।",
                        "example": "1990-05-15",
                        "x-readme-id": "1.2"
                      },
                      "gender": {
                        "type": "string",
                        "nullable": true,
                        "enum": [
                          "M",
                          "F"
                        ],
                        "default": null,
                        "description": "उपयोगकर्ता का लिंग। 'M', 'F', या null होना चाहिए।",
                        "example": "M",
                        "x-readme-id": "1.3"
                      },
                      "nationality": {
                        "type": "string",
                        "description": "आवेदक के मूल देश का प्रतिनिधित्व करने वाला ISO 3166-1 alpha-3 देश कोड। उदाहरण के लिए, `USA`। [समर्थित देश कोडों की पूरी सूची](https://docs.didit.me/hi/core-technology/id-verification/supported-documents-id-verification#देश-के-अनुसार-समर्थित-दस्तावेज़) देखें।",
                        "example": "USA",
                        "x-readme-id": "1.4"
                      },
                      "country": {
                        "type": "string",
                        "description": "पहचान सत्यापन और पते का प्रमाण दोनों की देश-बेमेल जांचों के लिए फ़ॉलबैक के रूप में उपयोग किया जाने वाला ISO 3166-1 alpha-3 देश कोड। जब `address` प्रदान किया गया हो और न तो `id_country` और न ही `poa_country` सेट हो, तब आवश्यक है।",
                        "example": "USA",
                        "x-readme-id": "1.4.1"
                      },
                      "id_country": {
                        "type": "string",
                        "description": "आवेदक के ID दस्तावेज़ के अपेक्षित देश का प्रतिनिधित्व करने वाला ISO 3166-1 alpha-3 देश कोड, जो राष्ट्रीयता से भिन्न हो सकता है। उदाहरण के लिए, `GBR`। पहचान सत्यापन देश बेमेल जांचों के लिए `country` की तुलना में इसे प्राथमिकता दी जाती है। [समर्थित देश कोडों की पूरी सूची](https://docs.didit.me/hi/core-technology/id-verification/supported-documents-id-verification#देश-के-अनुसार-समर्थित-दस्तावेज़) देखें।",
                        "example": "GBR",
                        "x-readme-id": "1.5"
                      },
                      "poa_country": {
                        "type": "string",
                        "description": "पते का प्रमाण दस्तावेज़ के अपेक्षित देश का प्रतिनिधित्व करने वाला ISO 3166-1 alpha-3 देश कोड। उदाहरण के लिए, `USA`। POA देश बेमेल जांचों के लिए `country` की तुलना में इसे प्राथमिकता दी जाती है। [समर्थित देश कोडों की पूरी सूची](https://docs.didit.me/hi/core-technology/id-verification/supported-documents-id-verification#देश-के-अनुसार-समर्थित-दस्तावेज़) देखें।",
                        "example": "USA",
                        "x-readme-id": "1.5.1"
                      },
                      "address": {
                        "type": "string",
                        "description": "मानव पठनीय प्रारूप में पता, जिसमें यथासंभव अधिक जानकारी शामिल हो। उदाहरण के लिए, `123 Main St, San Francisco, CA 94105, USA`। प्रदान किए जाने पर, आपको `country` या `poa_country` भी पास करना होगा, अन्यथा अनुरोध `400` के साथ विफल हो जाता है।",
                        "example": "123 Main St, San Francisco, CA 94105, USA",
                        "x-readme-id": "1.6"
                      },
                      "identification_number": {
                        "type": "string",
                        "description": "उपयोगकर्ता का दस्तावेज़ नंबर, व्यक्तिगत नंबर, या कर नंबर। उदाहरण के लिए, `123456789`।",
                        "example": "123456789",
                        "x-readme-id": "1.7"
                      },
                      "ip_address": {
                        "type": "string",
                        "description": "सत्र के लिए अपेक्षित IP पता, IPv4 या IPv6 प्रारूप में। यदि वास्तविक IP पता इस मान से भिन्न है, तो एक चेतावनी लॉग की जाएगी। उदाहरण के लिए, `192.168.1.100` या `2001:db8::1`।",
                        "example": "192.168.1.100",
                        "x-readme-id": "1.8"
                      },
                      "expected_document_types": {
                        "type": "array",
                        "description": "पहचान सत्यापन (OCR) चरण के दौरान उपयोगकर्ता द्वारा प्रस्तुत किए जा सकने वाले दस्तावेज़ प्रकारों को सीमित करता है। सेट होने पर, दस्तावेज़ चयन स्क्रीन केवल अनुरोधित प्रकारों को दिखाती है और लौटाया गया `documents_allowed` उसी के अनुसार फ़िल्टर किया जाता है। मान केस-इनसेंसिटिव होते हैं और डुप्लिकेट हटा दिए जाते हैं; अज्ञात मानों को `400` के साथ अस्वीकार कर दिया जाता है। अनुमत कोड: `P` (पासपोर्ट), `ID` (राष्ट्रीय पहचान पत्र), `DL` (ड्राइविंग लाइसेंस), `RP` (निवास परमिट), `HIC` (स्वास्थ्य बीमा कार्ड), `TC` (टैक्स कार्ड), `SSC` (सोशल सिक्योरिटी कार्ड)।",
                        "items": {
                          "type": "string",
                          "enum": [
                            "P",
                            "ID",
                            "DL",
                            "RP",
                            "HIC",
                            "TC",
                            "SSC"
                          ]
                        },
                        "example": [
                          "P",
                          "ID"
                        ],
                        "x-readme-id": "1.9"
                      },
                      "company_name": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "सत्यापित किए जा रहे व्यवसाय का अपेक्षित कानूनी नाम। उदाहरण के लिए, `Tesco PLC`। व्यवसाय सत्यापन (KYB) वर्कफ़्लो में रजिस्ट्री खोज के कंपनी-नाम फ़ील्ड को पहले से भरता है; जब `registration_number` भी प्रदान किया जाता है, तो रजिस्ट्री लुकअप दोनों पहचानकर्ताओं को जोड़ता है। KYC वर्कफ़्लो के लिए अनदेखा किया जाता है।",
                        "example": "Tesco PLC",
                        "x-readme-id": "1.10"
                      },
                      "registry_country": {
                        "type": "string",
                        "maxLength": 10,
                        "description": "उस देश का ISO 3166-1 alpha-2 कोड जिसकी कंपनी रजिस्ट्री में व्यवसाय पंजीकृत है। उदाहरण के लिए, `GB`। जहाँ कंपनी रजिस्ट्रियाँ राज्य या प्रांत स्तर पर संचालित होती हैं, वहाँ ISO 3166-2 सबडिवीजन कोड को `XX-YY` के रूप में जोड़ें: `US-CA` कैलिफ़ोर्निया रजिस्ट्री को लक्षित करता है। [KYB Registry Search API](https://docs.didit.me/hi/standalone-apis/kyb-registry-search) पर `country_code` के समान प्रारूप। व्यवसाय सत्यापन (KYB) वर्कफ़्लो में रजिस्ट्री देश का पूर्व-चयन करता है; KYC वर्कफ़्लो के लिए इसे अनदेखा किया जाता है।",
                        "example": "US-CA",
                        "x-readme-id": "1.11"
                      },
                      "registration_number": {
                        "type": "string",
                        "maxLength": 100,
                        "description": "कंपनी रजिस्ट्री में व्यवसाय की अपेक्षित पंजीकरण संख्या। उदाहरण के लिए, `00445790`। व्यवसाय सत्यापन (KYB) वर्कफ़्लो में रजिस्ट्री खोज के पंजीकरण-संख्या फ़ील्ड को पहले से भरता है; जब `company_name` भी प्रदान किया जाता है, तो रजिस्ट्री लुकअप दोनों पहचानकर्ताओं को जोड़ता है। KYC वर्कफ़्लो के लिए अनदेखा किया जाता है।",
                        "example": "00445790",
                        "x-readme-id": "1.12"
                      }
                    },
                    "x-readme-id": "0.5"
                  },
                  "portrait_image": {
                    "type": "string",
                    "format": "byte",
                    "description": "अंतिम उपयोगकर्ता के चेहरे की Base64-एन्कोडेड पोर्ट्रेट छवि (अधिकतम 2MB; JPEG, PNG, WebP, या TIFF)। जब वर्कफ़्लो चेहरा मिलान सक्षम वाला `Biometric Authentication` वर्कफ़्लो हो, या कोई ऐसा ग्राफ़ वर्कफ़्लो हो जहाँ पहचान सत्यापन (OCR) से पहले चेहरा मिलान चलता है, तो लाइवनेस कैप्चर के विरुद्ध मिलान करने के लिए संदर्भ छवि के रूप में उपयोग किया जाता है। जब `vendor_data` उपयोगकर्ता के पास पहले से संग्रहीत चेहरे की छवि होती है, तो यह वैकल्पिक है: Didit इसे स्वचालित रूप से पुनः उपयोग करता है, जिसे प्राथमिकता क्रम में हल किया जाता है: स्वीकृत लाइवनेस चेहरा, ePassport चिप फ़ोटो, पहचान दस्तावेज़ पोर्ट्रेट, मैन्युअल रूप से नामांकित प्रोफ़ाइल चेहरा (केवल स्वीकृत सत्रों के चेहरे या आपके द्वारा स्वयं नामांकित चेहरे ही पुनः उपयोग किए जाते हैं)। प्रदान किए जाने पर, `portrait_image` हमेशा संग्रहीत चेहरे पर वरीयता लेता है। यदि छोड़ दिया जाता है और कोई संग्रहीत चेहरा मौजूद नहीं है (या `vendor_data` नहीं भेजा गया है), तो सत्र निर्माण `400` के साथ विफल हो जाता है। अन्य वर्कफ़्लो प्रकारों के लिए अनदेखा किया जाता है।",
                    "example": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=",
                    "x-readme-id": "0.6"
                  },
                  "sandbox_scenario": {
                    "type": "string",
                    "description": "केवल-सैंडबॉक्स परिदृश्य स्लग। केवल तभी स्वीकार किया जाता है जब API कुंजी किसी सैंडबॉक्स-मोड एप्लिकेशन से संबंधित हो; लाइव एप्लिकेशन पर अस्वीकार कर दिया जाता है। सेट होने पर, निर्माण फ़्लो परिदृश्य के बंडल किए गए मैजिक मानों को सत्र के इनपुट फ़ील्ड्स (contact_details, expected_details) पर विस्तारित करता है ताकि मॉक किए गए प्रदाता वास्तविक वर्कफ़्लो पाइपलाइन के माध्यम से परिदृश्य के परिणाम को पुनरुत्पादित करें। परिदृश्य कैटलॉग को GET /v1/sandbox/scenarios/ पर या [Sandbox & Test Data](/hi/integration/sandbox-testing) देखें। आप निर्माण के बाद POST /v3/session/{sessionId}/sandbox/arm/ के माध्यम से किसी परिदृश्य को आर्म (या पुनः आर्म) भी कर सकते हैं, जब तक कि सत्र अभी भी `Not Started` स्थिति में हो। गैर-दस्तावेज़ लुकअप के लिए, कॉन्फ़िगर किए गए प्रयास बजट और फ़ॉलबैक का परीक्षण करने हेतु `lookup_partial_match`, `lookup_no_match`, या `lookup_provider_error` का उपयोग करें। पहचान वॉलेट के लिए, `wallet_cancelled`, `wallet_timeout`, या `wallet_provider_error` का उपयोग करें; `approve` एक सत्यापित वॉलेट का अनुकरण करता है। सभी कैटलॉग वॉलेट का सैंडबॉक्स में परीक्षण किया जा सकता है, जिसमें वे स्कीमें भी शामिल हैं जो लाइव एप्लिकेशन पर उपलब्ध नहीं हैं। अनुकरण किए गए प्रयासों के लिए कोई शुल्क नहीं लिया जाता है।",
                    "example": "decline_document_expired"
                  },
                  "sign": {
                    "type": "object",
                    "description": "इस सत्र के लिए ई-हस्ताक्षर इनपुट। `documents` हस्ताक्षर किए जाने वाले दस्तावेज़ हैं, ऐसे वर्कफ़्लो के लिए जिसका ई-हस्ताक्षर चरण सत्र से दस्तावेज़ लेता है (`signature_documents_source` `session` या `both`): कुल मिलाकर अधिकतम 20 दस्तावेज़ और 50 MB। `field_values` उन फ़ील्ड को भरता है जिनका `prefill` वर्कफ़्लो और सत्र, दोनों के दस्तावेज़ों में `api.<key>` है। समान `workflow_id` और `vendor_data` के लिए फिर से सत्र बनाने पर लंबित सत्र वापस मिलता है; यदि वह कॉल `sign` भेजती है, तो उसके दस्तावेज़, फ़ील्ड और मान पहले वाले के समान होने चाहिए, और कुछ भी भिन्न होने पर `{\"sign\": \"signature_document_changed\"}` के साथ `400` वापस मिलता है। [ई-हस्ताक्षर दस्तावेज़](/hi/sessions-api/create-session#ई-हस्ताक्षर-दस्तावेज़) देखें।",
                    "properties": {
                      "documents": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 20,
                        "items": {
                          "$ref": "#/components/schemas/SessionSignDocument"
                        }
                      },
                      "field_values": {
                        "type": "object",
                        "description": "प्रत्येक `api.<key>` प्री-फ़िल स्रोत के `<key>` द्वारा कीड मान: `text` और `data` फ़ील्ड के लिए 1 से 500 वर्णों की स्ट्रिंग, `checkbox` के लिए बूलियन। किसी ऐसी की (key) के लिए `field_value_unknown` के साथ `400` जिसका उपयोग कोई फ़ील्ड नहीं करता है, अपने मान के बिना आवश्यक फ़ील्ड के लिए `field_value_missing`, और अपने फ़ील्ड के सत्यापन में विफल रहने वाले मान के लिए `field_value_invalid`।",
                        "additionalProperties": {
                          "oneOf": [
                            {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 500
                            },
                            {
                              "type": "boolean"
                            }
                          ]
                        },
                        "example": {
                          "credit_limit": "3,000 EUR"
                        }
                      }
                    }
                  },
                  "user_state": {
                    "type": "string",
                    "maxLength": 16,
                    "description": "व्यक्ति कहाँ रहता है, जब आपको यह पता हो: एक ISO 3166-2 सबडिवीजन कोड (`US-IL`, `ES-M`) या एक US राज्य कोड या नाम (`IL`, `Illinois`)। ऐसा राज्य जिसका कानून स्पष्ट बायोमेट्रिक सहमति की मांग करता है (Illinois, Texas, Colorado), सत्यापन फ़्लो में चेहरा कैप्चर करने से पहले `declared_state` ट्रिगर के साथ इसके लिए सहमति मांगी जाती है। अपरिचित मान `400` लौटाता है। देखें [बायोमेट्रिक सहमति](/hi/getting-started/biometric-consent)।",
                    "example": "US-IL"
                  },
                  "biometric_consent": {
                    "type": "object",
                    "description": "स्पष्ट बायोमेट्रिक सहमति जो आपने व्यक्ति से पहले ही एकत्र कर ली है। यह आवश्यकता को पूरा करती है, इसलिए सत्यापन प्रवाह दोबारा नहीं पूछता है, और निर्णय इसे `customer_collected` ट्रिगर के साथ `status: \"given\"` के रूप में रिकॉर्ड करता है। व्यक्ति द्वारा प्रवाह में पहले दिया गया उत्तर कभी नहीं बदला जाता है। देखें [बायोमेट्रिक सहमति](/hi/getting-started/biometric-consent)।",
                    "required": [
                      "given_at",
                      "text_version"
                    ],
                    "properties": {
                      "given_at": {
                        "type": "string",
                        "format": "date-time",
                        "description": "व्यक्ति ने स्पष्ट बायोमेट्रिक सहमति कब दी (ISO 8601)। भविष्य की तिथि नहीं हो सकती।"
                      },
                      "text_version": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "व्यक्ति द्वारा स्वीकार किए गए सहमति टेक्स्ट का संस्करण id, आपके अपने रिकॉर्ड में।"
                      }
                    }
                  }
                },
                "example": {
                  "workflow_id": "11111111-2222-3333-4444-555555555555",
                  "vendor_data": "user-123",
                  "callback": "https://example.com/verification/callback",
                  "callback_method": "both",
                  "metadata": {
                    "user_type": "premium",
                    "account_id": "ABC123"
                  },
                  "language": "en",
                  "contact_details": {
                    "email": "john.doe@example.com",
                    "send_notification_emails": true,
                    "email_lang": "en",
                    "phone": "+14155552671"
                  },
                  "expected_details": {
                    "first_name": "John",
                    "last_name": "Doe",
                    "date_of_birth": "1990-05-15",
                    "id_country": "USA",
                    "expected_document_types": [
                      "P",
                      "ID"
                    ]
                  }
                }
              },
              "examples": {
                "Create KYC session": {
                  "summary": "उपयोगकर्ता सत्यापन (KYC) सत्र के लिए पूर्ण हैप्पी-पाथ payload",
                  "description": "वास्तविक निर्माण कॉल जो प्रत्येक सामान्यतः सेट किए गए फ़ील्ड का उपयोग करती है: वर्कफ़्लो चयन, वेंडर लिंकेज, कॉलबैक रूटिंग, मेटाडेटा, लोकेल, संपर्क प्रीफ़िल, और अपेक्षित उपयोगकर्ता विवरण। इसे सीधे ऊपर दिए गए cURL नमूने में कॉपी-पेस्ट करें।",
                  "value": {
                    "workflow_id": "11111111-2222-3333-4444-555555555555",
                    "vendor_data": "user-123",
                    "callback": "https://example.com/verification/callback",
                    "callback_method": "both",
                    "metadata": {
                      "user_type": "premium",
                      "account_id": "ABC123"
                    },
                    "language": "en",
                    "contact_details": {
                      "email": "john.doe@example.com",
                      "send_notification_emails": true,
                      "email_lang": "en",
                      "phone": "+14155552671"
                    },
                    "expected_details": {
                      "first_name": "John",
                      "last_name": "Doe",
                      "date_of_birth": "1990-05-15",
                      "nationality": "USA",
                      "id_country": "USA",
                      "expected_document_types": [
                        "P",
                        "ID"
                      ]
                    }
                  }
                },
                "Create KYB session": {
                  "summary": "व्यवसाय सत्यापन (KYB) सत्र के लिए हैप्पी-पाथ payload",
                  "description": "KYC कॉल के समान आकार — `workflow_id` ही सत्र को KYB बनाता है। `vendor_data` आमतौर पर आपके सिस्टम में कंपनी को संदर्भित करता है और `contact_details.email` उस कानूनी प्रतिनिधि को लक्षित करता है जो फ़्लो को पूरा करेगा। `expected_details` व्यावसायिक फ़ील्ड्स (`company_name`, `registry_country`, `registration_number`) को स्वीकार करता है, जो कंपनी रजिस्ट्री खोज को पूर्व-भरते हैं; KYB वर्कफ़्लो के लिए व्यक्ति-स्तरीय फ़ील्ड्स और `contact_details.phone` को अनदेखा कर दिया जाता है।",
                  "value": {
                    "workflow_id": "33333333-4444-5555-6666-777777777777",
                    "vendor_data": "company-acme-001",
                    "callback": "https://example.com/kyb/callback",
                    "callback_method": "both",
                    "metadata": {
                      "tier": "enterprise",
                      "company_id": "ACME-001"
                    },
                    "expected_details": {
                      "company_name": "Tesco PLC",
                      "registry_country": "GB",
                      "registration_number": "00445790"
                    },
                    "language": "en",
                    "contact_details": {
                      "email": "legal-rep@acme.example.com",
                      "send_notification_emails": true,
                      "email_lang": "en"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/session/imports/": {
      "post": {
        "summary": "एक सत्यापन इंपोर्ट जॉब बनाएँ",
        "description": "ऐतिहासिक उपयोगकर्ता सत्यापन (User Verification) सत्रों, व्यवसाय सत्यापन (Business Verification) सत्रों, लेन-देन निगरानी रिकॉर्डों, या वर्कफ़्लो कस्टम स्थिति नियमों के लिए एक एसिंक्रोनस इंपोर्ट जॉब बनाएं। किसी अन्य प्रदाता से माइग्रेट करने के लिए `source=provider` सेट करें: Didit आपकी रीड-ओनली कुंजी के साथ Sumsub, Onfido, Persona और ComplyCube को पढ़ता है, `file` में आपके द्वारा अपलोड की गई ID द्वारा Veriff, iDenfy और MetaMap रिकॉर्ड पढ़ता है, और अन्य प्रदाताओं के लिए Didit के प्रारूप में एक एक्सपोर्ट फ़ाइल इंपोर्ट करता है। रिकॉर्ड ID प्रदाता द्वारा नेमस्पेस की जाती हैं (`sumsub:<id>`) ताकि फिर से चलाने पर Didit में पहले से मौजूद हर चीज़ छूट जाए, और प्रदाता की केवल ID वाली फ़ाइल के माध्यम से इंपोर्ट किए गए रिकॉर्ड को भी दोनों दिशाओं में पहचाना जाता है, इसलिए फ़ाइल इंपोर्ट और प्रदाता माइग्रेशन के बीच स्विच करने पर कोई भी रिकॉर्ड कभी दो बार इंपोर्ट नहीं होता है। एक एप्लिकेशन एक साथ अधिकतम 4 इंपोर्ट जॉब चला सकता है; डिप्लॉय या वर्कर रीस्टार्ट से बाधित जॉब अपनी पिछली इंपोर्ट की गई पंक्ति से स्वतः जारी रहता है। इंपोर्ट डिफ़ॉल्ट रूप से अक्षम होते हैं और उन्हें Didit द्वारा प्रति संगठन सक्षम किया जाना चाहिए।",
        "operationId": "post_v3_session_imports_create",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "import_type": {
                    "type": "string",
                    "enum": [
                      "user_verification",
                      "business_verification",
                      "status_rules",
                      "transactions"
                    ],
                    "default": "user_verification",
                    "description": "क्या इंपोर्ट करना है: ऐतिहासिक उपयोगकर्ता सत्यापन सत्र, ऐतिहासिक व्यवसाय सत्यापन सत्र, वर्कफ़्लो कस्टम स्थिति नियम, या ऐतिहासिक लेन-देन निगरानी रिकॉर्ड।"
                  },
                  "workflow_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "वर्कफ़्लो UUID जिससे इंपोर्ट किए गए सत्र या स्थिति नियम जुड़े होने चाहिए। user_verification, business_verification और status_rules के लिए आवश्यक। लेन-देन के लिए छोड़ दें।"
                  },
                  "source_format": {
                    "type": "string",
                    "enum": [
                      "csv",
                      "ndjson"
                    ],
                    "description": "वैकल्पिक। छोड़े जाने पर अपलोड किए गए फ़ाइल एक्सटेंशन से अनुमान लगाया जाता है।"
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "कैनोनिकल CSV या NDJSON फ़ाइल। बड़े इंपोर्ट के लिए NDJSON का उपयोग करें। अधिकतम अपलोड आकार 25 MB (बड़ी फ़ाइलों के लिए `source_file_url` का उपयोग करें)। `source_file_url` के साथ एक साथ उपयोग नहीं किया जा सकता।"
                  },
                  "source_file_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "फ़ाइल अपलोड का विकल्प। यह सार्वजनिक पते पर रिज़ॉल्व होने वाला एक HTTPS URL होना चाहिए (निजी/लूपबैक नेटवर्क अस्वीकृत कर दिए जाते हैं)। `file` के साथ परस्पर अनन्य।"
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "file",
                      "provider"
                    ],
                    "description": "`provider` से यह किसी अन्य पहचान सत्यापन प्रदाता से माइग्रेशन हो जाता है। फ़ाइल इंपोर्ट के लिए इसे छोड़ दें।"
                  },
                  "provider": {
                    "type": "string",
                    "enum": [
                      "sumsub",
                      "jumio",
                      "veriff",
                      "onfido",
                      "persona",
                      "metamap",
                      "socure",
                      "idnow",
                      "shufti",
                      "idenfy",
                      "ondato",
                      "trulioo",
                      "au10tix",
                      "complycube",
                      "other"
                    ],
                    "description": "माइग्रेशन स्रोत, `GET /v3/session/imports/providers/` से। जब `source` का मान `provider` हो, तब आवश्यक है।"
                  },
                  "credentials": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "प्रदाता की केवल-पढ़ने योग्य कुंजी, उन फ़ील्ड नामों के साथ जो `credential_fields` में सूचीबद्ध हैं। स्थिर अवस्था में एन्क्रिप्टेड, कभी वापस नहीं की जाती, और इंपोर्ट समाप्त होने पर मिटा दी जाती है। इसे multipart में JSON स्ट्रिंग के रूप में भेजें।"
                  },
                  "options": {
                    "type": "object",
                    "properties": {
                      "region": {
                        "type": "string",
                        "description": "प्रदाता क्षेत्र, इसके `regions` में से एक (Onfido: `eu`, `us`, `ca`)।"
                      }
                    }
                  },
                  "status_mapping": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "enum": [
                        "Approved",
                        "Declined",
                        "In Review",
                        "Expired",
                        "Not Finished",
                        "Abandoned"
                      ]
                    },
                    "description": "प्रदाता के डिफ़ॉल्ट स्टेटस मैपिंग में संपादन: स्रोत स्टेटस से Didit स्टेटस। `Not Finished` और `Abandoned` को छोड़ दिया जाता है और गिना जाता है, कभी इंपोर्ट नहीं किया जाता।"
                  },
                  "dry_run": {
                    "type": "boolean",
                    "default": false,
                    "description": "गणना करें कि माइग्रेशन क्या इंपोर्ट करेगा (स्थिति के अनुसार, Didit में पहले से मौजूद, वही व्यक्ति, पूर्ण नहीं) और कुछ भी न लिखें। जॉब `READY` समाप्त होता है; इसे `POST /v3/session/imports/{importId}/start/` के साथ शुरू करें।"
                  },
                  "face_templates": {
                    "type": "boolean",
                    "default": false,
                    "description": "इंपोर्ट की गई सेल्फ़ी से फ़ेस टेम्पलेट बनाएं और एप्लिकेशन के चेहरों और ब्लॉकलिस्ट के विरुद्ध उनकी खोज करें। मिलान केवल समीक्षा के लिए चिह्नित किए जाते हैं। इसके लिए `lawful_basis_confirmed` आवश्यक है।"
                  },
                  "lawful_basis_confirmed": {
                    "type": "boolean",
                    "default": false,
                    "description": "पुष्टि करता है कि आपके पास प्रोसेसर के रूप में Didit के साथ इन सेल्फ़ी को साझा करने का कानूनी आधार है।"
                  }
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "source_file_url"
                ],
                "properties": {
                  "import_type": {
                    "type": "string",
                    "enum": [
                      "user_verification",
                      "business_verification",
                      "status_rules",
                      "transactions"
                    ],
                    "default": "user_verification",
                    "description": "क्या इंपोर्ट करना है: ऐतिहासिक उपयोगकर्ता सत्यापन सत्र, ऐतिहासिक व्यवसाय सत्यापन सत्र, वर्कफ़्लो कस्टम स्थिति नियम, या ऐतिहासिक लेन-देन निगरानी रिकॉर्ड।"
                  },
                  "workflow_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "वर्कफ़्लो UUID जिससे इंपोर्ट किए गए सत्र या स्थिति नियम जुड़े होने चाहिए। user_verification, business_verification और status_rules के लिए आवश्यक। लेन-देन के लिए छोड़ दें।"
                  },
                  "source_format": {
                    "type": "string",
                    "enum": [
                      "csv",
                      "ndjson"
                    ],
                    "description": "वैकल्पिक। छोड़े जाने पर URL के फ़ाइल एक्सटेंशन से अनुमान लगाया जाता है।"
                  },
                  "source_file_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "फ़ाइल अपलोड का विकल्प। यह सार्वजनिक पते पर रिज़ॉल्व होने वाला एक HTTPS URL होना चाहिए (निजी/लूपबैक नेटवर्क अस्वीकृत कर दिए जाते हैं)। `file` के साथ परस्पर अनन्य।"
                  },
                  "source": {
                    "type": "string",
                    "enum": [
                      "file",
                      "provider"
                    ],
                    "description": "`provider` से यह किसी अन्य पहचान सत्यापन प्रदाता से माइग्रेशन हो जाता है। फ़ाइल इंपोर्ट के लिए इसे छोड़ दें।"
                  },
                  "provider": {
                    "type": "string",
                    "enum": [
                      "sumsub",
                      "jumio",
                      "veriff",
                      "onfido",
                      "persona",
                      "metamap",
                      "socure",
                      "idnow",
                      "shufti",
                      "idenfy",
                      "ondato",
                      "trulioo",
                      "au10tix",
                      "complycube",
                      "other"
                    ],
                    "description": "माइग्रेशन स्रोत, `GET /v3/session/imports/providers/` से। जब `source` का मान `provider` हो, तब आवश्यक है।"
                  },
                  "credentials": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "प्रदाता की केवल-पढ़ने योग्य कुंजी, उन फ़ील्ड नामों के साथ जो `credential_fields` में सूचीबद्ध हैं। स्थिर अवस्था में एन्क्रिप्टेड, कभी वापस नहीं की जाती, और इंपोर्ट समाप्त होने पर मिटा दी जाती है। इसे multipart में JSON स्ट्रिंग के रूप में भेजें।"
                  },
                  "options": {
                    "type": "object",
                    "properties": {
                      "region": {
                        "type": "string",
                        "description": "प्रदाता क्षेत्र, इसके `regions` में से एक (Onfido: `eu`, `us`, `ca`)।"
                      }
                    }
                  },
                  "status_mapping": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "enum": [
                        "Approved",
                        "Declined",
                        "In Review",
                        "Expired",
                        "Not Finished",
                        "Abandoned"
                      ]
                    },
                    "description": "प्रदाता के डिफ़ॉल्ट स्टेटस मैपिंग में संपादन: स्रोत स्टेटस से Didit स्टेटस। `Not Finished` और `Abandoned` को छोड़ दिया जाता है और गिना जाता है, कभी इंपोर्ट नहीं किया जाता।"
                  },
                  "dry_run": {
                    "type": "boolean",
                    "default": false,
                    "description": "गणना करें कि माइग्रेशन क्या इंपोर्ट करेगा (स्थिति के अनुसार, Didit में पहले से मौजूद, वही व्यक्ति, पूर्ण नहीं) और कुछ भी न लिखें। जॉब `READY` समाप्त होता है; इसे `POST /v3/session/imports/{importId}/start/` के साथ शुरू करें।"
                  },
                  "face_templates": {
                    "type": "boolean",
                    "default": false,
                    "description": "इंपोर्ट की गई सेल्फ़ी से फ़ेस टेम्पलेट बनाएं और एप्लिकेशन के चेहरों और ब्लॉकलिस्ट के विरुद्ध उनकी खोज करें। मिलान केवल समीक्षा के लिए चिह्नित किए जाते हैं। इसके लिए `lawful_basis_confirmed` आवश्यक है।"
                  },
                  "lawful_basis_confirmed": {
                    "type": "boolean",
                    "default": false,
                    "description": "पुष्टि करता है कि आपके पास प्रोसेसर के रूप में Didit के साथ इन सेल्फ़ी को साझा करने का कानूनी आधार है।"
                  }
                }
              },
              "examples": {
                "URL-based import": {
                  "value": {
                    "import_type": "user_verification",
                    "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                    "source_file_url": "https://files.example.com/exports/sessions.ndjson"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "इंपोर्ट जॉब स्वीकृत हो गया। लौटाए गए `uuid` को तब तक पोल करें जब तक कि `status` `COMPLETED` या `FAILED` न हो जाए।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                },
                "examples": {
                  "Job accepted": {
                    "value": {
                      "uuid": "3f9c1a2b-4d5e-4f60-8a7b-9c0d1e2f3a4b",
                      "status": "PENDING",
                      "import_type": "user_verification",
                      "source_format": "ndjson",
                      "source_filename": "sessions.ndjson",
                      "total_rows": 0,
                      "processed_rows": 0,
                      "checkpoint_row": 0,
                      "created_count": 0,
                      "updated_count": 0,
                      "skipped_count": 0,
                      "failed_count": 0,
                      "total_media_bytes": 0,
                      "last_error": null,
                      "created_at": "2026-05-17T08:42:11Z",
                      "updated_at": "2026-05-17T08:42:11Z",
                      "started_at": null,
                      "completed_at": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य वर्कफ़्लो, फ़ाइल प्रकार, फ़ाइल आकार, स्रोत URL, या चयनकर्ता संयोजन। ऐसा माइग्रेशन जिसकी कुंजी को प्रदाता अस्वीकार कर देता है, वह `code` (`invalid_credentials`, `missing_permission`, `wrong_region`, `provider_unavailable`, `rate_limited`, `ids_required`, `record_not_found`), `missing_permissions` और `suggested_region` का उत्तर देता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid workflow": {
                    "value": {
                      "workflow_id": [
                        "Invalid workflow_id."
                      ]
                    }
                  },
                  "Workflow required": {
                    "value": {
                      "workflow_id": [
                        "This field is required for this import type."
                      ]
                    }
                  },
                  "Wrong file type": {
                    "value": {
                      "file": [
                        "Only CSV and NDJSON files are supported."
                      ]
                    }
                  },
                  "File too large": {
                    "value": {
                      "file": [
                        "Import file exceeds the maximum allowed size."
                      ]
                    }
                  },
                  "No source": {
                    "value": {
                      "file": [
                        "Upload a file or provide source_file_url."
                      ]
                    }
                  },
                  "Both sources": {
                    "value": {
                      "file": [
                        "Use either file or source_file_url, not both."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "इंपोर्ट सक्षम नहीं हैं, सैंडबॉक्स एप्लिकेशन, या अनुपलब्ध API कुंजी (गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है)। सत्यापन इंपोर्ट डिफ़ॉल्ट रूप से अक्षम होते हैं और उन्हें Didit द्वारा प्रति संगठन सक्षम किया जाना चाहिए।",
            "content": {
              "application/json": {
                "examples": {
                  "Imports not enabled": {
                    "value": {
                      "detail": "Verification imports are not enabled for this organization."
                    }
                  },
                  "Sandbox": {
                    "value": {
                      "detail": "Verification imports are not enabled for sandbox applications."
                    }
                  },
                  "Bad API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "एप्लिकेशन में पहले से ही 4 सक्रिय इंपोर्ट जॉब (PENDING/PROCESSING/PAUSED) हैं, जो एक साथ चलने की अधिकतम सीमा है। दूसरा शुरू करने से पहले किसी एक के समाप्त होने की प्रतीक्षा करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Active job": {
                    "value": {
                      "detail": "This application already has 4 active import jobs, the most it can run at once. Wait for one to finish before starting another."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.create(\n    import_type=\"user_verification\",\n    workflow_id=\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n    source_file_url=\"https://files.example.com/exports/sessions.ndjson\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.create({\n  import_type: \"user_verification\",\n  workflow_id: \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n  source_file_url: \"https://files.example.com/exports/sessions.ndjson\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Create(ctx, didit.SessionsImportsCreateParams{\n\tImportType:    didit.Some(didit.SessionsImportsCreateParamsImportType(\"user_verification\")),\n\tWorkflowID:    didit.String(\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\"),\n\tSourceFileURL: didit.String(\"https://files.example.com/exports/sessions.ndjson\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsImportsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().create(SessionsImportsCreateParams.builder()\n        .importType(SessionsImportsCreateParams.ImportType.of(\"user_verification\"))\n        .workflowId(\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\")\n        .sourceFileUrl(\"https://files.example.com/exports/sessions.ndjson\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->create([\n    'import_type' => 'user_verification',\n    'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',\n    'source_file_url' => 'https://files.example.com/exports/sessions.ndjson',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.create(\n  import_type: \"user_verification\",\n  workflow_id: \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n  source_file_url: \"https://files.example.com/exports/sessions.ndjson\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.CreateAsync(new SessionsImportsCreateParams\n{\n    ImportType = new SessionsImportsCreateParamsImportType(\"user_verification\"),\n    WorkflowId = \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n    SourceFileUrl = \"https://files.example.com/exports/sessions.ndjson\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/template/": {
      "get": {
        "summary": "सत्यापन इंपोर्ट टेम्पलेट डाउनलोड करें",
        "description": "सत्यापन आयात के लिए प्रामाणिक CSV हेडर डाउनलोड करें। कॉलम सेट `import_type` द्वारा निर्धारित होता है। सत्र टेम्पलेट्स का पहला कॉलम आइडेम्पोटेंसी कुंजी `external_id` है।",
        "operationId": "get_v3_session_imports_template",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "retrieve_template",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "import_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "user_verification",
                "business_verification",
                "status_rules",
                "transactions"
              ],
              "default": "user_verification"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "CSV टेम्पलेट फ़ाइल।",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इंपोर्ट टेम्पलेट्स डाउनलोड नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "summary": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.imports.retrieve_template()\nwith open(\"download.csv\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.imports.retrieveTemplate();\nawait writeFile(\"download.csv\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.Imports.RetrieveTemplate(ctx, didit.SessionsImportsRetrieveTemplateParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.csv\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().imports().retrieveTemplate()\n        .writeTo(Path.of(\"download.csv\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->imports->retrieveTemplate();\n$content->saveTo('download.csv');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.imports.retrieve_template\nFile.binwrite(\"download.csv\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.Imports.RetrieveTemplateAsync();\nawait content.SaveToAsync(\"download.csv\");"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/": {
      "get": {
        "summary": "सत्यापन इंपोर्ट जॉब प्राप्त करें",
        "description": "एक जॉब के लिए इंपोर्ट प्रगति काउंटर और अंतिम स्थिति प्राप्त करें। तब तक पोल करें जब तक कि `status` `COMPLETED` या `FAILED` न हो जाए; `failed_count` > 0 का अर्थ है कि कुछ पंक्तियाँ अस्वीकार कर दी गईं — त्रुटि endpoint के माध्यम से उनकी सूची प्राप्त करें।",
        "operationId": "get_v3_session_imports_retrieve",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "इंपोर्ट जॉब की स्थिति।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए इंपोर्ट जॉब नहीं मिला।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए इंपोर्ट जॉब्स नहीं पढ़ सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "summary": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/errors/": {
      "get": {
        "summary": "सत्यापन इंपोर्ट पंक्ति त्रुटियों की सूची बनाएं",
        "description": "`row_number` के अनुसार क्रमित, किसी सत्यापन इंपोर्ट कार्य के लिए पंक्ति-स्तरीय त्रुटियों को सूचीबद्ध करें। केवल विफल पंक्तियों वाली संशोधित पुनः प्रयास फ़ाइल तैयार करने के लिए इस endpoint का उपयोग करें।",
        "operationId": "get_v3_session_imports_errors",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "list_errors",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार। छोड़े जाने पर डिफ़ॉल्ट 50 होता है।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "लौटाए जाने वाले पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट।"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड पंक्ति त्रुटियां।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "त्रुटि पंक्तियों की संख्या — 100 तक सटीक, उससे अधिक होने पर 100 तक सीमित। अंतिम पेज का पता लगाने के लिए `next` के `null` होने पर निर्भर रहें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SessionImportError"
                      }
                    }
                  }
                },
                "examples": {
                  "Row errors": {
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "5a6b7c8d-9e0f-4a1b-8c2d-3e4f5a6b7c8d",
                          "row_number": 17,
                          "external_id": "ext-000017",
                          "error": "status: invalid value 'unknown_status'",
                          "raw_row": {
                            "external_id": "ext-000017",
                            "status": "unknown_status",
                            "first_name": "Jane"
                          },
                          "created_at": "2026-05-17T08:44:02Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए इंपोर्ट जॉब नहीं मिला।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए इंपोर्ट जॉब्स नहीं पढ़ सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "summary": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.sessions.imports.list_errors(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.sessions.imports.listErrors(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.Imports.ListErrorsAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsImportsListErrorsParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.sessions().imports().listErrors(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->sessions->imports->listErrors('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.imports.list_errors(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Sessions.Imports.ListErrorsAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/decision/": {
      "get": {
        "summary": "सत्यापन सत्र के लिए पूर्ण निर्णय प्राप्त करें",
        "description": "सत्यापन सत्र के लिए संपूर्ण निर्णय रिपोर्ट प्राप्त करें — रोल्ड-अप सत्र `status` के साथ-साथ वर्कफ़्लो द्वारा निष्पादित प्रत्येक सत्यापन सुविधा के लिए एक रिपोर्ट। यह उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) सत्रों दोनों के लिए कैनोनिकल रीड endpoint है: एक ही पाथ दोनों को सेवा प्रदान करता है, और शीर्ष-स्तरीय `session_kind` डिस्क्रिमिनेटर आपको बताता है कि आपको कौन-सी संरचना प्राप्त हुई (`\"user\"` या `\"business\"`)।\n\n**प्रत्येक सुविधा रिपोर्ट एक बहुवचन ऐरे है।** V3 वर्कफ़्लो ऐसे ग्राफ़ हैं जो एक ही सुविधा को एक से अधिक बार चला सकते हैं, इसलिए प्रत्येक ब्लॉक (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`) एक JSON ऐरे है जिसके प्रत्येक आइटम में एक `node_id` होता है जो उन्हें उत्पन्न करने वाले वर्कफ़्लो ग्राफ़ नोड की पहचान करता है। NFC को `response.nfc_verifications[0]` के रूप में पढ़ें — कभी भी एकवचन `nfc` फ़ील्ड के रूप में नहीं। जब तक वर्कफ़्लो उस सुविधा को कम से कम एक बार नहीं चला लेता, तब तक एक ब्लॉक `null` रहता है; जो सुविधाएं वर्कफ़्लो में शामिल नहीं हैं, वे कभी भी डेटा के साथ दिखाई नहीं देती हैं। ई-हस्ताक्षर के परिणाम `signatures` में होते हैं, जो केवल तब मौजूद होते हैं जब वर्कफ़्लो में एक ई-हस्ताक्षर चरण होता है।\n\n**कब कॉल करें।** अनुशंसित पैटर्न इवेंट-संचालित है: `status.updated` webhook की प्रतीक्षा करें जो तब ट्रिगर होता है जब सत्र किसी निर्णय (`Approved`, `Declined`, `In Review`) पर पहुँचता है, फिर पूरी रिपोर्ट प्राप्त करने के लिए इस endpoint को एक बार कॉल करें। पोलिंग भी काम करती है — इस endpoint को सत्र लाइफ़साइकिल में किसी भी समय कॉल किया जा सकता है और यह अब तक उत्पन्न डेटा लौटाता है — लेकिन webhook के बाद रिपोर्ट प्राप्त करना (webhook-then-fetch) अधिक किफ़ायती और तेज़ है। रिस्पॉन्स में मीडिया URL (दस्तावेज़ की छवियां, वीडियो, PDF) अल्पकालिक प्री-साइन्ड लिंक होते हैं: उन्हें तुरंत प्राप्त करें या नए लिंक प्राप्त करने के लिए निर्णय का पुनः अनुरोध करें, और उन्हें दीर्घकालिक संदर्भों के रूप में सहेज कर न रखें।\n\n**स्थितियाँ।** शीर्ष-स्तरीय `status` सत्र लाइफ़साइकिल स्थिति है (`Not Started`, `In Progress`, `Awaiting User`, `In Review`, `Approved`, `Declined`, `Resubmitted`, `Expired`, `Kyc Expired`, `Abandoned`)। प्रत्येक सुविधा आइटम अतिरिक्त रूप से अपनी स्वयं की सुविधा-स्तरीय `status` (`Not Finished`, `Approved`, `Declined`, `In Review`, ...) रखता है। वर्कफ़्लो के निर्णय नियमों के आधार पर, एक व्यक्तिगत सुविधा के `In Review` होने के बावजूद एक सत्र कुल मिलाकर `Approved` हो सकता है।\n\n**प्रमाणीकरण और दृश्यता।** `x-api-key` हेडर में एप्लिकेशन API कुंजी के साथ प्रमाणित करें (`read:sessions` अनुमति वाला कंसोल उपयोगकर्ता Bearer token भी काम करता है)। केवल प्रमाणित एप्लिकेशन के स्वामित्व वाले सत्र ही दिखाई देते हैं। यदि आपका वर्कफ़्लो रिस्पॉन्स विशेषताओं को प्रतिबंधित करता है, तो सुविधा आइटम के अंदर गैर-अनुमत फ़ील्ड `null` के रूप में लौटाए जाते हैं, जबकि `status`, `warnings`, और `node_id` हमेशा बनाए रखे जाते हैं।\n\n**रेट लिमिट।** GET अनुरोध प्रति API कुंजी प्रति मिनट 600 तक सीमित हैं। सीमा पार करने पर `Retry-After` और `X-RateLimit-*` हेडर के साथ `429` लौटता है।",
        "operationId": "get_v3_session_decision",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "retrieve_decision",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "200": {
            "description": "पूर्ण निर्णय रिपोर्ट। `session_kind` दोनों आकारों में अंतर करता है: `user` सत्र नीचे दिखाए गए KYC फ़ीचर ऐरे ले जाते हैं; `business` सत्र इसके बजाय साझा ऐरे के साथ `registry_checks`, `document_verifications` और `key_people_checks` ले जाते हैं। वर्कफ़्लो द्वारा उस फ़ीचर को चलाने तक फ़ीचर ऐरे `null` होते हैं; मीडिया URL अल्पकालिक प्री-साइन्ड लिंक होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Example": {
                    "summary": "पूर्ण उदाहरण",
                    "value": {
                      "session_id": "11111111-2222-3333-4444-555555555555",
                      "session_kind": "user",
                      "session_number": 43762,
                      "session_url": "https://verify.didit.me/session/11111111-2222-3333-4444-555555555555",
                      "status": "In Review",
                      "environment": "live",
                      "workflow_id": "11111111-2222-3333-4444-555555555555",
                      "features": [
                        "ID_VERIFICATION",
                        "NFC",
                        "LIVENESS",
                        "FACE_MATCH",
                        "POA",
                        "PHONE",
                        "DATABASE_VALIDATION",
                        "AML",
                        "IP_ANALYSIS"
                      ],
                      "vendor_data": "11111111-1111-1111-1111-111111111111",
                      "metadata": {
                        "user_type": "premium",
                        "account_id": "ABC123"
                      },
                      "expected_details": {
                        "first_name": "Carmen",
                        "last_name": "Española Española"
                      },
                      "contact_details": {
                        "email": "carmen@example.com",
                        "email_lang": "es",
                        "send_notification_emails": false,
                        "phone": null
                      },
                      "callback": "https://verify.didit.me/",
                      "id_verifications": [
                        {
                          "node_id": "feature_ocr_1",
                          "status": "Approved",
                          "document_type": "Identity Card",
                          "document_subtype": "ID_CARD_GENERIC",
                          "document_number": "CAA000000",
                          "personal_number": "99999999R",
                          "portrait_image": "https://<media-host>/portrait.jpg",
                          "front_image": "https://<media-host>/front.jpg",
                          "front_video": "https://<media-host>/front.mp4",
                          "back_image": "https://<media-host>/back.jpg",
                          "back_video": "https://<media-host>/back.mp4",
                          "full_front_image": "https://<media-host>/full_front.jpg",
                          "full_back_image": "https://<media-host>/full_back.jpg",
                          "front_image_camera_front": "https://<media-host>/front_camera_front.jpg",
                          "back_image_camera_front": "https://<media-host>/back_camera_front.jpg",
                          "date_of_birth": "1980-01-01",
                          "age": 45,
                          "expiration_date": "2031-06-02",
                          "date_of_issue": "2021-06-02",
                          "issuing_state": "ESP",
                          "issuing_state_name": "Spain",
                          "first_name": "Carmen",
                          "last_name": "Española Española",
                          "full_name": "Carmen Española Española",
                          "gender": "F",
                          "address": "Avda de Madrid 34, Madrid, Madrid",
                          "formatted_address": "Avda de Madrid 34, Madrid, Madrid 28822, Spain",
                          "place_of_birth": "Madrid",
                          "marital_status": "Single",
                          "nationality": "ESP",
                          "extra_fields": {
                            "dl_categories": [],
                            "blood_group": null
                          },
                          "mrz": {
                            "surname": "ESPANOLA ESPANOLA",
                            "name": "CARMEN",
                            "country": "ESP",
                            "nationality": "ESP",
                            "birth_date": "800101",
                            "expiry_date": "310602",
                            "sex": "F",
                            "document_type": "ID",
                            "document_number": "CAA000000",
                            "optional_data": "99999999R",
                            "optional_data_2": "",
                            "birth_date_hash": "4",
                            "expiry_date_hash": "8",
                            "document_number_hash": "4",
                            "final_hash": "1",
                            "personal_number": "99999999R",
                            "warnings": [],
                            "errors": [],
                            "mrz_type": "TD1",
                            "mrz_string": "IDESPCAA000000499999999R<<<<<<\n8001014F3106028ESP<<<<<<<<<<<1\nESPANOLA<ESPANOLA<<CARMEN<<<<<",
                            "mrz_key": "CAA000000480010143106028"
                          },
                          "parsed_address": {
                            "city": "Madrid",
                            "label": "Spain ID Card Address",
                            "region": "Madrid",
                            "country": "ES",
                            "category": "Residential",
                            "street_1": "Avda de Madrid 34",
                            "street_2": null,
                            "is_verified": true,
                            "postal_code": "28822",
                            "raw_results": {
                              "types": [
                                "street_address"
                              ],
                              "geometry": {
                                "location": {
                                  "lat": 37.4222804,
                                  "lng": -122.0843428
                                },
                                "viewport": {
                                  "northeast": {
                                    "lat": 37.4237349802915,
                                    "lng": -122.083183169709
                                  },
                                  "southwest": {
                                    "lat": 37.4210370197085,
                                    "lng": -122.085881130292
                                  }
                                },
                                "location_type": "ROOFTOP"
                              },
                              "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
                              "formatted_address": "Avda de Madrid 34, 28822 Madrid, Spain",
                              "navigation_points": [
                                {
                                  "location": {
                                    "latitude": 37.4222804,
                                    "longitude": -122.0843428
                                  }
                                }
                              ],
                              "address_components": [
                                {
                                  "types": [
                                    "street_number"
                                  ],
                                  "long_name": "34",
                                  "short_name": "34"
                                },
                                {
                                  "types": [
                                    "route"
                                  ],
                                  "long_name": "Avda de Madrid",
                                  "short_name": "Avda de Madrid"
                                },
                                {
                                  "types": [
                                    "locality",
                                    "political"
                                  ],
                                  "long_name": "Madrid",
                                  "short_name": "Madrid"
                                },
                                {
                                  "types": [
                                    "country",
                                    "political"
                                  ],
                                  "long_name": "Spain",
                                  "short_name": "ES"
                                },
                                {
                                  "types": [
                                    "postal_code"
                                  ],
                                  "long_name": "28822",
                                  "short_name": "28822"
                                }
                              ]
                            },
                            "address_type": "Avda",
                            "document_location": {
                              "latitude": 37.4222804,
                              "longitude": -122.0843428
                            },
                            "formatted_address": "Avda de Madrid 34, 28822 Madrid, Spain"
                          },
                          "front_image_camera_front_face_match_score": 95.5,
                          "back_image_camera_front_face_match_score": 93.2,
                          "document_selfie_face_matches": [
                            {
                              "session_id": "3f0c9a52-7b1e-4d68-a2c4-5e9d8b7f1a20",
                              "session_number": 1180,
                              "similarity_percentage": 97.4,
                              "vendor_data": "user_ref_001",
                              "vendor_user_id": null,
                              "biometric_template_id": null,
                              "verification_date": "2026-09-02T09:15:00Z",
                              "user_details": {
                                "full_name": "Jane Doe"
                              },
                              "match_image_url": "https://<media-host>/match_face.jpg",
                              "status": "Approved",
                              "is_blocklisted": false,
                              "is_allowlisted": false,
                              "api_service": null,
                              "source": "session"
                            }
                          ],
                          "front_image_quality_score": {
                            "focus_score": 85.3,
                            "brightness_score": 92.1,
                            "brightness_issue": "ok",
                            "is_document_fully_visible": true,
                            "resolution_score": 72.4,
                            "overall_score": 88.7
                          },
                          "back_image_quality_score": {
                            "focus_score": 79.1,
                            "brightness_score": 90.5,
                            "brightness_issue": "ok",
                            "is_document_fully_visible": true,
                            "resolution_score": 72.4,
                            "overall_score": 85.2
                          },
                          "extra_files": [
                            "https://<media-host>/extra_id_verification.jpg"
                          ],
                          "matches": [
                            {
                              "session_id": "7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f",
                              "session_number": 1234,
                              "vendor_data": "user_ref_001",
                              "verification_date": "2024-06-15T10:30:00Z",
                              "user_details": {
                                "name": "John Smith",
                                "document_type": "ID",
                                "document_number": "CLM148418"
                              },
                              "status": "Approved",
                              "is_blocklisted": false,
                              "api_service": null,
                              "front_image_url": "https://<media-host>/document_front.jpg"
                            },
                            {
                              "session_id": "b2c8e4d1-6a3f-4e7b-95c0-1d8f2a6b4c9e",
                              "session_number": 1235,
                              "vendor_data": null,
                              "verification_date": "2024-05-20T14:45:00Z",
                              "user_details": {
                                "name": "John Smith",
                                "document_type": "ID",
                                "document_number": "CLM148418"
                              },
                              "status": "Declined",
                              "is_blocklisted": true,
                              "api_service": "ID_VERIFICATION",
                              "front_image_url": "https://<media-host>/document_front_2.jpg"
                            }
                          ],
                          "warnings": [
                            {
                              "feature": "ID_VERIFICATION",
                              "risk": "QR_NOT_DETECTED",
                              "additional_data": null,
                              "log_type": "information",
                              "short_description": "QR not detected",
                              "long_description": "The system couldn't find or read the QR code on the document, which is necessary for document verification. This could be due to poor image quality or an unsupported document type.",
                              "node_id": "feature_ocr_1"
                            }
                          ],
                          "verification_method": "document",
                          "assurance": "documentary",
                          "wallet_provider": null,
                          "fallback_from": null,
                          "id_lookup": null,
                          "wallet_verification": null,
                          "document_liveness": {
                            "portrait_replace": {
                              "score": 96.46,
                              "front": 96.46,
                              "back": 98.2,
                              "decline_threshold": 35,
                              "review_threshold": 70,
                              "bucket": "approve"
                            },
                            "printed_copy": {
                              "score": 91.2,
                              "front": 91.2,
                              "back": 93.7,
                              "decline_threshold": 35,
                              "review_threshold": 77,
                              "bucket": "approve"
                            },
                            "screen_replay": {
                              "score": 99.9,
                              "front": 99.9,
                              "back": 99.5,
                              "decline_threshold": 30,
                              "review_threshold": 70,
                              "bucket": "approve"
                            }
                          }
                        },
                        {
                          "node_id": "feature_ocr_2",
                          "status": "Approved",
                          "issuing_state": "ZAF",
                          "issuing_state_name": "South Africa",
                          "first_name": "Thabo",
                          "last_name": "Mokoena",
                          "full_name": "Thabo Mokoena",
                          "date_of_birth": "1991-06-15",
                          "personal_number": "9106155043088",
                          "verification_method": "id_lookup",
                          "assurance": "data_match",
                          "wallet_provider": null,
                          "fallback_from": null,
                          "id_lookup": {
                            "source": "Department of Home Affairs",
                            "checked_at": "2026-09-04T09:12:44Z",
                            "attempts": 1,
                            "max_attempts": 2,
                            "outcome": "match",
                            "comparison": [
                              {
                                "field": "identification_number",
                                "label": "ID number",
                                "provided": "9106155043088",
                                "record": "9106155043088",
                                "result": "match"
                              },
                              {
                                "field": "full_name",
                                "label": "Full name",
                                "provided": "Thabo Mokoena",
                                "record": "Thabo Mokoena",
                                "result": "match"
                              },
                              {
                                "field": "date_of_birth",
                                "label": "Date of birth",
                                "provided": "1991-06-15",
                                "record": "1991-06-15",
                                "result": "match"
                              }
                            ],
                            "registry_portrait": "https://<media-host>/registry_portrait.jpg",
                            "face_match_score": 96.4,
                            "source_errors": []
                          },
                          "wallet_verification": null,
                          "warnings": []
                        },
                        {
                          "node_id": "feature_ocr_3",
                          "status": "Approved",
                          "issuing_state": "DNK",
                          "issuing_state_name": "Denmark",
                          "first_name": "Freja",
                          "last_name": "Nielsen",
                          "full_name": "Freja Nielsen",
                          "date_of_birth": "1988-03-02",
                          "verification_method": "wallet",
                          "assurance": "cryptographic",
                          "wallet_provider": "mitid",
                          "fallback_from": null,
                          "id_lookup": null,
                          "wallet_verification": {
                            "provider": "mitid",
                            "provider_name": "MitID",
                            "issuing_authority": "Danish Agency for Digital Government",
                            "issuing_country": "DNK",
                            "credential_type": "person_identification",
                            "level_of_assurance": "substantial",
                            "verified_at": "2026-09-04T09:12:44Z",
                            "signature_valid": true,
                            "attributes": {
                              "full_name": "Freja Nielsen",
                              "date_of_birth": "1988-03-02",
                              "cpr_alias": "b0f1c2d3-e4f5-4678-9abc-def012345678"
                            },
                            "portrait": null,
                            "face_match_score": null
                          },
                          "warnings": []
                        }
                      ],
                      "nfc_verifications": [
                        {
                          "node_id": "feature_nfc_1",
                          "status": "In Review",
                          "is_nfc_skipped": false,
                          "skip_reason": null,
                          "chip_protocol": "icao",
                          "jpki": null,
                          "portrait_image": "https://<media-host>/portrait.jpg",
                          "signature_image": "https://<media-host>/signature.jpg",
                          "chip_data": {
                            "document_type": "ID",
                            "issuing_country": "ESP",
                            "document_number": "123456789",
                            "expiration_date": "2030-01-01",
                            "first_name": "John",
                            "last_name": "Smith",
                            "birth_date": "1990-05-15",
                            "gender": "M",
                            "nationality": "ESP",
                            "address": "CALLE MAYOR 123 4B, MADRID, MADRID",
                            "place_of_birth": "MADRID, MADRID"
                          },
                          "authenticity": {
                            "sod_integrity": true,
                            "dg_integrity": true
                          },
                          "certificate_summary": {
                            "issuer": "Common Name: CSCA SPAIN, Serial Number: 3, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
                            "subject": "Common Name: DS n-eID SPAIN 2, Organizational Unit: PASSPORT, Organization: DIRECCION GENERAL DE LA POLICIA, Country: ES",
                            "serial_number": "118120836164494130086420187336801405660",
                            "not_valid_after": "2031-02-18 10:21:11",
                            "not_valid_before": "2020-11-18 10:21:11"
                          },
                          "warnings": [
                            {
                              "feature": "NFC",
                              "risk": "DATA_INCONSISTENT",
                              "additional_data": null,
                              "log_type": "warning",
                              "short_description": "OCR and NFC mrz code extracted are not the same",
                              "long_description": "The Optical Character Recognition (OCR) data and the NFC chip data don't match, indicating potential document tampering or data inconsistency.",
                              "node_id": "feature_nfc_1"
                            }
                          ]
                        }
                      ],
                      "liveness_checks": [
                        {
                          "node_id": "feature_liveness_1",
                          "status": "Approved",
                          "method": "ACTIVE_3D",
                          "score": 89.92,
                          "reference_image": "https://<media-host>/reference.jpg",
                          "video_url": "https://<media-host>/video.mp4",
                          "age_estimation": 24.3,
                          "matches": [
                            {
                              "session_id": "7d4f1f60-9c2e-4b8a-8f3d-2a1b5c6d7e8f",
                              "session_number": 1234,
                              "vendor_data": "user_ref_001",
                              "verification_date": "2024-06-15T10:30:00Z",
                              "user_details": {
                                "full_name": "John Smith",
                                "document_type": "ID",
                                "document_number": "CLM148418"
                              },
                              "status": "Approved",
                              "is_blocklisted": false,
                              "is_allowlisted": false,
                              "api_service": null,
                              "source": "session",
                              "match_image_url": "https://<media-host>/face_match.jpg",
                              "similarity_percentage": 98.5
                            },
                            {
                              "session_id": "3e9a7c21-5b48-4f0e-9c6a-8d2f4b1e0a35",
                              "session_number": 1100,
                              "vendor_data": "customer_xyz",
                              "verification_date": "2024-04-10T09:15:00Z",
                              "user_details": {
                                "full_name": "John Smith",
                                "document_type": "P",
                                "document_number": "DZ8375806"
                              },
                              "status": "Approved",
                              "is_blocklisted": false,
                              "is_allowlisted": false,
                              "api_service": "PASSIVE_LIVENESS",
                              "source": "session",
                              "match_image_url": "https://<media-host>/face_match_2.jpg",
                              "similarity_percentage": 95.2
                            }
                          ],
                          "warnings": [
                            {
                              "feature": "LIVENESS",
                              "risk": "LOW_LIVENESS_SCORE",
                              "additional_data": null,
                              "log_type": "information",
                              "short_description": "Low liveness score",
                              "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data.",
                              "node_id": "feature_liveness_1"
                            }
                          ],
                          "face_quality": null,
                          "face_luminance": null
                        }
                      ],
                      "face_matches": [
                        {
                          "node_id": "feature_face_match_1",
                          "status": "In Review",
                          "score": 65.43,
                          "source_image_session_id": null,
                          "source_image": "https://<media-host>/source-image.jpg",
                          "target_image": "https://<media-host>/target-image.jpg",
                          "warnings": [
                            {
                              "feature": "FACEMATCH",
                              "risk": "LOW_FACE_MATCH_SIMILARITY",
                              "additional_data": null,
                              "log_type": "warning",
                              "short_description": "Low face match similarity",
                              "long_description": "The facial features of the provided image don't closely match the reference image, suggesting a potential identity mismatch.",
                              "node_id": "feature_face_match_1"
                            }
                          ]
                        }
                      ],
                      "phone_verifications": [
                        {
                          "node_id": "feature_phone_1",
                          "status": "Approved",
                          "phone_number_prefix": "+34",
                          "phone_number": "600600600",
                          "full_number": "+34600600600",
                          "country_code": "ES",
                          "country_name": "Spain",
                          "carrier": {
                            "name": "Orange",
                            "type": "mobile"
                          },
                          "is_disposable": false,
                          "is_virtual": false,
                          "verification_method": "sms",
                          "verification_attempts": 1,
                          "verified_at": "2024-07-28T06:47:35.654321Z",
                          "lifecycle": [
                            {
                              "type": "PHONE_VERIFICATION_MESSAGE_SENT",
                              "timestamp": "2025-08-24T09:12:39.580554+00:00",
                              "details": {
                                "status": "Success",
                                "reason": null,
                                "channel": "sms",
                                "actual_channel": "sms"
                              },
                              "fee": 0.1
                            },
                            {
                              "type": "VALID_CODE_ENTERED",
                              "timestamp": "2025-08-24T09:12:39.662157+00:00",
                              "details": {
                                "code_tried": "123456",
                                "status": "Approved"
                              },
                              "fee": 0
                            },
                            {
                              "type": "PHONE_VERIFICATION_APPROVED",
                              "timestamp": "2025-08-24T09:12:39.684292+00:00",
                              "details": null,
                              "fee": 0
                            }
                          ],
                          "warnings": [],
                          "matches": [
                            {
                              "session_id": null,
                              "session_number": null,
                              "vendor_data": null,
                              "verification_date": null,
                              "phone_number": "+34600000000",
                              "status": null,
                              "is_blocklisted": true,
                              "api_service": null,
                              "source": "list_entry"
                            }
                          ]
                        }
                      ],
                      "email_verifications": [
                        {
                          "node_id": "feature_email_1",
                          "status": "Approved",
                          "email": "test@example.com",
                          "is_breached": true,
                          "breaches": [
                            {
                              "name": "TAPAirPortugal",
                              "domain": "flytap.com",
                              "logo_path": "https://logos.example.com/TAPAirPortugal.png",
                              "breach_date": "2022-08-25",
                              "description": "In August 2022, the Portuguese airline <a href=\"https://www.bleepingcomputer.com/news/security/ragnar-locker-ransomware-claims-attack-on-portugals-flag-airline/\" target=\"_blank\" rel=\"noopener\">TAP Air Portugal was the target of a ransomware attack perpetrated by the Ragnar Locker gang</a> who later leaked the compromised data via a public dark web site. Over 5M unique email addresses were exposed alongside other personal data including names, genders, DoBs, phone numbers and physical addresses.",
                              "is_verified": true,
                              "data_classes": [
                                "dates_of_birth",
                                "email_addresses",
                                "genders",
                                "names",
                                "nationalities",
                                "phone_numbers",
                                "physical_addresses",
                                "salutations",
                                "spoken_languages"
                              ],
                              "breach_emails_count": 6083479
                            }
                          ],
                          "is_disposable": false,
                          "is_undeliverable": false,
                          "verification_attempts": 1,
                          "verified_at": "2025-09-15T17:36:19.963451Z",
                          "warnings": [
                            {
                              "feature": "EMAIL",
                              "risk": "BREACHED_EMAIL_DETECTED",
                              "additional_data": null,
                              "log_type": "information",
                              "short_description": "Breached email detected",
                              "long_description": "This email address was found in one or more known data breaches.",
                              "node_id": "feature_email_1"
                            }
                          ],
                          "lifecycle": [
                            {
                              "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
                              "timestamp": "2025-09-15T17:36:19.792684+00:00",
                              "details": {
                                "status": "Success",
                                "reason": null
                              },
                              "fee": 0.02
                            },
                            {
                              "type": "VALID_CODE_ENTERED",
                              "timestamp": "2025-09-15T17:36:19.963427+00:00",
                              "details": {
                                "code_tried": "123456",
                                "status": "Approved"
                              },
                              "fee": 0
                            },
                            {
                              "type": "EMAIL_VERIFICATION_DECLINED",
                              "timestamp": "2025-09-15T17:36:20.081471+00:00",
                              "details": {
                                "reason": "BREACHED_EMAIL_DETECTED"
                              },
                              "fee": 0
                            }
                          ],
                          "matches": [
                            {
                              "session_id": null,
                              "session_number": null,
                              "vendor_data": null,
                              "verification_date": null,
                              "email": "test@example.com",
                              "status": null,
                              "is_blocklisted": true,
                              "api_service": null,
                              "source": "list_entry"
                            }
                          ]
                        }
                      ],
                      "poa_verifications": [
                        {
                          "node_id": "feature_poa_1",
                          "status": "Declined",
                          "document_file": "https://<media-host>/poa_document.pdf",
                          "issuing_state": "AR",
                          "document_type": "UTILITY_BILL",
                          "document_subtype": null,
                          "document_language": "es",
                          "document_metadata": {
                            "file_size": 1000,
                            "content_type": "application/pdf",
                            "creation_date": "2021-01-01",
                            "modified_date": "2021-01-01",
                            "overlay_manipulation": null,
                            "creator": null,
                            "producer": "PDF Generator",
                            "software": null,
                            "encryption": null,
                            "is_signed": false,
                            "is_tampered": false,
                            "signature_info": null,
                            "exif_original_date": null,
                            "exif_digitized_date": null,
                            "processed_by_known_editor": false,
                            "has_different_creation_mod_date": true
                          },
                          "issuer": "Aguas del Norte",
                          "issue_date": "2021-02-01",
                          "expiration_date": null,
                          "poa_address": "AVDA. MONSEÑOR TAVELLA N° 3396, SALTA",
                          "poa_formatted_address": "Av. Monseñor Tavella 3396, A4400 Salta, Argentina",
                          "poa_parsed_address": {
                            "address_type": "Avenida",
                            "street_1": "Avenida Monseñor Tavella 3396",
                            "street_2": null,
                            "city": "Salta",
                            "region": "Salta",
                            "country": "AR",
                            "postal_code": "A4400",
                            "document_location": {
                              "latitude": -24.8208664,
                              "longitude": -65.4131
                            }
                          },
                          "name_on_document": "Fernando De Lima",
                          "name_match_score_expected_details": null,
                          "name_match_score_id_verification": 38.5,
                          "expected_details_address": null,
                          "expected_details_formatted_address": null,
                          "expected_details_parsed_address": {},
                          "extra_fields": {
                            "bank_account_number": "1234567890",
                            "bank_iban": null,
                            "bank_sort_code": null,
                            "bank_routing_number": null,
                            "bank_swift_bic": null,
                            "bank_branch_name": null,
                            "bank_branch_address": null,
                            "document_phone_number": "+5491112345678",
                            "additional_names": []
                          },
                          "extra_files": [
                            "https://<media-host>/extra_poa.pdf"
                          ],
                          "detected_codes": [
                            {
                              "type": "QR_CODE",
                              "page_number": 1,
                              "position": [
                                [
                                  820,
                                  1120
                                ],
                                [
                                  1002,
                                  1120
                                ],
                                [
                                  1002,
                                  1302
                                ],
                                [
                                  820,
                                  1302
                                ]
                              ],
                              "x": 820,
                              "y": 1120,
                              "width": 182,
                              "height": 182,
                              "page_width": 1190,
                              "page_height": 1684,
                              "raw_payload": "aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==",
                              "parsed_payload": "https://aguasdelnorte.com/factura/998811"
                            },
                            {
                              "type": "CODE_128",
                              "page_number": 1,
                              "position": [
                                [
                                  112,
                                  1480
                                ],
                                [
                                  560,
                                  1480
                                ],
                                [
                                  560,
                                  1540
                                ],
                                [
                                  112,
                                  1540
                                ]
                              ],
                              "x": 112,
                              "y": 1480,
                              "width": 448,
                              "height": 60,
                              "page_width": 1190,
                              "page_height": 1684,
                              "raw_payload": "MDA5OTg4MTEwMDA0Mg==",
                              "parsed_payload": "0099881100042"
                            }
                          ],
                          "warnings": []
                        }
                      ],
                      "document_ai_documents": [
                        {
                          "status": "Approved",
                          "node_id": "feature_document_ai_1",
                          "items": [
                            {
                              "uuid": "c1a2b3c4-d5e6-7f80-9a1b-2c3d4e5f6071",
                              "node_id": "feature_document_ai_1",
                              "document_key": "proof_of_funds",
                              "original_filename": "bank_statement.pdf",
                              "file_size": 184320,
                              "file_url": "https://<media-host>/document_ai/proof_of_funds.pdf",
                              "status": "Approved",
                              "extracted_data": {
                                "account_holder": "John Doe",
                                "balance": 15230.55,
                                "currency": "EUR",
                                "statement_date": "2026-05-31"
                              },
                              "detected_codes": [
                                {
                                  "type": "QR_CODE",
                                  "page_number": 2,
                                  "position": [
                                    [
                                      124,
                                      86
                                    ],
                                    [
                                      306,
                                      86
                                    ],
                                    [
                                      306,
                                      268
                                    ],
                                    [
                                      124,
                                      268
                                    ]
                                  ],
                                  "x": 124,
                                  "y": 86,
                                  "width": 182,
                                  "height": 182,
                                  "page_width": 1190,
                                  "page_height": 1684,
                                  "raw_payload": "SU5WLTIwMjYtMDA0Mg==",
                                  "parsed_payload": "INV-2026-0042"
                                }
                              ],
                              "fields": [
                                {
                                  "key": "account_holder",
                                  "name": "Account holder",
                                  "instruction": "Extract the full name of the account holder.",
                                  "type": "text",
                                  "required": true
                                },
                                {
                                  "key": "balance",
                                  "name": "Closing balance",
                                  "instruction": "Extract the closing balance amount.",
                                  "type": "number",
                                  "required": true
                                }
                              ],
                              "document_metadata": {
                                "is_tampered": false
                              },
                              "cross_check_result": null,
                              "created_at": "2026-06-01T12:34:56Z"
                            }
                          ],
                          "warnings": []
                        }
                      ],
                      "questionnaire_responses": [
                        {
                          "node_id": "feature_questionnaire_1",
                          "questionnaire_id": "9f7485e0-b00b-4d56-9d3e-7859b68d1213",
                          "title": "Source of Funds",
                          "description": "Reply to this questionnaire to help us understand the source of funds.",
                          "languages": [
                            "en"
                          ],
                          "default_language": "en",
                          "is_active": true,
                          "is_simple_questionnaire": true,
                          "questionnaire_group_id": "2b6a9d40-13a8-4b1e-9a6c-3f1d2e4b5a60",
                          "version": 1,
                          "published_at": "2025-11-02T09:14:55.000000Z",
                          "sections": [
                            {
                              "title": null,
                              "description": null,
                              "items": [
                                {
                                  "uuid": "618636d9-7d5c-41ce-b8d0-1ab2a4be20db",
                                  "value": "question_1",
                                  "element_type": "DROPDOWN",
                                  "is_required": true,
                                  "title": "What is your primary source of funds?",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": [
                                    {
                                      "label": "Salary",
                                      "value": "salary"
                                    },
                                    {
                                      "label": "Business Income",
                                      "value": "business_income"
                                    },
                                    {
                                      "label": "Savings",
                                      "value": "savings"
                                    },
                                    {
                                      "label": "Investments",
                                      "value": "investments"
                                    },
                                    {
                                      "label": "Sale of Asset",
                                      "value": "sale_of_asset"
                                    },
                                    {
                                      "label": "Inheritance/Gift",
                                      "value": "inheritance_gift"
                                    },
                                    {
                                      "label": "Pension",
                                      "value": "pension"
                                    },
                                    {
                                      "label": "Crypto Proceeds",
                                      "value": "crypto_proceeds"
                                    },
                                    {
                                      "label": "Other",
                                      "value": "other",
                                      "requires_text_input": true
                                    }
                                  ],
                                  "max_files": 1,
                                  "answer": {
                                    "value": "salary"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "2d16b527-72be-42e0-8e96-b164b818386c",
                                  "value": "question_2",
                                  "element_type": "LONG_TEXT",
                                  "is_required": true,
                                  "title": "Provide details of the primary source.",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": null,
                                  "max_files": 1,
                                  "answer": {
                                    "value": "Test answer"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0",
                                  "value": "question_3",
                                  "element_type": "DROPDOWN",
                                  "is_required": true,
                                  "title": "What is your annual income range (pre-tax)?",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": [
                                    {
                                      "label": "Less than $25,000",
                                      "value": "<25k"
                                    },
                                    {
                                      "label": "$25,000 - $50,000",
                                      "value": "25k-50k"
                                    },
                                    {
                                      "label": "$50,001 - $100,000",
                                      "value": "50k-100k"
                                    },
                                    {
                                      "label": "$100,001 - $250,000",
                                      "value": "100k-250k"
                                    },
                                    {
                                      "label": "More than $250,000",
                                      "value": ">250k"
                                    }
                                  ],
                                  "max_files": 1,
                                  "answer": {
                                    "value": "<25k"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "93dede62-6d0c-4a7f-934d-42175eb94011",
                                  "value": "question_4",
                                  "element_type": "DROPDOWN",
                                  "is_required": true,
                                  "title": "What is your approximate net worth (range)?",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": [
                                    {
                                      "label": "Less than $50,000",
                                      "value": "<50k"
                                    },
                                    {
                                      "label": "$50,000 - $250,000",
                                      "value": "50k-250k"
                                    },
                                    {
                                      "label": "$250,001 - $1,000,000",
                                      "value": "250k-1m"
                                    },
                                    {
                                      "label": "$1,000,001 - $5,000,000",
                                      "value": "1m-5m"
                                    },
                                    {
                                      "label": "More than $5,000,000",
                                      "value": ">5m"
                                    }
                                  ],
                                  "max_files": 1,
                                  "answer": {
                                    "value": "<50k"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "2af60d6f-6961-4692-9ee7-24b3033610a6",
                                  "value": "question_5",
                                  "element_type": "LONG_TEXT",
                                  "is_required": true,
                                  "title": "For your initial deposit/funding, indicate the exact source and amount.",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": null,
                                  "max_files": 1,
                                  "answer": {
                                    "value": "Test answer"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "0ad9d1aa-736f-46cf-947b-9e1241b53e40",
                                  "value": "question_6",
                                  "element_type": "LONG_TEXT",
                                  "is_required": true,
                                  "title": "Breakdown of sources by percentage.",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": null,
                                  "max_files": 1,
                                  "answer": {
                                    "value": "Test answer"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "1bf8a2a3-14ee-48a8-bb3d-175481aae4aa",
                                  "value": "question_7",
                                  "element_type": "SINGLE_CHOICE",
                                  "is_required": true,
                                  "title": "Will any funds originate from third parties? If yes, please provide details.",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": [
                                    {
                                      "label": "Yes",
                                      "value": "yes",
                                      "requires_text_input": true
                                    },
                                    {
                                      "label": "No",
                                      "value": "no"
                                    }
                                  ],
                                  "max_files": 1,
                                  "answer": {
                                    "text": "Additional details",
                                    "value": "yes"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "e18d4dd3-b7bf-4883-ba18-d6046adbe313",
                                  "value": "question_8",
                                  "element_type": "SINGLE_CHOICE",
                                  "is_required": true,
                                  "title": "Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": [
                                    {
                                      "label": "Yes",
                                      "value": "yes",
                                      "requires_text_input": true
                                    },
                                    {
                                      "label": "No",
                                      "value": "no"
                                    }
                                  ],
                                  "max_files": 1,
                                  "answer": {
                                    "text": "Additional details",
                                    "value": "yes"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "a90a073d-e098-404c-bbce-5130d8b12a13",
                                  "value": "question_9",
                                  "element_type": "FILE_UPLOAD",
                                  "is_required": true,
                                  "title": "Upload a proof of funds document",
                                  "description": "You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.",
                                  "placeholder": null,
                                  "choices": null,
                                  "max_files": 3,
                                  "answer": {
                                    "files": [
                                      "/media/ocr/",
                                      "/media/ocr/"
                                    ]
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                },
                                {
                                  "uuid": "9503b486-7cb8-4c3b-a97d-4b64926a5a47",
                                  "value": "question_10",
                                  "element_type": "LONG_TEXT",
                                  "is_required": false,
                                  "title": "Would you like to add any details to help us expedite our review of the documents you submitted?",
                                  "description": null,
                                  "placeholder": null,
                                  "choices": null,
                                  "max_files": 1,
                                  "answer": {
                                    "value": "Test answer"
                                  },
                                  "required_if": null,
                                  "repeatable_config": null
                                }
                              ]
                            }
                          ],
                          "status": "Approved"
                        }
                      ],
                      "aml_screenings": [
                        {
                          "node_id": "feature_aml_1",
                          "status": "In Review",
                          "total_hits": 1,
                          "entity_type": "person",
                          "hits": [
                            {
                              "id": "hit_7c1e9a40b2d35f86e0a4c912",
                              "url": "https://news.example.org/articles/sample",
                              "match": false,
                              "score": 0.73,
                              "target": null,
                              "caption": "Javier Ejemplo Modelo",
                              "datasets": [
                                "PEP"
                              ],
                              "features": null,
                              "rca_name": "",
                              "last_seen": "2025-06-13T00:00:00",
                              "risk_view": {
                                "crimes": {
                                  "score": 0,
                                  "weightage": 20,
                                  "risk_level": "Low",
                                  "risk_scores": {}
                                },
                                "countries": {
                                  "score": 0,
                                  "weightage": 30,
                                  "risk_level": "Low",
                                  "risk_scores": {}
                                },
                                "categories": {
                                  "score": 100,
                                  "weightage": 50,
                                  "risk_level": "High",
                                  "risk_scores": {
                                    "PEP": 100
                                  }
                                },
                                "custom_list": {}
                              },
                              "first_seen": "2025-01-18T00:00:00",
                              "properties": {
                                "name": [
                                  "Javier Ejemplo Modelo"
                                ],
                                "alias": [
                                  "Javier Ejemplo Modelo",
                                  "David Azagra"
                                ],
                                "notes": [
                                  "Spanish orchestra conductor"
                                ],
                                "title": null,
                                "gender": [
                                  "male"
                                ],
                                "height": null,
                                "topics": null,
                                "weight": null,
                                "address": null,
                                "country": null,
                                "website": null,
                                "eyeColor": null,
                                "keywords": null,
                                "lastName": [
                                  "Ejemplo",
                                  "Modelo"
                                ],
                                "position": null,
                                "religion": null,
                                "birthDate": [
                                  "1974"
                                ],
                                "education": [
                                  "Tokyo Arts and Space (2012-2012)",
                                  "Saint Petersburg Conservatory (-2010)",
                                  "Comillas Pontifical University"
                                ],
                                "ethnicity": null,
                                "firstName": [
                                  "David"
                                ],
                                "hairColor": null,
                                "weakAlias": null,
                                "birthPlace": [
                                  "Madrid"
                                ],
                                "modifiedAt": null,
                                "wikidataId": null,
                                "citizenship": null,
                                "nationality": null
                              },
                              "match_score": 98,
                              "risk_score": 73,
                              "review_status": "Unreviewed",
                              "score_breakdown": {
                                "name_score": 95,
                                "name_weight": 60,
                                "name_weight_normalized": 70.59,
                                "name_contribution": 67.06,
                                "dob_score": 100,
                                "dob_weight": 25,
                                "dob_weight_normalized": 29.41,
                                "dob_contribution": 29.41,
                                "country_score": 0,
                                "country_weight": 15,
                                "country_weight_normalized": 0,
                                "country_contribution": 0,
                                "document_number_match_type": "NEUTRAL",
                                "document_number_effect": "No document number provided for screening",
                                "total_score": 98
                              },
                              "pep_matches": [
                                {
                                  "aliases": [
                                    "Javier Ejemplo Modelo",
                                    "David Azagra"
                                  ],
                                  "education": [
                                    "Tokyo Arts and Space (2012-2012)",
                                    "Saint Petersburg Conservatory (-2010)",
                                    "Comillas Pontifical University"
                                  ],
                                  "list_name": "Wikidata",
                                  "publisher": "Wikidata",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "description": "Wikidata is the structured data project of the Wikipedia community, providing fact-based information edited by humans and machines",
                                  "matched_name": "Javier Ejemplo Modelo",
                                  "pep_position": "",
                                  "date_of_birth": "1974",
                                  "other_sources": [],
                                  "place_of_birth": "Madrid"
                                }
                              ],
                              "linked_entities": [
                                {
                                  "name": [
                                    "Antonio Ejemplo"
                                  ],
                                  "active": [],
                                  "status": [],
                                  "details": [],
                                  "relation": []
                                }
                              ],
                              "warning_matches": [],
                              "sanction_matches": [],
                              "adverse_media_details": {
                                "sentiment": "Moderately Negative",
                                "entity_type": "person",
                                "sentiment_score": -2,
                                "adverse_keywords": {
                                  "fraud": 3,
                                  "juicio": 1,
                                  "delitos": 2,
                                  "imputado": 1,
                                  "impunidad": 1,
                                  "corruption": 2,
                                  "favoritism": 2,
                                  "privilegio": 1,
                                  "corrupción": 1,
                                  "persecution": 2,
                                  "desconfianza": 1,
                                  "desprestigio": 1,
                                  "fraude de ley": 2,
                                  "manipulación": 1,
                                  "investigación": 3,
                                  "prevaricación": 8,
                                  "trato de favor": 1,
                                  "irregularidades": 2,
                                  "crisis de confianza": 1,
                                  "tráfico de influencias": 8
                                }
                              },
                              "adverse_media_matches": [
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo is implicated in legal violations related to favoritism and influence trafficking, leading to a negative portrayal in the article.",
                                  "headline": "La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \"hermanito\" de Ejemplo",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "fraud",
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "irregularidades",
                                    "imputado"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-10T20:46:38"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo is implicated in legal issues regarding favoritism and corruption, leading to a negative portrayal in the article.",
                                  "headline": "La Diputación de Villaejemplo consolida la plaza a medida para el ex asesor de Moncloa amigo del \"hermanito\" de Ejemplo",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "fraud",
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "irregularidades",
                                    "trato de favor"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-10T20:46:38"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo Modelo is mentioned in connection with Carlos Ficticio's corruption case, indicating his involvement in alleged influence peddling.",
                                  "headline": "España, paraíso del aforado",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "corrupción",
                                    "impunidad",
                                    "privilegio",
                                    "desconfianza",
                                    "manipulación",
                                    "fraude de ley"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-10T05:05:34"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises questions about his conduct and political ethics.",
                                  "headline": "Aforamientos: esa figura incómoda",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "investigación",
                                    "juicio",
                                    "fraude de ley",
                                    "desprestigio",
                                    "crisis de confianza",
                                    "delitos"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-08T06:01:00"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo is implicated in a legal investigation regarding irregularities in his hiring, which raises serious concerns about his conduct.",
                                  "headline": "La jueza del 'caso Javier Ejemplo' denuncia un «fraude de ley» en el aforamiento de Ficticio (Partido Ejemplo)",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "fraud",
                                    "irregularities",
                                    "prevaricación",
                                    "tráfico de influencias"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-09T10:19:10"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo Modelo is mentioned in connection with legal allegations of corruption, contributing to a negative perception.",
                                  "headline": "'Caso aforamiento': la letrada mayor de la Asamblea certifica a la juez que Ficticio es diputado desde antes de prometer su cargo en el Pleno",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "prevaricación",
                                    "tráfico de influencias"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-09T08:08:30"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, raising concerns about political corruption and influence.",
                                  "headline": "Aforamientos: esa figura incómoda",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "investigación"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-08T06:01:00"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo Modelo is implicated in the same investigation as Ficticio, which raises concerns about political misconduct.",
                                  "headline": "Aforamientos: esa figura incómoda",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "prevaricación",
                                    "tráfico de influencias",
                                    "investigación",
                                    "delitos"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-08T06:00:59"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo is implicated in a case of favoritism and corruption, which casts a negative light on his character and actions.",
                                  "headline": "'Caso Javier Ejemplo': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \"presiones externas\" que sufre",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "favoritism",
                                    "corruption",
                                    "persecution"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-06T10:08:15"
                                },
                                {
                                  "country": "spain",
                                  "summary": "Javier Ejemplo is implicated in a case of alleged favoritism and corruption, which casts a negative light on his character and actions.",
                                  "headline": "'Caso Javier Ejemplo': las asociaciones judiciales salen en defensa de la juez Luisa Inventada ante las \"presiones externas\" que sufre",
                                  "sentiment": "moderately negative",
                                  "thumbnail": "https://news.example.org/articles/sample",
                                  "source_url": "https://news.example.org/articles/sample",
                                  "author_name": null,
                                  "other_sources": [],
                                  "adverse_keywords": [
                                    "favoritism",
                                    "corruption",
                                    "persecution"
                                  ],
                                  "sentiment_score": -2,
                                  "publication_date": "2025-06-06T08:08:15"
                                }
                              ],
                              "additional_information": {}
                            }
                          ],
                          "score": 80,
                          "screened_data": {
                            "full_name": "Javier Ejemplo Modelo",
                            "nationality": "ES",
                            "date_of_birth": "1974-01-01",
                            "document_number": null
                          },
                          "is_ongoing_monitoring_enabled": true,
                          "next_ongoing_monitoring_bill_date": "2026-07-24",
                          "last_ongoing_screening_at": "2026-09-12T04:03:11Z",
                          "last_ongoing_screening_datasets_updated_at": "2026-09-11T06:00:00Z",
                          "warnings": [
                            {
                              "feature": "AML",
                              "risk": "POSSIBLE_MATCH_FOUND",
                              "additional_data": null,
                              "log_type": "warning",
                              "short_description": "Possible match found in AML screening",
                              "long_description": "The Anti-Money Laundering (AML) screening process identified potential matches with watchlists or high-risk databases, requiring further review.",
                              "node_id": "feature_aml_1"
                            }
                          ]
                        }
                      ],
                      "ip_analyses": [
                        {
                          "node_id": "feature_ip_1",
                          "status": "Approved",
                          "device_brand": "Apple",
                          "device_model": "iPhone",
                          "browser_family": "Mobile Safari",
                          "os_family": "iOS",
                          "platform": "mobile",
                          "device_fingerprint": "didit-fp-a1b2c3d4e5f6g7h8",
                          "ip_country": "Spain",
                          "ip_country_code": "ES",
                          "ip_state": "Barcelona",
                          "ip_city": "Barcelona",
                          "latitude": 41.4022,
                          "longitude": 2.1407,
                          "ip_address": "83.50.226.71",
                          "isp": null,
                          "organization": null,
                          "is_vpn_or_tor": false,
                          "is_data_center": false,
                          "time_zone": "Europe/Madrid",
                          "time_zone_offset": "+0100",
                          "ip": {
                            "location": {
                              "latitude": 40.2206327,
                              "longitude": 1.5770097
                            },
                            "distance_from_id_document": 23.4,
                            "distance_from_poa_document": 12.3
                          },
                          "id_document": {
                            "location": {
                              "latitude": 41.2706327,
                              "longitude": 1.9770097
                            },
                            "distance_from_ip": 23.4,
                            "distance_from_poa_document": 18.7
                          },
                          "poa_document": {
                            "location": {
                              "latitude": 41.2706327,
                              "longitude": 1.9770097
                            },
                            "distance_from_ip": 12.3,
                            "distance_from_id_document": 18.7
                          },
                          "warnings": [],
                          "matches": [
                            {
                              "session_id": "99999999-8888-7777-6666-555555555555",
                              "session_number": 41205,
                              "vendor_data": "22222222-2222-2222-2222-222222222222",
                              "verification_date": "2024-07-20T10:15:30Z",
                              "match_type": "ip_address",
                              "match_source": "ip_address",
                              "matched_value": "83.50.226.71",
                              "status": "Approved",
                              "is_blocklisted": false,
                              "api_service": null,
                              "source": "session",
                              "device_info": {
                                "device_brand": "Apple",
                                "device_model": "iPhone",
                                "browser_family": "Mobile Safari",
                                "os_family": "iOS",
                                "platform": "mobile",
                                "device_fingerprint": "didit-fp-f9e8d7c6b5a40312"
                              },
                              "location_info": {
                                "ip_address": "83.50.226.71",
                                "ip_country": "Spain",
                                "ip_country_code": "ES",
                                "ip_state": "Barcelona",
                                "ip_city": "Barcelona",
                                "is_vpn_or_tor": false,
                                "is_data_center": false
                              },
                              "confidence": 0.0,
                              "match_mode": "co_occurrence"
                            },
                            {
                              "session_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                              "session_number": 42830,
                              "vendor_data": "33333333-3333-3333-3333-333333333333",
                              "verification_date": "2024-06-30T18:22:05Z",
                              "match_type": "device_fingerprint",
                              "match_source": "recovered_high",
                              "matched_value": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
                              "status": "Declined",
                              "is_blocklisted": false,
                              "api_service": null,
                              "source": "session",
                              "device_info": {
                                "device_brand": "Samsung",
                                "device_model": "SM-G991B",
                                "browser_family": "Chrome Mobile",
                                "os_family": "Android",
                                "platform": "mobile",
                                "device_fingerprint": null
                              },
                              "location_info": {
                                "ip_address": "83.50.231.18",
                                "ip_country": "Spain",
                                "ip_country_code": "ES",
                                "ip_state": "Madrid",
                                "ip_city": "Madrid",
                                "is_vpn_or_tor": false,
                                "is_data_center": false
                              },
                              "confidence": 1.0,
                              "match_mode": "deterministic",
                              "recovery_similarity": 0.9874,
                              "tls_ja4_corroborated": true,
                              "recovery_gate_reason": "hardware_root_match"
                            }
                          ]
                        }
                      ],
                      "database_validations": [
                        {
                          "node_id": "feature_db_validation_1",
                          "issuing_state": "BRA",
                          "validation_type": "one_by_one",
                          "screened_data": {
                            "last_name": "De Lima",
                            "first_name": "Fernando",
                            "tax_number": "01234567890",
                            "date_of_birth": "1980-01-01",
                            "document_type": "ID",
                            "expiration_date": "2030-01-01"
                          },
                          "validations": [
                            {
                              "service_id": "bra_cpf",
                              "service_name": "Brazil - CPF status check",
                              "outcome_code": "MATCH",
                              "validation": {
                                "full_name": "full_match",
                                "date_of_birth": "full_match",
                                "identification_number": "full_match"
                              },
                              "source_data": {
                                "identification_number": "01234567890",
                                "first_name": "FERNANDO",
                                "last_name": "DE LIMA",
                                "date_of_birth": "1980-01-01",
                                "gender": "M",
                                "nationality": "BRA"
                              }
                            }
                          ],
                          "match_type": "full_match",
                          "status": "Approved",
                          "warnings": []
                        }
                      ],
                      "reviews": [
                        {
                          "user": "compliance@example.com",
                          "new_status": "Declined",
                          "comment": "Possible match found in AML screening",
                          "created_at": "2024-07-18T13:29:00.366811Z"
                        }
                      ],
                      "created_at": "2024-07-24T08:54:25.443172Z",
                      "expires_at": "2025-07-24T08:54:25.443172Z",
                      "biometric_consent": {
                        "required": false,
                        "trigger": null,
                        "status": "not_required",
                        "given_at": null,
                        "declined_at": null,
                        "text_version": null,
                        "text_hash": null,
                        "locale": null,
                        "policy_url": null,
                        "step": null,
                        "node_id": null,
                        "ip_address": null,
                        "ip_country_code": null,
                        "ip_state": null,
                        "ip_city": null,
                        "user_agent": null,
                        "detected_ip_address": "83.50.226.71",
                        "detected_country_code": "ES",
                        "detected_state": "ES-B",
                        "detected_city": "Barcelona",
                        "declared_state": null,
                        "document_state": null,
                        "jurisdictions": [],
                        "retention_months": null,
                        "reason": null,
                        "decline_reason": null,
                        "face_data_deleted_at": null
                      }
                    }
                  },
                  "BusinessExample": {
                    "summary": "व्यवसाय (KYB) सत्र का उदाहरण",
                    "description": "एक `session_kind = \"business\"` निर्णय: KYB सत्र KYC सुविधा ऐरे को `registry_checks`, `document_verifications` और `key_people_checks` से बदल देते हैं, जबकि वे `aml_screenings`, `phone_verifications`, `email_verifications`, `questionnaire_responses`, `ip_analyses`, `reviews` और सत्र एन्वलप को साझा करते हैं।",
                    "value": {
                      "session_id": "66666666-7777-8888-9999-000000000000",
                      "session_kind": "business",
                      "session_number": 31415,
                      "session_url": "https://verify.didit.me/session/business123",
                      "status": "In Review",
                      "environment": "live",
                      "workflow_id": "abababab-cdcd-efef-0101-232323232323",
                      "features": [
                        "KYB_REGISTRY",
                        "KYB_DOCUMENTS",
                        "KYB_KEY_PEOPLE"
                      ],
                      "vendor_data": "merchant-001234",
                      "metadata": null,
                      "callback": "https://example.com/verification/callback",
                      "registry_checks": [
                        {
                          "status": "Approved",
                          "node_id": "feature_kyb_registry_1",
                          "data_resolved": true,
                          "company": {
                            "uuid": "dddd4444-eeee-5555-ffff-666677778888",
                            "node_id": "feature_kyb_registry_1",
                            "status": "Approved",
                            "registry_status": "active",
                            "data_resolved": true,
                            "company_name": "ACME HOLDINGS LTD",
                            "registration_number": "12345678",
                            "country_code": "GB",
                            "region": null,
                            "company_type": "Private Limited Company",
                            "incorporation_date": "2015-03-12",
                            "registered_address": "1 Example Street, London, EC1A 1AA",
                            "tax_number": null,
                            "risk_level": null,
                            "verification_status": "verified",
                            "is_from_registry": true,
                            "fetch_status": "resolved",
                            "alternative_names": null,
                            "nature_of_business": "62012 - Business and domestic software development",
                            "registered_capital": "100 GBP",
                            "registered_capital_amount": "100.00",
                            "registered_capital_currency": "GBP",
                            "website": null,
                            "email": null,
                            "phone": null,
                            "legal_entity_identifier": null,
                            "location_of_registration": "England and Wales",
                            "financial_summary": null,
                            "officers": [
                              {
                                "uuid": "aaaa1111-bbbb-2222-cccc-333344445555",
                                "name": "Jane Smith",
                                "designation": "Director",
                                "role": "director",
                                "nationality": "British",
                                "is_active": true,
                                "kyc_status": "Approved",
                                "kyc_session_url": "https://verify.didit.me/session/abc123def456"
                              }
                            ],
                            "beneficial_owners": [
                              {
                                "uuid": "bbbb2222-cccc-3333-dddd-444455556666",
                                "name": "John Doe",
                                "first_name": "John",
                                "last_name": "Doe",
                                "entity_type": "person",
                                "roles": [
                                  "ubo",
                                  "shareholder"
                                ],
                                "ownership_min_shares": "50",
                                "ownership_max_shares": "75",
                                "is_active": true,
                                "kyc_status": "Pending",
                                "kyc_session_url": "https://verify.didit.me/session/def456ghi789",
                                "effective_ownership_percent": 75.0
                              }
                            ],
                            "addresses": [
                              {
                                "type": "registered",
                                "address": "1 Example Street, London, EC1A 1AA",
                                "country": "GB"
                              }
                            ],
                            "industries": [
                              {
                                "code": "62012",
                                "description": "Business and domestic software development"
                              }
                            ],
                            "accounts": null,
                            "registry_data": {},
                            "user_provided_data": {
                              "company_name": "ACME HOLDINGS",
                              "registration_number": "12345678"
                            },
                            "confirmed_by_user_at": "2026-06-10T12:01:30.000000Z",
                            "last_console_edit_at": null,
                            "is_editable": false
                          },
                          "ownership_structure": {
                            "shareholders": [
                              {
                                "name": "John Doe",
                                "first_name": "John",
                                "last_name": "Doe",
                                "date_of_birth": null,
                                "country_of_birth": null,
                                "company_name": null,
                                "registration_number": null,
                                "entity_type": "person",
                                "nationality": null,
                                "designation": null,
                                "roles": [
                                  "shareholder"
                                ],
                                "ownership_min_shares": "75",
                                "ownership_max_shares": "75",
                                "voting_min_shares": null,
                                "voting_max_shares": null,
                                "appointment_date": null,
                                "is_active": true,
                                "shareholding": {
                                  "share_class": "ORDINARY",
                                  "number_of_shares": 750.0,
                                  "currency": "GBP",
                                  "nominal_value": 1.0,
                                  "total_value": null,
                                  "percentage": 75.0
                                }
                              }
                            ],
                            "beneficial_owners": []
                          },
                          "warnings": []
                        }
                      ],
                      "aml_screenings": null,
                      "document_verifications": [
                        {
                          "status": "In Review",
                          "node_id": "feature_kyb_documents_1",
                          "items": [
                            {
                              "uuid": "eeee5555-ffff-6666-0000-777788889999",
                              "document_type": "LEGAL_PRESENCE",
                              "document_subtype": "CERTIFICATE_OF_INCORPORATION",
                              "document_group": "LEGAL_PRESENCE",
                              "file_url": "https://<media-host>/kyb/certificate-of-incorporation.pdf",
                              "original_filename": "certificate_of_incorporation.pdf",
                              "file_size": 482133,
                              "status": "Approved",
                              "created_at": "2026-06-10T12:03:11.000000Z",
                              "cross_check_result": {
                                "critical": {
                                  "company_name": {
                                    "document": "ACME HOLDINGS LTD",
                                    "registry": "ACME HOLDINGS LTD",
                                    "score": 1.0,
                                    "match": true
                                  },
                                  "registration_number": {
                                    "document": "12345678",
                                    "registry": "12345678",
                                    "match": true
                                  }
                                },
                                "non_critical": {},
                                "people": {}
                              },
                              "document_metadata": {
                                "file_size": 482133,
                                "content_type": "application/pdf",
                                "creation_date": "2015-03-12T09:00:00",
                                "modified_date": "2015-03-12T09:00:00",
                                "creator": null,
                                "producer": null,
                                "software": null,
                                "encryption": null,
                                "is_signed": true,
                                "is_tampered": false,
                                "signature_info": null,
                                "exif_original_date": null,
                                "exif_digitized_date": null,
                                "processed_by_known_editor": false,
                                "has_different_creation_mod_date": false,
                                "overlay_manipulation": null
                              },
                              "description": null,
                              "is_requested": false,
                              "ocr_data": {
                                "company_name": "ACME HOLDINGS LTD",
                                "registration_number": "12345678",
                                "incorporation_date": "2015-03-12"
                              },
                              "is_console_upload": false,
                              "is_confirmed": true
                            },
                            {
                              "uuid": "ffff6666-0000-7777-1111-888899990000",
                              "document_type": "OWNERSHIP_STRUCTURE",
                              "document_subtype": null,
                              "document_group": "OWNERSHIP_STRUCTURE",
                              "file_url": null,
                              "original_filename": null,
                              "file_size": null,
                              "status": "Not Finished",
                              "created_at": "2026-06-10T15:40:02.000000Z",
                              "cross_check_result": null,
                              "document_metadata": null,
                              "description": "Please upload an up-to-date shareholder registry",
                              "is_requested": true,
                              "ocr_data": null,
                              "is_console_upload": false,
                              "is_confirmed": true
                            }
                          ],
                          "groups": {
                            "LEGAL_PRESENCE": {
                              "total": 1,
                              "approved": 1,
                              "pending": 0,
                              "declined": 0,
                              "in_review": 0,
                              "other": 0,
                              "missing": 0
                            },
                            "OWNERSHIP_STRUCTURE": {
                              "total": 1,
                              "approved": 0,
                              "pending": 0,
                              "declined": 0,
                              "in_review": 0,
                              "other": 0,
                              "missing": 1
                            }
                          },
                          "required_groups": [
                            "LEGAL_PRESENCE",
                            "OWNERSHIP_STRUCTURE"
                          ],
                          "warnings": []
                        }
                      ],
                      "key_people_checks": [
                        {
                          "status": "In Review",
                          "node_id": "feature_kyb_key_people_1",
                          "registry": {
                            "officers": [
                              {
                                "uuid": "aaaa1111-bbbb-2222-cccc-333344445555",
                                "name": "Jane Smith",
                                "designation": "Director",
                                "role": "director",
                                "nationality": "British",
                                "appointment_date": "2015-03-12",
                                "termination_date": null,
                                "is_active": true,
                                "address": "1 Example Street, London, EC1A 1AA",
                                "aml_status": "Approved",
                                "kyc_status": "Approved",
                                "kyc_session_url": "https://verify.didit.me/session/abc123def456",
                                "kyc_session_id": "77777777-8888-9999-aaaa-bbbbbbbbbbbb",
                                "verification_workflow_type": "kyc",
                                "verification_workflow_id": "12121212-3434-5656-7878-909090909090",
                                "verification_workflow_label": "Key People KYC",
                                "verification_workflow_features": [
                                  {
                                    "feature": "ID_VERIFICATION",
                                    "status": "Approved"
                                  },
                                  {
                                    "feature": "LIVENESS",
                                    "status": "Approved"
                                  },
                                  {
                                    "feature": "AML",
                                    "status": "Approved"
                                  }
                                ],
                                "didit_internal_id": "99999999-0000-1111-2222-333333333333",
                                "kyc_document_type": "P",
                                "kyc_nationality": "GBR",
                                "kyc_liveness_passed": true,
                                "kyc_verified_at": "2026-06-10T14:22:31.123456Z",
                                "kyc_aml_categories": {
                                  "sanctions": "clear",
                                  "pep": "clear",
                                  "adverse_media": "clear",
                                  "warnings": "clear"
                                },
                                "kyc_notification_sent_at": "2026-06-09T09:00:00.000000Z"
                              }
                            ],
                            "beneficial_owners": [
                              {
                                "uuid": "bbbb2222-cccc-3333-dddd-444455556666",
                                "name": "John Doe",
                                "first_name": "John",
                                "last_name": "Doe",
                                "date_of_birth": "1980-05-04",
                                "country_of_birth": null,
                                "email": null,
                                "company_name": null,
                                "registration_number": null,
                                "entity_type": "person",
                                "nationality": "British",
                                "designation": null,
                                "roles": [
                                  "ubo",
                                  "shareholder"
                                ],
                                "ownership_min_shares": "50",
                                "ownership_max_shares": "75",
                                "is_active": true,
                                "aml_status": null,
                                "kyc_status": "In Progress",
                                "kyc_session_url": "https://verify.didit.me/session/def456ghi789",
                                "kyc_session_id": "88888888-9999-aaaa-bbbb-cccccccccccc",
                                "verification_workflow_type": "kyc",
                                "verification_workflow_id": "12121212-3434-5656-7878-909090909090",
                                "verification_workflow_label": "Key People KYC",
                                "verification_workflow_features": [
                                  {
                                    "feature": "ID_VERIFICATION",
                                    "status": "Not Finished"
                                  },
                                  {
                                    "feature": "LIVENESS",
                                    "status": "Not Finished"
                                  },
                                  {
                                    "feature": "AML",
                                    "status": "Not Finished"
                                  }
                                ],
                                "didit_internal_id": null,
                                "kyc_document_type": null,
                                "kyc_nationality": null,
                                "kyc_liveness_passed": null,
                                "kyc_verified_at": null,
                                "kyc_aml_categories": null,
                                "kyc_notification_sent_at": null,
                                "child_beneficial_owners": [],
                                "effective_ownership_percent": 75.0
                              }
                            ]
                          },
                          "submitted": {
                            "parties": [
                              {
                                "uuid": "cccc3333-dddd-4444-eeee-555566667777",
                                "entity_type": "person",
                                "source": "USER",
                                "name": "John Doe",
                                "first_name": "John",
                                "last_name": "Doe",
                                "company_name": null,
                                "registration_number": null,
                                "email": "john.doe@example.com",
                                "nationality": "GBR",
                                "phone_number": "+447700900123",
                                "date_of_birth": "1980-05-04",
                                "position": "Chief Executive Officer",
                                "custom_fields": {},
                                "is_active": true,
                                "is_skipped": false,
                                "requires_verification": true,
                                "roles": [
                                  {
                                    "role": "ubo",
                                    "ownership_percent": 75.0,
                                    "voting_percent": 75.0
                                  },
                                  {
                                    "role": "director",
                                    "ownership_percent": null,
                                    "voting_percent": null
                                  }
                                ],
                                "kyc_session_id": "88888888-9999-aaaa-bbbb-cccccccccccc",
                                "kyc_session_status": "In Progress",
                                "kyc_session_url": "https://verify.didit.me/session/def456ghi789",
                                "kyb_sub_session_id": null,
                                "kyb_sub_session_status": null,
                                "kyb_sub_session_url": null,
                                "verification_workflow_type": "kyc",
                                "verification_workflow_id": "12121212-3434-5656-7878-909090909090",
                                "verification_workflow_label": "Key People KYC",
                                "verification_workflow_features": [
                                  {
                                    "feature": "ID_VERIFICATION",
                                    "status": "Not Finished"
                                  },
                                  {
                                    "feature": "LIVENESS",
                                    "status": "Not Finished"
                                  },
                                  {
                                    "feature": "AML",
                                    "status": "Not Finished"
                                  }
                                ],
                                "didit_internal_id": null
                              }
                            ]
                          },
                          "ubo_kyc_summary": {
                            "total": 1,
                            "approved": 0,
                            "flagged": 0,
                            "pending": 1
                          },
                          "warnings": []
                        }
                      ],
                      "phone_verifications": null,
                      "email_verifications": null,
                      "questionnaire_responses": null,
                      "ip_analyses": null,
                      "reviews": [],
                      "contact_details": null,
                      "expected_details": {
                        "company_name": "Tesco PLC",
                        "registry_country": "GB",
                        "registration_number": "00445790"
                      },
                      "created_at": "2026-06-10T11:58:04.000000Z",
                      "expires_at": "2026-06-24T11:58:04.000000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/SessionDecision"
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफल रहा। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। दो `detail` स्ट्रिंग विफलता के प्रकारों में अंतर करती हैं:\n\n- `\"Authentication credentials were not provided or are invalid.\"` — कोई `x-api-key` हेडर नहीं (और कोई `Authorization: Bearer` token नहीं), या प्रदान किया गया क्रेडेंशियल इंट्रोस्पेक्शन में विफल रहा (निरस्त, समय-सीमा समाप्त, या विकृत)।\n- `\"You do not have permission to perform this action.\"` — क्रेडेंशियल मान्य है लेकिन उसे इस सत्र को पढ़ने की अनुमति नहीं है: एक कंसोल-उपयोगकर्ता Bearer token में `read:sessions` अनुमति नहीं है या वह स्वामी एप्लिकेशन तक नहीं पहुँच सकता है, या API कुंजी सत्र से भिन्न संगठन से संबंधित है।\n\nध्यान दें कि पूरी तरह से अज्ञात `sessionId` के लिए, endpoint क्रेडेंशियल सत्यापित करने से पहले स्वामी एप्लिकेशन का समाधान करता है, इसलिए क्रेडेंशियल अनुपलब्ध या अमान्य होने पर भी अनुपलब्ध सत्र `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "Authentication credentials were not provided or are invalid."
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी इंट्रोस्पेक्शन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Insufficient permissions": {
                    "summary": "मान्य क्रेडेंशियल जिसमें read:sessions या स्वामित्व वाले एप्लिकेशन तक पहुंच का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र नहीं मिला। तब लौटाया जाता है जब दिया गया `sessionId` उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र के रूप में किसी भी लाइव सत्र से मेल नहीं खाता है — ऐसा सत्र जिसे हटा दिया गया है, वह भी यहीं आता है। बॉडी मानक `{\"detail\": ...}` एनवलप है।\n\n**दो अलग-अलग `detail` स्ट्रिंग।** यदि `sessionId` KYC और KYB दोनों सत्रों के रूप में अज्ञात है, तो प्री-ऑथ ओनर लुकअप विफल हो जाता है और आपको `{\"detail\": \"Not found.\"}` प्राप्त होता है — यह क्रेडेंशियल सत्यापन से पहले होता है, इसलिए यह अप्रमाणित कॉल के लिए भी लौटाया जाता है। यदि सत्र मौजूद है लेकिन प्रमाणित एप्लिकेशन के तहत पुनः प्राप्त नहीं किया जा सकता है (उदाहरण के लिए पुराना या अभी हटाया गया रिकॉर्ड), तो व्यू `{\"detail\": \"Session not found.\"}` लौटाता है। दोनों एक ही परिणाम का संकेत देते हैं — सत्र सुलभ नहीं है — इसलिए स्ट्रिंग के बजाय `404` स्थिति कोड पर मिलान करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "Not found."
                    }
                  }
                },
                "examples": {
                  "Unknown session id": {
                    "summary": "sessionId इस एप्लिकेशन के लिए अज्ञात है",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Session not retrievable": {
                    "summary": "सत्र मौजूद है लेकिन इस एप्लिकेशन के लिए पुनर्प्राप्त करने योग्य नहीं है",
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। GET अनुरोध **प्रति क्रेडेंशियल 600 प्रति मिनट** (API कुंजी, Bearer token, या अप्रमाणित होने पर स्रोत IP) तक सीमित हैं। `Retry-After` / `X-RateLimit-Reset` का निरीक्षण करें और पुनः प्रयास करने से पहले प्रतीक्षा करें। यदि आप निर्णयों के लिए पोलिंग करते समय इस सीमा तक पहुँच जाते हैं, तो `status.updated` webhook पर स्विच करें और इसके बजाय प्रति स्थिति परिवर्तन पर एक बार निर्णय प्राप्त करें।",
            "headers": {
              "Retry-After": {
                "description": "अनुरोध का पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "वर्तमान विंडो में अनुमत अनुरोधों की अधिकतम संख्या (GET अनुरोधों के लिए 600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix टाइमस्टैम्प (सेकंड) जिस पर वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1750000000
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "रेट लिमिट उल्लंघन का मानव-पठनीय स्पष्टीकरण।",
                      "example": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "summary": "समान क्रेडेंशियल से एक मिनट में 600 से अधिक GET अनुरोध",
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उस सत्यापन सत्र का UUID जिसका निर्णय आप प्राप्त करना चाहते हैं। यह `POST /v3/session/` द्वारा लौटाया गया `session_id` है। यही पाथ उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्रों के लिए काम करता है — सर्वर दोनों सत्र प्रकारों में id को रिज़ॉल्व करता है।\n\n**एक मान्य UUID होना चाहिए।** यह रूट केवल सही प्रारूप वाले UUID से मेल खाता है, इसलिए किसी भी एप्लिकेशन कोड के चलने से पहले URL राउटर द्वारा गलत प्रारूप वाले मान को अस्वीकार कर दिया जाता है और रिस्पॉन्स नीचे दिखाए गए JSON `{\"detail\": ...}` एनवलप के बजाय `404` **HTML** पेज होता है। क्लाइंट-साइड पर UUID प्रारूप को सत्यापित करें ताकि आप इनपुट त्रुटि और वास्तविक अनुपलब्ध-सत्र `404` के बीच अंतर कर सकें।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "include",
            "in": "query",
            "required": false,
            "description": "अतिरिक्त payload अनुभागों की अल्पविराम से अलग की गई सूची। समर्थित मान: `events` और `resubmissions`, अकेले या एक साथ (`events,resubmissions`)। जब `include=events` पास किया जाता है, तो रिस्पॉन्स में अतिरिक्त रूप से सत्र इवेंट टाइमलाइन शामिल होती है (`events`, जिसमें Retrieve Session पेज पर वर्णित `WORKFLOW_BRANCH_EVALUATED` / `WORKFLOW_STATUS_NODE_REACHED` रूटिंग इवेंट शामिल हैं), पूर्ण गतिविधि लॉग (`activity_reviews`), ब्लॉकलिस्ट फ़्लैग (`blocklisted`), प्रति सत्र `cost_breakdown`, वर्कफ़्लो मेटाडेटा (`workflow_type`, `workflow_version`, `workflow_version_id`, और `workflow_terminal_node_id` - अंतिम रिकॉर्ड किया गया वर्कफ़्लो स्थिति नोड जिसने सत्र स्थिति सेट की थी, या यदि कोई रिकॉर्ड नहीं किया गया है तो `null`; ऐतिहासिक उत्पत्ति जिसे मैन्युअल स्वीकृतियों, अस्वीकृतियों या पुनः सबमिशन द्वारा साफ़ नहीं किया जाता है, और बाद के वर्कफ़्लो स्थिति नोड द्वारा प्रतिस्थापित किया जाता है), और सत्र मेटाडेटा (`api_service` — स्ट्रिंग या `null`, केवल स्टैंडअलोन-API सत्रों के लिए सेट; `session_type` — `API`, `HOSTED`, या `MIGRATED`; `has_device_nfc_support` — बूलियन)। सामान्य संरचना की तुलना में दो फ़ील्ड बदलते हैं: शीर्ष-स्तरीय `session_kind` डिस्क्रिमिनेटर **हटा दिया जाता है** (इवेंट संरचना केवल उपयोगकर्ता सत्रों के लिए मौजूद होती है), और `features` सरणी सामान्य स्ट्रिंग्स से `{feature, node_id}` ऑब्जेक्ट्स में बदल जाती है — जहाँ ईमेल सुविधा को `EMAIL_VERIFICATION` के बजाय `EMAIL` के रूप में रिपोर्ट किया जाता है। यह विस्तृत संरचना मुख्य रूप से Didit Console द्वारा उपयोग की जाती है; अधिकांश API इंटीग्रेशन को इस पैरामीटर को छोड़ देना चाहिए। **KYB सीमा:** `include=events` केवल उपयोगकर्ता (KYC) सत्रों पर लागू होता है। व्यावसायिक सत्र (`session_kind = \"business\"`) हमेशा मानक व्यावसायिक निर्णय संरचना लौटाते हैं — व्यावसायिक सत्रों के लिए `events`, `activity_reviews`, `blocklisted`, `cost_breakdown` और अतिरिक्त `workflow_*`/सत्र मेटाडेटा कभी नहीं लौटाए जाते हैं, और उनकी `features` सरणी एक सामान्य स्ट्रिंग सरणी ही रहती है। `include=resubmissions` के साथ (उपयोगकर्ता और व्यावसायिक सत्र दोनों के लिए) रिस्पॉन्स में `resubmissions` भी शामिल होता है: प्रति पुनः सबमिशन अनुरोध एक प्रविष्टि, सबसे पुरानी पहले, प्रत्येक में `number`, `created_at`, `previous_status`, `nodes`, `reasons`, `requested_by` और `results` (अनुरोध से पहले पुनः सबमिट किए गए चरणों ने क्या लौटाया था, उन्हीं कुंजियों के तहत और वर्तमान परिणामों की समान संरचना में)। प्रत्येक `cost_breakdown` आइटम में `usage_type`, `price`, `details` और `created_at` शामिल होते हैं: फिर से चलने वाले पुनः सबमिट किए गए चरण को एक नए आइटम के रूप में बिल किया जाता है।",
            "schema": {
              "type": "string",
              "enum": [
                "events",
                "resubmissions",
                "events,resubmissions"
              ],
              "example": "events"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/decision/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Accept: application/json'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.retrieve_decision(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.retrieveDecision(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RetrieveDecision(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsRetrieveDecisionParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().retrieveDecision(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->retrieveDecision('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.retrieve_decision(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.RetrieveDecisionAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/delete/": {
      "delete": {
        "summary": "सत्यापन सत्र (KYC या KYB) हटाएं",
        "description": "किसी एकल सत्यापन सत्र, उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) को उसके `session_id` द्वारा डिलीट करें। ID को पहले KYC सत्रों के विरुद्ध रिज़ॉल्व किया जाता है, फिर KYB सत्रों के विरुद्ध, इसलिए दोनों प्रकार इस एक URL के माध्यम से डिलीट किए जाते हैं।\n\n**क्या डिलीट होता है:**\n- सत्र और इसमें शामिल प्रत्येक सत्यापन प्रयास, जिसमें वे परिणाम भी शामिल हैं जिन्हें पुनः सबमिशन द्वारा बदल दिया गया था: निर्णय, निकाला गया डेटा, सभी संबंधित सुविधा रिकॉर्ड (पहचान सत्यापन, चेहरा, लाइवनेस, चेहरा मिलान, AML, रजिस्ट्री जाँच, IP विश्लेषण, इत्यादि), इसकी समीक्षाएं और इसका गतिविधि लॉग।\n- सत्र के स्वामित्व वाली सभी संग्रहीत फ़ाइलें: दस्तावेज़ के आगे/पीछे के फ़ोटो (पूर्ण, क्रॉप किए गए, और प्राइवेसी-ब्लर किए गए वेरिएंट), दस्तावेज़-कैप्चर वीडियो, पोर्ट्रेट क्रॉप, NFC चिप पोर्ट्रेट और हस्ताक्षर छवियां, चेहरा संदर्भ छवियां, लाइवनेस वीडियो, चेहरा मिलान स्रोत/लक्ष्य छवियां, पते का प्रमाण दस्तावेज़, और कोई भी अतिरिक्त अपलोड की गई फ़ाइलें (KYC); अपलोड किए गए कंपनी दस्तावेज़ और अतिरिक्त फ़ाइलें (KYB)। ई-हस्ताक्षर दस्तावेज़, हस्ताक्षरित PDF, साक्ष्य PDF और हस्ताक्षर छवियां (KYC और KYB): उनके डाउनलोड पाथ काम करना बंद कर देते हैं। पहले जारी किए गए मीडिया URL (`https://<media-host>/...`) रिज़ॉल्व होना बंद हो जाते हैं।\n- सत्र का चेहरा डेटा। इसकी फ़ेस एम्बेडिंग भी डिलीट हो जाती है, जब तक कि आप एक छवि-मुक्त टेम्पलेट रखने का विकल्प नहीं चुनते (देखें **चेहरा बायोमेट्रिक डेटा**)।\n- सत्र के लिए कतार में मौजूद webhook डिलीवरी और उनके पुनः प्रयास। पहले से डिलीवर किए गए webhook प्रभावित नहीं होते हैं।\n- व्यवसाय सत्यापन (KYB) सत्र के लिए: इसके प्रमुख व्यक्तियों (KYC) और इसके कॉर्पोरेट स्वामियों (KYB) के लिए बनाए गए सत्यापन, पुनरावर्ती रूप से, जिन्हें `deleted_child_verifications` के रूप में रिपोर्ट किया जाता है। कोई सत्यापन जिससे यह केवल लिंक करता है, जैसे कि मौजूदा स्वीकृत KYC जिसका इसने पुनः उपयोग किया है, डिलीट नहीं होता है।\n\nसत्र तुरंत प्रत्येक रीड endpoint से गायब हो जाता है: `GET /v3/session/{sessionId}/decision/` `404` लौटाता है और `GET /v3/sessions/` इसे सूचीबद्ध करना बंद कर देता है। डिलीट किए गए सत्यापनों द्वारा शुरू की गई सतत AML निगरानी और KYB रजिस्ट्री निगरानी बंद हो जाती है।\n\n**क्या प्रभावित नहीं होता है:** इस सत्र से बनाई गई ब्लॉकलिस्ट प्रविष्टियां (चेहरा या दस्तावेज़) **नहीं** हटाई जाती हैं; उन्हें ब्लॉकलिस्ट endpoints के साथ प्रबंधित करें। सत्र के लिए जारी किए गए शेयर token निरस्त नहीं किए जाते हैं, लेकिन उनके इंपोर्ट करने के लिए कुछ भी शेष नहीं रहता है: किसी शेयर token के साथ इंपोर्ट करने पर `{\"share_token\": [\"Original session does not exist.\"]}` के साथ `400` मिलता है। पहले से उपयोग किए गए क्रेडिट की धनवापसी **नहीं** की जाती है। पैरेंट उपयोगकर्ता या व्यवसाय निकाय डिलीट **नहीं** होता है; उनके लिए `POST /v3/users/delete/` या `POST /v3/businesses/delete/` का उपयोग करें। यदि उपयोगकर्ता का प्रोफ़ाइल पोर्ट्रेट इस सत्र से आया था, तो पोर्ट्रेट को इसके साथ हटा दिया जाता है।\n\n**चेहरा बायोमेट्रिक डेटा:** डिफ़ॉल्ट रूप से सत्र की फ़ेस एम्बेडिंग सत्र के साथ डिलीट कर दी जाती है (`face_retention_outcome: deleted`)। एक एप्लिकेशन जिसने बायोमेट्रिक टेम्पलेट प्रतिधारण (`PATCH /v3/webhook/` पर `face_retention_policy: retain_until_user_deleted`) का विकल्प चुना है, या `retain_face_embeddings: true` वाला अनुरोध, सत्र के उपयोगकर्ता से जुड़े (`retained_with_user`) एक अलग से प्रबंधित, छवि-मुक्त चेहरा बायोमेट्रिक टेम्पलेट को रखता है ताकि डुप्लिकेट पहचान, चेहरा खोज और बायोमेट्रिक प्रमाणीकरण काम करते रहें। टेम्पलेट में कभी भी चेहरे की छवि, मीडिया, पहचान फ़ील्ड, निर्णय या डिलीट किए गए सत्र की id शामिल नहीं होती है; यह बायोमेट्रिक डेटा `biometric_template_expires_at` पर, या उपयोगकर्ता को डिलीट करने, प्राइवेसी मिटाने, या `/v3/biometric-templates/` के माध्यम से स्पष्ट पर्ज पर पहले डिलीट कर दिया जाता है। बिना लिंक किए गए उपयोगकर्ता वाला सत्र टेम्पलेट को बनाए नहीं रख सकता (`ineligible_no_vendor_user`)। डेटा-सब्जेक्ट अनुरोधों के लिए `deletion_instruction: privacy_erasure` भेजें: यह उस उपयोगकर्ता के लिए प्रत्येक बनाए रखे गए टेम्पलेट को पर्ज कर देता है और कभी भी नया टेम्पलेट नहीं रखता है।\n\n**अपरिवर्तनीय:** डिलीट करना स्थायी है और कोई रीस्टोर endpoint नहीं है। इसे कॉल करने से पहले अपनी ज़रूरत की कोई भी चीज़ एक्सपोर्ट कर लें (उदाहरण के लिए एक निर्णय PDF)।\n\n**साइड इफ़ेक्ट्स:** डिलीट करने पर कोई webhook उत्सर्जित नहीं किया जाता है।\n\n**रिस्पॉन्स:** डिलीट पूरा होने पर `200 OK`, एक JSON बॉडी के साथ जो `face_retention_outcome`, बनाए रखे गए टेम्पलेट की समाप्ति और KYB सत्र के लिए `deleted_child_verifications` की रिपोर्ट करती है। इस endpoint के पुराने संस्करणों ने `204 No Content` लौटाया था; उन क्लाइंट्स को अपडेट करें जो `204` की पुष्टि करते हैं। अपने इरेज़र लॉग में अपना `instruction_id` रखें।\n\n**आइडेम्पोटेंसी:** HTTP स्तर पर आइडेम्पोटेंट नहीं है: पहली कॉल `200` लौटाती है; इसे दोहराने पर `404` मिलता है क्योंकि सत्र अब रिज़ॉल्व नहीं होता है। `503` के बाद सत्र अभी भी बना रहता है; इसे डिलीट करना पूरा करने के लिए वही अनुरोध पुनः दोहराएं।\n\n**प्रमाणीकरण:** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें; सत्र उसी एप्लिकेशन का होना चाहिए। कंसोल उपयोगकर्ता एक्सेस टोकन (`Authorization: Bearer ...`) भी इस endpoint को कॉल कर सकते हैं जब उनके पास `delete:sessions` अनुमति हो। प्रमाणीकरण और अनुमति दोनों की विफलताएं `403` लौटाती हैं; यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट:** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इससे अधिक होने पर `429` मिलता है।\n\nसंख्यात्मक `session_number` के आधार पर KYC सत्रों को बल्क-डिलीट करने के लिए, इसके बजाय `POST /v3/sessions/delete/` का उपयोग करें।\n\n**दायर की गई नियामक रिपोर्टें:** यदि चयनित डेटा अंतिम रूप दी गई नियामक रिपोर्ट में है, तो पूरा अनुरोध `409` के साथ अस्वीकार कर दिया जाता है और कुछ भी डिलीट नहीं किया जाता है। बॉडी `code: in_filed_report` का उपयोग करती है और प्रत्येक रिपोर्ट को `uuid`, `report_number`, `report_type` और `case_uuid` के साथ नामित करती है। रिपोर्टों को डिलीट करें, फिर अनुरोध को दोहराएं।",
        "operationId": "delete_v3_session_by_id",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "हटाए जाने वाले उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र का UUID (`session_id`), जैसा कि सत्र बनने पर लौटाया गया था। यह कैनोनिकल हाइफ़न वाला UUID होना चाहिए — गैर-UUID मान रूट से मेल नहीं खाता है और `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सत्र हटाया गया। बॉडी यह रिपोर्ट करती है कि सत्र के चेहरे के बायोमेट्रिक डेटा का क्या हुआ और, KYB सत्र के लिए, इसके द्वारा बनाए गए कितने सत्यापन इसके साथ हटाए गए थे।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "हटाया गया सत्र।"
                    },
                    "session_number": {
                      "type": "integer",
                      "nullable": true,
                      "description": "हटाए गए सत्र की संख्या।"
                    },
                    "face_retention_outcome": {
                      "type": "string",
                      "enum": [
                        "retained_with_user",
                        "deleted",
                        "none",
                        "ineligible_no_vendor_user"
                      ],
                      "description": "सत्र के फ़ेस बायोमेट्रिक डेटा के साथ क्या हुआ। `deleted`: सत्र के साथ फ़ेस एम्बेडिंग हटा दी गई थी (डिफ़ॉल्ट)। `retained_with_user`: सत्र हटा दिया गया है और एक छवि-मुक्त बायोमेट्रिक टेम्पलेट उपयोगकर्ता से जुड़ा रहता है; `biometric_template_uuid` देखें। `none`: सत्र में कोई फ़ेस एम्बेडिंग नहीं थी (उदाहरण के लिए एक KYB सत्र, या लाइवनेस सेल्फ़ी के बिना एक KYC सत्र)। `ineligible_no_vendor_user`: प्रतिधारण का अनुरोध किया गया था लेकिन सत्र में कोई लिंक किया गया उपयोगकर्ता नहीं है, इसलिए एम्बेडिंग सत्र के साथ हटा दी गई थी। इस endpoint पर इस फ़ील्ड के माध्यम से बायोमेट्रिक-स्टोर विफलता की रिपोर्ट कभी नहीं दी जाती है: यह `503` लौटाता है और सत्र हटाया नहीं जाता है।"
                    },
                    "biometric_template_uuid": {
                      "type": "string",
                      "format": "uuid",
                      "nullable": true,
                      "description": "जब `face_retention_outcome`, `retained_with_user` हो, तब प्रतिधारित बायोमेट्रिक टेम्पलेट का Id; अन्यथा `null`। इसे `/v3/biometric-templates/{template_uuid}/` के माध्यम से प्रबंधित करें।"
                    },
                    "biometric_template_expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "प्रतिधारित बायोमेट्रिक टेम्पलेट कब हटाया जाता है, जब `face_retention_outcome`, `retained_with_user` हो; कोई टेम्पलेट प्रतिधारित न होने पर `null`।"
                    },
                    "deleted_child_verifications": {
                      "type": "integer",
                      "description": "व्यवसाय सत्यापन (KYB) सत्र के लिए: इसके द्वारा बनाए गए कितने सत्यापन (इसके प्रमुख व्यक्तियों के KYC सत्र और इसके कॉर्पोरेट स्वामियों के KYB सत्र, पुनरावर्ती रूप से) इसके साथ हटा दिए गए थे। KYC सत्र के लिए हमेशा `0`।"
                    }
                  }
                },
                "examples": {
                  "Deleted (default)": {
                    "value": {
                      "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
                      "session_number": 1024,
                      "face_retention_outcome": "deleted",
                      "biometric_template_uuid": null,
                      "biometric_template_expires_at": null,
                      "deleted_child_verifications": 0
                    }
                  },
                  "Retained with User": {
                    "value": {
                      "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
                      "session_number": 1024,
                      "face_retention_outcome": "retained_with_user",
                      "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                      "biometric_template_expires_at": "2027-10-09T10:15:00Z",
                      "deleted_child_verifications": 0
                    }
                  },
                  "Ineligible: no User": {
                    "summary": "vendor_data के बिना बनाए गए सत्र पर प्रतिधारण का अनुरोध किया गया",
                    "value": {
                      "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c",
                      "session_number": 1031,
                      "face_retention_outcome": "ineligible_no_vendor_user",
                      "biometric_template_uuid": null,
                      "biometric_template_expires_at": null,
                      "deleted_child_verifications": 0
                    }
                  },
                  "KYB session": {
                    "value": {
                      "session_id": "0f3c9b7e-2d1a-4e5f-8c6b-7a9d8e1f2c3b",
                      "session_number": 88,
                      "face_retention_outcome": "none",
                      "biometric_template_uuid": null,
                      "biometric_template_expires_at": null,
                      "deleted_child_verifications": 3
                    },
                    "summary": "एक व्यवसाय सत्यापन जिसे उसके प्रमुख व्यक्तियों के लिए बनाए गए तीन सत्यापनों के साथ हटा दिया गया"
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Privacy erasure cannot retain": {
                    "value": {
                      "retain_face_embeddings": [
                        "Privacy erasure cannot retain biometric templates."
                      ]
                    }
                  },
                  "No finite retention duration": {
                    "summary": "अनुरोध या एप्लिकेशन पर face_retention_days के बिना प्रतिधारण का अनुरोध किया गया",
                    "value": {
                      "detail": "A finite biometric-template retention duration is required."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या अनुमति विफलता। अनुपस्थित कुंजी भी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अपवाद: जब `sessionId` किसी लाइव सत्र से मेल नहीं खाता है, तो अनुपस्थित या अमान्य क्रेडेंशियल्स होने पर भी प्री-ऑथ ओनर लुकअप पहले `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी अमान्य है",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Insufficient permission": {
                    "summary": "delete:sessions के बिना उपयोगकर्ता token, या ऐसे एप्लिकेशन के क्रेडेंशियल जो सत्र का स्वामी नहीं है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई लाइव KYC या KYB सत्र मौजूद नहीं है — id अज्ञात है या सत्र पहले ही हटा दिया गया था (सफल विलोपन को दोहराने पर यह परिणाम मिलता है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात या पहले से हटाया गया सत्र",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "साझा राइट रेट लिमिट पार हो गई (प्रति API कुंजी प्रति मिनट 300 POST/PATCH/DELETE अनुरोध)। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "लेखन बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "हटाने की प्रक्रिया पूरी नहीं हो सकी क्योंकि स्टोरेज सेवा, बायोमेट्रिक स्टोर, या निगरानी प्रदाता अनुपलब्ध था। सत्र अभी भी मौजूद है; वही अनुरोध तब तक दोहराएं जब तक कि यह `200` न लौटा दे। इसकी कुछ संग्रहीत फ़ाइलें पहले ही हटाई जा चुकी हो सकती हैं या इसका फ़ेस एम्बेडिंग पहले ही हटाया जा चुका हो सकता है, इसलिए `503` के बाद उन पर निर्भर न रहें। पुनः प्रयास एक ही टेम्पलेट पर कन्वर्ज होते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Session deletion unavailable": {
                    "summary": "एक स्टोरेज सेवा या निगरानी प्रदाता अनुपलब्ध था",
                    "value": {
                      "detail": "The session could not be deleted because a storage service or a monitoring provider is unavailable. The session is still in place; repeat the request to finish deleting it."
                    }
                  },
                  "Biometric store unavailable": {
                    "summary": "बायोमेट्रिक टेम्पलेट को बनाए रखने या हटाने के दौरान एक बायोमेट्रिक स्टोर अनुपलब्ध था",
                    "value": {
                      "detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "सत्र एक अंतिम नियामक रिपोर्ट का हिस्सा है। कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InFiledReportError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl (default policy)",
            "source": "curl -X DELETE \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "curl",
            "label": "curl (retain template)",
            "source": "curl -X DELETE \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"retain_face_embeddings\": true, \"face_retention_days\": 365}'"
          },
          {
            "lang": "curl",
            "label": "curl (privacy erasure)",
            "source": "curl -X DELETE \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/delete/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"deletion_instruction\": \"privacy_erasure\", \"instruction_id\": \"dsar-2026-0142\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n    retain_face_embeddings=True,\n    face_retention_days=365,\n    instruction_id=\"post-approval-cleanup-2026-08\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.delete(\"11111111-2222-3333-4444-555555555555\", {\n  retain_face_embeddings: true,\n  face_retention_days: 365,\n  instruction_id: \"post-approval-cleanup-2026-08\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsDeleteParams{\n\tRetainFaceEmbeddings: didit.Bool(true),\n\tFaceRetentionDays:    didit.Int(365),\n\tInstructionID:        didit.String(\"post-approval-cleanup-2026-08\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsDeleteParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().delete(\"11111111-2222-3333-4444-555555555555\", SessionsDeleteParams.builder()\n        .retainFaceEmbeddings(true)\n        .faceRetentionDays(365L)\n        .instructionId(\"post-approval-cleanup-2026-08\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->delete('11111111-2222-3333-4444-555555555555', [\n    'retain_face_embeddings' => true,\n    'face_retention_days' => 365,\n    'instruction_id' => 'post-approval-cleanup-2026-08',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  retain_face_embeddings: true,\n  face_retention_days: 365,\n  instruction_id: \"post-approval-cleanup-2026-08\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.DeleteAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsDeleteParams\n{\n    RetainFaceEmbeddings = true,\n    FaceRetentionDays = 365,\n    InstructionId = \"post-approval-cleanup-2026-08\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": false,
          "description": "वैकल्पिक। ऑपरेशनल विलोपन के साथ एप्लिकेशन की डेटा प्रतिधारण नीति का पालन करने के लिए बॉडी को पूरी तरह छोड़ दें।",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "retain_face_embeddings": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "इस विलोपन के लिए एप्लिकेशन की `face_retention_policy` को ओवरराइड करें। `true` सत्र हटाए जाने के बाद सत्र के उपयोगकर्ता से जुड़े एक छवि-मुक्त चेहरे के बायोमेट्रिक टेम्पलेट को रखता है; `false` सत्र के साथ फ़ेस एम्बेडिंग को हटा देता है; एप्लिकेशन नीति का पालन करने के लिए छोड़ दें या `null` रखें। KYB सत्रों के लिए और बिना फ़ेस एम्बेडिंग वाले सत्रों के लिए अनदेखा किया जाता है।",
                    "example": true
                  },
                  "face_retention_days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3650,
                    "description": "किसी बनाए रखे गए टेम्पलेट के लिए सीमित प्रतिधारण अवधि, दिनों में। जब कोई टेम्पलेट बनाए रखा जाता है तो यह आवश्यक होता है, जब तक कि एप्लिकेशन पहले से ही `face_retention_days` सेट न कर दे। टेम्पलेट की `expires_at` इस अवधि, एप्लिकेशन की सामान्य डेटा प्रतिधारण विंडो और `face_retention_deadline` में से जो सबसे पहले हो, वह होती है।",
                    "example": 365
                  },
                  "face_retention_deadline": {
                    "type": "string",
                    "format": "date-time",
                    "description": "प्रतिधारित टेम्पलेट के लिए वैकल्पिक हार्ड समाप्ति। भविष्य की होनी चाहिए।",
                    "example": "2027-08-28T00:00:00Z"
                  },
                  "deletion_instruction": {
                    "type": "string",
                    "enum": [
                      "operational_session_delete",
                      "privacy_erasure"
                    ],
                    "default": "operational_session_delete",
                    "description": "आपके द्वारा दिए जा रहे निर्देश का वर्ग। `operational_session_delete` सत्र को हटा देता है और केवल तभी टेम्पलेट को बनाए रखता है जब नीति या `retain_face_embeddings` ऐसा कहे। `privacy_erasure` सत्र को हटाने से पहले सत्र के उपयोगकर्ता से जुड़े प्रत्येक बनाए रखे गए बायोमेट्रिक टेम्पलेट को मिटा देता है, इसे एप्लिकेशन नीति द्वारा ओवरराइड नहीं किया जा सकता है, और इसे `retain_face_embeddings: true` (`400`) के साथ जोड़ा नहीं जा सकता है।",
                    "example": "operational_session_delete"
                  },
                  "instruction_id": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "इस विलोपन निर्देश के लिए आपका स्थायी संदर्भ (उदाहरण के लिए एक इरेज़र-टिकट id)। ऑडिट ट्रेल पर और किसी भी बनाए रखे गए टेम्पलेट पर रिकॉर्ड किया जाता है। छोड़ दिए जाने पर Didit द्वारा जनरेट किया जाता है।",
                    "example": "dsar-2026-0142"
                  }
                }
              },
              "examples": {
                "Retain a biometric template": {
                  "summary": "सत्र हटाएं, 365 दिनों के लिए एक छवि-मुक्त टेम्पलेट रखें",
                  "value": {
                    "retain_face_embeddings": true,
                    "face_retention_days": 365,
                    "instruction_id": "post-approval-cleanup-2026-08"
                  }
                },
                "Force deletion on an opted-in application": {
                  "summary": "एप्लिकेशन नीति की परवाह किए बिना फ़ेस एम्बेडिंग हटाएं",
                  "value": {
                    "retain_face_embeddings": false
                  }
                },
                "Privacy erasure": {
                  "summary": "डेटा-सब्जेक्ट अनुरोध: सत्र को हटाएं और उस व्यक्ति के लिए प्रत्येक प्रतिधारित टेम्पलेट को मिटा दें",
                  "value": {
                    "deletion_instruction": "privacy_erasure",
                    "instruction_id": "dsar-2026-0142"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/session/{sessionId}/generate-pdf/": {
      "get": {
        "summary": "सत्यापन सत्र के लिए PDF रिपोर्ट डाउनलोड करें",
        "description": "पूर्ण हो चुके सत्यापन सत्र के लिए अनुपालन-तैयार PDF रिपोर्ट रेंडर करें और डाउनलोड करें। यही पाथ उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्रों के लिए काम करता है — सर्वर दोनों सत्र प्रकारों के विरुद्ध `sessionId` को हल करता है और मिलान वाले रिपोर्ट टेम्पलेट का चयन करता है।\n\n**पात्र स्थितियाँ।** सत्र में पहले से ही कोई अंतिम या समीक्षा योग्य स्थिति होनी चाहिए:\n\n- KYC सत्र: `Approved`, `Declined`, `In Review`, या `Kyc Expired`।\n- KYB सत्र: `Approved`, `Declined`, या `In Review`।\n\nकोई भी अन्य स्थिति (`Not Started`, `In Progress`, `Expired`, `Abandoned`, …) व्याख्यात्मक `detail` स्ट्रिंग के साथ `403` लौटाती है — नीचे `403` रिस्पॉन्स देखें।\n\n**रिपोर्ट में क्या शामिल है।** PDF अनुरोध के समय कंसोल सत्र दृश्य को दर्शाता है:\n\n- **KYC** — संकलित सत्र स्थिति, चेतावनियों की सूची, और निष्पादित प्रत्येक सुविधा के लिए एक अनुभाग: पहचान सत्यापन (दस्तावेज़ की छवियां और निकाले गए फ़ील्ड), NFC, लाइवनेस, चेहरा मिलान, ईमेल सत्यापन, फ़ोन सत्यापन, पते का प्रमाण, प्रश्नावली के उत्तर, डेटाबेस सत्यापन, AML स्क्रीनिंग, और IP विश्लेषण — इसके बाद सत्र टैग, कंसोल समीक्षा गतिविधि (टिप्पणियाँ और स्थिति परिवर्तन), और सत्र इवेंट की समयरेखा।\n- **KYB** — रजिस्ट्री जांच (कंपनी डेटा), AML स्क्रीनिंग, व्यावसायिक दस्तावेज़ सत्यापन, प्रमुख व्यक्तियों की जांच, प्रश्नावली प्रतिक्रियाएं, फ़ोन/ईमेल सत्यापन, IP विश्लेषण, और सत्र इवेंट की समयरेखा, जिसके बाद टैग और समीक्षा गतिविधि शामिल हैं।\n\n**ब्रांडिंग।** यदि आपके एप्लिकेशन में व्हाइट लेबल कस्टमाइज़ेशन है, तो रिपोर्ट आपके लोगो और आपकी गोपनीयता-नीति URL के लिंक के साथ रेंडर की जाती है; अन्यथा इसमें Didit की ब्रांडिंग होती है। रिपोर्ट अंग्रेजी में रेंडर की जाती हैं — कोई भाषा पैरामीटर नहीं है।\n\n**कोई कैशिंग नहीं।** प्रत्येक कॉल वर्तमान सत्र डेटा से PDF को पुनः रेंडर करती है, इसलिए मैन्युअल समीक्षा के बाद जनरेट की गई रिपोर्ट समीक्षक के निर्णय को दर्शाती है। एक ही सत्र के लिए दो कॉल बाइट-अलग फ़ाइलें उत्पन्न कर सकती हैं — यदि आपको एक अपरिवर्तनीय प्रतिलिपि की आवश्यकता है तो डाउनलोड की गई फ़ाइल को संग्रहीत करें।\n\n**विलंबता (Latency)।** PDF तैयार करने से पहले रेंडरिंग प्रत्येक संग्रहीत छवि (दस्तावेज़ के दोनों पक्ष, सेल्फ़ी, अतिरिक्त फ़ाइलें) को डाउनलोड करती है, इसलिए भारी मीडिया वाले सत्रों में कई सेकंड लग सकते हैं। उदार क्लाइंट रीड टाइमआउट (60 सेकंड अनुशंसित) का उपयोग करें और बॉडी को डिस्क पर स्ट्रीम करें।\n\n**ट्रेलिंग स्लैश।** कैनोनिकल रूट एक ट्रेलिंग स्लैश (`…/generate-pdf/`) के साथ समाप्त होता है। इसके बिना किया गया अनुरोध सीधे उसी रिस्पॉन्स के साथ पूरा किया जाता है — कोई `301` रीडायरेक्ट नहीं होता है, इसलिए किसी भी क्लाइंट को रीडायरेक्ट का पालन करने की आवश्यकता नहीं होती है और `curl` को `-L` की आवश्यकता नहीं होती है। नमूनों की तरह स्लैश वाले URL का उपयोग करें।\n\nयदि आपको रेंडर की गई रिपोर्ट के बजाय अंतर्निहित डेटा JSON के रूप में चाहिए, तो `GET /v3/session/{sessionId}/decision/` का उपयोग करें। एक ही दस्तावेज़ में किसी एक उपयोगकर्ता के प्रत्येक रिपोर्ट योग्य सत्र के लिए, `GET /v3/users/{vendor_data}/generate-pdf/` का उपयोग करें।",
        "operationId": "get_v3_session_generate_pdf",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "generate_pdf",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "रेंडर किए जाने वाले उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र का UUID — `POST /v3/session/` द्वारा लौटाया गया `session_id`। एक ही पाथ दोनों प्रकार के सत्रों के लिए काम करता है; रिस्पॉन्स पर `Content-Disposition` फ़ाइल नाम का उपयोग करके पहचानें कि आपको किस प्रकार की रिपोर्ट प्राप्त हुई है।\n\n**यह एक सही प्रारूप वाला, लोअरकेस UUID होना चाहिए।** यह रूट केवल मान्य UUID से मेल खाता है, इसलिए किसी भी एप्लिकेशन कोड के चलने से पहले URL राउटर द्वारा विकृत मान को अस्वीकार कर दिया जाता है और रिस्पॉन्स नीचे दिखाए गए JSON `{\"detail\": ...}` एनवलप के बजाय `404` **HTML** पेज होता है। रूट का UUID कन्वर्टर केवल कैनोनिकल लोअरकेस फ़ॉर्म से मेल खाता है — अपरकेस-हेक्स UUID को HTML 404 के साथ अस्वीकार कर दिया जाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "रेंडर किया गया PDF दस्तावेज़, सीधे बाइनरी `application/pdf` के रूप में लौटाया गया — कोई JSON रैपर नहीं है और कोई डाउनलोड-URL इनडायरेक्शन नहीं है। बॉडी `%PDF` मैजिक बाइट्स (PDF 1.7) से शुरू होती है। इसे `.pdf` फ़ाइल में सहेजें या अपने कॉलर को स्ट्रीम करें।",
            "headers": {
              "Content-Disposition": {
                "description": "KYC सत्रों के लिए `attachment; filename=session_{sessionId}.pdf`, KYB सत्रों के लिए `attachment; filename=business_{sessionId}.pdf` — उपसर्ग बताता है कि कौन सा रिपोर्ट टेम्पलेट रेंडर किया गया था।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=session_11111111-2222-3333-4444-555555555555.pdf"
                }
              },
              "Content-Length": {
                "description": "बाइट्स में PDF का कुल आकार; बॉडी चंक नहीं की गई है।",
                "schema": {
                  "type": "integer",
                  "example": 25191
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण, प्राधिकरण, या सत्र-स्थिति विफलता। अनुपस्थित कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। विफलता मोड को `detail` स्ट्रिंग द्वारा पहचानें:\n\n- `\"Authentication credentials were not provided or are invalid.\"` — कोई `x-api-key` हेडर नहीं (और कोई `Authorization: Bearer` token नहीं), या प्रदान किया गया क्रेडेंशियल इंट्रोस्पेक्शन में विफल रहा (निरस्त, समय-सीमा समाप्त, या विकृत)।\n- `\"You do not have permission to perform this action.\"` — क्रेडेंशियल मान्य है लेकिन इस सत्र को नहीं पढ़ सकता है: कंसोल-उपयोगकर्ता Bearer token में `read:sessions` अनुमति का अभाव है या वह स्वामी एप्लिकेशन तक नहीं पहुंच सकता है, या API कुंजी सत्र से भिन्न संगठन की है।\n- `\"You can only generate a PDF for sessions in review, declined, approved or kyc expired\"` — KYC सत्र मौजूद है लेकिन अभी तक किसी पात्र स्थिति में नहीं है (उदाहरण के लिए `Not Started` या `In Progress`)। रिपोर्ट का अनुरोध करने से पहले `status.updated` webhook की प्रतीक्षा करें।\n- `\"You can only generate a PDF for sessions in review, declined or approved\"` — KYB सत्रों के लिए समान शर्त।\n\nध्यान दें कि पूरी तरह से अज्ञात `sessionId` के लिए endpoint क्रेडेंशियल्स को मान्य करने से पहले स्वामी एप्लिकेशन की पहचान करता है, इसलिए क्रेडेंशियल अनुपस्थित या अमान्य होने पर भी गायब सत्र `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "You can only generate a PDF for sessions in review, declined, approved or kyc expired"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी इंट्रोस्पेक्शन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Insufficient permissions": {
                    "summary": "मान्य क्रेडेंशियल जिसमें read:sessions या स्वामित्व वाले एप्लिकेशन तक पहुंच का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "KYC session not finished": {
                    "summary": "KYC सत्र अभी भी शुरू नहीं हुआ / प्रगति पर है",
                    "value": {
                      "detail": "You can only generate a PDF for sessions in review, declined, approved or kyc expired"
                    }
                  },
                  "KYB session not finished": {
                    "summary": "KYB सत्र अभी भी शुरू नहीं हुआ / प्रगति पर है",
                    "value": {
                      "detail": "You can only generate a PDF for sessions in review, declined or approved"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `sessionId` वाला कोई सक्रिय सत्र मौजूद नहीं है — यह कभी बनाया ही नहीं गया था, या इसे हटा दिया गया है। क्रेडेंशियल सत्यापन से पहले ओनर रिज़ॉल्यूशन होता है, इसलिए अप्रमाणित अनुरोधों के लिए भी यह `404` लौटाया जाता है। कौन सा लुकअप मिस होता है, इसके आधार पर `detail` स्ट्रिंग `\"Not found.\"` (सामान्य मामला) या `\"Session not found.\"` होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "Not found."
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "sessionId किसी भी KYC या KYB सत्र से मेल नहीं खाता है",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Recently deleted session": {
                    "summary": "लुकअप के बीच सत्र हटा दिया गया था",
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। वैश्विक 600/मिनट GET सीमा के अतिरिक्त, PDF जनरेशन की **प्रति क्रेडेंशियल 50 अनुरोध प्रति मिनट** (API कुंजी, Bearer token, या अप्रमाणित होने पर स्रोत IP) की एक समर्पित सीमा है। `Retry-After` सेकंड प्रतीक्षा करें (जो `X-RateLimit-*` हेडर में भी दिखाई देता है), फिर पुनः प्रयास करें। रिपोर्ट सर्वर-साइड कैश नहीं की जाती हैं, इसलिए प्रत्येक रिपोर्ट को एक बार डाउनलोड करें और इसे पुनः प्राप्त करने के बजाय फ़ाइल को स्टोर करें।",
            "headers": {
              "Retry-After": {
                "description": "अनुरोध का पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "वर्तमान विंडो में अनुमत PDF जनरेशन की अधिकतम संख्या (50)।",
                "schema": {
                  "type": "integer",
                  "example": 50
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix टाइमस्टैम्प (सेकंड) जिस पर वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1750000000
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "रेट लिमिट उल्लंघन का मानव-पठनीय स्पष्टीकरण।",
                      "example": "Session PDF generation rate limit exceeded. You can make up to 50 requests per minute."
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "summary": "समान क्रेडेंशियल से एक मिनट में 50 से अधिक PDF जनरेशन",
                    "value": {
                      "detail": "Session PDF generation rate limit exceeded. You can make up to 50 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --fail \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/generate-pdf/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  --output report.pdf"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.generate_pdf(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.generatePdf(\"11111111-2222-3333-4444-555555555555\");\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.GeneratePDF(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().generatePdf(\"11111111-2222-3333-4444-555555555555\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->generatePdf('11111111-2222-3333-4444-555555555555');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.generate_pdf(\"11111111-2222-3333-4444-555555555555\")\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.GeneratePdfAsync(\"11111111-2222-3333-4444-555555555555\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/sandbox/arm/": {
      "post": {
        "summary": "सत्र पर सैंडबॉक्स परिदृश्य तैयार करें",
        "description": "किसी `Not Started` सत्र पर सैंडबॉक्स परिदृश्य को बनाए रखें और उसके बंडल किए गए मैजिक मानों (ईमेल, फ़ोन, या `expected_details` फ़ील्ड) को सत्र पर विस्तृत करें, ताकि प्रवाह चलने के बाद मॉक किए गए प्रदाता परिदृश्य के परिणाम को पुनरुत्पादित कर सकें। यह वह endpoint है जिसे Didit के होस्टेड सत्यापन UI में प्री-फ़्लो परिदृश्य चयनकर्ता तब कॉल करता है जब कोई परीक्षक कैप्चर शुरू करने से पहले परिणाम चुनता है। इसके आधार पर अपना स्वयं का चयनकर्ता बनाएं, या इसे सीधे सैंडबॉक्स टेस्ट हार्नेस से कॉल करें।\n\nसत्र के स्वयं के `Session-Token` ([Create Session](/hi/sessions-api/create-session) द्वारा `session_token` में लौटाया गया) के साथ प्रमाणीकरण करें, अपने एप्लिकेशन `x-api-key` से नहीं: यह endpoint क्लाइंट से कॉल किए जाने के लिए है, आपके बैकएंड से नहीं। कोई परिदृश्य केवल तब स्वीकार किया जाता है जब `status` `Not Started` हो। `Not Started` स्थिति में रहते हुए इसे फिर से कॉल करने से सत्र पुनः सक्रिय हो जाता है: यह नए परिदृश्य के मैजिक मानों को बदल देता है और केवल उन्हीं मानों को साफ़ करता है जो *पिछले* परिदृश्य ने लिखे थे, इसलिए उपयोगकर्ता द्वारा मैन्युअल रूप से टाइप किया गया कोई भी मान (ईमेल, पहला नाम, आदि) पुनः सक्रियण के बाद भी बना रहता है। ऐसे सत्र को सक्रिय करना जो `Not Started` से आगे बढ़ चुका है, या जो किसी लाइव (गैर-सैंडबॉक्स) एप्लिकेशन से संबंधित है, अस्वीकृत कर दिया जाता है।\n\nपरिदृश्यों की पूरी सूची और परिणाम प्राप्त करने के अन्य दो तरीकों के लिए [Sandbox & Test Data](/hi/integration/sandbox-testing) देखें: सत्र निर्माण के समय `sandbox_scenario`, और सीधे मैजिक मान टाइप करना।",
        "operationId": "post_v3_session_sandbox_arm",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "arm_sandbox",
          "auth": "device_token",
          "server": false
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "SessionTokenAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "तैयार किए जाने वाले सैंडबॉक्स सत्यापन सत्र का UUID। यह प्रमाणित करने के लिए उपयोग किए गए Session-Token में एन्कोड किए गए सत्र से मेल खाना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "scenario"
                ],
                "properties": {
                  "scenario": {
                    "type": "string",
                    "description": "सक्रिय करने के लिए परिदृश्य का स्लग। GET /v1/sandbox/scenarios/ पर कैटलॉग या [Sandbox & Test Data](/hi/integration/sandbox-testing) में परिदृश्य तालिका देखें।",
                    "example": "decline_document_expired"
                  }
                }
              },
              "examples": {
                "Arm": {
                  "summary": "AML PEP-हिट परिदृश्य तैयार करें",
                  "value": {
                    "scenario": "decline_aml_hit"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "परिदृश्य आर्म किया गया। इसके मैजिक मान अब सत्र पर मौजूद हैं। `status` सत्र की वर्तमान स्थिति को दर्शाता है, जिसे यह कॉल कभी नहीं बदलती: सफलता पर यह हमेशा `Not Started` रहता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "scenario": {
                      "type": "string",
                      "description": "आर्म्ड परिदृश्य स्लग (अनुरोध को प्रतिध्वनित करता है)।"
                    },
                    "status": {
                      "type": "string",
                      "example": "Not Started"
                    }
                  }
                },
                "examples": {
                  "Armed": {
                    "summary": "Not Started सत्र पर परिदृश्य आर्म किया गया",
                    "value": {
                      "session_id": "11111111-2222-3333-4444-555555555555",
                      "scenario": "decline_aml_hit",
                      "status": "Not Started"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: एक अज्ञात परिदृश्य स्लग, या सत्र पहले ही `Not Started` से आगे बढ़ चुका है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown Scenario": {
                    "summary": "scenario कैटलॉग में नहीं है",
                    "value": {
                      "scenario": [
                        "Unknown sandbox scenario: 'not-a-real-scenario'."
                      ]
                    }
                  },
                  "Already Started": {
                    "summary": "सत्र Not Started से आगे बढ़ गया",
                    "value": [
                      "Scenario can only be armed before the verification starts."
                    ]
                  }
                }
              }
            }
          },
          "404": {
            "description": "Session-Token इस `session_id` पर रिज़ॉल्व नहीं होता है, या सत्र किसी लाइव (गैर-सैंडबॉक्स) एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "लाइव सत्र, या session_id / token बेमेल",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/sandbox/arm/ \\\n  -H 'Session-Token: YOUR_SESSION_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"scenario\": \"decline_aml_hit\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "import requests\n\nresponse = requests.post(\n    \"https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/sandbox/arm/\",\n    headers={\n        \"Session-Token\": \"YOUR_SESSION_TOKEN\",\n        \"Content-Type\": \"application/json\",\n    },\n    json={\"scenario\": \"decline_aml_hit\"},\n)\nresponse.raise_for_status()\nprint(response.json())  # {'session_id': '...', 'scenario': 'decline_aml_hit', 'status': 'Not Started'}"
          },
          {
            "lang": "javascript",
            "label": "JavaScript",
            "source": "const response = await fetch(\n  'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/sandbox/arm/',\n  {\n    method: 'POST',\n    headers: {\n      'Session-Token': sessionToken,\n      'Content-Type': 'application/json',\n    },\n    body: JSON.stringify({ scenario: 'decline_aml_hit' }),\n  },\n);\nif (!response.ok) throw new Error(`HTTP ${response.status}`);\nconst { session_id, scenario, status } = await response.json();"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/update-status/": {
      "patch": {
        "summary": "सत्यापन सत्र के लिए स्वीकृत करें, अस्वीकृत करें, या पुनः सबमिशन का अनुरोध करें",
        "description": "KYC या KYB सत्यापन सत्र के अंतिम निर्णय को मैन्युअल रूप से ओवरराइड करें। मैन्युअल निर्णय रिकॉर्ड करने के लिए `new_status` को `Approved` या `Declined` पर सेट करें, या विशिष्ट सत्यापन चरणों को साफ़ करने और उपयोगकर्ता को उसी सत्यापन URL के माध्यम से उन्हें फिर से करने की अनुमति देने के लिए `Resubmitted` पर सेट करें। यह endpoint उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है।\n\nसत्र के समीक्षा योग्य स्थिति में पहुँचने के बाद इसे कॉल करें: वर्तमान स्थिति `Approved`, `Declined`, `In Review`, `Kyc Expired`, `Abandoned`, या `Resubmitted` होनी चाहिए। जो सत्र अभी भी `Not Started`, `In Progress`, या `Awaiting User` हैं, या जो `Expired` के रूप में समाप्त हुए हैं, वे `400` लौटाते हैं। आपकी API कुंजी के पास `write:sessions` अनुमति होनी चाहिए (एक स्कोप्ड API कुंजी को निर्णयों के लिए राइट एक्सेस की आवश्यकता होती है)। योग्य-स्थिति की जाँच अनुरोध बॉडी के सत्यापन से पहले चलती है, इसलिए एक अयोग्य सत्र तब भी `Wrong Current Status` त्रुटि लौटाता है जब payload भी अमान्य हो।\n\n`Resubmitted` के लिए, यह चुनने के लिए `nodes_to_resubmit` पास करें कि उपयोगकर्ता को किन वर्कफ़्लो चरणों को फिर से करना होगा, या पुनः सबमिट करने योग्य स्थिति (`Declined`, `In Review`, `Not Finished`, `Expired`) में मौजूदा सुविधा प्रयासों को स्वतः-चुनने के लिए इसे छोड़ दें। कभी प्रयास नहीं की गई सुविधाओं को स्वतः-चयनित नहीं किया जाता है: उन्हें `nodes_to_resubmit` में स्पष्ट रूप से सूचीबद्ध करें, अन्यथा जब किसी रिकॉर्ड किए गए प्रयास को पुनः सबमिशन की आवश्यकता नहीं होती है तो अनुरोध `400` लौटाता है। चयनित चरणों के पिछले परिणाम पुनः सबमिशन के इतिहास (Get Decision द्वारा `include=resubmissions` के साथ लौटाए गए) में स्थानांतरित हो जाते हैं, वर्कफ़्लो ग्राफ़ से मिलान करने के लिए चरणों को पुनर्व्यवस्थित किया जाता है, सत्र की समाप्ति विंडो पुनः प्रारंभ हो जाती है, और मूल सत्यापन URL फिर से उपयोग योग्य हो जाता है। सूची के शीर्ष पर केवल-बैकएंड चरण (`AML`, `DATABASE_VALIDATION`, `IP_ANALYSIS`) बिना उपयोगकर्ता इंटरैक्शन के तुरंत चलते हैं; यदि प्रत्येक पुनः सबमिट किया गया चरण केवल-बैकएंड है, तो सत्र उसी अनुरोध के भीतर फिर से अंतिम रूप ले लेता है। `KYB_REGISTRY` और `KYB_KEY_PEOPLE` को सीधे पुनः सबमिट नहीं किया जा सकता है: इसके बजाय संबंधित चाइल्ड KYC सत्रों को पुनः सबमिट करें और पैरेंट व्यवसाय सत्र स्वचालित रूप से पुनर्गणना करता है।\n\nस्थिति बदलने वाली प्रत्येक कॉल परिवर्तन कमिट होने के बाद `status.updated` [webhook](/hi/integration/webhooks) को ट्रिगर करती है और सत्र की `reviews` में एक गतिविधि प्रविष्टि (एक्टर एट्रिब्यूशन और आपकी `comment` के साथ) जोड़ती है, जो [Get Decision](#get-/v3/session/-sessionId-/decision/) और कंसोल गतिविधि टाइमलाइन में दिखाई देती है। सत्र के `vendor_data` से जुड़े उपयोगकर्ता-प्रोफ़ाइल एग्रीगेट्स भी अपडेट होते हैं। अस्वीकार करने से सत्र के लिए सतत AML निगरानी अक्षम हो जाती है; पुनः स्वीकृत करने से यह फिर से सक्षम हो जाती है (`Resubmitted`, `Declined`, या `Kyc Expired` से) जब वर्कफ़्लो में निगरानी चालू होती है। KYB प्रमुख व्यक्ति जाँच से संबंधित चाइल्ड KYC को स्वीकृत या अस्वीकृत करने से पैरेंट व्यवसाय सत्र की स्थिति की पुनर्गणना होती है। उपयोगकर्ता को सूचित करने के लिए `send_email: true` (`email_address` के साथ) सेट करें: `Approved`/`Declined` के लिए एक स्थिति नोटिस, या `Resubmitted` के लिए सत्यापन लिंक और प्रति-चरण कारणों वाला एक पुनः सबमिशन ईमेल। पहले ईमेल की जाँच करने के लिए, [Preview Decision Email](/hi/sessions-api/preview-decision-email) (`Approved`, `Declined`) या [Preview Resubmission Email](/hi/sessions-api/preview-resubmission) (`Resubmitted`) के साथ इसका पूर्वावलोकन करें और इसके `preview_token` को `email_preview_token` के रूप में पास करें: अपडेट तब ठीक वही पूर्वावलोकन किया गया ईमेल भेजता है, या पूर्वावलोकन के बाद ईमेल या सत्र बदलने पर अथवा रसीद 15 मिनट से अधिक पुरानी होने पर कुछ भी बदलने से पहले `409` लौटाता है।\n\nजिस सत्र में पहले से ही वह स्थिति है, उस पर `Approved` या `Declined` को दोहराने से कुछ नहीं बदलता है और `200` लौटता है: कोई webhook नहीं, कोई गतिविधि प्रविष्टि नहीं और कोई ईमेल नहीं। `Resubmitted` को दोहराने पर `400` (`The new status is the same as the current status.`) लौटता है। अनुपलब्ध या अमान्य क्रेडेंशियल और अनुपलब्ध अनुमतियाँ `403` लौटाती हैं; एक समाप्त हो चुकी स्कोप्ड API कुंजी `401` लौटाती है।",
        "operationId": "patch_v3_session_update_status",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "अपडेट किए जाने वाले सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है — सेवा दोनों सत्र प्रकारों में ID को रिज़ॉल्व करती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "new_status"
                ],
                "properties": {
                  "new_status": {
                    "type": "string",
                    "description": "लक्षित स्थिति। `Approved` और `Declined` एक अंतिम मैन्युअल निर्णय रिकॉर्ड करते हैं (प्रत्येक दूसरे को पलट भी सकता है)। `Resubmitted` चयनित चरणों को साफ़ करता है और सत्र को वापस उपयोगकर्ता के पास भेज देता है। कोई भी अन्य मान `400` लौटाता है।",
                    "enum": [
                      "Approved",
                      "Declined",
                      "Resubmitted"
                    ],
                    "example": "Approved"
                  },
                  "comment": {
                    "type": "string",
                    "description": "बदलाव का मुक्त-पाठ कारण, जो सत्र के समीक्षा ट्रेल पर संग्रहीत होता है और [Get Decision](#get-/v3/session/-sessionId-/decision/) के `reviews` ऐरे में लौटाया जाता है। उदाहरण के लिए `Duplicated user`।",
                    "example": "All checks passed manual review"
                  },
                  "nodes_to_resubmit": {
                    "type": "array",
                    "description": "वर्कफ़्लो चरण जिन्हें उपयोगकर्ता को फिर से करना होगा। केवल तभी कार्रवाई की जाती है जब `new_status` `Resubmitted` हो। `Approved`/`Declined` के लिए प्रविष्टियाँ अभी भी स्कीमा-सत्यापित होती हैं (एक अमान्य `feature` मान `400` लौटाता है) लेकिन स्कीमा-वैध प्रविष्टियों को सिमेंटिक रूप से अनदेखा कर दिया जाता है। यदि छोड़ दिया जाता है, तो सर्वर मौजूदा OCR, लाइवनेस, चेहरा मिलान, POA, फ़ोन, ईमेल, AML, डेटाबेस सत्यापन, और प्रश्नावलियाँ प्रयासों का स्वतः चयन करता है जिनकी स्थिति `Declined`, `In Review`, `Not Finished`, या `Expired` है (NFC, IP विश्लेषण, आयु अनुमान, चेहरा खोज, और KYB दस्तावेज़ प्रयासों का कभी भी स्वतः चयन नहीं किया जाता है; चेहरा मिलान के अलावा वाले चेहरे के प्रयासों को `LIVENESS` के रूप में चुना जाता है) — वे सुविधाएँ जिनका उपयोगकर्ता ने कभी प्रयास नहीं किया (कोई रिकॉर्ड किया गया प्रयास नहीं) चुनी नहीं जाती हैं, इसलिए शून्य प्रयासों वाला सत्र `400` लौटाता है (\"No features found that need resubmission\") भले ही कुछ भी स्वीकृत न हुआ हो; उस स्थिति में स्पष्ट रूप से `nodes_to_resubmit` पास करें। चरण वर्कफ़्लो-ग्राफ़ क्रम में निष्पादित होते हैं, भले ही आप उन्हें किसी भी क्रम में भेजें। `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, और `KYB` उपनाम को `400` के साथ अस्वीकार कर दिया जाता है — वे पैरेंट जाँचें अपने चाइल्ड KYC सत्रों से पुनर्गणना करती हैं।",
                    "items": {
                      "type": "object",
                      "required": [
                        "node_id",
                        "feature"
                      ],
                      "properties": {
                        "node_id": {
                          "type": "string",
                          "description": "सत्र के वर्कफ़्लो परिभाषा में प्रदर्शित नोड पहचानकर्ता (उदाहरण के लिए `feature_ocr`, `feature_liveness`)।",
                          "example": "feature_ocr"
                        },
                        "feature": {
                          "type": "string",
                          "description": "नोड का सुविधा प्रकार। उपनाम `ID_VERIFICATION`, `POA`, `PHONE`, और `EMAIL` सर्वर-साइड पर `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, और `EMAIL_VERIFICATION` में सामान्यीकृत हो जाते हैं। `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, और `KYB` स्कीमा सत्यापन पास करते हैं लेकिन हमेशा उदाहरणों में दिखाए गए बिज़नेस-नियम `400` के साथ अस्वीकार कर दिए जाते हैं।",
                          "enum": [
                            "OCR",
                            "OCR_BACK",
                            "NFC",
                            "AML",
                            "FACE",
                            "LIVENESS",
                            "FACE_MATCH",
                            "IP_ANALYSIS",
                            "AGE_ESTIMATION",
                            "PROOF_OF_ADDRESS",
                            "PHONE_VERIFICATION",
                            "EMAIL_VERIFICATION",
                            "FACE_SEARCH",
                            "DATABASE_VALIDATION",
                            "QUESTIONNAIRE",
                            "DOCUMENT_AI",
                            "KYB_DOCUMENTS",
                            "ID_VERIFICATION",
                            "POA",
                            "PHONE",
                            "EMAIL",
                            "KYB_REGISTRY",
                            "KYB_KEY_PEOPLE",
                            "KYB",
                            "GEOLOCATION"
                          ],
                          "example": "OCR"
                        }
                      }
                    }
                  },
                  "send_email": {
                    "type": "boolean",
                    "description": "क्या उपयोगकर्ता को इस बदलाव के बारे में ईमेल भेजा जाए। इसके लिए `email_address` आवश्यक है। `Approved`/`Declined` के लिए उपयोगकर्ता को स्थिति सूचना प्राप्त होती है; `Resubmitted` के लिए ईमेल में सत्यापन लिंक और प्रत्येक चरण के लिए पुनः सबमिशन के कारण शामिल होते हैं।",
                    "default": false,
                    "example": false
                  },
                  "email_address": {
                    "type": "string",
                    "format": "email",
                    "description": "अधिसूचना ईमेल के लिए प्राप्तकर्ता। **जब `send_email` `true` हो तो आवश्यक** — इसे छोड़ने पर `400` मिलता है।",
                    "example": "user@example.com"
                  },
                  "email_language": {
                    "type": "string",
                    "description": "सूचना ईमेल के लिए भाषा। स्कीमा स्तर पर किसी भी स्ट्रिंग को स्वीकार करता है; असमर्थित कोड बिना किसी सूचना के अंग्रेज़ी (`en`) पर फ़ालबैक हो जाते हैं।",
                    "default": "en",
                    "example": "en"
                  },
                  "email_preview_token": {
                    "type": "string",
                    "writeOnly": true,
                    "minLength": 1,
                    "maxLength": 512,
                    "description": "[निर्णय ईमेल का पूर्वावलोकन करें](/hi/sessions-api/preview-decision-email) (`Approved` और `Declined` के लिए) या [पुनः सबमिशन ईमेल का पूर्वावलोकन करें](/hi/sessions-api/preview-resubmission) (`Resubmitted` के लिए) से वैकल्पिक रसीद: इसका `preview_token`। केवल `send_email: true` के साथ मान्य; इसके बिना अनुरोध `400` लौटाता है। प्राप्तकर्ता, भाषा, सत्र स्थिति, प्रेषक और ईमेल (और पुनः सबमिशन के लिए, चयनित चरण) अभी भी पूर्वावलोकन से मेल खाने चाहिए, और रसीद 15 मिनट के बाद समाप्त हो जाती है। अन्यथा सत्र बदलने या ईमेल भेजे जाने से पहले अनुरोध `409` लौटाता है। मौजूदा इंटीग्रेशन इस फ़ील्ड को छोड़ सकते हैं।"
                  }
                }
              },
              "examples": {
                "Approve Session": {
                  "summary": "मैन्युअल समीक्षा के बाद एक सत्र स्वीकृत करें",
                  "value": {
                    "new_status": "Approved",
                    "comment": "All checks passed manual review"
                  }
                },
                "Decline Session": {
                  "summary": "एक सत्र को अस्वीकृत करें",
                  "value": {
                    "new_status": "Declined",
                    "comment": "Suspected fraud"
                  }
                },
                "Resubmit Specific Steps": {
                  "summary": "ईमेल के साथ, चुने गए चरणों के पुनः सबमिशन का अनुरोध करें",
                  "value": {
                    "new_status": "Resubmitted",
                    "nodes_to_resubmit": [
                      {
                        "node_id": "feature_ocr",
                        "feature": "OCR"
                      },
                      {
                        "node_id": "feature_liveness",
                        "feature": "LIVENESS"
                      }
                    ],
                    "send_email": true,
                    "email_address": "user@example.com",
                    "email_language": "en"
                  }
                },
                "Resubmit Auto-select": {
                  "summary": "पुनः सबमिशन का अनुरोध करें (गैर-स्वीकृत चरणों को स्वतः चुनें)",
                  "value": {
                    "new_status": "Resubmitted"
                  }
                },
                "Approve With Previewed Email": {
                  "summary": "निर्णय ईमेल पूर्वावलोकन द्वारा लौटाए गए ईमेल को स्वीकृत करें और भेजें",
                  "value": {
                    "new_status": "Approved",
                    "send_email": true,
                    "email_address": "person@example.com",
                    "email_language": "en",
                    "email_preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "स्टेटस अपडेट किया गया। रिस्पॉन्स में केवल `session_id` होता है; [निर्णय प्राप्त करें](#get-/v3/session/-sessionId-/decision/) के माध्यम से अपडेट किया गया सत्र प्राप्त करें। बदलाव कमिट होने पर `status.updated` webhook ट्रिगर होता है। `Approved` या `Declined` को दोहराने पर वही बॉडी वापस आती है और कुछ नहीं बदलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "अपडेट किए गए सत्र का UUID।"
                    }
                  }
                },
                "examples": {
                  "Updated": {
                    "summary": "स्वीकृत, अस्वीकृत और पुनः सबमिट किए गए सभी के लिए समान रूप से लौटाया जाता है",
                    "value": {
                      "session_id": "3472fb7c-8f7c-4d1a-9cf4-cf3d74ce1a60"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं (कुछ व्यवसाय-नियम अस्वीकृतियां इसके बजाय एक स्ट्रिंग मान का उपयोग करती हैं: `{\"nodes_to_resubmit\": \"<message>\"}`), क्रॉस-स्टेट त्रुटियां `{\"detail\": \"<message>\"}` के रूप में, और समान-स्थिति त्रुटि एक सादे JSON array के रूप में आती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Wrong Current Status": {
                    "summary": "सत्र अपडेट करने योग्य स्थिति में नहीं है",
                    "value": {
                      "detail": "Only sessions with status Approved, Declined, In Review, Kyc Expired, Abandoned, Resubmitted can be updated. Current status: In Progress"
                    }
                  },
                  "Invalid Status Value": {
                    "summary": "new_status एक वास्तविक सत्र स्थिति है लेकिन Approved/Declined/Resubmitted में से एक नहीं है",
                    "value": {
                      "new_status": [
                        "You can only update the status to 'Approved', 'Declined', or 'Resubmitted'."
                      ]
                    }
                  },
                  "Missing new_status": {
                    "summary": "आवश्यक फ़ील्ड छोड़ा गया",
                    "value": {
                      "new_status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Same Status": {
                    "summary": "ऐसे सत्र पर पुनः सबमिशन का अनुरोध किया गया जो पहले से ही Resubmitted है",
                    "value": [
                      "The new status is the same as the current status."
                    ]
                  },
                  "Email Address Required": {
                    "summary": "email_address के बिना send_email true है",
                    "value": {
                      "email_address": [
                        "Email address is required when send_email is true."
                      ]
                    }
                  },
                  "Non-resubmittable Feature": {
                    "summary": "पुनः सबमिट करना KYB पैरेंट चेक को लक्षित करता है",
                    "value": {
                      "nodes_to_resubmit": "The following features cannot be resubmitted directly: KYB_REGISTRY. Resubmit the relevant child KYC sessions instead; the parent will recompute automatically."
                    }
                  },
                  "Nothing To Resubmit": {
                    "summary": "स्वतः-चयन को कोई गैर-स्वीकृत सुविधा नहीं मिली",
                    "value": {
                      "nodes_to_resubmit": "No features found that need resubmission. All features are already approved."
                    }
                  },
                  "Invalid Feature Choice": {
                    "summary": "nodes_to_resubmit में अज्ञात सुविधा",
                    "value": {
                      "nodes_to_resubmit": [
                        {
                          "feature": [
                            "\"BOGUS\" is not a valid choice. Valid choices are: OCR, OCR_BACK, NFC, AML, FACE, LIVENESS, FACE_MATCH, IP_ANALYSIS, AGE_ESTIMATION, PROOF_OF_ADDRESS, PHONE_VERIFICATION, EMAIL_VERIFICATION, FACE_SEARCH, DATABASE_VALIDATION, QUESTIONNAIRE, KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE, ID_VERIFICATION, POA, PHONE, EMAIL, KYB"
                          ]
                        }
                      ]
                    }
                  },
                  "Invalid Status Value (not a status at all)": {
                    "summary": "new_status एक मान्य StatusChoices मान नहीं है",
                    "value": {
                      "new_status": [
                        "\"Bogus\" is not a valid choice."
                      ]
                    }
                  },
                  "Preview Receipt Without Email": {
                    "summary": "email_preview_token को send_email: true के बिना भेजा गया",
                    "value": {
                      "email_preview_token": [
                        "A preview receipt is only valid when the email is sent."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "API कुंजी में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई KYC या KYB सत्र मौजूद नहीं है (हटाए गए सत्र भी `404` लौटाते हैं)।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "केवल बैकएंड सुविधाओं (AML, DATABASE_VALIDATION, IP_ANALYSIS) को लक्षित करने वाला पुनः सबमिशन 30-सेकंड की कूलडाउन विंडो के भीतर दोहराया गया था; तत्काल दोहराव परिणाम को नहीं बदल सकता। बैक ऑफ़ करें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Backend-only resubmit throttled": {
                    "value": {
                      "detail": "This session was already resubmitted for backend-only features within the last 30 seconds; repeating it cannot change the outcome. Wait before resubmitting again."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "ईमेल पूर्वावलोकन बदल गया या उसकी समय-सीमा समाप्त हो गई। पुष्टि करने से पहले एक नया पूर्वावलोकन जनरेट करें; कोई सत्र परिवर्तन या ईमेल डिलीवरी नहीं होती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Preview Changed": {
                    "summary": "रसीद अब मेल नहीं खाती, या 15 मिनट से अधिक पुरानी है",
                    "value": {
                      "detail": "This email preview changed or expired. Preview the message again before confirming."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-status/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"new_status\": \"Approved\",\n    \"comment\": \"All checks passed manual review\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_status(\n    \"11111111-2222-3333-4444-555555555555\",\n    new_status=\"Approved\",\n    comment=\"All checks passed manual review\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateStatus(\"11111111-2222-3333-4444-555555555555\", {\n  new_status: \"Approved\",\n  comment: \"All checks passed manual review\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateStatusParams{\n\tNewStatus: \"Approved\",\n\tComment:   didit.String(\"All checks passed manual review\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateStatus(\"11111111-2222-3333-4444-555555555555\", SessionsUpdateStatusParams.builder()\n        .newStatus(SessionsUpdateStatusParams.NewStatus.of(\"Approved\"))\n        .comment(\"All checks passed manual review\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateStatus('11111111-2222-3333-4444-555555555555', [\n    'new_status' => 'Approved',\n    'comment' => 'All checks passed manual review',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_status(\n  \"11111111-2222-3333-4444-555555555555\",\n  new_status: \"Approved\",\n  comment: \"All checks passed manual review\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateStatusAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsUpdateStatusParams\n{\n    NewStatus = \"Approved\",\n    Comment = \"All checks passed manual review\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/id-verification/": {
      "post": {
        "summary": "पहचान सत्यापन (दस्तावेज़ OCR + धोखाधड़ी जाँच)",
        "description": "एक ही कॉल में किसी पहचान दस्तावेज़ का OCR करें और दस्तावेज़ धोखाधड़ी की जांच करें: यह निकाले गए धारक फ़ील्ड, पार्स किया गया MRZ, एक `Approved`/`Declined`/`In Review` `status`, और पाए गए प्रत्येक मुद्दे की व्याख्या करने वाली `warnings` सूची लौटाता है। 220+ देशों और क्षेत्रों के 14,000+ दस्तावेज़ प्रकारों का समर्थन करता है।\n\n**यह कैसे काम करता है।** दस्तावेज़ की `front_image` (आवश्यक) और दो-तरफ़ा दस्तावेज़ों के लिए `back_image` भेजें। बिना क्रॉप की गई फ़ोटो अपलोड करें जिनमें दस्तावेज़ के चारों कोने दिखाई दे रहे हों; सेवा दस्तावेज़ का पता लगाती है, उसे संरेखित करती है और स्वयं क्रॉप करती है, इसलिए पहले से क्रॉप न करें। दस्तावेज़ को स्वचालित रूप से वर्गीकृत किया जाता है (आपको कभी भी देश या दस्तावेज़ प्रकार घोषित करने की आवश्यकता नहीं होती है), विज़ुअल ज़ोन को OCR से पढ़ा जाता है, और MRZ तथा किसी भी बारकोड को डिकोड किया जाता है। क्रॉस-चेक फिर तिथियों, संख्या प्रारूपों और MRZ चेक अंकों को मान्य करते हैं, और विज़ुअल ज़ोन की तुलना MRZ से करते हैं। `perform_document_liveness=true` के साथ, स्क्रीन रीप्ले, मुद्रित प्रतियों और पोर्ट्रेट हेरफेर के लिए छवियों की अतिरिक्त स्क्रीनिंग की जाती है।\n\n**निर्णय तर्क।** `status` `Approved` रहता है जब तक कि कम से कम एक चेतावनी अस्वीकृति का कारण न बने। धोखाधड़ी और गंभीर विफलता जोखिम हमेशा अस्वीकृत करते हैं: `DOCUMENT_EXPIRED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`, साथ ही निष्कर्षण विफलताएं (`NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`, `DOCUMENT_NUMBER_NOT_DETECTED`)। (`PORTRAIT_IMAGE_NOT_DETECTED`, `INVALID_DATE`, और `MRZ_NOT_DETECTED` वर्कफ़्लो सत्रों में मौजूद होते हैं लेकिन इस स्टैंडअलोन endpoint द्वारा कभी उत्पन्न नहीं किए जाते हैं। `COULD_NOT_DETECT_DOCUMENT_TYPE` यहाँ तब लौटाया जाता है जब फ्रंट इमेज उच्च विश्वास के साथ किसी ज्ञात आधिकारिक दस्तावेज़ डिज़ाइन से मेल नहीं खाती है, और यह अनुरोध को अस्वीकृत कर देता है।) तीन जोखिम समूह प्रति अनुरोध `invalid_mrz_action`, `inconsistent_data_action`, और `expiration_date_not_detected_action` (`DECLINE` या `NO_ACTION`) के माध्यम से कॉन्फ़िगर करने योग्य हैं। अन्य सभी चेतावनियाँ (जैसे `POSSIBLE_DUPLICATED_USER`) केवल जानकारी के लिए हैं और अपने आप कभी अस्वीकृत नहीं करती हैं। जब `perform_document_liveness=true` (डिफ़ॉल्ट) हो और जालसाज़ी जांच कोई उपयोगी स्कोर नहीं लौटाती है (प्रदाता विफल हो गया, गैर-200 उत्तर दिया, या `status=\"ERR\"` के साथ HTTP 200 उत्तर दिया), तो कॉल `Approved` के बजाय `status: \"In Review\"` और एक `DOCUMENT_LIVENESS_NOT_COMPUTED` चेतावनी (`log_type: \"warning\"`) के साथ `200` लौटाती है: जो जांच नहीं चली वह इस बात का सबूत नहीं है कि दस्तावेज़ असली है। यह एस्केलेशन कॉन्फ़िगर करने योग्य नहीं है और कभी भी `Declined` को ओवरराइड नहीं करता है; `perform_document_liveness=false` के साथ जांच छोड़ दी जाती है और स्थिति पहले की तरह शेष चेतावनियों का पालन करती है। एक दस्तावेज़ जिसे बिल्कुल भी संसाधित नहीं किया जा सकता है, `{\"error\": \"COULD_NOT_RECOGNIZE_DOCUMENT\"}` के साथ `400` लौटाता है; एक पढ़ने योग्य लेकिन समस्याग्रस्त दस्तावेज़ `status: \"Declined\"` के साथ `200` लौटाता है; केवल HTTP कोड ही नहीं, हमेशा `id_verification.status` और `id_verification.warnings` की जांच करें।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक ID Verification API क्रेडिट का उपभोग करता है (आपके प्लान क्रेडिट या टॉप-अप बैलेंस से भुगतान किया जाता है)। जब संगठन का बैलेंस कॉल को कवर नहीं कर सकता है, तो endpoint किसी भी छवि प्रसंस्करण से पहले अपर्याप्त-क्रेडिट त्रुटि के साथ `403` लौटाता है।\n\n**सत्र स्थायित्व (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` होता है, तो कॉल को API-प्रकार के सत्र के रूप में बनाए रखा जाता है: यह Business Console में दिखाई देता है, लौटाया गया `request_id` एक वास्तविक सत्र id होता है जिसे आप `GET /v3/session/{sessionId}/decision/` को पास कर सकते हैं, क्रॉप की गई दस्तावेज़/पोर्ट्रेट छवियां संग्रहीत की जाती हैं और अल्पकालिक मीडिया URL (`https://<media-host>/ocr/...`) के रूप में लौटाई जाती हैं, और आपके कॉन्फ़िगर किए गए webhook endpoints पर एक `status.updated` webhook भेजा जाता है। जब `false` होता है, तो कुछ भी संग्रहीत नहीं किया जाता है, `request_id` एक बार का सहसंबंध UUID होता है, और `portrait_image`/`front_image`/`back_image` इनलाइन बेस64-एन्कोडेड JPEG स्ट्रिंग्स के रूप में लौटाए जाते हैं।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रसंस्करण और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload (एक काल्पनिक \"Sandbox User\" संयुक्त राज्य पहचान पत्र) लौटाता है, कोई सत्र बनाए नहीं रखा जाता है, और कोई क्रेडिट उपभोग नहीं होता है।\n\n**प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं (`{\"detail\": \"You do not have permission to perform this action.\"}`); यह API कभी `401` नहीं लौटाता है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इससे अधिक होने पर `429` लौटता है।",
        "operationId": "post_v3id-verification",
        "x-didit-sdk": {
          "resource": "id_verification",
          "method": "verify",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "front_image"
                ],
                "properties": {
                  "front_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "पहचान दस्तावेज़ का सामने का भाग। स्वीकृत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `webp`, `pdf`। अधिकतम अपलोड आकार: **10 MB** (फ़ाइलें इससे बड़ी होने पर `400` के साथ अस्वीकृत कर दी जाती हैं)। OCR से पहले PDF को एक इमेज के रूप में रेंडर किया जाता है; एन्क्रिप्टेड PDF के लिए `front_image_password` आवश्यक है। इमेज स्वचालित रूप से ~0.5 MB तक कंप्रेस की जाती हैं और EXIF ओरिएंटेशन लागू किया जाता है। दस्तावेज़ के सभी चारों कोनों को दृश्यमान रखते हुए पूरा, अनक्रॉप किया गया कैप्चर अपलोड करें।"
                  },
                  "front_image_password": {
                    "type": "string",
                    "description": "`front_image` को डिक्रिप्ट करने का पासवर्ड जब यह एक एन्क्रिप्टेड PDF हो। बिना (या गलत) पासवर्ड के एन्क्रिप्टेड PDF भेजने पर `400` मिलता है।",
                    "writeOnly": true
                  },
                  "back_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "दस्तावेज़ का पिछला भाग — जब भी दस्तावेज़ में यह हो, इसे भेजें (कई पहचान पत्रों के पीछे MRZ या बारकोड होता है; इसे छोड़ने पर रिस्पॉन्स में MRZ और पिछले भाग के फ़ील्ड खाली रह जाते हैं — यह endpoint अनुपलब्ध-MRZ चेतावनी नहीं उठाता है)। `front_image` के समान प्रारूप और आकार सीमाएँ। छोड़ दिए जाने पर, रिस्पॉन्स में `back_image` और पिछले भाग के फ़ील्ड `null` होते हैं।"
                  },
                  "back_image_password": {
                    "type": "string",
                    "description": "`back_image` को डिक्रिप्ट करने का पासवर्ड जब यह एक एन्क्रिप्टेड PDF हो।",
                    "writeOnly": true
                  },
                  "perform_document_liveness": {
                    "type": "boolean",
                    "default": true,
                    "description": "प्रेज़ेंटेशन धोखाधड़ी के लिए दोनों छवियों को स्क्रीन करता है: स्क्रीन रीप्ले (`SCREEN_CAPTURE_DETECTED`), प्रिंट की गई प्रतियां (`PRINTED_COPY_DETECTED`), और पोर्ट्रेट हेरफेर (`PORTRAIT_MANIPULATION_DETECTED`)। इनमें से कोई भी मिलने पर इसे स्वतः अस्वीकृत कर दिया जाता है। डिफ़ॉल्ट रूप से सक्षम; धोखाधड़ी स्क्रीनिंग को छोड़ने और लेटेंसी कम करने के लिए `false` पर सेट करें। सक्षम होने पर और प्रदाता द्वारा कोई उपयोगी स्कोर न लौटाए जाने पर, रिस्पॉन्स `Approved` के बजाय `DOCUMENT_LIVENESS_NOT_COMPUTED` चेतावनी के साथ `In Review` होता है।",
                    "example": true
                  },
                  "minimum_age": {
                    "type": "integer",
                    "nullable": true,
                    "default": null,
                    "minimum": 1,
                    "maximum": 120,
                    "description": "स्वीकृत और मान्य (1–120) लेकिन इस endpoint द्वारा **वर्तमान में लागू नहीं किया गया** — यह इस फ़ील्ड से कभी भी `MINIMUM_AGE_NOT_MET` चेतावनी उत्पन्न नहीं करता है। लौटाए गए `date_of_birth`/`age` से आयु नियमों को लागू करें, या आयु प्रतिबंधों वाले सत्यापन सत्र वर्कफ़्लो का उपयोग करें।"
                  },
                  "expiration_date_not_detected_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब कोई समाप्ति तिथि नहीं पढ़ी जा सकी (`EXPIRATION_DATE_NOT_DETECTED`) तो क्या कार्रवाई करें। डिफ़ॉल्ट `NO_ACTION` क्योंकि कई पहचान दस्तावेज़ों पर कोई समाप्ति तिथि मुद्रित नहीं होती है। ध्यान दें: एक *पता लगाई गई और समाप्त हो चुकी* समाप्ति तिथि इस विकल्प की परवाह किए बिना हमेशा अस्वीकार (`DOCUMENT_EXPIRED`) करती है।"
                  },
                  "invalid_mrz_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "DECLINE",
                    "description": "निकाले गए MRZ के चेक-डिजिट सत्यापन में विफल होने (`MRZ_VALIDATION_FAILED`) पर क्या कार्रवाई की जाए। इस endpoint पर अनुपलब्ध MRZ कोई चेतावनी ट्रिगर नहीं करता है। केवल उन दस्तावेज़ों के लिए प्रासंगिक है जिनमें MRZ होता है। `REVIEW` इस endpoint पर समर्थित नहीं है और `400` लौटाता है।"
                  },
                  "inconsistent_data_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "DECLINE",
                    "description": "जब निकाला गया डेटा आंतरिक रूप से असंगत हो तो क्या कार्रवाई करें: `DATA_INCONSISTENT`, `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` (दृश्य क्षेत्र MRZ से मेल नहीं खाता), या `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS`।"
                  },
                  "critical_field_occlusion_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "DECLINE",
                    "description": "जब कैप्चर पर कोई महत्वपूर्ण मुद्रित फ़ील्ड भौतिक रूप से ढका हुआ था (`CRITICAL_FIELD_OCCLUSION_DETECTED`) - एक पहचान संख्या, एक नाम, जन्म तिथि, या समाप्ति तिथि, तो क्या कार्रवाई करें। इस endpoint के अन्य दस्तावेज़-अखंडता जोखिमों की तरह, डिफ़ॉल्ट रूप से अस्वीकृत करता है: वे नंबर ढके होना जिनसे रिपोर्ट का मिलान किया जाता है, एक जानकारी छिपाए गए दस्तावेज़ जैसा दिखता है। ढके हुए फ़ील्ड के लिए पढ़े गए मान को दोनों ही स्थितियों में निष्कर्षण से हटा दिया जाता है, इसलिए संबंधित `*_NOT_DETECTED` चेतावनी आमतौर पर इसके साथ आती है। इस endpoint पर `REVIEW` समर्थित नहीं है और यह `400` लौटाता है।"
                  },
                  "document_or_personal_number_format_mismatch_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब कोई संख्या उस दस्तावेज़ प्रकार के लिए उसके जारीकर्ता प्राधिकरण द्वारा उपयोग किए जाने वाले प्रारूप से मेल नहीं खाती है (`DOCUMENT_NUMBER_FORMAT_MISMATCH`, `PERSONAL_NUMBER_FORMAT_MISMATCH`) तो क्या कार्रवाई करें। डिफ़ॉल्ट `NO_ACTION`, जो स्थिति को बदले बिना चेतावनी की रिपोर्ट करता है। इस endpoint पर `REVIEW` समर्थित नहीं है और यह `400` लौटाता है।"
                  },
                  "preferred_characters": {
                    "type": "string",
                    "enum": [
                      "latin",
                      "non_latin"
                    ],
                    "default": "latin",
                    "description": "उन दस्तावेज़ों पर नाम/पते फ़ील्ड के लिए पसंदीदा लिपि जो लैटिन और गैर-लैटिन दोनों पाठ (अरबी, सिरिलिक, CJK, …) प्रिंट करते हैं। `latin` लिप्यंतरित/लैटिन मान लौटाता है; `non_latin` मूल लिपि को प्राथमिकता देता है।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "`true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए `request_id` का उपयोग करके `GET /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने योग्य, `status.updated` webhook के माध्यम से घोषित, और दस्तावेज़ छवियों को मीडिया URL के रूप में लौटाया जाता है। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है, `request_id` एक अस्थायी UUID होता है, और छवियां इनलाइन base64 JPEG स्ट्रिंग्स के रूप में लौटाई जाती हैं।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर करने के लिए करें।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड (उदा. `metadata={\"flow\":\"onboarding\"}`) के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "onboarding"
                    }
                  }
                }
              },
              "example": {
                "front_image": "(binary JPEG/PNG/PDF of the document front)",
                "back_image": "(binary JPEG/PNG/PDF of the document back)",
                "perform_document_liveness": true,
                "save_api_request": true,
                "vendor_data": "user-123",
                "metadata": {
                  "flow": "onboarding"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "दस्तावेज़ संसाधित। `id_verification.status` `Approved`, `Declined`, या `In Review` है; हर संसूचित समस्या को `id_verification.warnings` में सूचीबद्ध किया गया है। `In Review` तब लौटाया जाता है जब अनुरोधित दस्तावेज़-लाइवनेस जांच से कोई उपयोगी परिणाम प्राप्त नहीं हुआ (`DOCUMENT_LIVENESS_NOT_COMPUTED`)। समस्याग्रस्त दस्तावेज़ भी `status: \"Declined\"` के साथ `200` लौटाता है — केवल HTTP कोड ही नहीं, बल्कि बॉडी का भी निरीक्षण करें। जब `save_api_request=true` हो, तो `request_id` स्थायी सत्र id होती है और छवि फ़ील्ड अल्पकालिक मीडिया URL होते हैं; `save_api_request=false` के साथ वे इनलाइन base64 JPEG स्ट्रिंग होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "दो तरफा पहचान पत्र साफ़ पढ़ा गया (सहेजा गया — छवियाँ मीडिया URL के रूप में)",
                    "value": {
                      "request_id": "11d219ed-d59c-4b1d-8d65-9b933f12d5b8",
                      "id_verification": {
                        "status": "Approved",
                        "document_type": "Identity Card",
                        "document_subtype": "ID_CARD_GENERIC",
                        "document_number": "CBX164224",
                        "personal_number": "20446581H",
                        "portrait_image": "https://<media-host>/ocr/11d219ed-d59c-4b1d-8d65-9b933f12d5b8-portrait_image-8c2f.jpg?signature=...",
                        "front_image": "https://<media-host>/ocr/11d219ed-d59c-4b1d-8d65-9b933f12d5b8-front_image-4a1e.jpg?signature=...",
                        "back_image": "https://<media-host>/ocr/11d219ed-d59c-4b1d-8d65-9b933f12d5b8-back_image-77b0.jpg?signature=...",
                        "front_image_camera_front": null,
                        "back_image_camera_front": null,
                        "front_image_camera_front_face_match_score": null,
                        "back_image_camera_front_face_match_score": null,
                        "front_image_quality_score": {
                          "focus_score": 78.0,
                          "brightness_score": 83.2,
                          "brightness_issue": "ok",
                          "is_document_fully_visible": true,
                          "resolution_score": 40.7,
                          "overall_score": 70.2
                        },
                        "back_image_quality_score": {
                          "focus_score": 100.0,
                          "brightness_score": 95.6,
                          "brightness_issue": "ok",
                          "is_document_fully_visible": true,
                          "resolution_score": 43.0,
                          "overall_score": 84.4
                        },
                        "date_of_birth": "1980-01-13",
                        "age": 46,
                        "expiration_date": "2032-03-31",
                        "date_of_issue": "2022-03-31",
                        "issuing_state": "ESP",
                        "issuing_state_name": "Spain",
                        "first_name": "Julio Francisco",
                        "last_name": "Fores Sena",
                        "full_name": "Julio Francisco Fores Sena",
                        "gender": "M",
                        "address": "Brda. Urb. El Cardonal 0052 52 Po3 B,Taco,San Cristobal De La Laguna,Santa Cruz De Tenerife",
                        "formatted_address": "Av. el Cardonal, 52, b, 38108 La Laguna, Santa Cruz de Tenerife, Spain",
                        "place_of_birth": "Valencia, Valencia",
                        "marital_status": "UNKNOWN",
                        "nationality": "ESP",
                        "extra_fields": {
                          "first_surname": "Fores",
                          "second_surname": "Sena"
                        },
                        "mrz": {
                          "surname": "FORES SENA",
                          "name": "JULIO FRANCISCO",
                          "country": "ESP",
                          "nationality": "ESP",
                          "birth_date": "800113",
                          "expiry_date": "320331",
                          "sex": "M",
                          "document_type": "ID",
                          "document_number": "CBX164224",
                          "optional_data": "20446581H",
                          "optional_data_2": "",
                          "birth_date_hash": "9",
                          "expiry_date_hash": "8",
                          "document_number_hash": "3",
                          "final_hash": "3",
                          "personal_number": "20446581H",
                          "warnings": [],
                          "errors": [],
                          "mrz_type": "TD1",
                          "mrz_string": "IDESPCBX164224320446581H<<<<<<\n8001139M3203318ESP<<<<<<<<<<<3\nFORES<SENA<<JULIO<FRANCISCO<<<",
                          "mrz_key": "CBX164224380011393203318"
                        },
                        "parsed_address": {
                          "street_1": "Avenida el Cardonal 52",
                          "street_2": "b",
                          "city": "La Laguna",
                          "region": "Canarias",
                          "country": "ES",
                          "postal_code": "38108",
                          "address_type": "Avenida",
                          "formatted_address": "Av. el Cardonal, 52, b, 38108 La Laguna, Santa Cruz de Tenerife, Spain",
                          "raw_results": {
                            "address_components": [
                              {
                                "long_name": "b",
                                "short_name": "b",
                                "types": [
                                  "subpremise"
                                ]
                              },
                              {
                                "long_name": "52",
                                "short_name": "52",
                                "types": [
                                  "street_number"
                                ]
                              },
                              {
                                "long_name": "Avenida el Cardonal",
                                "short_name": "Av. el Cardonal",
                                "types": [
                                  "route"
                                ]
                              },
                              {
                                "long_name": "La Laguna",
                                "short_name": "La Laguna",
                                "types": [
                                  "locality",
                                  "political"
                                ]
                              },
                              {
                                "long_name": "Spain",
                                "short_name": "ES",
                                "types": [
                                  "country",
                                  "political"
                                ]
                              },
                              {
                                "long_name": "38108",
                                "short_name": "38108",
                                "types": [
                                  "postal_code"
                                ]
                              }
                            ],
                            "formatted_address": "Av. el Cardonal, 52, b, 38108 La Laguna, Santa Cruz de Tenerife, Spain",
                            "geometry": {
                              "location": {
                                "lat": 28.4501161,
                                "lng": -16.3004407
                              },
                              "location_type": "ROOFTOP"
                            },
                            "types": [
                              "street_address",
                              "subpremise"
                            ]
                          },
                          "document_location": {
                            "latitude": 28.4501161,
                            "longitude": -16.3004407
                          },
                          "label": "Spain Identity Card Address",
                          "is_verified": true,
                          "category": "Residential"
                        },
                        "warnings": [],
                        "barcodes": []
                      },
                      "vendor_data": "user-123",
                      "metadata": {
                        "flow": "onboarding"
                      },
                      "created_at": "2026-06-12T02:21:56.013573+00:00"
                    }
                  },
                  "Declined - expired document": {
                    "summary": "समय-सीमा समाप्त ID कार्ड का केवल सामने का अपलोड",
                    "value": {
                      "request_id": "f61681b8-9422-4378-ac3e-04c6a247fb45",
                      "id_verification": {
                        "status": "Declined",
                        "document_type": "Identity Card",
                        "document_subtype": "ID_CARD_GENERIC",
                        "document_number": "BNK123072",
                        "personal_number": "21771255F",
                        "portrait_image": "https://<media-host>/ocr/f61681b8-9422-4378-ac3e-04c6a247fb45-portrait_image-1d9a.jpg?signature=...",
                        "front_image": "https://<media-host>/ocr/f61681b8-9422-4378-ac3e-04c6a247fb45-front_image-5c2b.jpg?signature=...",
                        "back_image": null,
                        "front_image_camera_front": null,
                        "back_image_camera_front": null,
                        "front_image_camera_front_face_match_score": null,
                        "back_image_camera_front_face_match_score": null,
                        "front_image_quality_score": {
                          "focus_score": 100.0,
                          "brightness_score": 95.7,
                          "brightness_issue": "ok",
                          "is_document_fully_visible": true,
                          "resolution_score": 22.2,
                          "overall_score": 79.3
                        },
                        "back_image_quality_score": null,
                        "date_of_birth": "1997-01-30",
                        "age": 29,
                        "expiration_date": "2025-11-26",
                        "date_of_issue": null,
                        "issuing_state": "ESP",
                        "issuing_state_name": "Spain",
                        "first_name": "Lucia",
                        "last_name": "Marin Castro",
                        "full_name": "Lucia Marin Castro",
                        "gender": "F",
                        "address": null,
                        "formatted_address": null,
                        "place_of_birth": null,
                        "marital_status": "UNKNOWN",
                        "nationality": "ESP",
                        "extra_fields": {
                          "first_surname": "Marin",
                          "second_surname": "Castro"
                        },
                        "mrz": {},
                        "parsed_address": null,
                        "warnings": [
                          {
                            "risk": "DOCUMENT_EXPIRED",
                            "feature": "ID_VERIFICATION",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Document expired",
                            "long_description": "The document's expiration date has passed, rendering it no longer valid for use."
                          }
                        ],
                        "barcodes": []
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:25:48.117204+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "id_verification": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "`Approved` जब कोई चेतावनी अस्वीकृति में नहीं बदलती है और अनुरोधित दस्तावेज़-लाइवनेस जांच ने एक उपयोगी परिणाम दिया है; `In Review` जब उस अनुरोधित जांच ने कोई उपयोगी परिणाम नहीं दिया (`DOCUMENT_LIVENESS_NOT_COMPUTED`); `Declined` जब कोई चेतावनी अस्वीकृति में बदल जाती है — `warnings` सूची बताती है कि ऐसा क्यों है।"
                        },
                        "document_type": {
                          "type": "string",
                          "nullable": true,
                          "description": "पहचाने गए दस्तावेज़ प्रकार का प्रदर्शित नाम: `Identity Card`, `Passport`, `Driver's License`, `Residence Permit`, `Health Insurance Card`, या `Tax Card`। जब दस्तावेज़ को वर्गीकृत नहीं किया जा सका तो `null`।",
                          "example": "Identity Card"
                        },
                        "document_subtype": {
                          "type": "string",
                          "nullable": true,
                          "description": "उपलब्ध होने पर अधिक विस्तृत उपप्रकार (उदा. `ID_CARD_GENERIC`, `EPASSPORT`)।",
                          "example": "ID_CARD_GENERIC"
                        },
                        "document_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "CBX164224"
                        },
                        "personal_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "कुछ दस्तावेज़ों पर मुद्रित द्वितीयक व्यक्तिगत/राष्ट्रीय संख्या।",
                          "example": "20446581H"
                        },
                        "portrait_image": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ से क्रॉप की गई पोर्ट्रेट फ़ोटो। `save_api_request=true` (डिफ़ॉल्ट) होने पर एक अल्पकालिक मीडिया URL (`https://<media-host>/ocr/...`); `save_api_request=false` होने पर एक इनलाइन base64-एन्कोडेड JPEG स्ट्रिंग। कोई पोर्ट्रेट न मिलने पर `null`।"
                        },
                        "front_image": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ के सामने वाले भाग का संरेखित क्रॉप। सहेजे जाने पर मीडिया URL, अन्यथा इनलाइन base64 JPEG।"
                        },
                        "back_image": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ के पिछले भाग का संरेखित क्रॉप। `null` जब कोई `back_image` अपलोड नहीं किया गया था।"
                        },
                        "front_image_camera_front": {
                          "type": "string",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null` (केवल कैमरा-कैप्चर सत्यापन सत्रों में पॉप्युलेट होता है)।"
                        },
                        "back_image_camera_front": {
                          "type": "string",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "front_image_camera_front_face_match_score": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "back_image_camera_front_face_match_score": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "front_image_quality_score": {
                          "type": "object",
                          "nullable": true,
                          "description": "अपलोड की गई इमेज के लिए कैप्चर-गुणवत्ता डायग्नोस्टिक्स (जब साइड प्रदान नहीं किया गया था या स्कोरिंग विफल रही तो `null`)। सभी स्कोर 0–100 हैं।",
                          "properties": {
                            "focus_score": {
                              "type": "number",
                              "format": "float",
                              "description": "दस्तावेज़ क्रॉप का पैनापन (तीक्ष्णता) (अधिक मान अधिक पैना दर्शाता है)।"
                            },
                            "brightness_score": {
                              "type": "number",
                              "format": "float",
                              "description": "एक्सपोज़र गुणवत्ता (जितना अधिक हो उतना बेहतर)।"
                            },
                            "brightness_issue": {
                              "type": "string",
                              "nullable": true,
                              "description": "जब एक्सपोज़र ठीक हो तब `ok`, अन्यथा पहचानी गई समस्या (उदा. बहुत गहरा / बहुत चमकीला)।"
                            },
                            "is_document_fully_visible": {
                              "type": "boolean",
                              "nullable": true,
                              "description": "क्या दस्तावेज़ के चारों कोने फ़्रेम के अंदर हैं।"
                            },
                            "resolution_score": {
                              "type": "number",
                              "format": "float",
                              "description": "दस्तावेज़ क्षेत्र का प्रभावी रिज़ॉल्यूशन।"
                            },
                            "overall_score": {
                              "type": "number",
                              "format": "float",
                              "description": "समग्र गुणवत्ता स्कोर।"
                            }
                          }
                        },
                        "back_image_quality_score": {
                          "type": "object",
                          "nullable": true,
                          "description": "अपलोड की गई इमेज के लिए कैप्चर-गुणवत्ता डायग्नोस्टिक्स (जब साइड प्रदान नहीं किया गया था या स्कोरिंग विफल रही तो `null`)। सभी स्कोर 0–100 हैं।",
                          "properties": {
                            "focus_score": {
                              "type": "number",
                              "format": "float",
                              "description": "दस्तावेज़ क्रॉप का पैनापन (तीक्ष्णता) (अधिक मान अधिक पैना दर्शाता है)।"
                            },
                            "brightness_score": {
                              "type": "number",
                              "format": "float",
                              "description": "एक्सपोज़र गुणवत्ता (जितना अधिक हो उतना बेहतर)।"
                            },
                            "brightness_issue": {
                              "type": "string",
                              "nullable": true,
                              "description": "जब एक्सपोज़र ठीक हो तब `ok`, अन्यथा पहचानी गई समस्या (उदा. बहुत गहरा / बहुत चमकीला)।"
                            },
                            "is_document_fully_visible": {
                              "type": "boolean",
                              "nullable": true,
                              "description": "क्या दस्तावेज़ के चारों कोने फ़्रेम के अंदर हैं।"
                            },
                            "resolution_score": {
                              "type": "number",
                              "format": "float",
                              "description": "दस्तावेज़ क्षेत्र का प्रभावी रिज़ॉल्यूशन।"
                            },
                            "overall_score": {
                              "type": "number",
                              "format": "float",
                              "description": "समग्र गुणवत्ता स्कोर।"
                            }
                          }
                        },
                        "date_of_birth": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "1980-01-13"
                        },
                        "age": {
                          "type": "integer",
                          "nullable": true,
                          "description": "धारक की आयु वर्षों में, जिसकी गणना `date_of_birth` से की गई है।",
                          "example": 46
                        },
                        "expiration_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "2032-03-31"
                        },
                        "date_of_issue": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "2022-03-31"
                        },
                        "issuing_state": {
                          "type": "string",
                          "nullable": true,
                          "description": "जारीकर्ता देश (ISO 3166-1 alpha-3)।",
                          "example": "ESP"
                        },
                        "issuing_state_name": {
                          "type": "string",
                          "nullable": true,
                          "example": "Spain"
                        },
                        "first_name": {
                          "type": "string",
                          "nullable": true,
                          "example": "Julio Francisco"
                        },
                        "last_name": {
                          "type": "string",
                          "nullable": true,
                          "example": "Fores Sena"
                        },
                        "full_name": {
                          "type": "string",
                          "nullable": true,
                          "example": "Julio Francisco Fores Sena"
                        },
                        "gender": {
                          "type": "string",
                          "nullable": true,
                          "description": "प्रिंट/डिटेक्ट न होने पर `M`, `F`, या `null`।",
                          "example": "M"
                        },
                        "address": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ पर ठीक वैसा ही मुद्रित पता।"
                        },
                        "formatted_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "`address` का जियोकोडेड, सामान्यीकृत संस्करण।"
                        },
                        "place_of_birth": {
                          "type": "string",
                          "nullable": true,
                          "example": "Valencia, Valencia"
                        },
                        "marital_status": {
                          "type": "string",
                          "nullable": true,
                          "description": "`UNKNOWN`, जब तक कि दस्तावेज़ पर वैवाहिक स्थिति मुद्रित न हो।",
                          "example": "UNKNOWN"
                        },
                        "nationality": {
                          "type": "string",
                          "nullable": true,
                          "description": "धारक की राष्ट्रीयता (ISO 3166-1 alpha-3)।",
                          "example": "ESP"
                        },
                        "extra_fields": {
                          "type": "object",
                          "nullable": true,
                          "additionalProperties": true,
                          "description": "दस्तावेज़-विशिष्ट अतिरिक्त विवरण जिनका कोई समर्पित कॉलम नहीं है (उदाहरण के लिए स्पैनिश ID पर `first_surname`/`second_surname`, ड्राइविंग लाइसेंस पर लाइसेंस श्रेणियाँ)।"
                        },
                        "mrz": {
                          "type": "object",
                          "description": "पार्स किया गया मशीन-रीडेबल ज़ोन। जब दस्तावेज़ में कोई MRZ न हो या उसे पढ़ा न जा सके, तो एक **रिक्त ऑब्जेक्ट** (`{}`) — उस स्थिति में `warnings` सूची भी देखें। MRZ के अंदर की तिथियाँ रॉ `YYMMDD` फ़ॉर्मेट का उपयोग करती हैं।",
                          "properties": {
                            "surname": {
                              "type": "string",
                              "example": "FORES SENA"
                            },
                            "name": {
                              "type": "string",
                              "example": "JULIO FRANCISCO"
                            },
                            "country": {
                              "type": "string",
                              "description": "जारीकर्ता देश (ISO 3166-1 alpha-3)।",
                              "example": "ESP"
                            },
                            "nationality": {
                              "type": "string",
                              "description": "धारक की राष्ट्रीयता (ISO 3166-1 alpha-3)।",
                              "example": "ESP"
                            },
                            "birth_date": {
                              "type": "string",
                              "description": "MRZ से प्राप्त रॉ जन्म तिथि (`YYMMDD`)।",
                              "example": "800113"
                            },
                            "expiry_date": {
                              "type": "string",
                              "description": "MRZ से प्राप्त रॉ समाप्ति तिथि (`YYMMDD`)।",
                              "example": "320331"
                            },
                            "sex": {
                              "type": "string",
                              "example": "M"
                            },
                            "document_type": {
                              "type": "string",
                              "description": "MRZ दस्तावेज़-प्रकार कोड (उदा. `ID`, `P`)।",
                              "example": "ID"
                            },
                            "document_number": {
                              "type": "string",
                              "example": "CBX164224"
                            },
                            "optional_data": {
                              "type": "string",
                              "nullable": true,
                              "example": "20446581H"
                            },
                            "optional_data_2": {
                              "type": "string",
                              "nullable": true,
                              "example": ""
                            },
                            "birth_date_hash": {
                              "type": "string",
                              "description": "जन्म तिथि के लिए MRZ चेक डिजिट।",
                              "example": "9"
                            },
                            "expiry_date_hash": {
                              "type": "string",
                              "description": "समाप्ति तिथि के लिए MRZ चेक डिजिट।",
                              "example": "8"
                            },
                            "document_number_hash": {
                              "type": "string",
                              "description": "दस्तावेज़ संख्या के लिए MRZ चेक डिजिट।",
                              "example": "3"
                            },
                            "final_hash": {
                              "type": "string",
                              "description": "कंपोजिट MRZ चेक डिजिट।",
                              "example": "3"
                            },
                            "personal_number": {
                              "type": "string",
                              "nullable": true,
                              "example": "20446581H"
                            },
                            "warnings": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "गैर-घातक MRZ पार्सिंग चेतावनियाँ।"
                            },
                            "errors": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "MRZ चेक-डिजिट/पार्सिंग त्रुटियाँ। गैर-रिक्त त्रुटियाँ `MRZ_VALIDATION_FAILED` चेतावनी के रूप में सामने आती हैं।"
                            },
                            "mrz_type": {
                              "type": "string",
                              "description": "MRZ लेआउट: `TD1` (पहचान पत्र, 3 पंक्तियाँ), `TD2`, या `TD3` (पासपोर्ट, 2 पंक्तियाँ)।",
                              "example": "TD1"
                            },
                            "mrz_string": {
                              "type": "string",
                              "description": "पढ़ा गया रॉ MRZ टेक्स्ट, `\\n` द्वारा अलग की गई पंक्तियाँ।"
                            },
                            "mrz_key": {
                              "type": "string",
                              "description": "क्रॉस-चेक के लिए उपयोग की जाने वाली कंपोजिट कुंजी (दस्तावेज़ संख्या + चेक डिजिट)।"
                            }
                          }
                        },
                        "parsed_address": {
                          "type": "object",
                          "nullable": true,
                          "description": "`address` का संरचित, जियोकोडेड ब्रेकडाउन। जब दस्तावेज़ में कोई पता नहीं होता है या इसे पार्स नहीं किया जा सका, तब `null`।",
                          "properties": {
                            "street_1": {
                              "type": "string",
                              "nullable": true,
                              "example": "Avenida el Cardonal 52"
                            },
                            "street_2": {
                              "type": "string",
                              "nullable": true,
                              "example": "b"
                            },
                            "city": {
                              "type": "string",
                              "nullable": true,
                              "example": "La Laguna"
                            },
                            "region": {
                              "type": "string",
                              "nullable": true,
                              "example": "Canarias"
                            },
                            "country": {
                              "type": "string",
                              "nullable": true,
                              "description": "ISO 3166-1 alpha-2 देश कोड।",
                              "example": "ES"
                            },
                            "postal_code": {
                              "type": "string",
                              "nullable": true,
                              "example": "38108"
                            },
                            "address_type": {
                              "type": "string",
                              "nullable": true,
                              "example": "Avenida"
                            },
                            "formatted_address": {
                              "type": "string",
                              "nullable": true,
                              "description": "कैनोनिकल जियोकोडेड पता स्ट्रिंग।",
                              "example": "Av. el Cardonal, 52, b, 38108 La Laguna, Santa Cruz de Tenerife, Spain"
                            },
                            "raw_results": {
                              "type": "object",
                              "additionalProperties": true,
                              "description": "उन्नत उपभोक्ताओं के लिए रॉ जियोकोडिंग payload (`address_components`, `geometry.location`, `place_id`, …)।"
                            },
                            "document_location": {
                              "type": "object",
                              "nullable": true,
                              "properties": {
                                "latitude": {
                                  "type": "number"
                                },
                                "longitude": {
                                  "type": "number"
                                }
                              },
                              "description": "दस्तावेज़ के पते के जियोकोडेड निर्देशांक।"
                            },
                            "label": {
                              "type": "string",
                              "nullable": true,
                              "description": "पता किस दस्तावेज़ फ़ील्ड से पढ़ा गया था।",
                              "example": "Spain Identity Card Address"
                            },
                            "is_verified": {
                              "type": "boolean",
                              "description": "क्या जियोकोडिंग ने पुष्टि की कि पता मौजूद है।"
                            },
                            "category": {
                              "type": "string",
                              "nullable": true,
                              "description": "पते की श्रेणी (उदा. `Residential`, `Commercial`)।",
                              "example": "Residential"
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "description": "बिना किसी जोखिम वाली स्वीकृति पर खाली। प्रत्येक प्रविष्टि एक पहचाने गए जोखिम की व्याख्या करती है; `log_type: \"error\"` वाली प्रविष्टियाँ `status` को `Declined` पर सेट करती हैं, और `DOCUMENT_LIVENESS_NOT_COMPUTED` (`log_type: \"warning\"`) इसे `In Review` पर सेट करता है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "description": "मशीन-पठनीय जोखिम कोड। हमेशा अस्वीकार किए जाने वाले जोखिम: `DOCUMENT_EXPIRED`, `MINIMUM_AGE_NOT_MET`, `PORTRAIT_IMAGE_NOT_DETECTED`, `SCREEN_CAPTURE_DETECTED`, `PRINTED_COPY_DETECTED`, `PORTRAIT_MANIPULATION_DETECTED`, `PUBLIC_DOCUMENT_IMAGE_DETECTED`, `INVALID_DATE`, `COULD_NOT_RECOGNIZE_DOCUMENT` (केवल 400, कभी चेतावनी नहीं), `DOCUMENT_NUMBER_NOT_DETECTED`, `COULD_NOT_DETECT_DOCUMENT_TYPE`, `NAME_NOT_DETECTED`, `DATE_OF_BIRTH_NOT_DETECTED`। अनुरोध विकल्पों द्वारा नियंत्रित: `MRZ_NOT_DETECTED` / `MRZ_VALIDATION_FAILED` (`invalid_mrz_action`), `DATA_INCONSISTENT` / `MRZ_AND_DATA_EXTRACTED_FROM_OCR_NOT_SAME` / `DOCUMENT_NAME_DIFFERENT_FROM_OTHER_APPROVED_DOCUMENTS` (`inconsistent_data_action`), `EXPIRATION_DATE_NOT_DETECTED` (`expiration_date_not_detected_action`)। अन्य जोखिम (उदा. `POSSIBLE_DUPLICATED_USER`) सूचनात्मक हैं। `DOCUMENT_LIVENESS_NOT_COMPUTED` तब उत्पन्न होता है जब `perform_document_liveness=true` हो लेकिन जालसाज़ी जांच से कोई उपयोगी स्कोर न मिला हो; यह `status` को `In Review` पर सेट करता है। `COULD_NOT_DETECT_DOCUMENT_TYPE` तब भी लौटाया जाता है जब दस्तावेज़ का अग्र भाग उच्च विश्वास के साथ किसी ज्ञात आधिकारिक दस्तावेज़ डिज़ाइन से मेल नहीं खाता, उदाहरण के लिए कोई संपादित या कंप्यूटर जनित दस्तावेज़, या ऐसा डिज़ाइन जो अभी समर्थित नहीं है।",
                                "example": "DOCUMENT_EXPIRED"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "ID_VERIFICATION"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `ID_VERIFICATION`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "कुछ जोखिमों के लिए अतिरिक्त संदर्भ (उदा. `POSSIBLE_DUPLICATED_USER` में `duplicated_session_id` शामिल है); अधिकांश के लिए `null`।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "warning",
                                  "information"
                                ],
                                "description": "गंभीरता। `error` चेतावनियाँ `status` को `Declined` में बदल देती हैं; `warning` (केवल `DOCUMENT_LIVENESS_NOT_COMPUTED`, जब अनुरोधित जालसाजी जाँच से कोई उपयोगी स्कोर नहीं मिला) `status` को `In Review` में बदल देती है; `information` प्रविष्टियाँ केवल सलाहकारी होती हैं और स्थिति को कभी नहीं बदलती हैं।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        },
                        "barcodes": {
                          "type": "array",
                          "description": "दस्तावेज़ से डिकोड किए गए बारकोड (PDF417, QR, …)। जब दस्तावेज़ में कोई नहीं होता है या कोई भी पढ़ा नहीं जा सकता है, तो खाली होता है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "description": "बारकोड प्रकार (उदा. `PDF417`, `QR_CODE`, `UNKNOWN`)।"
                              },
                              "position": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "छवि में बारकोड का स्थान, जब उपलब्ध हो।"
                              },
                              "data": {
                                "type": "string",
                                "description": "डिकोड किया गया payload।"
                              },
                              "data_raw": {
                                "type": "string",
                                "description": "रॉ (डिकोड न किया गया) payload, जब भिन्न हो।"
                              },
                              "side": {
                                "type": "string",
                                "nullable": true,
                                "description": "`front` या `back`।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC)।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन या प्रोसेसिंग त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF का मानक एनवेलप (प्रत्येक समस्याग्रस्त फ़ील्ड के लिए संदेशों का एक एरे) लौटाती हैं। एन्क्रिप्टेड-PDF समस्याएं `{\"detail\": ...}` लौटाती हैं। ऐसी दस्तावेज़ इमेज जिसमें किसी दस्तावेज़ की बिल्कुल भी पहचान नहीं की जा सकती है, वह `{\"error\": \"COULD_NOT_RECOGNIZE_DOCUMENT\"}` लौटाती है। PDF अपलोड अतिरिक्त रूप से \"The submitted PDF file is corrupted or invalid.\" या बिना किसी पेज वाली त्रुटि के साथ विफल हो सकते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing front image": {
                    "summary": "फ़ॉर्म डेटा में `front_image` शामिल नहीं है",
                    "value": {
                      "front_image": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp/pdf से बाहर है",
                    "value": {
                      "front_image": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, webp, pdf."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 10 MB की सीमा से अधिक है",
                    "value": {
                      "front_image": [
                        "File size should not exceed 10 MB"
                      ]
                    }
                  },
                  "Invalid option value": {
                    "summary": "विकल्प केवल DECLINE या NO_ACTION स्वीकार करते हैं",
                    "value": {
                      "invalid_mrz_action": [
                        "\"REVIEW\" is not a valid choice."
                      ]
                    }
                  },
                  "Encrypted PDF": {
                    "summary": "आवश्यक पासवर्ड के बिना PDF अपलोड की गई",
                    "value": {
                      "detail": "The PDF is encrypted. Please upload a decrypted PDF or a photo instead."
                    }
                  },
                  "Wrong PDF password": {
                    "summary": "`front_image_password` / `back_image_password` PDF को डिक्रिप्ट नहीं करता है",
                    "value": {
                      "detail": "The PDF password is incorrect. Please provide the correct password."
                    }
                  },
                  "Document not recognized": {
                    "summary": "छवि में किसी पहचान दस्तावेज़ का पता नहीं लगाया जा सका",
                    "value": {
                      "error": "COULD_NOT_RECOGNIZE_DOCUMENT"
                    }
                  },
                  "PDF conversion failure": {
                    "summary": "अपलोड की गई PDF को छवि में परिवर्तित नहीं किया जा सका",
                    "value": {
                      "error": "Failed to convert front image PDF."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/DocumentProcessingBusy"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/id-verification/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'front_image=@./id_front.jpg' \\\n  -F 'back_image=@./id_back.jpg' \\\n  -F 'perform_document_liveness=true' \\\n  -F 'save_api_request=true' \\\n  -F 'vendor_data=user-123'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_verification.verify(\n    front_image=open(\"front_image.jpg\", \"rb\"),\n    back_image=open(\"back_image.jpg\", \"rb\"),\n    perform_document_liveness=True,\n    save_api_request=True,\n    vendor_data=\"user-123\",\n    metadata={\"flow\": \"onboarding\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idVerification.verify({\n  front_image: await fileFromPath(\"front_image.jpg\"),\n  back_image: await fileFromPath(\"back_image.jpg\"),\n  perform_document_liveness: true,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"onboarding\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDVerification.Verify(ctx, didit.IDVerificationVerifyParams{\n\tFrontImage:              didit.FileFromPath(\"front_image.jpg\"),\n\tBackImage:               didit.Some(didit.FileFromPath(\"back_image.jpg\")),\n\tPerformDocumentLiveness: didit.Bool(true),\n\tSaveAPIRequest:          didit.Bool(true),\n\tVendorData:              didit.String(\"user-123\"),\n\tMetadata:                didit.Some(map[string]any{\"flow\": \"onboarding\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.IdVerificationVerifyParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idVerification().verify(IdVerificationVerifyParams.builder()\n        .frontImage(Path.of(\"front_image.jpg\"))\n        .backImage(Path.of(\"back_image.jpg\"))\n        .performDocumentLiveness(true)\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .metadata(Map.of(\"flow\", \"onboarding\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idVerification->verify([\n    'front_image' => File::fromPath('front_image.jpg'),\n    'back_image' => File::fromPath('back_image.jpg'),\n    'perform_document_liveness' => true,\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n    'metadata' => ['flow' => 'onboarding'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_verification.verify(\n  front_image: Pathname(\"front_image.jpg\"),\n  back_image: Pathname(\"back_image.jpg\"),\n  perform_document_liveness: true,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"onboarding\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdVerification.VerifyAsync(new IdVerificationVerifyParams\n{\n    FrontImage = FileUpload.FromPath(\"front_image.jpg\"),\n    BackImage = FileUpload.FromPath(\"back_image.jpg\"),\n    PerformDocumentLiveness = true,\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n    Metadata = new Dictionary<string, object> { [\"flow\"] = \"onboarding\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/face-match/": {
      "post": {
        "summary": "चेहरा मिलान",
        "description": "दो चेहरे की छवियों की तुलना (1:1) करें और एक समानता `score` (0–100) के साथ एक `Approved`/`Declined` `status` प्राप्त करें।\n\n**यह कैसे काम करता है।** दोनों छवियों को एक बायोमेट्रिक मॉडल द्वारा डिकोड और विश्लेषित किया जाता है (यदि कैप्चर तिरछे या उल्टे हो सकते हैं तो `rotate_image=true` सेट करें), फिर दोनों चेहरों के बीच एक समानता स्कोर की गणना की जाती है। `face_match_score_decline_threshold` (डिफ़ॉल्ट `30`) से **सख्ती से ऊपर** का स्कोर `status: \"Approved\"` लौटाता है; इसके बराबर या नीचे का स्कोर `LOW_FACE_MATCH_SIMILARITY` चेतावनी के साथ `Declined` लौटाता है। यदि किसी भी चेहरे के जोड़े का स्कोर नहीं निकाला जा सकता है, तो भी कॉल `status: \"Declined\"` और `NO_REFERENCE_IMAGE` चेतावनी के साथ `200` लौटाता है — डिफ़ॉल्ट सेव पाथ पर `score` `null` होता है, या `save_api_request=false` के साथ `0` होता है। सर्वोत्तम परिणामों के लिए प्रति छवि एक स्पष्ट, सामने की ओर मुख वाला चेहरा सबमिट करें।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक चेहरा मिलान API क्रेडिट की खपत करता है (आपके प्लान क्रेडिट या टॉप अप बैलेंस से भुगतान किया जाता है)। जब संगठन का बैलेंस कॉल को कवर नहीं कर सकता है, तो endpoint किसी भी छवि प्रोसेसिंग से पहले पर्याप्त क्रेडिट न होने वाली त्रुटि के साथ `403` लौटाता है।\n\n**सत्र स्थायित्व (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` हो, तो कॉल को API-प्रकार के सत्र के रूप में बनाए रखा जाता है: यह Business Console में दिखाई देता है, लौटाया गया `request_id` एक वास्तविक सत्र id है जिसे आप `GET /v3/session/{sessionId}/decision/` को पास कर सकते हैं, दोनों छवियों को सत्र के चेहरा-मिलान स्रोत/लक्ष्य छवियों के रूप में संग्रहीत किया जाता है, और आपके कॉन्फ़िगर किए गए webhook endpoints पर एक `status.updated` webhook भेजा जाता है। जब `false` हो, तो कुछ भी संग्रहीत नहीं होता है और `request_id` एक बार उपयोग होने वाला सहसंबंध UUID होता है जिसे बाद में नहीं देखा जा सकता है।\n\n**चेहरा खोज इंडेक्स।** यह endpoint कभी भी आपके चेहरा खोज इंडेक्स में चेहरों को नामांकित नहीं करता है और कभी भी ब्लॉकलिस्ट या डुप्लिकेट स्क्रीनिंग नहीं चलाता है — उनके लिए `POST /v3/passive-liveness/` या `POST /v3/face-search/` का उपयोग करें।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload लौटाता है, कोई सत्र बनाए नहीं रखा जाता है, और कोई क्रेडिट की खपत नहीं होती है।\n\n**प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` लौटाते हैं (`{\"detail\": \"You do not have permission to perform this action.\"}`) — यह API कभी भी `401` नहीं लौटाता है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` मिलता है।",
        "operationId": "post_v3face-match",
        "x-didit-sdk": {
          "resource": "face_match",
          "method": "compare",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "user_image",
                  "ref_image"
                ],
                "properties": {
                  "user_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "सत्यापित करने के लिए लाइव या संभावित चेहरे की छवि (उदा. एक सेल्फ़ी)। ऐसा एकल सामने की ओर मुख किया हुआ फ़ोटो सबमिट करें जिसमें विषय का चेहरा स्पष्ट रूप से दिखाई दे रहा हो और अच्छी रोशनी हो। अनुमत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `webp`। अधिकतम अपलोड आकार: **5 MB** (बड़ी फ़ाइलों को `400` के साथ अस्वीकार कर दिया जाता है)। प्रोसेसिंग से पहले छवियों को स्वचालित रूप से ~0.5 MB तक कंप्रेस किया जाता है, इसलिए बहुत उच्च रिज़ॉल्यूशन से सटीकता में सुधार नहीं होता है।"
                  },
                  "ref_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "तुलना करने के लिए संदर्भ चेहरे की छवि (उदा., पहचान दस्तावेज़ का पोर्ट्रेट या पहले नामांकित फ़ोटो)। `user_image` के समान ही प्रारूप और आकार सीमाएँ।"
                  },
                  "face_match_score_decline_threshold": {
                    "type": "number",
                    "format": "float",
                    "default": 30,
                    "minimum": 0,
                    "maximum": 100,
                    "description": "समानता थ्रेशोल्ड (0–100) जो रिस्पॉन्स `status` को निर्धारित करता है। इस मान **के बराबर या उससे कम** परिकलित स्कोर `status` को `Declined` पर सेट करता है और `LOW_FACE_MATCH_SIMILARITY` चेतावनी जोड़ता है; इससे अधिक का स्कोर `Approved` लौटाता है। डिफ़ॉल्ट `30` अनुमेय है — अधिक सख्त सत्यापन के लिए इसे बढ़ाएं (उदा. `50`–`60`)। 0–100 के बाहर के मान `400` लौटाते हैं।",
                    "example": 50
                  },
                  "rotate_image": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` हो, तो सेवा 90-डिग्री अंतराल (0, 90, 180, 270) में इनपुट छवियों को आज़माती है और उस ओरिएंटेशन का उपयोग करती है जिससे सबसे अच्छा फ़ेस डिटेक्शन प्राप्त होता है — अनुपलब्ध EXIF ओरिएंटेशन वाले मोबाइल कैप्चर के लिए उपयोगी। इससे विलंबता बढ़ती है, इसलिए इसे केवल तभी सक्षम करें यदि आप सीधी छवियों की गारंटी नहीं दे सकते।",
                    "example": false
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "`true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए `request_id` का उपयोग करके `GET /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने योग्य, और `status.updated` webhook के माध्यम से घोषित किया जाता है। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है और `request_id` केवल रिस्पॉन्स सहसंबंध के लिए एक अस्थायी UUID होता है।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर करने के लिए करें।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड (उदा. `metadata={\"flow\":\"login\"}`) के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "login",
                      "device_id": "abc123"
                    }
                  }
                }
              },
              "example": {
                "user_image": "(binary JPEG/PNG of the live selfie)",
                "ref_image": "(binary JPEG/PNG of the reference photo)",
                "face_match_score_decline_threshold": 50,
                "rotate_image": false,
                "save_api_request": true,
                "vendor_data": "user-123",
                "metadata": {
                  "flow": "login"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "चेहरा मिलान परिकलित किया गया है। `face_match.score` एक 0–100 फ़्लोट (दो दशमलव) है; जब स्कोर सख्ती से `face_match_score_decline_threshold` से ऊपर होता है तो `status`, `Approved` होता है, अन्यथा एक व्याख्यात्मक चेतावनी के साथ `Declined` होता है। कम समानता या स्कोर न करने योग्य जोड़ी भी `200` लौटाती है — केवल HTTP कोड ही नहीं, बल्कि `face_match.status` और `face_match.warnings` की भी जाँच करें। जब `save_api_request=true` हो, तो `request_id` सुरक्षित रखा गया सत्र आईडी होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "समान व्यक्ति — थ्रेशोल्ड से ऊपर स्कोर",
                    "value": {
                      "request_id": "f9f5a777-8002-44c6-baaf-128bcfd6e226",
                      "face_match": {
                        "status": "Approved",
                        "score": 99.41,
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                661,
                                728,
                                1688,
                                2188
                              ],
                              "confidence": 0.732973,
                              "age": 26.91,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "ref_image": {
                          "entities": [
                            {
                              "bbox": [
                                653,
                                745,
                                1691,
                                2185
                              ],
                              "confidence": 0.722082,
                              "age": 27.0,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": []
                      },
                      "vendor_data": "user-123",
                      "metadata": {
                        "flow": "login"
                      },
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  },
                  "Declined - low similarity": {
                    "summary": "अस्वीकृति थ्रेशोल्ड पर या उससे कम स्कोर",
                    "value": {
                      "request_id": "7cdda24e-311a-46d3-a3bb-e5d9b564ce73",
                      "face_match": {
                        "status": "Declined",
                        "score": 24.87,
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                661,
                                728,
                                1688,
                                2188
                              ],
                              "confidence": 0.732973,
                              "age": 26.91,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "ref_image": {
                          "entities": [
                            {
                              "bbox": [
                                156,
                                234,
                                679,
                                898
                              ],
                              "confidence": 0.717775,
                              "age": 41.2,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [
                          {
                            "risk": "LOW_FACE_MATCH_SIMILARITY",
                            "feature": "FACEMATCH",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Low face match similarity",
                            "long_description": "The facial features of the provided image don't closely match the reference image, suggesting a potential identity mismatch."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:08:19.859116+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "face_match": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined"
                          ],
                          "description": "`Approved` जब समानता स्कोर `face_match_score_decline_threshold` से कड़ाई से अधिक हो और स्कोर की गणना की जा सकी हो; अन्यथा `Declined` (एक चेतावनी कारण बताती है)।"
                        },
                        "score": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "0 से 100 तक समानता स्कोर — मॉडल का विश्वास कि दोनों छवियाँ एक ही व्यक्ति को दर्शाती हैं। केवल तभी दो दशमलव स्थानों तक पूर्णांकित किया जाता है जब `save_api_request` का मान true हो; `save_api_request=false` के साथ मूल फ़्लोट लौटाया जाता है। जब किसी चेहरे के जोड़े को स्कोर नहीं किया जा सका (डिफ़ॉल्ट `save_api_request=true` के साथ) तो `null`; `save_api_request=false` के साथ यही स्थिति `score: 0` के रूप में सामने आ सकती है। दोनों ही मामलों में `NO_REFERENCE_IMAGE` चेतावनी मौजूद होती है और `status` का मान `Declined` होता है।",
                          "example": 99.41
                        },
                        "user_image": {
                          "type": "object",
                          "description": "विश्लेषित छवियों के लिए चेहरा-पहचान परिणाम।",
                          "properties": {
                            "entities": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "bbox": {
                                    "type": "array",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "minItems": 4,
                                    "maxItems": 4,
                                    "description": "प्रोसेस की गई छवि में `[x_min, y_min, x_max, y_max]` पिक्सेल निर्देशांक के रूप में पहचाने गए चेहरे का बाउंडिंग बॉक्स।",
                                    "example": [
                                      661,
                                      728,
                                      1688,
                                      2188
                                    ]
                                  },
                                  "confidence": {
                                    "type": "number",
                                    "format": "float",
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "चेहरा-पहचान विश्वास (0–1)।",
                                    "example": 0.732973
                                  },
                                  "age": {
                                    "type": "number",
                                    "format": "float",
                                    "description": "पहचाने गए चेहरे की मॉडल-अनुमानित आयु, वर्षों में। केवल सूचनात्मक — यह चेहरा मिलान निर्णय को प्रभावित नहीं करती है।",
                                    "example": 26.91
                                  },
                                  "gender": {
                                    "type": "string",
                                    "description": "पहचाने गए चेहरे का मॉडल-अनुमानित लिंग (`male` या `female`)। केवल सूचनात्मक।",
                                    "example": "male"
                                  },
                                  "race": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "आरक्षित फ़ील्ड — इस endpoint से मिलने वाले रिस्पॉन्स में हमेशा `null` होता है।",
                                    "example": null
                                  }
                                }
                              },
                              "description": "प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि।"
                            },
                            "best_angle": {
                              "type": "integer",
                              "description": "रोटेशन (डिग्री: 0, 90, 180, या 270) जिसने चेहरे का सर्वोत्तम डिटेक्शन उत्पन्न किया। केवल तभी गैर-शून्य जब `rotate_image=true` ने ओरिएंटेशन को ठीक किया।",
                              "example": 0
                            }
                          }
                        },
                        "ref_image": {
                          "type": "object",
                          "description": "संदर्भ छवि के लिए चेहरा-पहचान परिणाम, `user_image` जैसा ही प्रारूप।",
                          "properties": {
                            "entities": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "bbox": {
                                    "type": "array",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "minItems": 4,
                                    "maxItems": 4,
                                    "description": "प्रोसेस की गई छवि में `[x_min, y_min, x_max, y_max]` पिक्सेल निर्देशांक के रूप में पहचाने गए चेहरे का बाउंडिंग बॉक्स।",
                                    "example": [
                                      661,
                                      728,
                                      1688,
                                      2188
                                    ]
                                  },
                                  "confidence": {
                                    "type": "number",
                                    "format": "float",
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "चेहरा-पहचान विश्वास (0–1)।",
                                    "example": 0.732973
                                  },
                                  "age": {
                                    "type": "number",
                                    "format": "float",
                                    "description": "पहचाने गए चेहरे की मॉडल-अनुमानित आयु, वर्षों में। केवल सूचनात्मक — यह चेहरा मिलान निर्णय को प्रभावित नहीं करती है।",
                                    "example": 26.91
                                  },
                                  "gender": {
                                    "type": "string",
                                    "description": "पहचाने गए चेहरे का मॉडल-अनुमानित लिंग (`male` या `female`)। केवल सूचनात्मक।",
                                    "example": "male"
                                  },
                                  "race": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "आरक्षित फ़ील्ड — इस endpoint से मिलने वाले रिस्पॉन्स में हमेशा `null` होता है।",
                                    "example": null
                                  }
                                }
                              },
                              "description": "प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि।"
                            },
                            "best_angle": {
                              "type": "integer",
                              "example": 0
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "description": "बिना किसी जोखिम वाली स्वीकृति पर खाली। `NO_REFERENCE_IMAGE` (`error`) — किसी भी चेहरे के जोड़े का स्कोर नहीं किया जा सका; `LOW_FACE_MATCH_SIMILARITY` (`error`) — स्कोर अस्वीकृति थ्रेशोल्ड पर या उससे नीचे है। इनमें से कोई भी `status` को `Declined` पर सेट करता है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "enum": [
                                  "NO_REFERENCE_IMAGE",
                                  "LOW_FACE_MATCH_SIMILARITY"
                                ],
                                "description": "मशीन-पठनीय जोखिम कोड।"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "FACEMATCH"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `FACEMATCH`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "चेहरा मिलान चेतावनियों के लिए हमेशा `null`।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "warning",
                                  "information"
                                ],
                                "description": "गंभीरता। `error` चेतावनियाँ `status` को `Declined` में बदल देती हैं; `warning` और `information` प्रविष्टियाँ केवल सलाहकारी होती हैं और अपने आप कभी अस्वीकृत नहीं करती हैं।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC), उदा. `2026-06-12T01:04:42.763237+00:00`।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। तब लौटाई जाती है जब आवश्यक इमेज गायब हो, 5 MB से अधिक हो, इसका एक्सटेंशन असमर्थित हो, या जब कोई विकल्प सीमा से बाहर हो। बॉडी DRF का मानक फ़ील्ड-त्रुटि एनवेलप है: प्रति आपत्तिजनक फ़ील्ड संदेशों की एक सरणी।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing required image": {
                    "summary": "`ref_image` (या `user_image`) फ़ॉर्म डेटा में शामिल नहीं है",
                    "value": {
                      "ref_image": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp से बाहर है",
                    "value": {
                      "user_image": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, webp."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 5 MB की सीमा से अधिक है",
                    "value": {
                      "user_image": [
                        "File size should not exceed 5 MB"
                      ]
                    }
                  },
                  "Threshold out of range": {
                    "summary": "`face_match_score_decline_threshold` 0–100 से बाहर है",
                    "value": {
                      "face_match_score_decline_threshold": [
                        "Ensure this value is less than or equal to 100."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/face-match/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'user_image=@./selfie.jpg' \\\n  -F 'ref_image=@./id_portrait.jpg' \\\n  -F 'face_match_score_decline_threshold=50' \\\n  -F 'save_api_request=true' \\\n  -F 'vendor_data=user-123'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.face_match.compare(\n    user_image=open(\"user_image.jpg\", \"rb\"),\n    ref_image=open(\"ref_image.jpg\", \"rb\"),\n    face_match_score_decline_threshold=50.0,\n    rotate_image=False,\n    save_api_request=True,\n    vendor_data=\"user-123\",\n    metadata={\"flow\": \"login\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.faceMatch.compare({\n  user_image: await fileFromPath(\"user_image.jpg\"),\n  ref_image: await fileFromPath(\"ref_image.jpg\"),\n  face_match_score_decline_threshold: 50.0,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"login\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FaceMatch.Compare(ctx, didit.FaceMatchCompareParams{\n\tUserImage:                      didit.FileFromPath(\"user_image.jpg\"),\n\tRefImage:                       didit.FileFromPath(\"ref_image.jpg\"),\n\tFaceMatchScoreDeclineThreshold: didit.Float(50.0),\n\tRotateImage:                    didit.Bool(false),\n\tSaveAPIRequest:                 didit.Bool(true),\n\tVendorData:                     didit.String(\"user-123\"),\n\tMetadata:                       didit.Some(map[string]any{\"flow\": \"login\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.FaceMatchCompareParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.faceMatch().compare(FaceMatchCompareParams.builder()\n        .userImage(Path.of(\"user_image.jpg\"))\n        .refImage(Path.of(\"ref_image.jpg\"))\n        .faceMatchScoreDeclineThreshold(50.0)\n        .rotateImage(false)\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .metadata(Map.of(\"flow\", \"login\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->faceMatch->compare([\n    'user_image' => File::fromPath('user_image.jpg'),\n    'ref_image' => File::fromPath('ref_image.jpg'),\n    'face_match_score_decline_threshold' => 50.0,\n    'rotate_image' => false,\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n    'metadata' => ['flow' => 'login'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.face_match.compare(\n  user_image: Pathname(\"user_image.jpg\"),\n  ref_image: Pathname(\"ref_image.jpg\"),\n  face_match_score_decline_threshold: 50.0,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"login\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.FaceMatch.CompareAsync(new FaceMatchCompareParams\n{\n    UserImage = FileUpload.FromPath(\"user_image.jpg\"),\n    RefImage = FileUpload.FromPath(\"ref_image.jpg\"),\n    FaceMatchScoreDeclineThreshold = 50.0,\n    RotateImage = false,\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n    Metadata = new Dictionary<string, object> { [\"flow\"] = \"login\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/age-estimation/": {
      "post": {
        "summary": "आयु अनुमान (चेहरे की आयु + पैसिव लाइवनेस)",
        "description": "एक ही चेहरे के फ़ोटो से किसी व्यक्ति की आयु का अनुमान लगाएँ और उसी कॉल में पैसिव लाइवनेस जाँच चलाएँ — यह मॉडल द्वारा अनुमानित `age_estimation` (वर्षों में), एक लाइवनेस `score` (0–100), और एक `Approved`/`Declined` `status` लौटाता है। आयु **चेहरे से मॉडल द्वारा अनुमानित होती है, किसी दस्तावेज़ से सत्यापित नहीं** — इसका उपयोग आयु प्रतिबंधों और कम रुकावट वाली जाँचों के लिए करें, आयु के कानूनी प्रमाण के रूप में नहीं।\n\n**यह कैसे काम करता है।** चेहरों का पता लगाने के लिए छवि का विश्लेषण किया जाता है (यदि कैप्चर तिरछा या उल्टा हो सकता है तो `rotate_image=true` सेट करें); प्रत्येक पाए गए चेहरे की एक अनुमानित आयु प्राप्त होती है, और फ्रेम में सबसे बड़ा चेहरा `age_estimation` निर्धारित करता है। समानांतर में, एक पैसिव लाइवनेस मॉडल स्कोर करता है कि क्या फ़ोटो किसी जीवित व्यक्ति को दिखाती है (उपयोगकर्ता से किसी चुनौती की आवश्यकता नहीं होती) और प्रेज़ेंटेशन अटैक (फ़ोटो की फ़ोटो, स्क्रीन, मास्क) का पता लगाता है। सर्वोत्तम परिणामों के लिए प्रति छवि एक स्पष्ट, सामने की ओर मुख वाला, अच्छी रोशनी वाला चेहरा सबमिट करें।\n\n**निर्णय तर्क।** कोई भी चेतावनी अस्वीकृति का कारण बनती है: `status` केवल तभी `Approved` होता है जब `warnings` सरणी खाली होती है। `face_liveness_score_decline_threshold` (डिफ़ॉल्ट `30`) पर या उससे कम का लाइवनेस `score` `LOW_LIVENESS_SCORE` जोड़ता है; पता लगाया गया हमला `LIVENESS_FACE_ATTACK` जोड़ता है; लाइवनेस मॉडल द्वारा कोई चेहरा न पाए जाने पर `NO_FACE_DETECTED` जुड़ता है; चेहरे की अनुमानित आयु न मिलने पर `AGE_NOT_DETECTED` जुड़ता है (`age_estimation` `null` है); `age_estimation_decline_threshold` (डिफ़ॉल्ट `18`) से कम अनुमानित आयु `AGE_BELOW_MINIMUM` जोड़ती है। आपके थ्रेशोल्ड के करीब की सीमांत आयु के लिए दस्तावेज़-आधारित सत्यापन पर फ़ॉलबैक करना उचित है — सीमा के करीब के चेहरों के लिए मॉडल की त्रुटि बढ़ जाती है।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक आयु अनुमान API क्रेडिट का उपभोग करता है (आपके प्लान क्रेडिट या टॉप-अप बैलेंस से भुगतान किया जाता है)। जब संगठन का बैलेंस कॉल को कवर नहीं कर सकता, तो endpoint किसी भी छवि प्रोसेसिंग से पहले अपर्याप्त-क्रेडिट त्रुटि के साथ `403` लौटाता है।\n\n**सत्र दृढ़ता (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` होता है, तो कॉल को API-प्रकार के सत्र के रूप में सहेजा जाता है: यह Business Console में दिखाई देता है, लौटाया गया `request_id` एक वास्तविक सत्र आईडी होता है जिसे आप `GET /v3/session/{sessionId}/decision/` में पास कर सकते हैं (परिणाम वहां `liveness_checks[]` में, `features: [\"AGE_ESTIMATION\"]` के साथ प्रदर्शित होता है), फ़ेस क्रॉप और संदर्भ छवि संग्रहीत किए जाते हैं, फ़ेस एम्बेडिंग को आपके एप्लिकेशन के चेहरे के इंडेक्स में जोड़ा जाता है (चेहरा खोज और डुप्लिकेट पहचान द्वारा उपयोग किया जाता है), और एक `status.updated` webhook उत्सर्जित होता है। जब `false` होता है, तो कुछ भी संग्रहीत नहीं किया जाता है और `request_id` एक बार का सहसंबंध UUID होता है जिसे बाद में नहीं देखा जा सकता है।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload लौटाता है (`age_estimation: 30`, कोई चेतावनी नहीं), कोई सत्र सहेजा नहीं जाता है, और कोई क्रेडिट उपभोग नहीं होता है।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` हेडर में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` लौटाते हैं (`{\"detail\": \"You do not have permission to perform this action.\"}`) — यह API कभी भी `401` नहीं लौटाता है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` मिलता है।",
        "operationId": "post_v3age-estimation",
        "x-didit-sdk": {
          "resource": "age_estimation",
          "method": "estimate",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "user_image"
                ],
                "properties": {
                  "user_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "विश्लेषण के लिए चेहरे की फ़ोटो (उदा. एक सेल्फ़ी)। सामने की ओर उन्मुख एक ही फ़ोटो सबमिट करें जिसमें विषय का चेहरा स्पष्ट रूप से दिखाई दे रहा हो और अच्छी रोशनी हो। अनुमत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `webp` (कोई PDF नहीं)। अधिकतम अपलोड आकार: **5 MB** (बड़ी फ़ाइलों को `400` के साथ अस्वीकार कर दिया जाता है)। प्रोसेसिंग से पहले छवियों को स्वचालित रूप से ~0.3 MB तक कंप्रेस किया जाता है, इसलिए बहुत उच्च रिज़ॉल्यूशन सटीकता में सुधार नहीं करते हैं।"
                  },
                  "face_liveness_score_decline_threshold": {
                    "type": "number",
                    "format": "float",
                    "default": 30,
                    "minimum": 0,
                    "maximum": 100,
                    "description": "लाइवनेस थ्रेशोल्ड (0–100)। इस मान **पर या उससे नीचे** का लाइवनेस `score` `LOW_LIVENESS_SCORE` चेतावनी जोड़ता है और अस्वीकृत करता है। सख्त एंटी-स्पूफिंग के लिए इसे बढ़ाएं; 0–100 से बाहर के मान `400` लौटाते हैं।",
                    "example": 30
                  },
                  "age_estimation_decline_threshold": {
                    "type": "integer",
                    "default": 18,
                    "minimum": 0,
                    "maximum": 100,
                    "description": "वर्षों में न्यूनतम स्वीकार्य अनुमानित आयु। इस मान से **कम** अनुमानित आयु `AGE_BELOW_MINIMUM` चेतावनी जोड़ती है और इसे अस्वीकृत कर देती है। आयु जाँच को अक्षम करने के लिए `0` सेट करें (कॉल तब आयु-आधारित निर्णय के बिना केवल लाइवनेस + आयु अनुमान चलाती है)।",
                    "example": 18
                  },
                  "rotate_image": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो सेवा 90-डिग्री अंतराल (0, 90, 180, 270) में इनपुट छवि का प्रयास करती है और उस ओरिएंटेशन का उपयोग करती है जिससे सबसे अच्छा फ़ेस डिटेक्शन प्राप्त होता है — छूटे हुए EXIF ओरिएंटेशन वाले मोबाइल कैप्चर के लिए उपयोगी। विलंबता जोड़ता है, इसलिए इसे केवल तभी सक्षम करें यदि आप सीधी छवियों की गारंटी नहीं दे सकते।",
                    "example": false
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "`true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए `request_id` का उपयोग करके `GET /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने योग्य, `status.updated` webhook के माध्यम से घोषित, और पहचाने गए चेहरे को आपके एप्लिकेशन के फ़ेस इंडेक्स में जोड़ा जाता है। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है और `request_id` केवल रिस्पॉन्स सहसंबंध के लिए एक अस्थायी UUID होता है।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर करने के लिए करें।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड (उदा. `metadata={\"flow\":\"age-gate\"}`) के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "age-gate"
                    }
                  }
                }
              },
              "example": {
                "user_image": "(binary JPEG/PNG of the selfie)",
                "face_liveness_score_decline_threshold": 30,
                "age_estimation_decline_threshold": 18,
                "rotate_image": false,
                "save_api_request": true,
                "vendor_data": "user-123",
                "metadata": {
                  "flow": "age-gate"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "आयु अनुमान और पैसिव लाइवनेस पूर्ण हो गए। `age_estimation.age_estimation` सबसे बड़े पहचाने गए चेहरे की मॉडल द्वारा अनुमानित आयु (वर्षों में) है (यदि कोई नहीं है तो `null`); `age_estimation.score` पैसिव-लाइवनेस स्कोर (0–100) है; `status` केवल तभी `Approved` होता है जब `warnings` खाली हो। कम उम्र या स्पूफ़ किए गए कैप्चर पर भी `status: \"Declined\"` के साथ `200` रिटर्न होता है — केवल HTTP कोड ही नहीं, बल्कि बॉडी का भी निरीक्षण करें। जब `save_api_request=true` हो, तो `request_id` परसिस्टेड सत्र id होती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "लाइव वयस्क चेहरा — दोनों जाँचें पास हुईं",
                    "value": {
                      "request_id": "0c40ba43-64ab-4e2e-b4b8-7d1f12f81bc1",
                      "age_estimation": {
                        "status": "Approved",
                        "method": "PASSIVE",
                        "score": 97.5,
                        "user_image": {
                          "entities": [
                            {
                              "age": 27.33,
                              "bbox": [
                                40,
                                40,
                                100,
                                100
                              ],
                              "confidence": 0.7177750468254089,
                              "gender": "male"
                            }
                          ],
                          "best_angle": 0
                        },
                        "age_estimation": 27.33,
                        "warnings": []
                      },
                      "vendor_data": "user-123",
                      "metadata": {
                        "flow": "age-gate"
                      },
                      "created_at": "2026-06-12T02:24:11.512941+00:00"
                    }
                  },
                  "Declined - age below threshold": {
                    "summary": "`age_estimation_decline_threshold` से कम अनुमानित आयु",
                    "value": {
                      "request_id": "9be41a6f-2f4e-4f57-92f4-b3a4f6f0a1c2",
                      "age_estimation": {
                        "status": "Declined",
                        "method": "PASSIVE",
                        "score": 95.0,
                        "user_image": {
                          "entities": [
                            {
                              "age": 16.5,
                              "bbox": [
                                40,
                                40,
                                100,
                                100
                              ],
                              "confidence": 0.7177750468254089,
                              "gender": "female"
                            }
                          ],
                          "best_angle": 0
                        },
                        "age_estimation": 16.5,
                        "warnings": [
                          {
                            "risk": "AGE_BELOW_MINIMUM",
                            "feature": "LIVENESS",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Age below minimum",
                            "long_description": "The age of the face is below the minimum age threshold for the application."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:26:40.118332+00:00"
                    }
                  },
                  "Declined - liveness too low": {
                    "summary": "अस्वीकृति थ्रेशोल्ड पर या उससे नीचे लाइवनेस स्कोर (संभावित स्पूफिंग)",
                    "value": {
                      "request_id": "5f6f2f1f-7c4f-43b9-8d62-0a8f4c2d9e77",
                      "age_estimation": {
                        "status": "Declined",
                        "method": "PASSIVE",
                        "score": 5.0,
                        "user_image": {
                          "entities": [
                            {
                              "age": 25.0,
                              "bbox": [
                                40,
                                40,
                                100,
                                100
                              ],
                              "confidence": 0.7177750468254089,
                              "gender": "male"
                            }
                          ],
                          "best_angle": 0
                        },
                        "age_estimation": 25.0,
                        "warnings": [
                          {
                            "risk": "LOW_LIVENESS_SCORE",
                            "feature": "LIVENESS",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Low liveness score",
                            "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:27:02.901547+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "age_estimation": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined"
                          ],
                          "description": "`Approved` जब कोई चेतावनी जारी नहीं की गई थी; अन्यथा `Declined` (इस endpoint द्वारा उत्पन्न प्रत्येक चेतावनी अस्वीकृति का कारण बनती है)।"
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "PASSIVE"
                          ],
                          "description": "लाइवनेस विधि। इस endpoint पर हमेशा `PASSIVE` (एकल-छवि, कोई उपयोगकर्ता चुनौती नहीं)।"
                        },
                        "score": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "0 से 100 तक निष्क्रिय-लाइवनेस स्कोर — मॉडल का यह विश्वास स्कोर कि फ़ोटो एक जीवित व्यक्ति को दर्शाती है। `face_liveness_score_decline_threshold` के विरुद्ध तुलना की जाती है; इस पर या इससे नीचे कॉल `LOW_LIVENESS_SCORE` के साथ अस्वीकृत हो जाती है। जब लाइवनेस मॉडल कोई विश्वास वापस नहीं करता है तो `null` होता है — कॉल फिर भी `LOW_LIVENESS_SCORE` के साथ अस्वीकृत हो जाती है क्योंकि थ्रेशोल्ड तुलना के लिए null को 0 माना जाता है।",
                          "example": 97.5
                        },
                        "user_image": {
                          "type": "object",
                          "description": "विश्लेषित छवि के लिए चेहरा-पहचान परिणाम।",
                          "properties": {
                            "entities": {
                              "type": "array",
                              "description": "प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि। कोई चेहरा न मिलने पर खाली (फिर `age_estimation` `null` होता है और एक `AGE_NOT_DETECTED` चेतावनी जोड़ी जाती है)।",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "age": {
                                    "type": "number",
                                    "format": "float",
                                    "description": "इस चेहरे की मॉडल-अनुमानित आयु, वर्षों में।",
                                    "example": 27.33
                                  },
                                  "bbox": {
                                    "type": "array",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "minItems": 4,
                                    "maxItems": 4,
                                    "description": "प्रोसेस की गई छवि में `[x_min, y_min, x_max, y_max]` पिक्सेल निर्देशांक के रूप में पहचाने गए चेहरे का बाउंडिंग बॉक्स।",
                                    "example": [
                                      40,
                                      40,
                                      100,
                                      100
                                    ]
                                  },
                                  "confidence": {
                                    "type": "number",
                                    "format": "float",
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "चेहरा-पहचान विश्वास (0–1)।",
                                    "example": 0.7177750468254089
                                  },
                                  "gender": {
                                    "type": "string",
                                    "description": "पहचाने गए चेहरे का मॉडल-अनुमानित लिंग (`male` या `female`)। केवल सूचनात्मक।",
                                    "example": "male"
                                  }
                                }
                              }
                            },
                            "best_angle": {
                              "type": "integer",
                              "nullable": true,
                              "description": "रोटेशन (डिग्री: 0, 90, 180, या 270) जिसने चेहरे का सर्वोत्तम डिटेक्शन उत्पन्न किया। केवल तभी गैर-शून्य जब `rotate_image=true` ने ओरिएंटेशन को ठीक किया।",
                              "example": 0
                            }
                          }
                        },
                        "age_estimation": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "description": "पहचाने गए **सबसे बड़े** चेहरे की मॉडल-अनुमानित आयु वर्षों में। `null` जब चेहरे की आयु का अनुमान नहीं लगाया जा सका (एक `AGE_NOT_DETECTED` चेतावनी जोड़ी जाती है और कॉल अस्वीकृत हो जाती है)।",
                          "example": 27.33
                        },
                        "warnings": {
                          "type": "array",
                          "description": "बिना किसी जोखिम वाली स्वीकृति पर खाली। कोई भी प्रविष्टि `status` को `Declined` पर सेट करती है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "enum": [
                                  "NO_FACE_DETECTED",
                                  "LOW_LIVENESS_SCORE",
                                  "LIVENESS_FACE_ATTACK",
                                  "AGE_NOT_DETECTED",
                                  "AGE_BELOW_MINIMUM"
                                ],
                                "description": "मशीन-पठनीय जोखिम कोड। `NO_FACE_DETECTED` — लाइवनेस मॉडल को कोई चेहरा नहीं मिला; `LOW_LIVENESS_SCORE` — लाइवनेस `score` `face_liveness_score_decline_threshold` पर या उससे कम है; `LIVENESS_FACE_ATTACK` — एक प्रेज़ेंटेशन अटैक (फ़ोटो/स्क्रीन/मास्क) का पता चला था; `AGE_NOT_DETECTED` — चेहरे की आयु का अनुमान नहीं लगाया जा सका; `AGE_BELOW_MINIMUM` — अनुमानित आयु `age_estimation_decline_threshold` से कम है। `NO_FACE_DETECTED` और `LOW_LIVENESS_SCORE` परस्पर अनन्य हैं — जब कोई चेहरा नहीं मिलता है तो केवल `NO_FACE_DETECTED` जारी किया जाता है।"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "LIVENESS"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `LIVENESS`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "आयु अनुमान चेतावनियों के लिए हमेशा `null`।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error"
                                ],
                                "description": "गंभीरता। यह endpoint जो भी चेतावनी उत्पन्न करता है, वह एक `error` होती है और `status` को `Declined` पर सेट कर देती है।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC)।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। तब लौटाई जाती है जब `user_image` गायब हो, 5 MB से अधिक हो, इसका एक्सटेंशन असमर्थित हो, या जब कोई थ्रेशोल्ड सीमा से बाहर हो। बॉडी DRF का मानक फ़ील्ड-त्रुटि एनवेलप है: प्रति आपत्तिजनक फ़ील्ड संदेशों की एक सरणी।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing user image": {
                    "summary": "`user_image` फ़ॉर्म डेटा में शामिल नहीं है",
                    "value": {
                      "user_image": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp से बाहर है",
                    "value": {
                      "user_image": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, webp."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 5 MB की सीमा से अधिक है",
                    "value": {
                      "user_image": [
                        "File size should not exceed 5 MB"
                      ]
                    }
                  },
                  "Threshold out of range": {
                    "summary": "`face_liveness_score_decline_threshold` 0–100 से बाहर है",
                    "value": {
                      "face_liveness_score_decline_threshold": [
                        "Ensure this value is less than or equal to 100."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/age-estimation/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'user_image=@./selfie.jpg' \\\n  -F 'age_estimation_decline_threshold=18' \\\n  -F 'face_liveness_score_decline_threshold=30' \\\n  -F 'save_api_request=true' \\\n  -F 'vendor_data=user-123'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.age_estimation.estimate(\n    user_image=open(\"user_image.jpg\", \"rb\"),\n    face_liveness_score_decline_threshold=30.0,\n    age_estimation_decline_threshold=18,\n    rotate_image=False,\n    save_api_request=True,\n    vendor_data=\"user-123\",\n    metadata={\"flow\": \"age-gate\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.ageEstimation.estimate({\n  user_image: await fileFromPath(\"user_image.jpg\"),\n  face_liveness_score_decline_threshold: 30.0,\n  age_estimation_decline_threshold: 18,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"age-gate\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.AgeEstimation.Estimate(ctx, didit.AgeEstimationEstimateParams{\n\tUserImage:                         didit.FileFromPath(\"user_image.jpg\"),\n\tFaceLivenessScoreDeclineThreshold: didit.Float(30.0),\n\tAgeEstimationDeclineThreshold:     didit.Int(18),\n\tRotateImage:                       didit.Bool(false),\n\tSaveAPIRequest:                    didit.Bool(true),\n\tVendorData:                        didit.String(\"user-123\"),\n\tMetadata:                          didit.Some(map[string]any{\"flow\": \"age-gate\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.AgeEstimationEstimateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.ageEstimation().estimate(AgeEstimationEstimateParams.builder()\n        .userImage(Path.of(\"user_image.jpg\"))\n        .faceLivenessScoreDeclineThreshold(30.0)\n        .ageEstimationDeclineThreshold(18L)\n        .rotateImage(false)\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .metadata(Map.of(\"flow\", \"age-gate\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->ageEstimation->estimate([\n    'user_image' => File::fromPath('user_image.jpg'),\n    'face_liveness_score_decline_threshold' => 30.0,\n    'age_estimation_decline_threshold' => 18,\n    'rotate_image' => false,\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n    'metadata' => ['flow' => 'age-gate'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.age_estimation.estimate(\n  user_image: Pathname(\"user_image.jpg\"),\n  face_liveness_score_decline_threshold: 30.0,\n  age_estimation_decline_threshold: 18,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"age-gate\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.AgeEstimation.EstimateAsync(new AgeEstimationEstimateParams\n{\n    UserImage = FileUpload.FromPath(\"user_image.jpg\"),\n    FaceLivenessScoreDeclineThreshold = 30.0,\n    AgeEstimationDeclineThreshold = 18,\n    RotateImage = false,\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n    Metadata = new Dictionary<string, object> { [\"flow\"] = \"age-gate\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/poa/": {
      "post": {
        "summary": "पते का प्रमाण (दस्तावेज़ OCR + पता जाँच)",
        "description": "एक ही कॉल में पते का प्रमाण दस्तावेज़ — यूटिलिटी बिल, बैंक स्टेटमेंट, और सरकारी दस्तावेज़ — निकालें और सत्यापित करें। यह जारीकर्ता, जारी/समाप्ति तिथियाँ, धारक का नाम, रॉ और पार्स किया गया/जियोकोड किया गया पता, एक `Approved`/`Declined` `status`, और पाई गई हर समस्या को स्पष्ट करने वाली `warnings` सूची लौटाता है।\n\n**विलंबता।** एक्सट्रैक्शन LLM-आधारित है: सामान्य कॉलों में **5–15 सेकंड** लगते हैं, मल्टी-पेज PDF में **~30 सेकंड** तक लग सकते हैं। **कम से कम 45 सेकंड** का क्लाइंट टाइमआउट कॉन्फ़िगर करें और कॉल पूरा होने से पहले पुनः प्रयास न करें।\n\n**यह कैसे काम करता है।** दस्तावेज़ (इमेज या PDF, 15 MB तक; एन्क्रिप्टेड PDF के लिए `document_password` आवश्यक है) को दस्तावेज़ प्रकार और उप-प्रकार (जैसे `UTILITY_BILL` / `WATER_BILL`) में वर्गीकृत किया जाता है, और जारीकर्ता, तिथियाँ, धारक का नाम और पता LLM-आधारित एक्सट्रैक्शन से निकाले जाते हैं। पते को पार्स किया जाता है और `poa_parsed_address` में जियोकोड किया जाता है। PDF/EXIF फ़ॉरेंसिक्स छेड़छाड़ की जाँच करते हैं — डिजिटल हस्ताक्षर के बाद संशोधन, ज्ञात PDF संपादक, ओवरले-टेक्स्ट हेरफेर, संदिग्ध पुनः एक्सपोर्ट — जिससे `SUSPECTED_DOCUMENT_MANIPULATION` या `DOCUMENT_METADATA_MISMATCH` सामने आते हैं। एक टेक्स्ट फ़ील्ड जिसे मिटा दिया गया था और किसी अन्य फ़ॉन्ट में फिर से टाइप किया गया था, जहाँ फ़ाइल में स्वयं इस बात का कोई प्रमाण नहीं है कि उसकी सामग्री बदली गई है या नहीं, वहाँ `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT` सामने आता है। दस्तावेज़ की आयु को `poa_document_age_months` के आधार पर और भाषा को `poa_languages_allowed` के आधार पर मान्य किया जाता है। यदि आप `expected_address`, `expected_country`, या `expected_first_name`/`expected_last_name` पास करते हैं, तो निकाले गए मानों की क्रॉस-जाँच की जाती है और बेमेल होने पर फ़्लैग किया जाता है।\n\n**निर्णय लॉजिक।** `status` तब तक `Approved` रहता है जब तक कि कम से कम एक चेतावनी अस्वीकृत होने का कारण न बने। हार्ड विफलताएँ हमेशा अस्वीकृत होती हैं: `MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`, साथ ही `UNABLE_TO_EXTRACT_ISSUE_DATE` और `POA_NAME_NOT_DETECTED` (इस endpoint पर कॉन्फ़िगर करने योग्य नहीं)। पाँच जोखिम समूहों को `poa_*_action` विकल्पों (`DECLINE` या `NO_ACTION`, सभी डिफ़ॉल्ट रूप से `DECLINE`) के माध्यम से प्रति अनुरोध कॉन्फ़िगर किया जा सकता है। `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION` और `UNPARSABLE_OR_INVALID_ADDRESS` इस endpoint पर केवल सूचनात्मक हैं और कभी अस्वीकृत नहीं करते। एक दस्तावेज़ जिसे बिल्कुल भी संसाधित नहीं किया जा सकता वह `400` लौटाता है; एक पढ़ने योग्य लेकिन समस्याग्रस्त दस्तावेज़ `status: \"Declined\"` के साथ `200` लौटाता है — हमेशा सिर्फ़ HTTP कोड ही नहीं, बल्कि `poa.status` और `poa.warnings` का भी निरीक्षण करें।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक पते का प्रमाण API क्रेडिट का उपभोग करता है (आपके प्लान क्रेडिट या टॉप-अप बैलेंस से भुगतान किया जाता है)। जब संगठन का बैलेंस कॉल को कवर नहीं कर सकता, तो endpoint किसी भी दस्तावेज़ प्रसंस्करण से पहले पर्याप्त क्रेडिट न होने की त्रुटि के साथ `403` लौटाता है।\n\n**सत्र निरंतरता (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` होता है, तो कॉल को एक API-प्रकार के सत्र के रूप में सुरक्षित रखा जाता है: यह Business Console में दिखाई देता है, अपलोड किया गया दस्तावेज़ संग्रहीत किया जाता है, लौटाया गया `request_id` एक वास्तविक session id होता है जिसे आप `GET /v3/session/{sessionId}/decision/` पर पास कर सकते हैं (निर्णय अतिरिक्त रूप से `document_file` और `document_metadata` फ़ॉरेंसिक्स प्रदर्शित करता है, जिसे यह रिस्पॉन्स छोड़ देता है), और एक `status.updated` webhook उत्सर्जित होता है। जब `false` होता है, तो कुछ भी संग्रहीत नहीं किया जाता है और `request_id` एक बार इस्तेमाल होने वाला कोरिलेशन UUID होता है जिसे बाद में खोजा नहीं जा सकता।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload (एक काल्पनिक \"Sandbox Power Co.\" बिजली बिल) लौटाता है, कोई सत्र सुरक्षित नहीं किया जाता है, और किसी क्रेडिट का उपभोग नहीं होता है।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` हेडर में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं — यह API कभी भी `401` नहीं लौटाता।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 requests/min का साझा राइट बजट; इससे अधिक होने पर `429` मिलता है।\n\nनोट: `FUTURE_ISSUE_DATE` और `POOR_DOCUMENT_QUALITY` वर्कफ़्लो सत्रों में मौजूद होते हैं लेकिन इस स्टैंडअलोन endpoint द्वारा कभी भी उत्पन्न नहीं किए जाते हैं — भविष्य की तारीख वाले दस्तावेज़ को यहाँ स्वचालित रूप से अस्वीकृत नहीं किया जाता है।",
        "operationId": "post_v3poa",
        "x-didit-sdk": {
          "resource": "proof_of_address",
          "method": "verify",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "document"
                ],
                "properties": {
                  "document": {
                    "type": "string",
                    "format": "binary",
                    "description": "पते का प्रमाण दस्तावेज़। स्वीकृत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `pdf`, `webp`। अधिकतम अपलोड साइज़: **15 MB** (बड़ी फ़ाइलें `400` के साथ अस्वीकृत कर दी जाती हैं)। मल्टी-पेज PDF समर्थित हैं (अधिक लेटेंसी की उम्मीद करें); एन्क्रिप्टेड PDF के लिए `document_password` आवश्यक है। प्रोसेसिंग से पहले इमेज स्वचालित रूप से कंप्रेस की जाती हैं।"
                  },
                  "document_password": {
                    "type": "string",
                    "description": "`document` को डिक्रिप्ट करने का पासवर्ड जब यह एक एन्क्रिप्टेड PDF हो। बिना (या गलत) पासवर्ड के एन्क्रिप्टेड PDF भेजने पर `400` मिलता है।",
                    "writeOnly": true
                  },
                  "expected_address": {
                    "type": "string",
                    "description": "दस्तावेज़ के साथ सत्यापित करने के लिए पता। इसे जियोकोड किया जाता है और निकाले गए पते से तुलना की जाती है; बेमेल होने पर (या ऐसा अपेक्षित पता जिसे जियोकोड/सत्यापित नहीं किया जा सकता) `ADDRESS_MISMATCH_WITH_PROVIDED` जुड़ जाता है, जो `poa_address_mismatch_action` द्वारा नियंत्रित होता है। जियोकोड किया गया रूप `expected_details_formatted_address` / `expected_details_parsed_address` में वापस दिखाया जाता है।",
                    "example": "Av. Monseñor Tavella 1291, Salta, Argentina"
                  },
                  "expected_country": {
                    "type": "string",
                    "description": "दस्तावेज़ से सत्यापित करने के लिए देश (ISO 3166-1 कोड, उदा. `ARG` या `AR`)। दस्तावेज़ के देश के साथ बेमेल होने पर `POA_COUNTRY_MISMATCH_WITH_PROVIDED` जुड़ जाता है, जो `poa_address_mismatch_action` द्वारा नियंत्रित होता है।",
                    "example": "ARG"
                  },
                  "expected_first_name": {
                    "type": "string",
                    "description": "`name_on_document` के विरुद्ध सत्यापित करने के लिए पहला नाम (फ़ज़ी मिलान, लिप्यंतरण-सचेत)। मिलान थ्रेशोल्ड से नीचे का स्कोर `NAME_MISMATCH_WITH_PROVIDED` जोड़ता है, जो `poa_address_mismatch_action` द्वारा नियंत्रित होता है।",
                    "example": "Sophia"
                  },
                  "expected_last_name": {
                    "type": "string",
                    "description": "`name_on_document` के विरुद्ध सत्यापित करने के लिए अंतिम नाम, मिलान स्कोर के लिए `expected_first_name` के साथ संयुक्त।",
                    "example": "Martinez"
                  },
                  "poa_languages_allowed": {
                    "type": "string",
                    "description": "ISO 639-1 कोड के रूप में स्वीकृत दस्तावेज़ भाषाओं की कॉमा से अलग की गई सूची (उदा. `en,es,fr`)। छोड़े जाने या खाली होने पर, **सभी 51 समर्थित भाषाएं** स्वीकृत हैं। सूची से बाहर की भाषा में दस्तावेज़ `UNSUPPORTED_DOCUMENT_LANGUAGE` जोड़ता है (`poa_unsupported_language_action` द्वारा शासित); सूची में एक अज्ञात कोड समर्थित कोड के पूरे सेट के साथ `400` लौटाता है।",
                    "example": "en,es"
                  },
                  "poa_document_age_months": {
                    "type": "string",
                    "description": "कॉमा से अलग किए गए `key:value` जोड़े जो प्रति दस्तावेज़ प्रकार महीनों में अधिकतम दस्तावेज़ आयु निर्धारित करते हैं — कुंजियाँ: `utility_bill`, `bank_statement`, `government_issued_document`, `other_poa_document`; मान: `1`–`120`, या असीमित (कोई आयु जांच नहीं) के लिए `-1`। छोड़े जाने पर डिफ़ॉल्ट: `utility_bill:3,bank_statement:3,government_issued_document:12,other_poa_document:12`। अपनी सीमा से पुराना दस्तावेज़ `POA_DOCUMENT_EXPIRED` के साथ अस्वीकृत हो जाता है। **सावधानी:** जब आप यह फ़ील्ड प्रदान करते हैं, तो आपके द्वारा स्वीकार किए जाने वाले *प्रत्येक* प्रकार को सूचीबद्ध करें — छोड़े गए प्रकारों को अस्वीकृत माना जाता है (सूचनात्मक `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`) और उनकी आयु जांच छोड़ दी जाती है।",
                    "example": "utility_bill:3,bank_statement:6"
                  },
                  "poa_name_mismatch_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "स्वीकृत लेकिन **वर्तमान में लागू नहीं किया गया** — नाम-बेमेल चेतावनियाँ (`NAME_MISMATCH_WITH_PROVIDED`) इसके बजाय `poa_address_mismatch_action` का पालन करती हैं। नाम और पते दोनों के बेमेल व्यवहार को नियंत्रित करने के लिए `poa_address_mismatch_action` सेट करें।"
                  },
                  "poa_document_issues_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "फ़ाइल-अखंडता समस्याओं पर क्या कार्रवाई करें — व्यवहार में इस endpoint द्वारा केवल `DOCUMENT_METADATA_MISMATCH` ही उत्पन्न होता है।"
                  },
                  "poa_document_authenticity_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "दस्तावेज़ में हेरफेर का संदेह होने पर क्या कार्रवाई करें (`SUSPECTED_DOCUMENT_MANIPULATION`) — उदाहरण के लिए, PDF को डिजिटल हस्ताक्षर के बाद संशोधित किया गया था, किसी ज्ञात PDF संपादक द्वारा संसाधित किया गया था, ओवरले-टेक्स्ट हेरफेर दिखाता है, या इसमें असंगत EXIF तिथियाँ हैं। `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT` को भी नियंत्रित करता है (एक पुनः टाइप किया गया टेक्स्ट फ़ील्ड जिसे फ़ाइल परिवर्तित या अपरिवर्तित साबित नहीं कर सकती): `DECLINE` इसे भी अस्वीकार करता है, `NO_ACTION` इसे चेतावनी के रूप में रखता है।"
                  },
                  "poa_unsupported_language_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "दस्तावेज़ की भाषा `poa_languages_allowed` से बाहर होने (`UNSUPPORTED_DOCUMENT_LANGUAGE`) पर क्या कार्रवाई की जाए।"
                  },
                  "poa_address_mismatch_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "निकाले गए विवरणों का `expected_*` फ़ील्ड से मेल न खाने पर क्या कार्रवाई की जाए: `ADDRESS_MISMATCH_WITH_PROVIDED`, `NAME_MISMATCH_WITH_PROVIDED`, और `POA_COUNTRY_MISMATCH_WITH_PROVIDED` सभी इसी कार्रवाई का पालन करते हैं।"
                  },
                  "poa_issuer_not_identified_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "जब दस्तावेज़ पर किसी जारीकर्ता कंपनी/संगठन की पहचान नहीं की जा सकती है (`ISSUER_NOT_IDENTIFIED`) तो क्या कार्रवाई करें।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "`true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए `request_id` का उपयोग करके `GET /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने योग्य, `status.updated` webhook के माध्यम से घोषित, और अपलोड किए गए दस्तावेज़ को संग्रहीत किया जाता है। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है और `request_id` केवल रिस्पॉन्स सहसंबंध के लिए एक अस्थायी UUID होता है।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर करने के लिए करें।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड (उदा. `metadata={\"flow\":\"onboarding\"}`) के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "onboarding"
                    }
                  }
                }
              },
              "example": {
                "document": "(binary JPEG/PNG/PDF of the utility bill or bank statement)",
                "expected_address": "Av. Monseñor Tavella 1291, Salta, Argentina",
                "expected_country": "ARG",
                "expected_first_name": "Sophia",
                "expected_last_name": "Martinez",
                "poa_languages_allowed": "en,es",
                "save_api_request": true,
                "vendor_data": "user-123"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "दस्तावेज़ संसाधित। `poa.status` `Approved` या `Declined` है; हर संसूचित समस्या को `poa.warnings` में सूचीबद्ध किया गया है। समय-सीमा समाप्त, बेमेल या संदिग्ध दस्तावेज़ भी `status: \"Declined\"` के साथ `200` लौटाता है — केवल HTTP कोड ही नहीं, बल्कि बॉडी का भी निरीक्षण करें। जब `save_api_request=true` हो, तो `request_id` स्थायी सत्र id होती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "यूटिलिटी बिल साफ़ पढ़ा गया, अपेक्षित विवरण की कोई जाँच नहीं",
                    "value": {
                      "request_id": "4b523a8d-ed32-45e4-8aa8-a89eda459d88",
                      "poa": {
                        "issuing_state": "ARG",
                        "document_type": "UTILITY_BILL",
                        "document_subtype": "WATER_BILL",
                        "document_language": "es",
                        "issuer": "Aguas del Norte",
                        "issue_date": "2026-04-10",
                        "expiration_date": null,
                        "poa_address": "AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP: 4400, CAPITAL - SALTA",
                        "poa_formatted_address": "Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina",
                        "poa_parsed_address": {
                          "street_1": "Avenida Monseñor Tavella 1291",
                          "street_2": "b",
                          "city": "Salta",
                          "region": "Salta",
                          "country": "AR",
                          "postal_code": "A4400",
                          "document_location": {
                            "latitude": -24.8208682,
                            "longitude": -65.4130954
                          }
                        },
                        "expected_details_address": null,
                        "expected_details_formatted_address": null,
                        "expected_details_parsed_address": null,
                        "name_on_document": "OESTE EMBOTELLADORA S.A.",
                        "extra_fields": {
                          "bank_account_number": null,
                          "bank_iban": null,
                          "bank_sort_code": null,
                          "bank_routing_number": null,
                          "bank_swift_bic": null,
                          "bank_branch_name": null,
                          "bank_branch_address": null,
                          "document_phone_number": null,
                          "additional_names": [
                            "LA EMBOTELLADORA DEL NORTE SA"
                          ]
                        },
                        "detected_codes": [
                          {
                            "type": "QR_CODE",
                            "page_number": 1,
                            "position": [
                              [
                                820,
                                1120
                              ],
                              [
                                1002,
                                1120
                              ],
                              [
                                1002,
                                1302
                              ],
                              [
                                820,
                                1302
                              ]
                            ],
                            "x": 820,
                            "y": 1120,
                            "width": 182,
                            "height": 182,
                            "page_width": 1190,
                            "page_height": 1684,
                            "raw_payload": "aHR0cHM6Ly9hZ3Vhc2RlbG5vcnRlLmNvbS9mYWN0dXJhLzk5ODgxMQ==",
                            "parsed_payload": "https://aguasdelnorte.com/factura/998811"
                          },
                          {
                            "type": "CODE_128",
                            "page_number": 1,
                            "position": [
                              [
                                112,
                                1480
                              ],
                              [
                                560,
                                1480
                              ],
                              [
                                560,
                                1540
                              ],
                              [
                                112,
                                1540
                              ]
                            ],
                            "x": 112,
                            "y": 1480,
                            "width": 448,
                            "height": 60,
                            "page_width": 1190,
                            "page_height": 1684,
                            "raw_payload": "MDA5OTg4MTEwMDA0Mg==",
                            "parsed_payload": "0099881100042"
                          }
                        ],
                        "status": "Approved",
                        "warnings": []
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:29:02.439655+00:00"
                    }
                  },
                  "Declined - document too old": {
                    "summary": "जारी करने की तिथि अनुमत `poa_document_age_months` से पुरानी है",
                    "value": {
                      "request_id": "f61681b8-9422-4378-ac3e-04c6a247fb45",
                      "poa": {
                        "issuing_state": "ARG",
                        "document_type": "UTILITY_BILL",
                        "document_subtype": "WATER_BILL",
                        "document_language": "es",
                        "issuer": "Aguas del Norte",
                        "issue_date": "2021-02-10",
                        "expiration_date": null,
                        "poa_address": "AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP: 4400, CAPITAL - SALTA",
                        "poa_formatted_address": "Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina",
                        "poa_parsed_address": {
                          "street_1": "Avenida Monseñor Tavella 1291",
                          "street_2": "b",
                          "city": "Salta",
                          "region": "Salta",
                          "country": "AR",
                          "postal_code": "A4400",
                          "document_location": {
                            "latitude": -24.8208682,
                            "longitude": -65.4130954
                          }
                        },
                        "expected_details_address": null,
                        "expected_details_formatted_address": null,
                        "expected_details_parsed_address": null,
                        "name_on_document": "OESTE EMBOTELLADORA S.A.",
                        "extra_fields": {
                          "bank_account_number": null,
                          "bank_iban": null,
                          "bank_sort_code": null,
                          "bank_routing_number": null,
                          "bank_swift_bic": null,
                          "bank_branch_name": null,
                          "bank_branch_address": null,
                          "document_phone_number": null,
                          "additional_names": [
                            "LA EMBOTELLADORA DEL NORTE SA"
                          ]
                        },
                        "status": "Declined",
                        "warnings": [
                          {
                            "risk": "POA_DOCUMENT_EXPIRED",
                            "feature": "PROOF_OF_ADDRESS",
                            "additional_data": {
                              "expiration_reason": "age_window",
                              "max_age_months": 3,
                              "document_subtype": "WATER_BILL",
                              "document_type": "UTILITY_BILL",
                              "issue_date": "2021-02-10"
                            },
                            "log_type": "error",
                            "short_description": "Document expired",
                            "long_description": "The submitted document is older than the maximum accepted age of 3 months from its issue date, which exceeds the acceptable time period for validity."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:23:02.165493+00:00"
                    }
                  },
                  "Declined - name mismatch": {
                    "summary": "`expected_first_name`/`expected_last_name` `name_on_document` से मेल नहीं खाते हैं",
                    "value": {
                      "request_id": "0a7f2f9c-58f1-4b8e-b1e3-2f6f9d4f7a21",
                      "poa": {
                        "issuing_state": "ARG",
                        "document_type": "UTILITY_BILL",
                        "document_subtype": "WATER_BILL",
                        "document_language": "es",
                        "issuer": "Aguas del Norte",
                        "issue_date": "2021-02-10",
                        "expiration_date": null,
                        "poa_address": "AVDA. MONSEÑOR TAVELLA N° 1291, B° VILLA LAVALLE CP: 4400, CAPITAL - SALTA",
                        "poa_formatted_address": "Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina",
                        "poa_parsed_address": {
                          "street_1": "Avenida Monseñor Tavella 1291",
                          "street_2": "b",
                          "city": "Salta",
                          "region": "Salta",
                          "country": "AR",
                          "postal_code": "A4400",
                          "document_location": {
                            "latitude": -24.8208682,
                            "longitude": -65.4130954
                          }
                        },
                        "expected_details_address": null,
                        "expected_details_formatted_address": null,
                        "expected_details_parsed_address": null,
                        "name_on_document": "OESTE EMBOTELLADORA S.A.",
                        "extra_fields": {
                          "bank_account_number": null,
                          "bank_iban": null,
                          "bank_sort_code": null,
                          "bank_routing_number": null,
                          "bank_swift_bic": null,
                          "bank_branch_name": null,
                          "bank_branch_address": null,
                          "document_phone_number": null,
                          "additional_names": [
                            "LA EMBOTELLADORA DEL NORTE SA"
                          ]
                        },
                        "status": "Declined",
                        "warnings": [
                          {
                            "risk": "NAME_MISMATCH_WITH_PROVIDED",
                            "feature": "PROOF_OF_ADDRESS",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Name mismatch with provided information",
                            "long_description": "The full name on the document does not match the name from the user's verified identity documents, or the full name sent by API."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T02:27:21.330172+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "poa": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined"
                          ],
                          "description": "`Approved` जब कोई चेतावनी अस्वीकृति में नहीं बदलती है; अन्यथा `Declined` — `warnings` सूची बताती है कि ऐसा क्यों है।"
                        },
                        "issuing_state": {
                          "type": "string",
                          "nullable": true,
                          "description": "वह देश जिसमें दस्तावेज़ जारी किया गया था, जैसा कि दस्तावेज़ से निकाला गया है — आमतौर पर ISO 3166-1 alpha-3 (उदा. `ARG`)।",
                          "example": "ARG"
                        },
                        "document_type": {
                          "type": "string",
                          "enum": [
                            "UTILITY_BILL",
                            "BANK_STATEMENT",
                            "GOVERNMENT_ISSUED_DOCUMENT",
                            "OTHER_POA_DOCUMENT",
                            "UNKNOWN"
                          ],
                          "description": "पहचानी गई दस्तावेज़ श्रेणी। `UNKNOWN` का अर्थ है कि दस्तावेज़ को स्वीकार्य पते का प्रमाण के रूप में वर्गीकृत नहीं किया जा सका और यह `INVALID_DOCUMENT_TYPE` के साथ स्वतः अस्वीकृत हो जाता है। कभी भी null नहीं — वर्गीकरण विफल होने पर यह `UNKNOWN` पर फ़ॉलबैक हो जाता है।"
                        },
                        "document_subtype": {
                          "type": "string",
                          "description": "`document_type` के भीतर अधिक विस्तृत वर्गीकरण — उदा. `ELECTRICITY_BILL`, `WATER_BILL`, `GAS_BILL`, `INTERNET_BILL`, `PHONE_BILL` (उपयोगिता बिल); `ACCOUNT_STATEMENT`, `CREDIT_CARD_STATEMENT` (बैंक स्टेटमेंट); `TAX_ASSESSMENT`, `RESIDENCY_CERTIFICATE` (सरकारी दस्तावेज़)। जब कोई उपप्रकार निर्धारित नहीं किया जा सका तो `UNKNOWN`। कभी भी null नहीं — वर्गीकरण विफल होने पर `UNKNOWN` पर फ़ॉलबैक होता है।",
                          "example": "WATER_BILL"
                        },
                        "document_language": {
                          "type": "string",
                          "nullable": true,
                          "description": "पहचानी गई दस्तावेज़ भाषा (ISO 639-1)।",
                          "example": "es"
                        },
                        "issuer": {
                          "type": "string",
                          "nullable": true,
                          "description": "कंपनी या संगठन जिसने दस्तावेज़ जारी किया। `null` मान `ISSUER_NOT_IDENTIFIED` जोड़ता है।",
                          "example": "Aguas del Norte"
                        },
                        "issue_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "description": "दस्तावेज़ जारी करने की तिथि (`YYYY-MM-DD`)। `null` जब इसे निकाला नहीं जा सका — इस endpoint पर अनुरोध `UNABLE_TO_EXTRACT_ISSUE_DATE` के साथ अस्वीकृत होता है।",
                          "example": "2021-02-10"
                        },
                        "expiration_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "description": "दस्तावेज़ पर मुद्रित स्पष्ट समाप्ति/वैधता तिथि, जब मौजूद हो। `poa_document_age_months` आयु जाँच से स्वतंत्र।"
                        },
                        "poa_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ पर ठीक वैसा ही मुद्रित पता। `null` होने पर `MISSING_ADDRESS_INFORMATION` के साथ स्वतः अस्वीकृत हो जाता है।"
                        },
                        "poa_formatted_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "`poa_address` का जियोकोडेड, सामान्यीकृत संस्करण।",
                          "example": "Av. Monseñor Tavella 1291 b, A4400 Salta, Argentina"
                        },
                        "poa_parsed_address": {
                          "type": "object",
                          "nullable": true,
                          "description": "दस्तावेज़ के पते का संरचित, जियोकोडेड ब्रेकडाउन। जब पता पार्स नहीं किया जा सका, तब `null`।",
                          "properties": {
                            "street_1": {
                              "type": "string",
                              "nullable": true,
                              "example": "Avenida Monseñor Tavella 1291"
                            },
                            "street_2": {
                              "type": "string",
                              "nullable": true
                            },
                            "city": {
                              "type": "string",
                              "nullable": true,
                              "example": "Salta"
                            },
                            "region": {
                              "type": "string",
                              "nullable": true,
                              "example": "Salta"
                            },
                            "country": {
                              "type": "string",
                              "nullable": true,
                              "description": "ISO 3166-1 alpha-2 देश कोड।",
                              "example": "AR"
                            },
                            "postal_code": {
                              "type": "string",
                              "nullable": true,
                              "example": "A4400"
                            },
                            "document_location": {
                              "type": "object",
                              "nullable": true,
                              "properties": {
                                "latitude": {
                                  "type": "number"
                                },
                                "longitude": {
                                  "type": "number"
                                }
                              },
                              "description": "दस्तावेज़ के पते के जियोकोडेड निर्देशांक।"
                            }
                          }
                        },
                        "expected_details_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "आपके द्वारा भेजे गए `expected_address` का इको, या `null`।"
                        },
                        "expected_details_formatted_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "`expected_address` का जियोकोडेड, सामान्यीकृत संस्करण; प्रदान न किए जाने या जियोकोड करने योग्य न होने पर `null`।"
                        },
                        "expected_details_parsed_address": {
                          "type": "object",
                          "nullable": true,
                          "additionalProperties": true,
                          "description": "`expected_address` के लिए पूर्ण जियोकोडिंग परिणाम (सड़क/शहर/क्षेत्र/देश/डाक कोड के साथ रॉ जियोकोडर आउटपुट और एक `is_verified` फ़्लैग)। जब `expected_address` प्रदान नहीं किया गया था, तब `null`।"
                        },
                        "name_on_document": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ से निकाला गया प्राथमिक धारक का नाम; प्रदान किए जाने पर `expected_first_name`/`expected_last_name` से तुलना की जाती है। इस endpoint पर `null` होने पर `POA_NAME_NOT_DETECTED` के साथ अस्वीकृत कर दिया जाता है।",
                          "example": "OESTE EMBOTELLADORA S.A."
                        },
                        "extra_fields": {
                          "type": "object",
                          "description": "दस्तावेज़-विशिष्ट अतिरिक्त विवरण। बैंक फ़ील्ड बैंक स्टेटमेंट के लिए तब भरे जाते हैं जब वे दस्तावेज़ पर मुद्रित हों; अन्यथा `null`।",
                          "properties": {
                            "bank_account_number": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_iban": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_sort_code": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_routing_number": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_swift_bic": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_branch_name": {
                              "type": "string",
                              "nullable": true
                            },
                            "bank_branch_address": {
                              "type": "string",
                              "nullable": true
                            },
                            "document_phone_number": {
                              "type": "string",
                              "nullable": true,
                              "description": "दस्तावेज़ पर मुद्रित संपर्क फ़ोन नंबर।"
                            },
                            "additional_names": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "दस्तावेज़ पर पाए गए अन्य धारक के नाम (उदा. सह-खाता धारक, पिछले खाते के नाम)।"
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "description": "बिना किसी जोखिम वाली स्वीकृति पर खाली। प्रत्येक प्रविष्टि एक पहचाने गए जोखिम की व्याख्या करती है; `log_type: \"error\"` वाली प्रविष्टियाँ `status` को `Declined` पर सेट करती हैं।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "description": "मशीन-पठनीय जोखिम कोड। हमेशा अस्वीकार किए जाने वाले: `MISSING_ADDRESS_INFORMATION`, `POA_DOCUMENT_EXPIRED`, `INVALID_DOCUMENT_TYPE`, `UNABLE_TO_VALIDATE_DOCUMENT_AGE`, साथ ही `UNABLE_TO_EXTRACT_ISSUE_DATE` और `POA_NAME_NOT_DETECTED` (इस endpoint पर अस्वीकार करने के लिए निर्धारित)। अनुरोध विकल्पों द्वारा नियंत्रित: `NAME_MISMATCH_WITH_PROVIDED` / `ADDRESS_MISMATCH_WITH_PROVIDED` / `POA_COUNTRY_MISMATCH_WITH_PROVIDED` (`poa_address_mismatch_action`), `POOR_DOCUMENT_QUALITY` (इस endpoint द्वारा कभी उत्पन्न नहीं किया जाता) / `DOCUMENT_METADATA_MISMATCH` (`poa_document_issues_action`), `SUSPECTED_DOCUMENT_MANIPULATION` और `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT` (`poa_document_authenticity_action`), `UNSUPPORTED_DOCUMENT_LANGUAGE` (`poa_unsupported_language_action`), `ISSUER_NOT_IDENTIFIED` (`poa_issuer_not_identified_action`)। इस endpoint पर सूचनात्मक: `POA_DOCUMENT_NOT_SUPPORTED_FOR_APPLICATION`, `UNPARSABLE_OR_INVALID_ADDRESS`।",
                                "example": "POA_DOCUMENT_EXPIRED"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "PROOF_OF_ADDRESS"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `PROOF_OF_ADDRESS`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "कुछ जोखिमों के लिए अतिरिक्त संदर्भ — उदा. `POA_DOCUMENT_EXPIRED` में `expiration_reason` (`printed_expiration` या `age_window`), `document_type`, `document_subtype`, और `issue_date` शामिल हैं, साथ ही `printed_expiration` पथ पर `expiration_date` या `age_window` पथ पर `max_age_months`; `SUSPECTED_DOCUMENT_MANIPULATION` में `reason` और `detection_method` शामिल हैं; `POA_DOCUMENT_UNPROVEN_TEXT_REPLACEMENT` में `reason`, `detection_method` (`unproven_text_replacement`), `replaced_text`, `manipulated_regions` और `manipulated_blocks` शामिल हैं। अधिकांश जोखिमों के लिए `null`।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "information"
                                ],
                                "description": "गंभीरता। `error` चेतावनियाँ `status` को `Declined` में बदल देती हैं; `information` प्रविष्टियाँ केवल सलाहकारी होती हैं और अपने आप कभी अस्वीकृत नहीं करती हैं। (इस endpoint द्वारा `warning` उत्पन्न नहीं की जाती है — इसके विकल्प केवल `DECLINE` या `NO_ACTION` स्वीकार करते हैं।)"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        },
                        "detected_codes": {
                          "type": "array",
                          "description": "दस्तावेज़ के प्रत्येक संसाधित पृष्ठ पर पहचाने गए QR कोड और बारकोड। कोई न मिलने पर खाली। पहचाना गया लेकिन डिकोड न किया जा सकने वाला QR कोड `parsed_payload: null` रखता है।",
                          "items": {
                            "$ref": "#/components/schemas/DocumentAIDetectedCode"
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC)।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन या प्रोसेसिंग त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF का मानक एनवेलप (प्रत्येक समस्याग्रस्त फ़ील्ड के लिए संदेशों का एक एरे) लौटाती हैं। एन्क्रिप्टेड-PDF समस्याएं `{\"detail\": ...}` लौटाती हैं। ऐसा दस्तावेज़ जिसे निष्कर्षण पाइपलाइन प्रोसेस नहीं कर सकती, वह `{\"error\": [\"Error extracting POA information\"]}` लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing document": {
                    "summary": "फ़ॉर्म डेटा में `document` शामिल नहीं है",
                    "value": {
                      "document": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/pdf/webp से बाहर है",
                    "value": {
                      "document": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, pdf, webp."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 15 MB की सीमा से अधिक है",
                    "value": {
                      "document": [
                        "File size should not exceed 15 MB"
                      ]
                    }
                  },
                  "Encrypted PDF": {
                    "summary": "आवश्यक पासवर्ड के बिना PDF अपलोड की गई",
                    "value": {
                      "detail": "The PDF is encrypted. Please upload a decrypted PDF or a photo instead."
                    }
                  },
                  "Wrong PDF password": {
                    "summary": "`document_password` PDF को डिक्रिप्ट नहीं करता है",
                    "value": {
                      "detail": "The PDF password is incorrect. Please provide the correct password."
                    }
                  },
                  "Invalid language code": {
                    "summary": "`poa_languages_allowed` में एक असमर्थित कोड शामिल है",
                    "value": {
                      "poa_languages_allowed": [
                        "Invalid language code: 'xx'. Must be one of the supported languages: ['ar', 'bn', 'hy', 'bg', 'bs', 'ca', 'cnr', 'sq', 'zh', 'hr', 'cs', 'da', 'nl', 'en', 'et', 'fi', 'fr', 'ka', 'kk', 'de', 'el', 'he', 'hi', 'hu', 'id', 'it', 'ja', 'ko', 'ky', 'lv', 'lt', 'mk', 'mn', 'ms', 'no', 'fa', 'pl', 'pt', 'ro', 'ru', 'sr', 'sk', 'sl', 'so', 'es', 'sv', 'th', 'tr', 'uk', 'uz', 'vi']."
                      ]
                    }
                  },
                  "Invalid document age value": {
                    "summary": "`poa_document_age_months` मान 1–120 / -1 से बाहर है",
                    "value": {
                      "poa_document_age_months": [
                        "Invalid integer value for 'utility_bill': '999'. Must be -1 (unlimited) or a positive integer between 1 and 120."
                      ]
                    }
                  },
                  "Extraction failure": {
                    "summary": "निष्कर्षण पाइपलाइन द्वारा दस्तावेज़ को प्रोसेस नहीं किया जा सका",
                    "value": {
                      "error": [
                        "Error extracting POA information"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी दस्तावेज़ प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/DocumentProcessingBusy"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/poa/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'document=@./utility-bill.pdf' \\\n  -F 'expected_address=Av. Monseñor Tavella 1291, Salta, Argentina' \\\n  -F 'expected_country=ARG' \\\n  -F 'expected_first_name=Sophia' \\\n  -F 'expected_last_name=Martinez' \\\n  -F 'poa_languages_allowed=en,es' \\\n  -F 'vendor_data=user-123' \\\n  --max-time 45"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.proof_of_address.verify(\n    document=open(\"document.pdf\", \"rb\"),\n    expected_address=\"Av. Monseñor Tavella 1291, Salta, Argentina\",\n    expected_country=\"ARG\",\n    expected_first_name=\"Sophia\",\n    expected_last_name=\"Martinez\",\n    poa_languages_allowed=\"en,es\",\n    save_api_request=True,\n    vendor_data=\"user-123\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.proofOfAddress.verify({\n  document: await fileFromPath(\"document.pdf\"),\n  expected_address: \"Av. Monseñor Tavella 1291, Salta, Argentina\",\n  expected_country: \"ARG\",\n  expected_first_name: \"Sophia\",\n  expected_last_name: \"Martinez\",\n  poa_languages_allowed: \"en,es\",\n  save_api_request: true,\n  vendor_data: \"user-123\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.ProofOfAddress.Verify(ctx, didit.ProofOfAddressVerifyParams{\n\tDocument:            didit.FileFromPath(\"document.pdf\"),\n\tExpectedAddress:     didit.String(\"Av. Monseñor Tavella 1291, Salta, Argentina\"),\n\tExpectedCountry:     didit.String(\"ARG\"),\n\tExpectedFirstName:   didit.String(\"Sophia\"),\n\tExpectedLastName:    didit.String(\"Martinez\"),\n\tPOALanguagesAllowed: didit.String(\"en,es\"),\n\tSaveAPIRequest:      didit.Bool(true),\n\tVendorData:          didit.String(\"user-123\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.ProofOfAddressVerifyParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.proofOfAddress().verify(ProofOfAddressVerifyParams.builder()\n        .document(Path.of(\"document.pdf\"))\n        .expectedAddress(\"Av. Monseñor Tavella 1291, Salta, Argentina\")\n        .expectedCountry(\"ARG\")\n        .expectedFirstName(\"Sophia\")\n        .expectedLastName(\"Martinez\")\n        .poaLanguagesAllowed(\"en,es\")\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->proofOfAddress->verify([\n    'document' => File::fromPath('document.pdf'),\n    'expected_address' => 'Av. Monseñor Tavella 1291, Salta, Argentina',\n    'expected_country' => 'ARG',\n    'expected_first_name' => 'Sophia',\n    'expected_last_name' => 'Martinez',\n    'poa_languages_allowed' => 'en,es',\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.proof_of_address.verify(\n  document: Pathname(\"document.pdf\"),\n  expected_address: \"Av. Monseñor Tavella 1291, Salta, Argentina\",\n  expected_country: \"ARG\",\n  expected_first_name: \"Sophia\",\n  expected_last_name: \"Martinez\",\n  poa_languages_allowed: \"en,es\",\n  save_api_request: true,\n  vendor_data: \"user-123\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.ProofOfAddress.VerifyAsync(new ProofOfAddressVerifyParams\n{\n    Document = FileUpload.FromPath(\"document.pdf\"),\n    ExpectedAddress = \"Av. Monseñor Tavella 1291, Salta, Argentina\",\n    ExpectedCountry = \"ARG\",\n    ExpectedFirstName = \"Sophia\",\n    ExpectedLastName = \"Martinez\",\n    PoaLanguagesAllowed = \"en,es\",\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/document-ai/": {
      "post": {
        "summary": "Document AI (कस्टम फ़ील्ड निष्कर्षण + छेड़छाड़ जांच)",
        "description": "किसी भी सहायक दस्तावेज़ — पेस्लिप, धन का प्रमाण, धन-संपत्ति के स्रोत संबंधी पत्र, कर विवरण, अनुबंध, इनवॉइस — से **आपके** द्वारा निर्धारित फ़ील्ड्स को एक ही कॉल में निकालें। फ़ाइल के साथ `fields` परिभाषा (key, नाम, निष्कर्षण निर्देश, प्रकार) भेजें और टाइप किए गए मान (`text`, `number`, `YYYY-MM-DD` के रूप में `date`), अपेक्षित व्यक्ति या कंपनी के विरुद्ध एक वैकल्पिक नाम-मिलान स्कोर, PDF/EXIF छेड़छाड़ संकेत, एक `Approved`/`Declined`/`In Review` `status`, और पाए गए प्रत्येक मुद्दे को समझाने वाली `warnings` सूची वापस प्राप्त करें। यह होस्ट किए गए Document AI वर्कफ़्लो चरण (देखें `/core-technology/document-ai/overview`) का सर्वर-टू-सर्वर समकक्ष है; यह Didit के डिफ़ॉल्ट निष्कर्षण मॉडल का उपयोग करता है और प्रदाता चयन उपलब्ध नहीं कराता है।\n\n**विलंबता (Latency)।** निष्कर्षण LLM-आधारित है: सामान्य कॉल्स में **5–15 सेकंड** लगते हैं, बहु-पृष्ठ PDF में **~30 सेकंड** तक का समय लग सकता है। **कम से कम 45 सेकंड** का क्लाइंट टाइमआउट कॉन्फ़िगर करें और कॉल पूरा होने से पहले पुनः प्रयास न करें।\n\n**अनुरोध प्रारूप।** केवल `multipart/form-data`। `fields` **एक JSON-एन्कोडेड ऐरे स्ट्रिंग** है (1–30 आइटम, अधिकतम 16 KB); ब्रैकेट-शैली वाले फ़ॉर्म ऐरे को `400` के साथ अस्वीकार कर दिया जाता है। प्रत्येक आइटम `{key, name, instruction, type, required, is_full_name}` है — `key` वह JSON कुंजी है जो आपको वापस मिलती है (`^[a-z0-9_]{1,64}$`, अद्वितीय), `instruction` मॉडल को बताता है कि क्या पढ़ना है, `type` `text` (डिफ़ॉल्ट) | `number` | `date` है, मान न पढ़े जा सकने पर `required` `DOCUMENT_AI_MISSING_REQUIRED_FIELDS` उत्पन्न करता है, और अपेक्षित नाम से तुलना किए जाने वाले मान को चिह्नित करने के लिए अधिकतम एक फ़ील्ड `is_full_name: true` सेट कर सकता है।\n\n**नाम मिलान।** `expected_first_name` + `expected_last_name` (व्यक्ति) **या** `expected_company_name` (+ वैकल्पिक `expected_company_country`) पास करें — दोनों नहीं। `is_full_name` फ़ील्ड के मान (या, जब कोई चिह्नित न हो, तो पहला टेक्स्ट फ़ील्ड जिसकी कुंजी नाम जैसी दिखती है) की फ़ज़ी तुलना की जाती है; दोनों पक्ष मौजूद होने पर `name_match_score` (0–100) और `name_on_document` हमेशा लौटाए जाते हैं, और `document_ai_name_match_score_threshold` (डिफ़ॉल्ट 80) से कम स्कोर `DOCUMENT_AI_NAME_MISMATCH` जोड़ता है, जो `document_ai_name_mismatch_action` द्वारा नियंत्रित होता है।\n\n**निर्णय तर्क।** प्रत्येक जोखिम एक कॉन्फ़िगर करने योग्य कार्रवाई से मैप होता है: `DECLINE` → `status: \"Declined\"`, `REVIEW` → `status: \"In Review\"`, `NO_ACTION` → केवल सूचनात्मक। डिफ़ॉल्ट वर्कफ़्लो चरण को दर्शाते हैं: न पढ़ा जा सकने वाला दस्तावेज़ `REVIEW`, अनुपस्थित आवश्यक फ़ील्ड्स `REVIEW`, संदिग्ध हेरफेर `DECLINE`, नाम बेमेल `NO_ACTION`, असमर्थित फ़ाइल `REVIEW`। जिस दस्तावेज़ को संसाधित नहीं किया जा सकता वह `400` लौटाता है; एक पठनीय लेकिन समस्याग्रस्त दस्तावेज़ `Declined`/`In Review` के साथ `200` लौटाता है — हमेशा केवल HTTP कोड ही नहीं, बल्कि `document_ai.status` और `document_ai.warnings` की भी जांच करें।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक Document AI API क्रेडिट का उपभोग करता है — सूची मूल्य पर **$0.20 प्रति दस्तावेज़**, जिसका भुगतान आपके प्लान क्रेडिट या टॉप-अप बैलेंस से किया जाता है। जब संगठन का बैलेंस कॉल को कवर नहीं कर सकता, तो endpoint किसी भी प्रसंस्करण से पहले `403` लौटाता है। सैंडबॉक्स API कुंजियाँ एक नियतात्मक मॉक रिस्पॉन्स लौटाती हैं और उनसे कोई शुल्क नहीं लिया जाता है।\n\n**स्थायित्व (Persistence)।** `save_api_request=true` (डिफ़ॉल्ट) के साथ कॉल को API-प्रकार के सत्र के रूप में संग्रहीत किया जाता है: दस्तावेज़, निकाले गए मान, फ़ील्ड परिभाषाएँ और नाम-मिलान स्नैपशॉट रखे जाते हैं, सत्र Business Console में दिखाई देता है, और `request_id` `GET /v3/session/{sessionId}/decision/` के साथ काम करता है।",
        "operationId": "post_v3document-ai",
        "x-didit-sdk": {
          "resource": "document_ai",
          "method": "analyze",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "document",
                  "fields"
                ],
                "properties": {
                  "document": {
                    "type": "string",
                    "format": "binary",
                    "description": "रीड किया जाने वाला दस्तावेज़। अनुमत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `pdf`, `webp`, `zip`। अधिकतम अपलोड आकार: **30 MB** (बड़ी फ़ाइलों को `400` के साथ अस्वीकार कर दिया जाता है)। मल्टी-पेज PDF समर्थित हैं (अधिक विलंबता की अपेक्षा करें); एन्क्रिप्टेड PDF को `400` के साथ अस्वीकार कर दिया जाता है। प्रोसेसिंग से पहले छवियों को स्वचालित रूप से कंप्रेस किया जाता है।"
                  },
                  "fields": {
                    "type": "string",
                    "description": "**1–30** फ़ील्ड परिभाषाओं (अधिकतम 16 KB) के साथ एक JSON-एन्कोडेड ऐरे स्ट्रिंग। प्रत्येक आइटम: `key` (आवश्यक, `^[a-z0-9_]{1,64}$`, अद्वितीय — `extracted_data` में लौटाई गई कुंजी), `name` (≤100 वर्ण, संदेशों में दिखाया गया), `instruction` (≤500 वर्ण, मॉडल को क्या पढ़ना चाहिए), `type` (`text` डिफ़ॉल्ट | `number` | `date`), `required` (बूलियन, डिफ़ॉल्ट `false`), `is_full_name` (बूलियन, डिफ़ॉल्ट `false`, प्रति अनुरोध अधिकतम एक)। ब्रैकेट-शैली के फ़ॉर्म ऐरे, अमान्य JSON, डुप्लिकेट कुंजियाँ, या एक से अधिक `is_full_name` किसी भी प्रोसेसिंग या बिलिंग से पहले `400` लौटाते हैं।",
                    "example": "[{\"key\": \"employer_name\", \"name\": \"Employer name\", \"instruction\": \"The employer or company issuing the payslip.\", \"type\": \"text\", \"required\": true, \"is_full_name\": false}, {\"key\": \"employee_name\", \"name\": \"Employee name\", \"instruction\": \"The full name of the employee as printed on the payslip.\", \"type\": \"text\", \"required\": true, \"is_full_name\": true}, {\"key\": \"net_pay\", \"name\": \"Net pay\", \"instruction\": \"The net amount paid to the employee for the period.\", \"type\": \"number\", \"required\": true, \"is_full_name\": false}, {\"key\": \"pay_date\", \"name\": \"Pay date\", \"instruction\": \"The payment date shown on the payslip.\", \"type\": \"date\", \"required\": false, \"is_full_name\": false}]"
                  },
                  "expected_first_name": {
                    "type": "string",
                    "description": "दस्तावेज़ के नाम फ़ील्ड के विरुद्ध सत्यापित करने के लिए पहला नाम (फ़ज़ी मिलान, लिप्यंतरण-सचेत)। `expected_last_name` के साथ उपयोग करें; इसे `expected_company_name` के साथ संयोजित नहीं किया जा सकता है।",
                    "example": "Sophia"
                  },
                  "expected_last_name": {
                    "type": "string",
                    "description": "दस्तावेज़ के नाम फ़ील्ड के विरुद्ध सत्यापित करने के लिए अंतिम नाम, `name_match_score` के लिए `expected_first_name` के साथ संयुक्त।",
                    "example": "Martinez"
                  },
                  "expected_company_name": {
                    "type": "string",
                    "description": "दस्तावेज़ के नाम फ़ील्ड के विरुद्ध सत्यापित करने के लिए कंपनी का नाम (व्यावसायिक दस्तावेज़ों के लिए)। इसे `expected_first_name` / `expected_last_name` के साथ संयोजित नहीं किया जा सकता है (उद्देश्यपूर्ण रूप से कोई उदाहरण मान नहीं है — जनरेट किया गया अनुरोध नमूना व्यक्ति फ़ील्ड का उपयोग करता है; व्यावसायिक दस्तावेज़ को सत्यापित करते समय उन्हें इसके लिए बदलें)।"
                  },
                  "expected_company_country": {
                    "type": "string",
                    "description": "वैकल्पिक ISO 3166-1 alpha-2 देश कोड (दो ASCII अक्षर, उदा. `FR`) जो `expected_company_name` के लिए कंपनी-नाम सामान्यीकरण को ट्यून करता है। केवल `expected_company_name` के साथ उपयोग किया जाता है।"
                  },
                  "document_ai_name_match_score_threshold": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 80,
                    "description": "नाम को मिलान माना जाने के लिए न्यूनतम `name_match_score` (0–100)। कम स्कोर `DOCUMENT_AI_NAME_MISMATCH` जोड़ता है, जो `document_ai_name_mismatch_action` द्वारा नियंत्रित होता है।",
                    "example": 80
                  },
                  "document_ai_unreadable_document_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "REVIEW",
                      "NO_ACTION"
                    ],
                    "default": "REVIEW",
                    "description": "जब दस्तावेज़ से कोई फ़ील्ड नहीं पढ़ा जा सका (`DOCUMENT_AI_UNREADABLE_DOCUMENT`) तो क्या कार्रवाई करें।"
                  },
                  "document_ai_missing_required_fields_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "REVIEW",
                      "NO_ACTION"
                    ],
                    "default": "REVIEW",
                    "description": "जब कम से कम एक `required` फ़ील्ड नहीं पढ़ा जा सका (`DOCUMENT_AI_MISSING_REQUIRED_FIELDS`; `additional_data.missing_fields` उन्हें सूचीबद्ध करता है) तो क्या कार्रवाई करें।"
                  },
                  "document_ai_document_tampering_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "REVIEW",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "जब PDF/EXIF फ़ोरेंसिक्स में हेरफेर का संदेह हो तो क्या कार्रवाई करें — डिजिटल हस्ताक्षर के बाद संशोधित, ज्ञात PDF संपादक, ओवरले-टेक्स्ट हेरफेर, संदिग्ध पुनः एक्सपोर्ट, छवि विसंगतियाँ (`DOCUMENT_AI_SUSPECTED_MANIPULATION`)।"
                  },
                  "document_ai_name_mismatch_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "REVIEW",
                      "NO_ACTION"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब `name_match_score` थ्रेशोल्ड से कम हो तो क्या कार्रवाई करें (`DOCUMENT_AI_NAME_MISMATCH`)।"
                  },
                  "document_ai_unsupported_file_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "REVIEW",
                      "NO_ACTION"
                    ],
                    "default": "REVIEW",
                    "description": "अपलोड के रिक्त होने या प्रोसेस करने योग्य फ़ाइल न होने (`DOCUMENT_AI_UNSUPPORTED_FILE`) पर क्या कार्रवाई की जाए।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "`true` (डिफ़ॉल्ट) होने पर, कॉल को API-प्रकार के सत्र के रूप में बनाए रखता है — Business Console में दृश्यमान, लौटाए गए `request_id` का उपयोग करके `GET /v3/session/{sessionId}/decision/` के माध्यम से प्राप्त करने योग्य, जिसमें अपलोड किया गया दस्तावेज़, निकाले गए मान, फ़ील्ड परिभाषाएँ और नाम-मिलान स्नैपशॉट संग्रहीत होते हैं। `false` होने पर, कुछ भी संग्रहीत नहीं किया जाता है और `request_id` केवल रिस्पॉन्स सहसंबंध के लिए एक अस्थायी UUID होता है; कॉल के लिए बिलिंग अभी भी की जाती है।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी स्ट्रिंग (आपकी आंतरिक उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होती है और रिस्पॉन्स में वापस भेजी जाती है। इसका उपयोग अपने स्वयं के रिकॉर्ड के साथ API कॉल को सहसंबंधित करने और बाद में सत्रों को फ़िल्टर करने के लिए करें।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत वैकल्पिक JSON ऑब्जेक्ट (जब `save_api_request=true`) और रिस्पॉन्स में वापस प्रतिध्वनित होता है। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड (उदा. `metadata={\"flow\":\"onboarding\"}`) के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "onboarding"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "दस्तावेज़ संसाधित। `document_ai.status` `Approved`, `Declined`, या `In Review` है; हर संसूचित समस्या को `document_ai.warnings` में सूचीबद्ध किया गया है। समस्याग्रस्त दस्तावेज़ भी `200` लौटाता है — केवल HTTP कोड ही नहीं, बल्कि बॉडी का भी निरीक्षण करें। जब `save_api_request=true` हो, तो `request_id` स्थायी सत्र id होती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "पेस्लिप स्पष्ट रूप से पढ़ी गई, नाम मेल खा गया",
                    "value": {
                      "request_id": "9d6a3b1e-2f0c-4a8e-9b7d-1c2e3f4a5b6c",
                      "document_ai": {
                        "status": "Approved",
                        "extracted_data": {
                          "employer_name": "Acme Payments Ltd",
                          "employee_name": "Sophia Martinez",
                          "net_pay": 3120.5,
                          "pay_date": "2026-07-31"
                        },
                        "detected_codes": [
                          {
                            "type": "CODE_128",
                            "page_number": 1,
                            "position": [
                              [
                                96,
                                456
                              ],
                              [
                                96,
                                616
                              ],
                              [
                                1012,
                                611
                              ],
                              [
                                1015,
                                456
                              ]
                            ],
                            "x": 96,
                            "y": 456,
                            "width": 919,
                            "height": 160,
                            "page_width": 1200,
                            "page_height": 1700,
                            "raw_payload": "SU5WLTIwMjYtMDA0Mg==",
                            "parsed_payload": "INV-2026-0042"
                          }
                        ],
                        "fields": [
                          {
                            "key": "employer_name",
                            "name": "Employer name",
                            "instruction": "The employer or company issuing the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "employee_name",
                            "name": "Employee name",
                            "instruction": "The full name of the employee as printed on the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": true
                          },
                          {
                            "key": "net_pay",
                            "name": "Net pay",
                            "instruction": "The net amount paid to the employee for the period.",
                            "type": "number",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "pay_date",
                            "name": "Pay date",
                            "instruction": "The payment date shown on the payslip.",
                            "type": "date",
                            "required": false,
                            "is_full_name": false
                          }
                        ],
                        "name_match_score": 100.0,
                        "name_on_document": "Sophia Martinez",
                        "warnings": []
                      },
                      "vendor_data": "user-123",
                      "metadata": {
                        "flow": "onboarding"
                      },
                      "created_at": "2026-08-19T16:40:12.318Z"
                    }
                  },
                  "In Review — missing required field": {
                    "summary": "`net_pay` को पढ़ा नहीं जा सका; डिफ़ॉल्ट कार्रवाई REVIEW",
                    "value": {
                      "request_id": "3f2a9c7b-5d4e-4b1a-8c6f-0e9d8c7b6a5f",
                      "document_ai": {
                        "status": "In Review",
                        "extracted_data": {
                          "employer_name": "Acme Payments Ltd",
                          "employee_name": "Sophia Martinez",
                          "net_pay": null,
                          "pay_date": "2026-07-31"
                        },
                        "detected_codes": [],
                        "fields": [
                          {
                            "key": "employer_name",
                            "name": "Employer name",
                            "instruction": "The employer or company issuing the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "employee_name",
                            "name": "Employee name",
                            "instruction": "The full name of the employee as printed on the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": true
                          },
                          {
                            "key": "net_pay",
                            "name": "Net pay",
                            "instruction": "The net amount paid to the employee for the period.",
                            "type": "number",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "pay_date",
                            "name": "Pay date",
                            "instruction": "The payment date shown on the payslip.",
                            "type": "date",
                            "required": false,
                            "is_full_name": false
                          }
                        ],
                        "name_match_score": 100.0,
                        "name_on_document": "Sophia Martinez",
                        "warnings": [
                          {
                            "risk": "DOCUMENT_AI_MISSING_REQUIRED_FIELDS",
                            "feature": "DOCUMENT_AI",
                            "additional_data": {
                              "missing_fields": [
                                "Net pay"
                              ]
                            },
                            "log_type": "warning",
                            "short_description": "Required fields could not be extracted",
                            "long_description": "One or more fields configured as required could not be extracted from the uploaded document."
                          }
                        ]
                      },
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-08-19T16:41:05.002Z"
                    }
                  },
                  "Declined — suspected manipulation": {
                    "summary": "PDF फोरेंसिक ने एक ज्ञात एडिटर को फ़्लैग किया; डिफ़ॉल्ट कार्रवाई DECLINE",
                    "value": {
                      "request_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
                      "document_ai": {
                        "status": "Declined",
                        "extracted_data": {
                          "employer_name": "Acme Payments Ltd",
                          "employee_name": "Sophia Martinez",
                          "net_pay": 3120.5,
                          "pay_date": "2026-07-31"
                        },
                        "detected_codes": [],
                        "fields": [
                          {
                            "key": "employer_name",
                            "name": "Employer name",
                            "instruction": "The employer or company issuing the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "employee_name",
                            "name": "Employee name",
                            "instruction": "The full name of the employee as printed on the payslip.",
                            "type": "text",
                            "required": true,
                            "is_full_name": true
                          },
                          {
                            "key": "net_pay",
                            "name": "Net pay",
                            "instruction": "The net amount paid to the employee for the period.",
                            "type": "number",
                            "required": true,
                            "is_full_name": false
                          },
                          {
                            "key": "pay_date",
                            "name": "Pay date",
                            "instruction": "The payment date shown on the payslip.",
                            "type": "date",
                            "required": false,
                            "is_full_name": false
                          }
                        ],
                        "name_match_score": null,
                        "name_on_document": "Sophia Martinez",
                        "warnings": [
                          {
                            "risk": "DOCUMENT_AI_SUSPECTED_MANIPULATION",
                            "feature": "DOCUMENT_AI",
                            "additional_data": {
                              "detection_method": "known_editor",
                              "processed_by_known_editor": "ilovepdf"
                            },
                            "log_type": "error",
                            "short_description": "Suspected document manipulation",
                            "long_description": "The system detected signs of potential manipulation or editing in the uploaded document."
                          }
                        ]
                      },
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-08-19T16:42:40.771Z"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "document_ai": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "`Approved` जब कोई चेतावनी अस्वीकृति या समीक्षा में नहीं बदलती है; `Declined` जब कम से कम एक जोखिम `DECLINE` पर मैप होता है; अन्यथा `In Review` जब कम से कम एक जोखिम `REVIEW` पर मैप होता है। `warnings` सूची बताती है कि ऐसा क्यों है।"
                        },
                        "extracted_data": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "अनुरोधित प्रति फ़ील्ड कुंजी एक प्रविष्टि। मान फ़ील्ड `type` के अनुसार टाइप किए जाते हैं — `text` के लिए स्ट्रिंग, `number` के लिए संख्याएं, `date` के लिए `YYYY-MM-DD` स्ट्रिंग — या मान न पढ़े जा सकने पर `null`।",
                          "example": {
                            "employer_name": "Acme Payments Ltd",
                            "employee_name": "Sophia Martinez",
                            "net_pay": 3120.5,
                            "pay_date": "2026-07-31"
                          }
                        },
                        "detected_codes": {
                          "type": "array",
                          "description": "प्रत्येक संसाधित पृष्ठ पर पहचाने गए QR कोड और बारकोड। कोई न मिलने पर खाली। पहचाना गया लेकिन डिकोड न किया जा सकने वाला QR कोड `parsed_payload: null` रखता है।",
                          "items": {
                            "$ref": "#/components/schemas/DocumentAIDetectedCode"
                          }
                        },
                        "fields": {
                          "type": "array",
                          "description": "इस निष्कर्षण के लिए उपयोग की गई सामान्यीकृत फ़ील्ड परिभाषाएँ, जो वापस दी गई हैं (`save_api_request=true` होने पर सत्र के साथ भी संग्रहीत)।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "instruction": {
                                "type": "string"
                              },
                              "type": {
                                "type": "string",
                                "enum": [
                                  "text",
                                  "number",
                                  "date"
                                ]
                              },
                              "required": {
                                "type": "boolean"
                              },
                              "is_full_name": {
                                "type": "boolean"
                              }
                            }
                          }
                        },
                        "name_match_score": {
                          "type": "number",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "`name_on_document` और अपेक्षित व्यक्ति/कंपनी के नाम के बीच फ़ज़ी समानता (0–100)। जब भी नाम मान और अपेक्षित नाम दोनों मौजूद होते हैं, तब लौटाया जाता है — मिलानों **और** बेमेलों पर; अन्यथा `null`।",
                          "example": 96.0
                        },
                        "name_on_document": {
                          "type": "string",
                          "nullable": true,
                          "description": "दस्तावेज़ से लिया गया नाम मान (`is_full_name` फ़ील्ड, या पहला नाम जैसा टेक्स्ट फ़ील्ड) जिसकी अपेक्षित नाम के विरुद्ध तुलना की गई थी। कोई नाम मान उपलब्ध न होने पर `null`।",
                          "example": "Sophia Martinez"
                        },
                        "warnings": {
                          "type": "array",
                          "description": "बिना किसी जोखिम वाली स्वीकृति पर खाली। प्रत्येक प्रविष्टि पहचाने गए एक जोखिम की व्याख्या करती है; `log_type: \"error\"` वाली प्रविष्टियाँ `status` को `Declined` पर सेट करती हैं, `log_type: \"warning\"` वाली प्रविष्टियाँ इसे `In Review` पर सेट करती हैं।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "enum": [
                                  "DOCUMENT_AI_UNREADABLE_DOCUMENT",
                                  "DOCUMENT_AI_MISSING_REQUIRED_FIELDS",
                                  "DOCUMENT_AI_SUSPECTED_MANIPULATION",
                                  "DOCUMENT_AI_NAME_MISMATCH",
                                  "DOCUMENT_AI_UNSUPPORTED_FILE"
                                ],
                                "description": "मशीन-पठनीय जोखिम कोड। प्रत्येक मिलान वाले `document_ai_*_action` अनुरोध विकल्प द्वारा नियंत्रित होता है।",
                                "example": "DOCUMENT_AI_MISSING_REQUIRED_FIELDS"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "DOCUMENT_AI"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `DOCUMENT_AI`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "जोखिम के लिए अतिरिक्त संदर्भ: अनुपलब्ध आवश्यक फ़ील्ड के लिए `{\"missing_fields\": [\"Net pay\"]}`, नाम बेमेल होने पर `{\"name_on_document\", \"score\", \"threshold\"}`, और संदिग्ध हेरफेर के लिए फ़ोरेंसिक निष्कर्ष (`detection_method`, निर्माता/संपादक विवरण)। जोड़ने के लिए कुछ न होने पर `null`।",
                                "example": {
                                  "missing_fields": [
                                    "Net pay"
                                  ]
                                }
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "warning",
                                  "information"
                                ],
                                "description": "कॉन्फ़िगर की गई कार्रवाई से प्राप्त गंभीरता: `error` (DECLINE), `warning` (REVIEW), `information` (NO_ACTION)।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम के लिए मानव-पठनीय एक पंक्ति का विवरण।",
                                "example": "Required fields could not be extracted"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "मानव-पठनीय स्पष्टीकरण, जहाँ प्रासंगिक हो `additional_data` के साथ इंटरपोलेट किया गया।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "अनुरोध कब प्रोसेस किया गया था (UTC, ISO 8601)।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन या प्रोसेसिंग त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF का मानक एनवेलप (प्रत्येक समस्याग्रस्त फ़ील्ड के लिए संदेशों का एक एरे) लौटाती हैं। एन्क्रिप्टेड या पढ़ने में असमर्थ दस्तावेज़ और निष्कर्षण विफलताएं `{\"error\": ...}` लौटाती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing document": {
                    "summary": "फ़ॉर्म डेटा में `document` शामिल नहीं है",
                    "value": {
                      "document": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Invalid fields payload": {
                    "summary": "`fields` एक JSON-एन्कोडेड ऐरे स्ट्रिंग नहीं है",
                    "value": {
                      "fields": [
                        "fields must be a valid JSON array string."
                      ]
                    }
                  },
                  "Duplicate field keys": {
                    "summary": "दो आइटम समान `key` साझा करते हैं",
                    "value": {
                      "fields": [
                        "Every fields item must have a unique key."
                      ]
                    }
                  },
                  "Conflicting expectations": {
                    "summary": "व्यक्ति और कंपनी की अपेक्षाएं एक साथ भेजी गईं",
                    "value": {
                      "non_field_errors": [
                        "Provide either person expected-name fields or expected_company_name, not both."
                      ]
                    }
                  },
                  "Invalid metadata": {
                    "summary": "`metadata` एक JSON ऑब्जेक्ट नहीं है (या इसमें NUL वर्ण शामिल है)",
                    "value": {
                      "metadata": [
                        "Metadata must be a JSON object."
                      ]
                    }
                  },
                  "Oversized vendor_data": {
                    "summary": "`vendor_data` 2,000-बाइट की सीमा से अधिक है",
                    "value": {
                      "vendor_data": [
                        "vendor_data is too long (maximum 2000 bytes)."
                      ]
                    }
                  },
                  "Encrypted PDF": {
                    "summary": "पासवर्ड से सुरक्षित PDF",
                    "value": {
                      "error": "The PDF is encrypted. Please upload a decrypted PDF or a photo instead."
                    }
                  },
                  "Extraction failed": {
                    "summary": "निष्कर्षण पाइपलाइन दस्तावेज़ को प्रोसेस नहीं कर सकी",
                    "value": {
                      "error": [
                        "Error extracting Document AI information"
                      ]
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी — और अनुबंध के आधार पर बिल किए जाने वाले संगठन जिनकी दर सूची में Document AI API की कोई प्रविष्टि नहीं है — किसी भी दस्तावेज़ प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  },
                  "Contract rate missing": {
                    "summary": "अनुबंध के आधार पर बिल किया जाने वाला संगठन जिसकी दर सूची में कोई Document AI API प्रविष्टि नहीं है",
                    "value": {
                      "error": "Document AI API is not included in your contract rate card. Contact support@didit.me to enable it."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/DocumentProcessingBusy"
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.document_ai.analyze(\n    document=open(\"document.pdf\", \"rb\"),\n    fields=\"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.documentAi.analyze({\n  document: await fileFromPath(\"document.pdf\"),\n  fields: \"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.DocumentAi.Analyze(ctx, didit.DocumentAiAnalyzeParams{\n\tDocument: didit.FileFromPath(\"document.pdf\"),\n\tFields:   \"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.DocumentAiAnalyzeParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.documentAi().analyze(DocumentAiAnalyzeParams.builder()\n        .document(Path.of(\"document.pdf\"))\n        .fields(\"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->documentAi->analyze([\n    'document' => File::fromPath('document.pdf'),\n    'fields' => '[{\"key\": \"employer_name\", \"name\": \"Employer name\", \"instruction\": \"The employer or company issuing the payslip.\", \"type\": \"text\", \"required\": true, \"is_full_name\": false}, {\"key\": \"employee_name\", \"name\": \"Employee name\", \"instruction\": \"The full name of the employee as printed on the payslip.\", \"type\": \"text\", \"required\": true, \"is_full_name\": true}, {\"key\": \"net_pay\", \"name\": \"Net pay\", \"instruction\": \"The net amount paid to the employee for the period.\", \"type\": \"number\", \"required\": true, \"is_full_name\": false}, {\"key\": \"pay_date\", \"name\": \"Pay date\", \"instruction\": \"The payment date shown on the payslip.\", \"type\": \"date\", \"required\": false, \"is_full_name\": false}]',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.document_ai.analyze(\n  document: Pathname(\"document.pdf\"),\n  fields: \"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.DocumentAi.AnalyzeAsync(new DocumentAiAnalyzeParams\n{\n    Document = FileUpload.FromPath(\"document.pdf\"),\n    Fields = \"[{\\\"key\\\": \\\"employer_name\\\", \\\"name\\\": \\\"Employer name\\\", \\\"instruction\\\": \\\"The employer or company issuing the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"employee_name\\\", \\\"name\\\": \\\"Employee name\\\", \\\"instruction\\\": \\\"The full name of the employee as printed on the payslip.\\\", \\\"type\\\": \\\"text\\\", \\\"required\\\": true, \\\"is_full_name\\\": true}, {\\\"key\\\": \\\"net_pay\\\", \\\"name\\\": \\\"Net pay\\\", \\\"instruction\\\": \\\"The net amount paid to the employee for the period.\\\", \\\"type\\\": \\\"number\\\", \\\"required\\\": true, \\\"is_full_name\\\": false}, {\\\"key\\\": \\\"pay_date\\\", \\\"name\\\": \\\"Pay date\\\", \\\"instruction\\\": \\\"The payment date shown on the payslip.\\\", \\\"type\\\": \\\"date\\\", \\\"required\\\": false, \\\"is_full_name\\\": false}]\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/aml/": {
      "post": {
        "summary": "AML स्क्रीनिंग (स्टैंडअलोन)",
        "operationId": "post_v3aml",
        "x-didit-sdk": {
          "resource": "aml",
          "method": "screen",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी, 255 वर्णों तक। उसी अनुरोध बॉडी के साथ उसी कुंजी का पुन: उपयोग करने पर दूसरी स्क्रीनिंग चलाए या उसका बिल लिए बिना मूल रिस्पॉन्स वापस मिलता है। भिन्न बॉडी के साथ कुंजी का पुन: उपयोग करने पर `409` मिलता है।",
            "schema": {
              "type": "string",
              "maxLength": 255
            }
          }
        ],
        "description": "एक ही कॉल में किसी व्यक्ति या कंपनी को PEP, प्रतिबंध, चेतावनी/वॉचलिस्ट, और प्रतिकूल मीडिया डेटासेट के विरुद्ध स्क्रीन करें。\n\n**दो-स्कोर मॉडल।** प्रत्येक हिट में एक `match_score` (0–100, पहचान का विश्वास) और एक `risk_score` (0–100, निकाय का जोखिम) होता है। जिन हिट्स का `match_score` `aml_match_score_threshold` (डिफ़ॉल्ट **93**) से कम होता है, उन्हें `review_status: \"False Positive\"` के रूप में टैग किया जाता है और जोखिम के उद्देश्यों के लिए अनदेखा कर दिया जाता है; शेष हिट्स में से उच्चतम `risk_score` `aml.score` बन जाता है। अंतिम `aml.status` आपके थ्रेशोल्ड का पालन करता है: `score` > `aml_score_review_threshold` (डिफ़ॉल्ट **100**) → `Declined`; `score` > `aml_score_approve_threshold` (डिफ़ॉल्ट **80**) → `In Review`; अन्यथा `Approved`। जब भी `score` गैर-शून्य हो और approve थ्रेशोल्ड से अधिक या उसके बराबर हो, तो एक `POSSIBLE_MATCH_FOUND` चेतावनी जोड़ी जाती है (ठीक 0 का स्कोर कभी चेतावनी नहीं देता)।\n\n**मिलान स्कोर वेट।** `aml_name_weight` + `aml_dob_weight` + `aml_country_weight` का योग ठीक 100 होना चाहिए (डिफ़ॉल्ट 60/25/15)। अनुरोध से अनुपस्थित घटकों को फिर से सामान्य (re-normalize) कर दिया जाता है; एक मेल खाने वाला `document_number` गोल्डन की के रूप में कार्य करता है जो `match_score` को ओवरराइड करके 100 कर देता है।\n\n**लेटेंसी।** सामान्य स्क्रीनिंग आमतौर पर कुछ सेकंड में पूरी हो जाती है। `include_adverse_media=true` के साथ API प्रतिकूल मीडिया संवर्धन की प्रतीक्षा करता है (शुरुआती ~5 s का पॉज़ और साथ ही ~25 s तक का पोलिंग) — **कम से कम 60 सेकंड** का क्लाइंट टाइमआउट कॉन्फ़िगर करें।\n\n**पर्सिस्टेंस।** `save_api_request` डिफ़ॉल्ट रूप से **true** होता है: स्क्रीनिंग को एक सत्र के रूप में संग्रहीत किया जाता है (`request_id` `GET /v3/session/{sessionId}/decision/` के साथ काम करता है), यह कंसोल में दिखाई देता है, एक `status.updated` webhook ट्रिगर होता है, और हिट की समीक्षा स्थितियों को बाद में अपडेट किया जा सकता है। `save_api_request=false` के साथ कुछ भी संग्रहीत नहीं किया जाता है और `request_id` एक अस्थायी कोरिलेशन ID होता है। `include_ongoing_monitoring=true` प्रोफ़ाइल को फिर से स्क्रीन करता रहता है और इसके लिए `save_api_request=true` आवश्यक होता है (`400` के साथ लागू किया गया)।\n\n**आइडेम्पोटेंसी।** टाइमआउट या अस्थायी त्रुटि के बाद पुनः प्रयास करते समय `Idempotency-Key` हेडर भेजें। कुंजी आपके एप्लिकेशन और सटीक अनुरोध बॉडी तक सीमित होती है। पहला पूरा हुआ अनुरोध अपने रिस्पॉन्स को संग्रहीत करता है; बाद के समान पुनः प्रयास वही रिस्पॉन्स लौटाते हैं और किसी अन्य AML स्क्रीनिंग को न तो चलाते हैं और न ही उसका बिल बनाते हैं। यदि मूल अनुरोध अभी भी चल रहा है, तो उसी कुंजी के साथ बाद में पुनः प्रयास करें। यदि उसी कुंजी का पुनः उपयोग किसी भिन्न बॉडी के साथ किया जाता है, तो API `409` लौटाता है।\n\n**बिलिंग।** पहली सफल स्क्रीनिंग के बाद एक AML API क्रेडिट चार्ज किया जाता है। दोबारा चलाए गए आइडेम्पोटेंट रिस्पॉन्स पर दोबारा शुल्क नहीं लिया जाता है; अपर्याप्त बैलेंस होने पर किसी भी नई स्क्रीनिंग से पहले `403` लौटता है।\n\n**सैंडबॉक्स।** सैंडबॉक्स एप्लिकेशन से कुंजियाँ स्क्रीनिंग और बिलिंग को पूरी तरह से छोड़ देती हैं और एक मॉक परिणाम लौटाती हैं — शून्य हिट के साथ `Approved`, जब तक कि आप `sandbox_scenario` पास न करें। `save_api_request` लाइव कुंजियों की तरह ही काम करता है, इसलिए सहेजी गई सैंडबॉक्स स्क्रीनिंग को `GET /v3/session/{sessionId}/decision/` और `GET /v3/session/{sessionId}/generate-pdf/` के माध्यम से प्राप्त किया जा सकता है।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "full_name"
                ],
                "properties": {
                  "full_name": {
                    "type": "string",
                    "minLength": 2,
                    "description": "स्क्रीन किए जाने वाले व्यक्ति या कंपनी का पूरा नाम। न्यूनतम **2 वर्ण** - स्क्रीनिंग प्रदाता की अपनी न्यूनतम सीमा। कोई भी स्क्रीनिंग चलने से पहले इस फ़ील्ड पर एक छोटा या खाली नाम `400` लौटाता है, इसलिए कुछ भी बिल नहीं किया जाता है।",
                    "example": "Antonio Ejemplo Modelo"
                  },
                  "entity_type": {
                    "type": "string",
                    "enum": [
                      "person",
                      "company"
                    ],
                    "default": "person",
                    "description": "स्क्रीन करने के लिए निकाय का प्रकार। डिफ़ॉल्ट रूप से `person`।"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "description": "जन्म तिथि (व्यक्तियों के लिए) या निगमन तिथि (कंपनियों के लिए), `YYYY-MM-DD`। DOB वेट के माध्यम से मिलान की सटीकता में सुधार करता है।",
                    "example": "1972-02-29"
                  },
                  "nationality": {
                    "type": "string",
                    "description": "ISO 3166-1 **alpha-2** देश कोड (उदाहरण के लिए `ES`)। अमान्य कोड `400` लौटाते हैं। देश के वेटेज के माध्यम से मिलान परिशुद्धता में सुधार करता है।",
                    "example": "ES"
                  },
                  "document_number": {
                    "type": "string",
                    "description": "पहचान दस्तावेज़ संख्या। भारित नहीं — यह गोल्डन की के रूप में कार्य करता है: एक सटीक मिलान हिट के `match_score` को 100 में बदल देता है, जबकि एक पूर्ण बेमेल इसे दंडित करता है। स्क्रीनिंग प्रदाता को खोज फ़िल्टर के रूप में केवल तभी भेजा जाता है जब यह **2-50 वर्ण** का हो; उस सीमा से बाहर के मान को स्वीकार और संग्रहीत किया जाता है, और स्क्रीनिंग अभी भी चलती है और उसका बिल लिया जाता है, बस इसे दस्तावेज़ संख्या द्वारा सीमित नहीं किया जाता है।"
                  },
                  "aml_score_approve_threshold": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 80,
                    "description": "जोखिम स्कोर थ्रेशोल्ड जिस पर या जिसके नीचे परिणाम `Approved` होता है। `aml_score_review_threshold` से ≤ होना चाहिए (अन्यथा `400`)।"
                  },
                  "aml_score_review_threshold": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 100,
                    "description": "जोखिम स्कोर थ्रेशोल्ड जिसके ऊपर परिणाम `Declined` होता है। दो थ्रेशोल्ड के बीच के स्कोर `In Review` उत्पन्न करते हैं।"
                  },
                  "aml_name_weight": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 60,
                    "description": "प्रति-हिट मिलान स्कोर में नाम समानता का भार। तीनों भारों का योग ठीक 100 होना चाहिए (अन्यथा `400`)।"
                  },
                  "aml_dob_weight": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 25,
                    "description": "प्रति-हिट मिलान स्कोर में जन्म तिथि का भार।"
                  },
                  "aml_country_weight": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 15,
                    "description": "प्रति-हिट मिलान स्कोर में देश/राष्ट्रीयता का भार।"
                  },
                  "aml_match_score_threshold": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 93,
                    "description": "प्रति-हिट कटऑफ़: इससे कम `match_score` वाले हिट `False Positive` हैं (जोखिम मूल्यांकन से बाहर रखे गए); इसके बराबर या अधिक स्कोर वाले `Unreviewed` संभावित मिलान हैं।"
                  },
                  "include_adverse_media": {
                    "type": "boolean",
                    "default": false,
                    "description": "नकारात्मक कवरेज के लिए समाचार मीडिया में भी खोजें। परिणाम एकत्र होने के दौरान ~30 सेकंड तक की लेटेंसी जुड़ती है — ≥60 सेकंड के क्लाइंट टाइमआउट का उपयोग करें।"
                  },
                  "include_ongoing_monitoring": {
                    "type": "boolean",
                    "default": false,
                    "description": "इस प्रोफ़ाइल की पुनः स्क्रीनिंग जारी रखें और webhook के माध्यम से परिवर्तनों को पुश करें। `save_api_request=true` आवश्यक है (अन्यथा `400`)।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "स्क्रीनिंग को एक सत्र के रूप में बनाए रखें (कंसोल दृश्यता, निर्णय endpoint, webhooks, हिट समीक्षा)। स्टेटलेस जाँच के लिए `false` पर सेट करें।"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "स्क्रीन किए गए उपयोगकर्ता के लिए आपका पहचानकर्ता; वापस दोहराया जाता है और सत्र के साथ संग्रहीत किया जाता है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "अनुरोध के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।"
                  },
                  "sandbox_scenario": {
                    "type": "string",
                    "description": "केवल-सैंडबॉक्स परिदृश्य स्लग। केवल तब स्वीकार किया जाता है जब API कुंजी सैंडबॉक्स-मोड एप्लिकेशन से संबंधित हो; लाइव एप्लिकेशन्स पर अस्वीकृत। एक स्टैंडअलोन स्क्रीनिंग में आर्म करने के लिए कोई सत्र नहीं होता है, इसलिए स्लग स्वयं स्क्रीनिंग अनुरोध पर जाता है: `decline_aml_hit` एक प्रोडक्शन-आकार का हिट लौटाता है और स्क्रीनिंग को `Declined` के रूप में तय करता है, `review_aml_possible_match` इसे `In Review` के रूप में तय करता है, और ऐसा परिदृश्य जो किसी भी AML परिणाम को आर्म नहीं करता है, वह स्क्रीनिंग को क्लीन छोड़ देता है। परिदृश्य कैटलॉग को GET /v1/sandbox/scenarios/ पर या [Sandbox & Test Data](/hi/integration/sandbox-testing) में देखें।",
                    "example": "decline_aml_hit"
                  }
                }
              },
              "example": {
                "full_name": "Antonio Ejemplo Modelo",
                "entity_type": "person",
                "date_of_birth": "1972-02-29",
                "nationality": "ES",
                "include_adverse_media": false,
                "vendor_data": "user-1234"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/aml/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -H 'Idempotency-Key: aml-user-1234-2026-08-20' \\\n  -d '{\n    \"full_name\": \"Antonio Ejemplo Modelo\",\n    \"entity_type\": \"person\",\n    \"date_of_birth\": \"1972-02-29\",\n    \"nationality\": \"ES\",\n    \"include_adverse_media\": false,\n    \"vendor_data\": \"user-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.aml.screen(\n    full_name=\"Antonio Ejemplo Modelo\",\n    entity_type=\"person\",\n    date_of_birth=\"1972-02-29\",\n    nationality=\"ES\",\n    include_adverse_media=False,\n    vendor_data=\"user-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.aml.screen({\n  full_name: \"Antonio Ejemplo Modelo\",\n  entity_type: \"person\",\n  date_of_birth: \"1972-02-29\",\n  nationality: \"ES\",\n  include_adverse_media: false,\n  vendor_data: \"user-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.AML.Screen(ctx, didit.AMLScreenParams{\n\tFullName:            \"Antonio Ejemplo Modelo\",\n\tEntityType:          didit.Some(didit.AMLScreenParamsEntityType(\"person\")),\n\tDateOfBirth:         didit.String(\"1972-02-29\"),\n\tNationality:         didit.String(\"ES\"),\n\tIncludeAdverseMedia: didit.Bool(false),\n\tVendorData:          didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport me.didit.Didit;\nimport me.didit.types.AmlScreenParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.aml().screen(AmlScreenParams.builder()\n        .fullName(\"Antonio Ejemplo Modelo\")\n        .entityType(AmlScreenParams.EntityType.of(\"person\"))\n        .dateOfBirth(LocalDate.parse(\"1972-02-29\"))\n        .nationality(\"ES\")\n        .includeAdverseMedia(false)\n        .vendorData(\"user-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->aml->screen([\n    'full_name' => 'Antonio Ejemplo Modelo',\n    'entity_type' => 'person',\n    'date_of_birth' => '1972-02-29',\n    'nationality' => 'ES',\n    'include_adverse_media' => false,\n    'vendor_data' => 'user-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.aml.screen(\n  full_name: \"Antonio Ejemplo Modelo\",\n  entity_type: \"person\",\n  date_of_birth: \"1972-02-29\",\n  nationality: \"ES\",\n  include_adverse_media: false,\n  vendor_data: \"user-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Aml.ScreenAsync(new AmlScreenParams\n{\n    FullName = \"Antonio Ejemplo Modelo\",\n    EntityType = new AmlScreenParamsEntityType(\"person\"),\n    DateOfBirth = \"1972-02-29\",\n    Nationality = \"ES\",\n    IncludeAdverseMedia = false,\n    VendorData = \"user-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "स्क्रीनिंग पूरी हुई। `aml.status` आपके थ्रेशोल्ड को दर्शाता है; आंतरिक समावेशन सीमा पर या उससे ऊपर का प्रत्येक हिट `aml.hits` में अपने पहचान संबंधी `match_score`, निकाय के `risk_score`, और मिलान की व्याख्या करने वाले `score_breakdown` के साथ सूचीबद्ध होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "aml": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "In Review",
                            "Declined"
                          ],
                          "description": "`Declined` जब `score` > `aml_score_review_threshold`; `In Review` जब `score` > `aml_score_approve_threshold`; अन्यथा `Approved` (जिसमें तब भी शामिल है जब कोई स्कोर उपलब्ध न हो)।"
                        },
                        "total_hits": {
                          "type": "integer",
                          "description": "`hits` में प्रविष्टियों की संख्या।"
                        },
                        "entity_type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "company"
                          ],
                          "description": "स्क्रीन किए गए निकाय प्रकार का इको।"
                        },
                        "hits": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "description": "एक स्क्रीनिंग हिट। `match_score` (0–100) पहचान विश्वास को मापता है — `aml_match_score_threshold` से कम वाले हिट्स को `review_status: \"False Positive\"` के रूप में टैग किया जाता है और जोखिम मूल्यांकन से बाहर रखा जाता है; इस पर या इससे ऊपर वाले हिट्स `\"Unreviewed\"` संभावित मिलान होते हैं। `risk_score` (0–100) यह मापता है कि मेल खाने वाली इकाई कितनी जोखिम भरी है और शीर्ष-स्तरीय `aml.score` को निर्धारित करता है।",
                            "properties": {
                              "id": {
                                "type": "string",
                                "nullable": true,
                                "description": "हिट के लिए Didit का स्थायी आइडेंटिफ़ायर: `hit_` के बाद 24 हेक्साडेसिमल वर्ण। विषय की दोबारा स्क्रीनिंग होने पर भी वही मिलान की गई एंटिटी समान `id` बनाए रखती है। इसे AML हिट समीक्षा endpoints पर `hit_id` के रूप में पास करें।"
                              },
                              "url": {
                                "type": "string",
                                "nullable": true,
                                "description": "मिलान की गई इकाई के लिए स्रोत URL, जब उपलब्ध हो।"
                              },
                              "match": {
                                "type": "boolean",
                                "nullable": true,
                                "description": "लीगेसी सटीक-मिलान फ़्लैग। `match_score` + `review_status` को प्राथमिकता दें।"
                              },
                              "score": {
                                "type": "number",
                                "nullable": true,
                                "description": "0–1 सीमा में अप्रचलित भारित मिलान स्कोर। इसके बजाय `match_score` का उपयोग करें।"
                              },
                              "match_score": {
                                "type": "number",
                                "nullable": true,
                                "description": "पहचान संबंधी विश्वास (0–100)। फ़ॉल्स पॉज़िटिव को संभावित मिलानों से अलग करने के लिए `aml_match_score_threshold` के विरुद्ध तुलना की जाती है।"
                              },
                              "risk_score": {
                                "type": "number",
                                "nullable": true,
                                "description": "इकाई जोखिम स्कोर (0–100)। गैर-फ़ॉल्स पॉज़िटिव हिट्स के बीच उच्चतम `risk_score` शीर्ष-स्तरीय `aml.score` बन जाता है।"
                              },
                              "target": {
                                "type": "boolean",
                                "nullable": true
                              },
                              "caption": {
                                "type": "string",
                                "nullable": true,
                                "description": "मिलान की गई एंटिटी का डिस्प्ले नाम।"
                              },
                              "datasets": {
                                "type": "array",
                                "nullable": true,
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "PEP",
                                    "PEP Level 1",
                                    "PEP Level 2",
                                    "PEP Level 3",
                                    "PEP Level 4",
                                    "Sanctions",
                                    "Adverse Media",
                                    "Warnings and Regulatory Enforcement",
                                    "Fitness and Probity",
                                    "SIP",
                                    "SIE",
                                    "Insolvency",
                                    "Other Lists"
                                  ]
                                },
                                "description": "वे जोखिम श्रेणियां जिनमें निकाय सूचीबद्ध है: `PEP` (अपने स्तर के साथ, `PEP Level 1` से `PEP Level 4`), `Sanctions`, `Adverse Media`, `Warnings and Regulatory Enforcement`, `Fitness and Probity`, `SIP`, `SIE` या `Insolvency`। जब निकाय का स्रोत इनमें से किसी भी श्रेणी का उल्लेख नहीं करता है, तो `Other Lists`।"
                              },
                              "features": {
                                "type": "object",
                                "nullable": true
                              },
                              "properties": {
                                "type": "object",
                                "nullable": true,
                                "description": "इकाई प्रोफ़ाइल: `name`, `alias`, `notes`, `gender`, `birthDate`, `birthPlace`, `nationality`, `position`, और अन्य बायोग्राफिकल ऐरे (प्रत्येक में null मान हो सकता है)।"
                              },
                              "rca_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "संबंधित करीबी सहयोगी का नाम जिसके माध्यम से इकाई का मिलान किया गया था, जब हिट एक RCA हो।"
                              },
                              "pep_matches": {
                                "type": "array",
                                "description": "इस हिट का समर्थन करने वाली PEP सूची प्रविष्टियाँ।",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "list_name": {
                                      "type": "string"
                                    },
                                    "publisher": {
                                      "type": "string"
                                    },
                                    "source_url": {
                                      "type": "string"
                                    },
                                    "description": {
                                      "type": "string"
                                    },
                                    "matched_name": {
                                      "type": "string"
                                    },
                                    "pep_position": {
                                      "type": "string"
                                    },
                                    "date_of_birth": {
                                      "type": "string"
                                    },
                                    "place_of_birth": {
                                      "type": "string"
                                    },
                                    "aliases": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "education": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "other_sources": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              },
                              "sanction_matches": {
                                "type": "array",
                                "items": {
                                  "type": "object"
                                },
                                "description": "इस हिट का समर्थन करने वाली प्रतिबंध सूची प्रविष्टियां (`pep_matches` के समान बैकिंग-लिस्ट आकार, साथ ही प्रतिबंध-विशिष्ट फ़ील्ड्स)।"
                              },
                              "warning_matches": {
                                "type": "array",
                                "items": {
                                  "type": "object"
                                },
                                "description": "इस हिट का समर्थन करने वाली चेतावनी/वॉचलिस्ट प्रविष्टियाँ।"
                              },
                              "adverse_media_matches": {
                                "type": "array",
                                "description": "प्रतिकूल मीडिया लेख। केवल तभी पॉप्युलेट होता है जब `include_adverse_media=true` हो।",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "headline": {
                                      "type": "string"
                                    },
                                    "summary": {
                                      "type": "string"
                                    },
                                    "sentiment": {
                                      "type": "string"
                                    },
                                    "sentiment_score": {
                                      "type": "number"
                                    },
                                    "source_url": {
                                      "type": "string"
                                    },
                                    "thumbnail": {
                                      "type": "string",
                                      "nullable": true
                                    },
                                    "country": {
                                      "type": "string",
                                      "nullable": true
                                    },
                                    "author_name": {
                                      "type": "string",
                                      "nullable": true
                                    },
                                    "publication_date": {
                                      "type": "string",
                                      "nullable": true
                                    },
                                    "adverse_keywords": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "other_sources": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              },
                              "adverse_media_details": {
                                "type": "object",
                                "nullable": true,
                                "description": "इकाई के लिए एकत्रित प्रतिकूल मीडिया सेंटिमेंट (`sentiment`, `sentiment_score`, `adverse_keywords` आवृत्ति मैप)। केवल तभी पॉप्युलेट होता है जब `include_adverse_media=true` हो।"
                              },
                              "first_seen": {
                                "type": "string",
                                "format": "date-time",
                                "nullable": true,
                                "description": "जब निकाय पहली बार डेटासेट में दिखाई दिया।"
                              },
                              "last_seen": {
                                "type": "string",
                                "format": "date-time",
                                "nullable": true,
                                "description": "सबसे हालिया डेटासेट रीफ़्रेश जिसमें इकाई शामिल थी।"
                              },
                              "linked_entities": {
                                "type": "array",
                                "description": "मिलान की गई इकाई के ज्ञात संबंध (परिवार, सहयोगी, कंपनियाँ)।",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "relation": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "status": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "details": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "active": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      }
                                    }
                                  }
                                }
                              },
                              "risk_view": {
                                "type": "object",
                                "nullable": true,
                                "description": "प्रति-आयाम जोखिम विवरण (`crimes`, `countries`, `categories`, `custom_list`), प्रत्येक में `score`, `weightage`, `risk_level`, और एक `risk_scores` मैप के साथ।"
                              },
                              "additional_information": {
                                "type": "object",
                                "nullable": true,
                                "description": "फ़्री-फ़ॉर्म अतिरिक्त संदर्भ, उदा. एक `flag_summary` ऐरे जो बताता है कि निकाय को फ़्लैग क्यों किया गया है।"
                              },
                              "review_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "False Positive",
                                  "Unreviewed",
                                  "Confirmed Match",
                                  "Inconclusive"
                                ],
                                "description": "`False Positive` — `match_score` `aml_match_score_threshold` से कम, जोखिम मूल्यांकन से बाहर रखा गया। `Unreviewed` — संभावित मिलान जो समीक्षा की प्रतीक्षा कर रहा है। `Confirmed Match` / `Inconclusive` — सहेजे गए सत्रों पर समीक्षक द्वारा (Business Console के माध्यम से) मैन्युअल रूप से सेट किया गया; वह समीक्षा क्षमता इस विशिष्टता का हिस्सा नहीं है।"
                              },
                              "score_breakdown": {
                                "type": "object",
                                "nullable": true,
                                "description": "`match_score` की गणना कैसे की गई। नाम, जन्म तिथि और देश प्रत्येक `<component>_score` × `<component>_weight_normalized` अंक प्रदान करते हैं; जब स्क्रीन किए गए डेटा से कोई घटक गायब होता है, तो भार को पुनः सामान्यीकृत किया जाता है। दस्तावेज़ संख्या भारित नहीं है — यह 'गोल्डन की' के रूप में कार्य करती है: `MATCH` स्कोर को 100 पर ओवरराइड करता है, `NEUTRAL` इसे अपरिवर्तित छोड़ देता है, `HARD_MISMATCH` पेनल्टी लागू करता है।",
                                "properties": {
                                  "name_score": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "रॉ नाम समानता (0–100)।"
                                  },
                                  "name_weight": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "कॉन्फ़िगर किया गया नाम वेट (`aml_name_weight`)।"
                                  },
                                  "name_weight_normalized": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "पुनः सामान्यीकरण के बाद नाम का वेट (0–100)।"
                                  },
                                  "name_contribution": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "`total_score` में नाम द्वारा योगदान किए गए अंक।"
                                  },
                                  "dob_score": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "जन्म तिथि स्कोर उसके भार के प्रतिशत के रूप में (−100 से 100)।"
                                  },
                                  "dob_weight": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "कॉन्फ़िगर किया गया DOB वेट (`aml_dob_weight`)।"
                                  },
                                  "dob_weight_normalized": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "पुनः सामान्यीकरण के बाद जन्म तिथि भार (0–100)।"
                                  },
                                  "dob_contribution": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "`total_score` में जन्म तिथि द्वारा योगदान किए गए अंक।"
                                  },
                                  "country_score": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "देश का स्कोर इसके भार के प्रतिशत के रूप में (−100 से 100)।"
                                  },
                                  "country_weight": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "कॉन्फ़िगर किया गया देश वेट (`aml_country_weight`)।"
                                  },
                                  "country_weight_normalized": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "पुनः सामान्यीकरण के बाद देश का भार (0–100)।"
                                  },
                                  "country_contribution": {
                                    "type": "number",
                                    "nullable": true,
                                    "description": "`total_score` में देश द्वारा योगदान किए गए अंक।"
                                  },
                                  "document_number_match_type": {
                                    "type": "string",
                                    "nullable": true,
                                    "enum": [
                                      "MATCH",
                                      "NEUTRAL",
                                      "HARD_MISMATCH"
                                    ],
                                    "description": "दस्तावेज़ संख्या तुलना के लिए गोल्डन-की परिणाम।"
                                  },
                                  "document_number_effect": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "दस्तावेज़-संख्या प्रभाव का मानव-पठनीय विवरण।"
                                  },
                                  "total_score": {
                                    "type": "integer",
                                    "nullable": true,
                                    "description": "अंतिम भारित मिलान स्कोर (0–100) — `match_score` को दर्शाता है।"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "score": {
                          "type": "number",
                          "nullable": true,
                          "description": "समग्र AML जोखिम स्कोर (0–100): उन हिट्स में उच्चतम `risk_score` जो फ़ॉल्स पॉज़िटिव नहीं हैं। दो थ्रेशोल्ड के माध्यम से `status` तय करता है।"
                        },
                        "screened_data": {
                          "type": "object",
                          "description": "जो स्क्रीन किया गया था उसका इको: `full_name`, `date_of_birth`, `nationality`, `document_number` (अनुपस्थित फ़ील्ड `null` हैं)।",
                          "properties": {
                            "full_name": {
                              "type": "string"
                            },
                            "date_of_birth": {
                              "type": "string",
                              "nullable": true
                            },
                            "nationality": {
                              "type": "string",
                              "nullable": true
                            },
                            "document_number": {
                              "type": "string",
                              "nullable": true
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "feature": {
                                "type": "string",
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की।"
                              },
                              "risk": {
                                "type": "string",
                                "description": "मशीन-पठनीय जोखिम पहचानकर्ता।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "description": "उपलब्ध होने पर, चेतावनी के लिए अतिरिक्त संदर्भ।"
                              },
                              "log_type": {
                                "type": "string",
                                "description": "`warning`, `information`, या `error` — जोखिम ने परिणाम को कैसे प्रभावित किया।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "एक पंक्ति का मानव-पठनीय सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "पूर्ण मानव-पठनीय विवरण।"
                              }
                            }
                          },
                          "description": "जब भी `score` गैर-शून्य और ≥ `aml_score_approve_threshold` होता है, तो इसमें एक `POSSIBLE_MATCH_FOUND` चेतावनी शामिल होती है (बिल्कुल 0 का स्कोर कभी चेतावनी नहीं देता); अन्यथा खाली रहता है।"
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "No hits (Approved)": {
                    "summary": "क्लीन स्क्रीनिंग — शून्य हिट्स",
                    "value": {
                      "request_id": "d27c5509-7a66-45a9-b05e-d69d9f4c336a",
                      "aml": {
                        "status": "Approved",
                        "total_hits": 0,
                        "entity_type": "person",
                        "hits": [],
                        "score": 0,
                        "screened_data": {
                          "full_name": "Maximilian Mustermann-Doe",
                          "date_of_birth": "1992-03-14",
                          "nationality": "DE",
                          "document_number": null
                        },
                        "warnings": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": {
                        "internal_ref": "abc-123"
                      },
                      "created_at": "2026-06-11T10:21:07.013938+00:00"
                    }
                  },
                  "PEP hit (Approved — risk below approve threshold)": {
                    "summary": "एक संभावित PEP मिलान; जोखिम स्कोर 73 डिफ़ॉल्ट स्वीकृति थ्रेशोल्ड 80 के नीचे रहता है",
                    "value": {
                      "request_id": "0b7e7a3e-65a1-4f3d-9c7a-1de2f9a40111",
                      "aml": {
                        "status": "Approved",
                        "total_hits": 1,
                        "entity_type": "person",
                        "hits": [
                          {
                            "id": "hit_7c1e9a40b2d35f86e0a4c912",
                            "url": "https://news.example.org/articles/sample",
                            "match": false,
                            "score": 0.93,
                            "match_score": 93.0,
                            "risk_score": 73.0,
                            "target": null,
                            "caption": "Antonio Ejemplo Modelo",
                            "datasets": [
                              "PEP Level 1",
                              "PEP"
                            ],
                            "features": null,
                            "rca_name": "",
                            "first_seen": "2026-01-07T00:00:00",
                            "last_seen": "2026-01-07T00:00:00",
                            "review_status": "Unreviewed",
                            "properties": {
                              "name": [
                                "Antonio Ejemplo Modelo",
                                "Antonio Ejemplo"
                              ],
                              "alias": [
                                "Antonio Ejemplo Modelo",
                                "Ejemplo Modelo, Pedro"
                              ],
                              "notes": [
                                "Prime Minister of Spain"
                              ],
                              "gender": [
                                "male"
                              ],
                              "birthDate": [
                                "1972-02-29"
                              ],
                              "birthPlace": [
                                "Madrid, Spain"
                              ],
                              "nationality": null,
                              "position": null
                            },
                            "risk_view": {
                              "crimes": {
                                "score": 0.0,
                                "weightage": 20,
                                "risk_level": "Low",
                                "risk_scores": {}
                              },
                              "countries": {
                                "score": 9.64,
                                "weightage": 30,
                                "risk_level": "Low",
                                "risk_scores": {
                                  "Spain": 25.71
                                }
                              },
                              "categories": {
                                "score": 62.5,
                                "weightage": 50,
                                "risk_level": "High",
                                "risk_scores": {
                                  "PEP": 100.0,
                                  "PEP Level 1": 100.0
                                }
                              },
                              "custom_list": {}
                            },
                            "score_breakdown": {
                              "name_score": 89,
                              "name_weight": 60,
                              "name_weight_normalized": 60.0,
                              "name_contribution": 53.4,
                              "dob_score": 100,
                              "dob_weight": 25,
                              "dob_weight_normalized": 25.0,
                              "dob_contribution": 25.0,
                              "country_score": 100,
                              "country_weight": 15,
                              "country_weight_normalized": 15.0,
                              "country_contribution": 15.0,
                              "document_number_match_type": "NEUTRAL",
                              "document_number_effect": "No document number provided for screening",
                              "total_score": 93
                            },
                            "pep_matches": [
                              {
                                "aliases": [],
                                "education": [],
                                "list_name": "Presidency of the Government of Spain",
                                "publisher": "Presidency of the Government of Spain",
                                "source_url": "https://news.example.org/articles/sample",
                                "description": "The Presidency of the Government is the central institutional body in Spain that supports the Prime Minister and coordinates the general action of the central government.",
                                "matched_name": "Antonio Ejemplo Modelo",
                                "pep_position": "",
                                "date_of_birth": "1972-02-29",
                                "other_sources": [],
                                "place_of_birth": "Madrid, Spain"
                              }
                            ],
                            "sanction_matches": [],
                            "warning_matches": [],
                            "adverse_media_matches": [],
                            "adverse_media_details": null,
                            "linked_entities": [
                              {
                                "name": [
                                  "Maria Begona Gomez Fernandez"
                                ],
                                "active": [],
                                "status": [],
                                "details": [],
                                "relation": [
                                  "spouse"
                                ]
                              }
                            ],
                            "additional_information": {
                              "flag_summary": [
                                "Antonio Ejemplo Modelo has been flagged as a Level 1 Politically Exposed Person (PEP) from Spain, serving as the President of the Government of Spain."
                              ]
                            }
                          }
                        ],
                        "score": 73.0,
                        "screened_data": {
                          "full_name": "Pedro Sanchez Perez-Castejon",
                          "date_of_birth": "1972-02-29",
                          "nationality": "ES",
                          "document_number": null
                        },
                        "warnings": []
                      },
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-06-11T10:23:44.812000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF का मानक एनवेलप लौटाती हैं (प्रति समस्याग्रस्त फ़ील्ड संदेशों का एक array); क्रॉस-फ़ील्ड नियम (वेट सम, थ्रेशोल्ड क्रम, बिना सहेजे निगरानी) `{\"error\": [...]}` लौटाते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing full_name": {
                    "summary": "`full_name` ही एकमात्र आवश्यक फ़ील्ड है",
                    "value": {
                      "full_name": [
                        "This field is required."
                      ]
                    }
                  },
                  "Short full_name": {
                    "summary": "`full_name` कम से कम 2 वर्णों का होना चाहिए",
                    "value": {
                      "full_name": [
                        "Ensure this field has at least 2 characters."
                      ]
                    }
                  },
                  "Invalid nationality": {
                    "summary": "`nationality` ISO 3166-1 alpha-2 होनी चाहिए",
                    "value": {
                      "nationality": [
                        "Invalid ISO 3166-1 alpha-2 country code."
                      ]
                    }
                  },
                  "Weights do not sum to 100": {
                    "summary": "`aml_name_weight` + `aml_dob_weight` + `aml_country_weight` ≠ 100",
                    "value": {
                      "error": [
                        "AML weights must sum to 100. Current sum: 90 (name: 50, dob: 25, country: 15)"
                      ]
                    }
                  },
                  "Thresholds out of order": {
                    "summary": "स्वीकृति थ्रेशोल्ड समीक्षा थ्रेशोल्ड से अधिक है",
                    "value": {
                      "error": [
                        "Approve threshold (90.0) cannot be greater than review threshold (80.0)"
                      ]
                    }
                  },
                  "Monitoring without saving": {
                    "summary": "`save_api_request=false` के साथ `include_ongoing_monitoring=true`",
                    "value": {
                      "error": [
                        "Ongoing monitoring can only be enabled when the API request is saved."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या प्रदाता कॉल से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/face-search/": {
      "post": {
        "summary": "चेहरा खोज",
        "description": "अपने एप्लिकेशन के चेहरा खोज इंडेक्स के विरुद्ध किसी चेहरे की इमेज (1:N) खोजें — सत्यापन सत्रों से नामांकित चेहरे, सहेजे गए स्टैंडअलोन API कॉल, सीधे उपयोगकर्ता-प्रोफ़ाइल फ़ेस अपलोड, और आपकी ब्लॉक/अनुमति सूचियाँ — और रैंक किए गए समानता मिलान के साथ-साथ ब्लॉकलिस्ट और डुप्लिकेट चेतावनियाँ प्राप्त करें।\n\n**यह कैसे काम करता है।** `user_image` में पाए गए सबसे बड़े चेहरे को एम्बेड किया जाता है और आपके एप्लिकेशन के दायरे में इंडेक्स के विरुद्ध खोजा जाता है। समानता न्यूनतम सीमा से ऊपर के अधिकतम **5 मिलान**, `matches` में लौटाए जाते हैं, प्रत्येक में `similarity_percentage`, मूल सत्र (`session_id`, `session_number`, `status`, `vendor_data`), उस सत्र के दस्तावेज़ सत्यापन के दौरान निकाले गए `user_details`, `is_blocklisted` / `is_allowlisted` फ़्लैग, और एक `source` डिस्क्रिमिनेटर (`session`, `imported`, या `list_entry`) शामिल होता है।\n\n- `search_type=most_similar` (डिफ़ॉल्ट) प्रत्येक नामांकित चेहरे को समानता के आधार पर रैंक करता है — डिडुप्लीकेशन और धोखाधड़ी-रिंग जांच के लिए इसका उपयोग करें।\n- `search_type=blocklisted_or_approved` उम्मीदवारों को ब्लॉकलिस्ट किए गए चेहरों, अनुमति सूची वाले चेहरों, स्वीकृत सत्रों के चेहरों और इंपोर्ट किए गए उपयोगकर्ता-प्रोफ़ाइल चेहरों तक सीमित करता है, जिसमें ब्लॉकलिस्ट की गई प्रविष्टियों को पहले रैंक किया जाता है — जब प्राथमिक लक्ष्य ब्लॉकलिस्ट स्क्रीनिंग हो तो इसका उपयोग करें।\n\n`status` केवल तभी `Declined` होता है जब `FACE_IN_BLOCKLIST` या `POSSIBLE_FACE_IN_BLOCKLIST` चेतावनी ट्रिगर होती है; `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` (`information`) और `MULTIPLE_FACES_DETECTED` (`warning`) कभी भी अस्वीकृत नहीं करते हैं। Passive Liveness के विपरीत, यह endpoint समान `vendor_data` वाले पिछले सत्रों को मिलान से बाहर **नहीं** करता है। एक पैसिव-लाइवनेस विश्लेषण आंतरिक रूप से भी चलता है और स्थायी सत्र के साथ संग्रहीत होता है, लेकिन इसका परिणाम इस रिस्पॉन्स का हिस्सा नहीं है।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक Face Search API क्रेडिट की खपत करता है (आपके प्लान क्रेडिट या टॉप-अप बैलेंस से भुगतान किया जाता है)। अपर्याप्त बैलेंस किसी भी इमेज प्रोसेसिंग से पहले `403` लौटाता है।\n\n**सत्र स्थायित्व और चेहरा नामांकन (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` होता है, तो कॉल को एक API-प्रकार के सत्र के रूप में बनाए रखा जाता है (Business Console, लौटाए गए `request_id` के माध्यम से `GET /v3/session/{sessionId}/decision/`, `status.updated` webhook) और खोजे गए चेहरे को आपके चेहरा खोज इंडेक्स में नामांकित किया जाता है। Face Search कॉल द्वारा नामांकित चेहरों को भविष्य के Face Search परिणामों से बाहर रखा जाता है, ताकि बार-बार की जाने वाली खोजें कभी एक-दूसरे से मेल न खाएं। जब `false` होता है, तो कॉल वन-शॉट होती है: कुछ भी संग्रहीत नहीं किया जाता है, चेहरा नामांकित नहीं होता है, और `match_image_url` मान डाउनलोड करने योग्य URL के बजाय आंतरिक स्टोरेज पथ होते हैं।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत रूप से संरचित इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload लौटाता है, कोई सत्र स्थायी नहीं होता है, और कोई क्रेडिट खपत नहीं होता है।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` हेडर में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं — यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 requests/min का साझा राइट बजट; इससे अधिक होने पर `429` मिलता है।",
        "operationId": "post_v3face-search",
        "x-didit-sdk": {
          "resource": "face_search",
          "method": "search",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "user_image"
                ],
                "properties": {
                  "user_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "खोज करने के लिए सामने की ओर चेहरे की इमेज। स्वीकृत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `webp`। अधिकतम अपलोड आकार: **5 MB** (फ़ाइलें इससे बड़ी होने पर `400` के साथ अस्वीकृत कर दी जाती हैं)। प्रोसेसिंग से पहले इमेज स्वचालित रूप से ~0.5 MB तक कंप्रेस की जाती हैं, इसलिए बहुत उच्च रिज़ॉल्यूशन सटीकता में सुधार नहीं करते हैं। इमेज में कम से कम एक डिटेक्ट किया जा सकने वाला चेहरा होना चाहिए — अन्यथा endpoint `400` लौटाता है। जब कई चेहरे मौजूद होते हैं, तो सबसे बड़े चेहरे की खोज की जाती है और `MULTIPLE_FACES_DETECTED` चेतावनी जोड़ी जाती है।"
                  },
                  "search_type": {
                    "type": "string",
                    "default": "most_similar",
                    "enum": [
                      "most_similar",
                      "blocklisted_or_approved"
                    ],
                    "description": "सर्च नीति। `most_similar` (डिफ़ॉल्ट) आपके एप्लिकेशन में प्रत्येक नामांकित चेहरे को समानता के आधार पर रैंक करता है। `blocklisted_or_approved` उम्मीदवारों को ब्लॉकलिस्ट किए गए चेहरों, अनुमति प्राप्त चेहरों, स्वीकृत सत्रों के चेहरों और इंपोर्ट किए गए उपयोगकर्ता-प्रोफ़ाइल चेहरों तक सीमित करता है — जिसमें ब्लॉकलिस्ट की गई प्रविष्टियों को सबसे पहले रैंक किया जाता है।",
                    "example": "most_similar"
                  },
                  "rotate_image": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो सेवा इनपुट के 90-डिग्री घुमावों का प्रयास करती है और उस ओरिएंटेशन का उपयोग करती है जिससे सबसे अच्छा फ़ेस डिटेक्शन प्राप्त होता है। तब उपयोगी होता है जब EXIF ओरिएंटेशन गायब हो। विलंबता जोड़ता है।",
                    "example": false
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "जब `true` (डिफ़ॉल्ट) होता है, तो कॉल को API-प्रकार के सत्र के रूप में सुरक्षित रखा जाता है, `status.updated` webhook उत्सर्जित किया जाता है, `match_image_url` मानों को प्री-साइन किया जाता है, और खोजे गए चेहरे को आपके चेहरा खोज इंडेक्स में नामांकित किया जाता है (चेहरा खोज नामांकन भविष्य की खोजों से बाहर रखे जाते हैं)। जब `false` होता है, तो खोज वन-शॉट होती है — कोई सत्र संग्रहीत नहीं किया जाता है और चेहरा नामांकित नहीं किया जाता है।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी पहचानकर्ता (आपकी उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होता है और वापस भेजा जाता है। यह खोज परिणामों से समान-उपयोगकर्ता के चेहरों को बाहर नहीं करता है।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत (जब `save_api_request=true`) और वापस लौटाया जाने वाला वैकल्पिक JSON ऑब्जेक्ट। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "dedup_check"
                    }
                  }
                }
              },
              "example": {
                "user_image": "(binary JPEG/PNG selfie)",
                "search_type": "most_similar",
                "rotate_image": false,
                "save_api_request": true,
                "vendor_data": "user-123",
                "metadata": {
                  "flow": "dedup_check"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "चेहरा खोज पूर्ण। `face_search.matches` समानता के क्रम में अधिकतम 5 समान चेहरों को रखता है; एक खाली ऐरे का अर्थ है कि किसी भी नामांकित चेहरे ने समानता की न्यूनतम सीमा को पार नहीं किया। `status` केवल ब्लॉकलिस्ट हिट पर ही `Declined` होता है — अकेले डुप्लिकेट मिलान `Approved` लौटाते हैं, इसलिए केवल `status` ही नहीं, बल्कि `matches` और `warnings` की भी जांच करें। जब `save_api_request=true` हो, तो `request_id` सुरक्षित रखा गया सत्र आईडी होता है। प्रत्येक मिलान में `source` (`session`, `imported`, `list_entry`, या `retained_template`), `vendor_user_id`, और `biometric_template_id` होता है; एक `retained_template` मिलान स्रोत सत्र के हटाए जाने के बाद रखे गए छवि-मुक्त बायोमेट्रिक टेम्पलेट से आता है और इसमें सत्र फ़ील्ड, `match_image_url`, और `user_details`, `null` होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Blocklist hit (Declined)": {
                    "summary": "चेहरा ब्लॉकलिस्ट किए गए चेहरे से मेल खाता है",
                    "value": {
                      "request_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
                      "face_search": {
                        "status": "Declined",
                        "total_matches": 1,
                        "matches": [
                          {
                            "session_id": "882c42d5-8a4d-4d20-8080-a22f57822c86",
                            "session_number": 323442,
                            "similarity_percentage": 99.99,
                            "source": "session",
                            "vendor_data": "user-1",
                            "verification_date": "2025-01-01T00:00:00Z",
                            "user_details": {
                              "full_name": "Jane Marie Doe",
                              "document_type": "ID",
                              "document_number": "X1234567"
                            },
                            "match_image_url": "https://<media-host>/face/3f6a1c2e/reference.jpg",
                            "status": "Approved",
                            "is_blocklisted": true,
                            "is_allowlisted": false,
                            "api_service": null,
                            "vendor_user_id": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f",
                            "biometric_template_id": null
                          }
                        ],
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                40,
                                40,
                                120,
                                120
                              ],
                              "confidence": 0.732973
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [
                          {
                            "risk": "FACE_IN_BLOCKLIST",
                            "feature": "LIVENESS",
                            "additional_data": {
                              "blocklisted_session_id": "882c42d5-8a4d-4d20-8080-a22f57822c86",
                              "blocklisted_session_number": 323442,
                              "api_service": null
                            },
                            "log_type": "error",
                            "short_description": "Face in blocklist",
                            "long_description": "The system identified a face in the blocklist, which means the face is not allowed to be verified."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  },
                  "Duplicate found (Approved)": {
                    "summary": "चेहरा पहले ही किसी अन्य स्वीकृत सत्र में दिखाई दे चुका है — केवल सूचनात्मक, कोई अस्वीकृति नहीं",
                    "value": {
                      "request_id": "5e0c3a1f-7b2d-4c8e-9f10-2a3b4c5d6e7f",
                      "face_search": {
                        "status": "Approved",
                        "total_matches": 1,
                        "matches": [
                          {
                            "session_id": "1f2e3d4c-5b6a-7980-1122-334455667788",
                            "session_number": 1024,
                            "similarity_percentage": 87.42,
                            "source": "session",
                            "vendor_data": "user-9",
                            "verification_date": "2025-11-20T09:15:00Z",
                            "user_details": null,
                            "match_image_url": "https://<media-host>/face/9c8b7a6d/reference.jpg",
                            "status": "Approved",
                            "is_blocklisted": false,
                            "is_allowlisted": false,
                            "api_service": "PASSIVE_LIVENESS",
                            "vendor_user_id": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f",
                            "biometric_template_id": null
                          }
                        ],
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                40,
                                40,
                                120,
                                120
                              ],
                              "confidence": 0.732973
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [
                          {
                            "risk": "DUPLICATED_FACE",
                            "feature": "LIVENESS",
                            "additional_data": {
                              "duplicated_session_id": "1f2e3d4c-5b6a-7980-1122-334455667788",
                              "duplicated_session_number": 1024,
                              "api_service": "PASSIVE_LIVENESS"
                            },
                            "log_type": "information",
                            "short_description": "Duplicated face from other approved session",
                            "long_description": "The system identified a duplicated face from another approved session, requiring further investigation."
                          }
                        ]
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  },
                  "No matches (Approved)": {
                    "summary": "नामांकित कोई भी चेहरा समानता की न्यूनतम सीमा से अधिक नहीं था",
                    "value": {
                      "request_id": "9d8c7b6a-5f4e-3d2c-1b0a-998877665544",
                      "face_search": {
                        "status": "Approved",
                        "total_matches": 0,
                        "matches": [],
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                40,
                                40,
                                120,
                                120
                              ],
                              "confidence": 0.732973
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": []
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "face_search": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined"
                          ],
                          "description": "`Declined` केवल तब जब कोई `FACE_IN_BLOCKLIST` या `POSSIBLE_FACE_IN_BLOCKLIST` चेतावनी ट्रिगर हुई हो। डुप्लिकेट मिलान और एकाधिक-चेहरे वाली चेतावनियाँ कभी भी अस्वीकृत नहीं करती हैं।"
                        },
                        "total_matches": {
                          "type": "integer",
                          "description": "`matches` में प्रविष्टियों की संख्या (0–5)।",
                          "example": 1
                        },
                        "matches": {
                          "type": "array",
                          "maxItems": 5,
                          "description": "आपके चेहरा खोज इंडेक्स से अधिकतम 5 चेहरे जो समानता थ्रेशोल्ड से अधिक हैं, समानता के आधार पर क्रमबद्ध (जब `search_type=blocklisted_or_approved` हो तो ब्लॉकलिस्ट की गई प्रविष्टियों को पहले स्थान पर रखा जाता है)। जब कोई नामांकित चेहरा पर्याप्त रूप से समान न हो तो यह खाली होता है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "session_id": {
                                "type": "string",
                                "format": "uuid",
                                "nullable": true,
                                "description": "उस सत्यापन सत्र का Id जिससे मिलान किया गया चेहरा संबंधित है। `null` जब `source`, `imported`, `list_entry` या `retained_template` हो।",
                                "example": "882c42d5-8a4d-4d20-8080-a22f57822c86"
                              },
                              "session_number": {
                                "type": "integer",
                                "nullable": true,
                                "description": "Business Console में दिखाई गई मानव-पठनीय सत्र संख्या। गैर-सत्र मिलानों के लिए `null`।",
                                "example": 323442
                              },
                              "similarity_percentage": {
                                "type": "number",
                                "format": "float",
                                "minimum": 0,
                                "maximum": 100,
                                "description": "प्रस्तुत चेहरे और मिलान किए गए चेहरे के बीच समानता (0–100)।",
                                "example": 99.99
                              },
                              "source": {
                                "type": "string",
                                "enum": [
                                  "session",
                                  "imported",
                                  "list_entry",
                                  "retained_template"
                                ],
                                "description": "मिलान किए गए चेहरे को कहाँ से एनरोल किया गया था: `session` — एक सत्यापन सत्र या सहेजी गई स्वतंत्र API कॉल; `imported` — सीधे उपयोगकर्ता प्रोफ़ाइल पर अपलोड किया गया चेहरा; `list_entry` — आपकी सूचियों में से किसी एक से जुड़ा चेहरा; `retained_template` — उपयोगकर्ता पर संग्रहीत एक छवि-मुक्त बायोमेट्रिक टेम्पलेट, जो `/v3/biometric-templates/` के अंतर्गत सूचीबद्ध है।"
                              },
                              "vendor_data": {
                                "type": "string",
                                "nullable": true,
                                "description": "आयातित और बनाए रखे गए टेम्पलेट चेहरों के लिए मिलान किए गए सत्र या लिंक किए गए User का `vendor_data`।",
                                "example": "user-1"
                              },
                              "vendor_user_id": {
                                "type": "string",
                                "format": "uuid",
                                "nullable": true,
                                "description": "लिंक की गई उपयोगकर्ता id। सूची प्रविष्टियों और बिना उपयोगकर्ता वाले सत्र मिलानों के लिए `null`।",
                                "example": "2f7c1a9e-4b28-4a6d-97f1-83576f80e1b4"
                              },
                              "biometric_template_id": {
                                "type": "string",
                                "format": "uuid",
                                "nullable": true,
                                "description": "प्रतिधारित बायोमेट्रिक टेम्पलेट का Id। केवल तभी सेट किया जाता है जब `source`, `retained_template` हो; अन्यथा `null`।",
                                "example": null
                              },
                              "verification_date": {
                                "type": "string",
                                "format": "date-time",
                                "nullable": true,
                                "description": "मिलान किया गया चेहरा मूल रूप से कब कैप्चर किया गया था, या प्रतिधारित टेम्पलेट कब बनाया गया था (`YYYY-MM-DDThh:mm:ssZ`)। `list_entry` मिलानों के लिए `null`।",
                                "example": "2025-01-01T00:00:00Z"
                              },
                              "user_details": {
                                "type": "object",
                                "nullable": true,
                                "description": "मिलान किए गए सत्र के दस्तावेज़ सत्यापन के दौरान निकाला गया पहचान डेटा। जब मिलान किए गए सत्र में कोई दस्तावेज़ डेटा नहीं होता है (उदा. केवल लाइवनेस वाले सत्र) तो `null` और `retained_template` मिलानों के लिए हमेशा `null`। `source: imported` मिलानों के लिए यह इसके बजाय उपयोगकर्ता प्रोफ़ाइल से भरा जाता है: `full_name` सेट, `document_type`/`document_number` null।",
                                "properties": {
                                  "full_name": {
                                    "type": "string",
                                    "nullable": true,
                                    "example": "Jane Marie Doe"
                                  },
                                  "document_type": {
                                    "type": "string",
                                    "nullable": true,
                                    "example": "ID"
                                  },
                                  "document_number": {
                                    "type": "string",
                                    "nullable": true,
                                    "example": "X1234567"
                                  }
                                }
                              },
                              "match_image_url": {
                                "type": "string",
                                "nullable": true,
                                "description": "`save_api_request=true` होने पर मिलान किए गए चेहरे की संदर्भ छवि का समय-सीमित URL (`https://<media-host>/...`)। `save_api_request=false` होने पर यह एक आंतरिक स्टोरेज पाथ होता है जिसे सीधे डाउनलोड नहीं किया जा सकता। `retained_template` मिलानों के लिए हमेशा `null` क्योंकि बनाए रखे गए टेम्पलेट्स में कोई छवि नहीं होती है।",
                                "example": "https://<media-host>/face/3f6a1c2e/reference.jpg"
                              },
                              "status": {
                                "type": "string",
                                "nullable": true,
                                "description": "मिलान किए गए सत्र की स्थिति (`Approved`, `Declined`, `In Review`, …)। `imported`/`list_entry` मिलानों के लिए `null`।",
                                "example": "Approved"
                              },
                              "is_blocklisted": {
                                "type": "boolean",
                                "description": "`true` जब मिलान किया गया चेहरा आपकी फ़ेस ब्लॉकलिस्ट में हो। कोई भी पर्याप्त रूप से समान ब्लॉकलिस्ट किया गया मिलान खोज को अस्वीकृत कर देता है।"
                              },
                              "is_allowlisted": {
                                "type": "boolean",
                                "description": "`true` जब मिलान किया गया चेहरा आपकी किसी अनुमति सूची (allowlist) में हो। अनुमति सूची में शामिल मिलान डुप्लिकेट चेतावनियों को दबा देते हैं।"
                              },
                              "api_service": {
                                "type": "string",
                                "nullable": true,
                                "description": "तब सेट किया जाता है जब मिलान किया गया चेहरा किसी स्टैंडअलोन API कॉल (उदा. `PASSIVE_LIVENESS`) द्वारा नामांकित किया गया था; नियमित सत्यापन सत्रों और इंपोर्ट किए गए चेहरों के लिए `null`।",
                                "example": null
                              }
                            }
                          }
                        },
                        "user_image": {
                          "type": "object",
                          "description": "सबमिट की गई छवि के लिए चेहरा-पहचान परिणाम। यहाँ की प्रविष्टियों में केवल `bbox` और `confidence` होते हैं।",
                          "properties": {
                            "entities": {
                              "type": "array",
                              "description": "प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि। सबसे बड़े चेहरे की खोज की जाती है।",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "bbox": {
                                    "type": "array",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "minItems": 4,
                                    "maxItems": 4,
                                    "description": "पिक्सल में बाउंडिंग बॉक्स `[x_min, y_min, x_max, y_max]`।",
                                    "example": [
                                      40,
                                      40,
                                      120,
                                      120
                                    ]
                                  },
                                  "confidence": {
                                    "type": "number",
                                    "format": "float",
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "चेहरा-पहचान विश्वास (0–1)।",
                                    "example": 0.732973
                                  }
                                }
                              }
                            },
                            "best_angle": {
                              "type": "integer",
                              "description": "रोटेशन (डिग्री) जिसने चेहरे का सर्वोत्तम डिटेक्शन उत्पन्न किया; केवल तभी गैर-शून्य जब `rotate_image=true` ने ओरिएंटेशन को ठीक किया। इस endpoint पर कभी भी null नहीं (मॉडल द्वारा इसे छोड़े जाने पर डिफ़ॉल्ट रूप से 0)।",
                              "example": 0
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "description": "जोखिम सिग्नल। `FACE_IN_BLOCKLIST` / `POSSIBLE_FACE_IN_BLOCKLIST` (`error`) खोज को अस्वीकार करते हैं; `MULTIPLE_FACES_DETECTED` (`warning`) और `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` (`information`) सलाहकारी हैं।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "enum": [
                                  "MULTIPLE_FACES_DETECTED",
                                  "FACE_IN_BLOCKLIST",
                                  "POSSIBLE_FACE_IN_BLOCKLIST",
                                  "DUPLICATED_FACE",
                                  "POSSIBLE_DUPLICATED_FACE"
                                ],
                                "description": "मशीन-पठनीय जोखिम कोड।"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "LIVENESS"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `LIVENESS`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "`MULTIPLE_FACES_DETECTED` के लिए `null`। ब्लॉकलिस्ट हिट्स में `{blocklisted_session_id, blocklisted_session_number, api_service}` शामिल होते हैं; डुप्लिकेट हिट्स में `{duplicated_session_id, duplicated_session_number, api_service}` शामिल होते हैं, जो पहले मेल खाने वाले सत्र की ओर संकेत करते हैं।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "warning",
                                  "information"
                                ],
                                "description": "गंभीरता। `error` चेतावनियाँ `status` को `Declined` में बदल देती हैं; `warning` और `information` प्रविष्टियाँ केवल सलाहकारी होती हैं और अपने आप कभी अस्वीकृत नहीं करती हैं।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC), उदा. `2026-06-12T01:04:42.763237+00:00`।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। तब लौटाई जाती है जब `user_image` गायब हो, 5 MB से अधिक हो, इसका एक्सटेंशन असमर्थित हो, या जब सबमिट की गई इमेज में **कोई चेहरा डिटेक्ट नहीं होता है**। फ़ील्ड त्रुटियां DRF के `{field: [messages]}` एनवेलप का उपयोग करती हैं; चेहरा डिटेक्शन विफलताएं `{\"error\": ...}` का उपयोग करती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "No face detected": {
                    "summary": "छवि ठीक से डीकोड हो जाती है लेकिन उसमें पता लगाया जा सकने वाला कोई चेहरा नहीं है",
                    "value": {
                      "error": "No face detected in the image"
                    }
                  },
                  "Missing image": {
                    "summary": "`user_image` फ़ॉर्म डेटा में शामिल नहीं है",
                    "value": {
                      "user_image": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp से बाहर है",
                    "value": {
                      "user_image": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, webp."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 5 MB की सीमा से अधिक है",
                    "value": {
                      "user_image": [
                        "File size should not exceed 5 MB"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/face-search/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'user_image=@./selfie.jpg' \\\n  -F 'search_type=most_similar' \\\n  -F 'save_api_request=true' \\\n  -F 'vendor_data=user-123'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.face_search.search(\n    user_image=open(\"user_image.jpg\", \"rb\"),\n    search_type=\"most_similar\",\n    rotate_image=False,\n    save_api_request=True,\n    vendor_data=\"user-123\",\n    metadata={\"flow\": \"dedup_check\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.faceSearch.search({\n  user_image: await fileFromPath(\"user_image.jpg\"),\n  search_type: \"most_similar\",\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"dedup_check\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FaceSearch.Search(ctx, didit.FaceSearchSearchParams{\n\tUserImage:      didit.FileFromPath(\"user_image.jpg\"),\n\tSearchType:     didit.Some(didit.FaceSearchSearchParamsSearchType(\"most_similar\")),\n\tRotateImage:    didit.Bool(false),\n\tSaveAPIRequest: didit.Bool(true),\n\tVendorData:     didit.String(\"user-123\"),\n\tMetadata:       didit.Some(map[string]any{\"flow\": \"dedup_check\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.FaceSearchSearchParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.faceSearch().search(FaceSearchSearchParams.builder()\n        .userImage(Path.of(\"user_image.jpg\"))\n        .searchType(FaceSearchSearchParams.SearchType.of(\"most_similar\"))\n        .rotateImage(false)\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .metadata(Map.of(\"flow\", \"dedup_check\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->faceSearch->search([\n    'user_image' => File::fromPath('user_image.jpg'),\n    'search_type' => 'most_similar',\n    'rotate_image' => false,\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n    'metadata' => ['flow' => 'dedup_check'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.face_search.search(\n  user_image: Pathname(\"user_image.jpg\"),\n  search_type: \"most_similar\",\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"dedup_check\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.FaceSearch.SearchAsync(new FaceSearchSearchParams\n{\n    UserImage = FileUpload.FromPath(\"user_image.jpg\"),\n    SearchType = new FaceSearchSearchParamsSearchType(\"most_similar\"),\n    RotateImage = false,\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n    Metadata = new Dictionary<string, object> { [\"flow\"] = \"dedup_check\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/sessions/": {
      "get": {
        "summary": "फ़िल्टर और पेजिनेशन के साथ सत्यापन सत्रों (KYC और/या KYB) की सूची बनाएं",
        "description": "आपकी API कुंजी द्वारा पहचानी गई एप्लिकेशन के लिए सत्यापन सत्रों की एक पेजिनेटेड सूची लौटाता है, सबसे नए पहले (अवरोही `session_number`)।\n\n**कैनोनिकल URL:** रूट `/v3/sessions/` (ट्रेलिंग स्लैश) है। बिना स्लैश के `/v3/sessions` पर किए गए अनुरोधों को क्वेरी स्ट्रिंग सुरक्षित रखते हुए स्लैश वाले URL पर `301` रीडायरेक्ट प्राप्त होता है; अधिकांश HTTP क्लाइंट GET पर पारदर्शी रूप से इसका पालन करते हैं।\n\n**इस endpoint बनाम webhooks का उपयोग कब करें।** डैशबोर्ड, बैक-ऑफ़िस खोज, मिलान (reconciliation) और बैच एक्सपोर्ट के लिए इस endpoint का उपयोग करें। अलग-अलग सत्यापनों की प्रगति को ट्रैक करने के लिए इसे पोल न करें - इसके बजाय [webhooks](/hi/integration/webhooks) कॉन्फ़िगर करें, जो सत्र के बदलते ही `status.updated` इवेंट पुश करते हैं। किसी एक सत्र के पूर्ण परिणाम के लिए, `GET /v3/session/{sessionId}/decision/` को कॉल करें।\n\n**KYC और KYB सत्र।** `session_kind` यह चुनता है कि किस प्रकार के सत्र सूचीबद्ध किए जाएँ:\n- `user` (डिफ़ॉल्ट) - केवल उपयोगकर्ता सत्यापन (KYC) सत्र। बैकवर्ड-कम्पैटिबल व्यवहार।\n- `business` - केवल व्यवसाय सत्यापन (KYB) सत्र। पंक्तियों का आकार अलग और छोटा होता है (रिस्पॉन्स स्कीमा देखें)।\n- `all` - एक ही रिस्पॉन्स में दोनों प्रकार: समान `limit`/`offset` के लिए KYC पेज और KYB पेज को `results` में संयोजित किया जाता है (पहले KYC पंक्तियाँ), इसलिए एक पेज में `2 x limit` पंक्तियों तक हो सकती हैं। `count` दोनों प्रकारों का योग है और `next`/`previous` KYC-पक्ष के पेजिनेशन को दर्शाते हैं। मिश्रित डेटा के सख्त पेजिनेशन के लिए, `user` और `business` को अलग-अलग कॉल करें।\n\nप्रत्येक पंक्ति में एक `session_kind` डिस्क्रिमिनेटर (`\"user\"` या `\"business\"`) होता है।\n\n**पेजिनेशन।** मानक limit/offset: `limit` (डिफ़ॉल्ट 50) और `offset` (डिफ़ॉल्ट 0), साथ ही `next`/`previous` तैयार पेज URL। KYC पंक्तियों के लिए `count` सटीक होता है। KYB पंक्तियों के लिए `count` की गणना सीमित स्कैन के साथ की जाती है और यह अधिकतम 100 तक सीमित होती है - जब 100 से अधिक मिलान होते हैं तो यह 100 पर ही रहती है, इसलिए `count` से कुल पेजों की गणना करने के बजाय `next` का उपयोग करके (या यह जांच कर कि क्या पूरा पेज वापस आया है) पुनरावृत्ति करें।\n\n**फ़िल्टर सिमेंटिक्स।** सभी फ़िल्टर AND के साथ संयोजित होते हैं और KYC पंक्तियों पर लागू होते हैं। जब `session_kind` का मान `business` या `all` हो, तो KYB पक्ष साझा पैरामीटर `vendor_data`, `status`, `workflow_id`, `country` (रजिस्ट्री-कंपनी देश कोड), `date_from`, `date_to`, `search` (कंपनी का नाम, पंजीकरण संख्या — बिना सेपरेटर के पंजीकरण संख्या टाइप करें, उदाहरण के लिए `DPC001`, न कि `DPC-001` — vendor_data, सत्र संख्या, या सत्र UUID), `warning`, और `organization_name` का पालन करता है; शेष केवल-KYC फ़िल्टर KYB पंक्तियों के लिए अनदेखे कर दिए जाते हैं। कॉमा से अलग किए गए पैरामीटर (`status`, `country`, `document_type`, `region`, `workflow_id`, `document_name`, `warning`, `organization_name`, `session_type`) सूचीबद्ध मानों में से किसी से भी मेल खाते हैं (पैरामीटर के भीतर OR)। `vendor_data` एक सटीक मिलान है - आंशिक मिलान के लिए `search` का उपयोग करें। सूची फ़िल्टर में अज्ञात मान केवल कोई पंक्ति नहीं लौटाते हैं (कोई त्रुटि नहीं); गलत प्रारूप वाले टाइप किए गए मान (`date_from`, `date_to`, `didit_internal_id`, `api_service`, `session_kind`) प्रति-फ़ील्ड त्रुटि ऑब्जेक्ट के साथ `400` लौटाते हैं।\n\n**खोज।** `search` इनपुट के अनुसार अनुकूलित होता है: एक पूर्ण UUID `session_id` खोजता है; अंक (वैकल्पिक `+ - . space` के साथ) सत्र-संख्या उपसर्ग, दस्तावेज़/व्यक्तिगत संख्या, फ़ोन-नंबर उपसर्ग, या `vendor_data` से मेल खाते हैं; `@` वाले मान ईमेल उपसर्गों से मेल खाते हैं; कोई भी अन्य टेक्स्ट नामों (एक्सेंट-असंवेदनशील) और `vendor_data` से मेल खाता है।\n\nकोई निश्चित प्रति-endpoint रेट लिमिट लागू नहीं है, लेकिन सूची की पोलिंग कम ही रखें और रीयल-टाइम अपडेट के लिए webhooks पर भरोसा करें।",
        "operationId": "get_v3_sessions",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "session_kind",
            "in": "query",
            "required": false,
            "description": "किस प्रकार के सत्रों को सूचीबद्ध करना है: `user` (केवल KYC, डिफ़ॉल्ट), `business` (केवल KYB), या `all` (दोनों, संयोजित - मर्ज किए गए पेजिनेशन सिमेंटिक्स के लिए विवरण देखें)। मिलान केस-इनसेंसिटिव है (`BUSINESS` काम करता है); `user`/`business`/`all` के केस वेरिएंट के अलावा कोई भी मान `400` लौटाता है।",
            "schema": {
              "type": "string",
              "enum": [
                "user",
                "business",
                "all"
              ],
              "default": "user"
            },
            "example": "all"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज पंक्तियों की अधिकतम संख्या (`session_kind=all` होने पर प्रति प्रकार)। डिफ़ॉल्ट 50 है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "example": 20
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "पहली लौटाई गई पंक्ति से पहले छोड़ी जाने वाली पंक्तियों की संख्या। डिफ़ॉल्ट रूप से 0 है। रिस्पॉन्स से `next`/`previous` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "example": 20
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "शामिल करने के लिए सत्र स्थितियों की अल्पविराम से अलग की गई सूची, उदाहरण के लिए `Approved,In Review`। मान केस-संवेदनशील हैं; [सत्यापन स्थितियाँ](/hi/integration/verification-statuses) देखें। अज्ञात मान किसी से मेल नहीं खाते हैं।",
            "schema": {
              "type": "string"
            },
            "example": "Approved,In Review"
          },
          {
            "name": "vendor_data",
            "in": "query",
            "required": false,
            "description": "सत्र निर्माण के समय आपके द्वारा भेजे गए `vendor_data` (आपका अपना उपयोगकर्ता/व्यवसाय पहचानकर्ता) पर सटीक-मिलान फ़िल्टर। आंशिक मिलानों के लिए इसके बजाय `search` का उपयोग करें।",
            "schema": {
              "type": "string"
            },
            "example": "your-user-id-123"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "प्रदर्शित किया गया पूरा संदर्भ जैसे `S-0001` (उपयोगकर्ता) या `B-0001` (व्यवसाय) केवल उसी सत्र संख्या और प्रकार से मेल खाता है; शुरुआती शून्य और अक्षरों का केस मिलान को प्रभावित नहीं करते हैं। स्मार्ट फ़्री-टेक्स्ट खोज। एक पूर्ण UUID `session_id` से मेल खाता है; संख्यात्मक इनपुट सत्र-संख्या उपसर्ग, दस्तावेज़/व्यक्तिगत संख्या, फ़ोन उपसर्ग, या `vendor_data` से मेल खाता है; `@` वाला इनपुट ईमेल उपसर्गों से मेल खाता है; अन्य टेक्स्ट नामों (एक्सेंट-असंवेदनशील) और `vendor_data` से मेल खाता है। अंकों वाला फ़्री टेक्स्ट दस्तावेज़/व्यक्तिगत-संख्या खोज फ़ील्ड और सत्र-संख्या उपसर्गों से भी मेल खाता है।",
            "schema": {
              "type": "string"
            },
            "example": "jane doe"
          },
          {
            "name": "workflow_id",
            "in": "query",
            "required": false,
            "description": "अल्पविराम से अलग किए गए वर्कफ़्लो UUID (उन्हें Console में Workflows पेज पर खोजें)। सूची में अमान्य प्रारूप वाले UUID को अनदेखा कर दिया जाता है; यदि कोई भी मान्य नहीं है तो परिणाम रिक्त होता है।",
            "schema": {
              "type": "string"
            },
            "example": "9f9b1234-aaaa-bbbb-cccc-1234567890ab"
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "description": "केवल इस तारीख (UTC) को या उसके बाद बनाए गए सत्र, प्रारूप `YYYY-MM-DD`। अमान्य तारीखें `400` लौटाती हैं।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-06-01"
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "description": "केवल इस तारीख (UTC) तक बनाए गए सत्र, प्रारूप `YYYY-MM-DD`। KYC पंक्तियों के लिए पूरा दिन शामिल है; KYB पंक्तियों के लिए तुलना `created_at <= date_to` (आधी रात) है, इसलिए KYB सत्रों का पूरा दिन शामिल करने के लिए अगले दिन की तारीख का उपयोग करें।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-06-30"
          },
          {
            "name": "tags",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग किए गए टैग id (आपके एप्लिकेशन के `tags`)। उन सत्रों को लौटाता है जिनमें इनमें से कोई भी शामिल है। वे id जो मान्य UUID नहीं हैं, अनदेखे कर दिए जाते हैं, और जब कोई भी मान्य नहीं होता है तो सूची खाली होती है।"
          },
          {
            "name": "decided_from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "ISO 8601 दिनांक-समय। उन सत्रों को लौटाता है जिनकी स्थिति पिछली बार इस समय पर या इसके बाद बदली थी। यह निर्माण समय पर नहीं, बल्कि अंतिम स्थिति परिवर्तन के समय पर फ़िल्टर करता है।"
          },
          {
            "name": "decided_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "ISO 8601 दिनांक-समय (datetime)। उन सत्रों को लौटाता है जिनकी स्थिति पिछली बार इससे पहले बदली थी। हाफ़-ओपन विंडो के लिए `decided_from` के साथ संयोजित करें।"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "description": "कॉमा से अलग किया गया देश फ़िल्टर। KYC पंक्तियों के लिए: पहचान दस्तावेज़ जारीकर्ता राज्य के ISO 3166-1 alpha-3 कोड (उदा. `ESP,USA`), जो राष्ट्रीयता से भिन्न हो सकते हैं। KYB पंक्तियों के लिए: रजिस्ट्री कंपनी का देश कोड।",
            "schema": {
              "type": "string"
            },
            "example": "ESP,USA"
          },
          {
            "name": "document_type",
            "in": "query",
            "required": false,
            "description": "सत्र में सत्यापित कॉमा से अलग किए गए पहचान दस्तावेज़ प्रकार कोड (केवल KYC पंक्तियाँ): `P` (पासपोर्ट), `ID` (पहचान पत्र), `DL` (ड्राइविंग लाइसेंस), `RP` (निवास परमिट), `SSC` (सोशल सिक्योरिटी कार्ड), `HIC` (स्वास्थ्य बीमा कार्ड), `WP` (वर्क परमिट), `TC` (टैक्स कार्ड), `VISA`, `PSC` (पब्लिक सर्विस कार्ड), `BC` (जन्म प्रमाण पत्र), `OTHER`। ध्यान दें कि रिस्पॉन्स फ़ील्ड `document_type` में कोड नहीं, बल्कि प्रदर्शित नाम होता है।",
            "schema": {
              "type": "string"
            },
            "example": "P,ID"
          },
          {
            "name": "document_name",
            "in": "query",
            "required": false,
            "description": "सटीक दस्तावेज़ नाम; कई नाम अल्पविराम से अलग करके भेजे जा सकते हैं, लेकिन मान को अल्पविराम पर केवल तभी विभाजित किया जाता है जब इसमें एक से अधिक ` - ` विभाजक हों (एम्बेडेड अल्पविराम वाले एकल नाम का मिलान पूरा किया जाता है)। नाम वे हैं जिन्हें दस्तावेज़ सत्यापन (आगे या पीछे के भाग) द्वारा पहचाना जाता है, उदाहरण के लिए `Spain - Id Card (2021)`। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string"
            },
            "example": "Spain - Id Card (2021)"
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "description": "कॉमा से अलग किए गए दस्तावेज़ क्षेत्र/राज्य मान (प्रति क्षेत्र जारी किए गए दस्तावेज़ों के लिए, जैसे कि US ड्राइविंग लाइसेंस)। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string"
            },
            "example": "CA,TX"
          },
          {
            "name": "didit_internal_id",
            "in": "query",
            "required": false,
            "description": "एक सत्यापित उपयोगकर्ता के सभी सत्रों को सूचीबद्ध करने के लिए Didit के आंतरिक उपयोगकर्ता पहचानकर्ता (`didit_internal_id` रिस्पॉन्स फ़ील्ड) द्वारा फ़िल्टर करें। एक मान्य UUID होना चाहिए; विकृत मान `400` लौटाते हैं। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147"
          },
          {
            "name": "session_type",
            "in": "query",
            "required": false,
            "description": "अल्पविराम से अलग किए गए सत्र निर्माण चैनल: `API`, `HOSTED`, `MIGRATED`। विशेष मान `ALL` (या पैरामीटर छोड़ना) फ़िल्टर को अक्षम कर देता है। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string"
            },
            "example": "HOSTED"
          },
          {
            "name": "api_service",
            "in": "query",
            "required": false,
            "description": "सेवा द्वारा स्टैंडअलोन API सत्रों को फ़िल्टर करें। अमान्य मान `400` लौटाते हैं। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string",
              "enum": [
                "ID_VERIFICATION",
                "FACE_MATCH",
                "AGE_ESTIMATION",
                "FACE_SEARCH",
                "POA",
                "AML",
                "KYB_REGISTRY",
                "PASSIVE_LIVENESS",
                "DATABASE_VALIDATION",
                "PHONE_VERIFICATION",
                "EMAIL_VERIFICATION"
              ]
            },
            "example": "AML"
          },
          {
            "name": "screened_full_name",
            "in": "query",
            "required": false,
            "description": "AML और डेटाबेस सत्यापन से स्क्रीन किए गए डेटा के भीतर एक्सेंट-असंवेदनशील नाम खोज। जब `api_service=AML` या `api_service=DATABASE_VALIDATION` के साथ जोड़ा जाता है, तो खोज उस सुविधा के स्क्रीन किए गए डेटा तक ही सीमित होती है। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string"
            },
            "example": "Jane Doe"
          },
          {
            "name": "warning",
            "in": "query",
            "required": false,
            "description": "अल्पविराम से अलग किए गए चेतावनी जोखिम कोड; उन सत्रों को लौटाता है जिन्होंने इनमें से किसी को भी ट्रिगर किया है (उदा. `POSSIBLE_FRAUD`)। जोखिम कोड [चेतावनी दस्तावेज़ीकरण](/hi/integration/webhooks) में प्रति सुविधा सूचीबद्ध हैं। KYC पंक्तियों पर और व्यावसायिक चेतावनी कोड के साथ KYB पंक्तियों पर लागू होता है।",
            "schema": {
              "type": "string"
            },
            "example": "POSSIBLE_FRAUD"
          },
          {
            "name": "status_initialized_as_in_review",
            "in": "query",
            "required": false,
            "description": "जब `true` होता है, तो केवल वे सत्र जिनका निर्णय शुरुआत में `In Review` में आया था (मैन्युअल समीक्षा की मात्रा का ऑडिट करने के लिए उपयोगी)। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "is_kyc_to_be_reviewed",
            "in": "query",
            "required": false,
            "description": "`true` उन सत्रों को लौटाता है जिनके दस्तावेज़ सत्यापन को मैन्युअल समीक्षा के लिए फ़्लैग किया गया है; `false` उन सत्रों को लौटाता है जिनके दस्तावेज़ सत्यापन को स्पष्ट रूप से फ़्लैग नहीं किया गया है। अक्षम करने के लिए छोड़ दें। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "euuid",
            "in": "query",
            "required": false,
            "description": "अंतिम उपयोगकर्ता के euuid (सत्यापित करने वाले उपयोगकर्ता को असाइन किया गया UUID, कंसोल डीप लिंक द्वारा उपयोग किया जाता है) द्वारा फ़िल्टर करें। एक मान्य UUID होना चाहिए; गलत प्रारूप वाले मान 400 फ़ील्ड त्रुटि लौटाते हैं। केवल KYC पंक्तियाँ।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "0f8fad5b-d9cb-469f-a165-70867728950e"
          },
          {
            "name": "organization_name",
            "in": "query",
            "required": false,
            "description": "अल्पविराम से अलग किए गए संगठन के नाम। कंसोल-उन्मुख; एक API कुंजी के साथ (जो पहले से ही एक एप्लिकेशन तक सीमित है) यह केवल आपके अपने संगठन के नाम से मेल खाता है।",
            "schema": {
              "type": "string"
            },
            "example": "Acme Inc"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड सत्र सूची। `session_kind` के आधार पर `results` आइटम KYC पंक्तियाँ, KYB पंक्तियाँ, या दोनों होते हैं; प्रत्येक पंक्ति के `session_kind` फ़ील्ड से भेद करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "फ़िल्टर से मेल खाने वाले सत्रों की संख्या: 100 तक सटीक और उससे अधिक होने पर 100 पर सीमित, इसलिए इसे कुल संख्या के रूप में उपयोग न करें। यह जानने के लिए कि क्या और पेज मौजूद हैं, `next` का उपयोग करें। `session_kind=all` के लिए यह दोनों प्रकारों का योग है, प्रत्येक 100 पर सीमित है।",
                      "example": 2
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।",
                      "example": "https://verification.didit.me/v3/sessions/?limit=20&offset=20"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।",
                      "example": null
                    },
                    "results": {
                      "type": "array",
                      "description": "सत्र पंक्तियाँ, नवीनतम पहले। `session_kind=all` के साथ, KYC पंक्तियाँ पहले आती हैं, फिर KYB पंक्तियाँ।",
                      "items": {
                        "oneOf": [
                          {
                            "$ref": "#/components/schemas/UserSessionListItem"
                          },
                          {
                            "$ref": "#/components/schemas/BusinessSessionListItem"
                          }
                        ],
                        "discriminator": {
                          "propertyName": "session_kind",
                          "mapping": {
                            "user": "#/components/schemas/UserSessionListItem",
                            "business": "#/components/schemas/BusinessSessionListItem"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "KYC sessions (default)": {
                    "summary": "session_kind=user - एक पूरा हुआ और एक शुरू न हुआ सत्र",
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "session_id": "5b3720ed-d429-42ef-b67f-37ea805f48ee",
                          "session_kind": "user",
                          "session_number": 720,
                          "session_url": "https://verify.didit.me/session/CuXoBYCYVO5Y",
                          "portrait_image": "https://<media-host>/portraits/5b3720ed.jpg?X-Amz-Expires=3600&X-Amz-Signature=...",
                          "document_type": "Passport",
                          "full_name": "Jane Marie Doe",
                          "country": "ESP",
                          "status": "Approved",
                          "vendor_data": "your-user-id-123",
                          "didit_internal_id": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147",
                          "created_at": "2026-06-09T12:26:54.328364Z",
                          "features": [
                            {
                              "feature": "ID_VERIFICATION",
                              "status": "Approved"
                            },
                            {
                              "feature": "LIVENESS",
                              "status": "Approved"
                            },
                            {
                              "feature": "FACE_MATCH",
                              "status": "Approved"
                            },
                            {
                              "feature": "AML",
                              "status": "Approved"
                            },
                            {
                              "feature": "IP_ANALYSIS",
                              "status": "Approved"
                            }
                          ],
                          "phone_number": {
                            "number": "+14155552671",
                            "is_verified": true
                          },
                          "email_address": {
                            "email": "jane@example.com",
                            "is_verified": true
                          },
                          "additional_details": {
                            "aml": {
                              "total_hits": 0,
                              "entity_type": "person",
                              "is_adverse_media_fetched": false
                            },
                            "liveness": {
                              "method": "PASSIVE",
                              "score": 0.98
                            },
                            "face_match": {
                              "score": 0.95
                            }
                          }
                        },
                        {
                          "session_id": "038ad62f-5ebd-46c2-afe9-4b2956bf687f",
                          "session_kind": "user",
                          "session_number": 719,
                          "session_url": "https://verify.didit.me/session/7RGKiO6ioGH6",
                          "portrait_image": null,
                          "document_type": null,
                          "full_name": null,
                          "country": null,
                          "status": "Not Started",
                          "vendor_data": "your-user-id-124",
                          "didit_internal_id": "eb4e679d-ca4b-461f-9685-687bac29ebdb",
                          "created_at": "2026-06-09T08:02:23.343053Z",
                          "features": [
                            {
                              "feature": "ID_VERIFICATION",
                              "status": "Not Finished"
                            },
                            {
                              "feature": "LIVENESS",
                              "status": "Not Finished"
                            },
                            {
                              "feature": "FACE_MATCH",
                              "status": "Not Finished"
                            },
                            {
                              "feature": "AML",
                              "status": "Not Finished"
                            },
                            {
                              "feature": "IP_ANALYSIS",
                              "status": "Not Finished"
                            }
                          ],
                          "phone_number": null,
                          "email_address": null,
                          "additional_details": null
                        }
                      ]
                    }
                  },
                  "Mixed KYC + KYB (session_kind=all)": {
                    "summary": "session_kind=all - KYC पंक्ति के बाद एक KYB पंक्ति",
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "session_id": "5b3720ed-d429-42ef-b67f-37ea805f48ee",
                          "session_kind": "user",
                          "session_number": 720,
                          "session_url": "https://verify.didit.me/session/CuXoBYCYVO5Y",
                          "portrait_image": null,
                          "document_type": "Identity Card",
                          "full_name": "Jane Marie Doe",
                          "country": "ESP",
                          "status": "In Review",
                          "vendor_data": "your-user-id-123",
                          "didit_internal_id": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147",
                          "created_at": "2026-06-09T12:26:54.328364Z",
                          "features": [
                            {
                              "feature": "ID_VERIFICATION",
                              "status": "In Review"
                            },
                            {
                              "feature": "LIVENESS",
                              "status": "Approved"
                            }
                          ],
                          "phone_number": null,
                          "email_address": null,
                          "additional_details": {
                            "liveness": {
                              "method": "PASSIVE",
                              "score": 0.98
                            }
                          }
                        },
                        {
                          "session_id": "8a1f63c2-1b9e-4f3a-9c41-2f6a1f0b7d52",
                          "session_kind": "business",
                          "session_number": 42,
                          "status": "Approved",
                          "vendor_data": "your-company-id-77",
                          "created_at": "2026-06-08T09:14:02.118450Z",
                          "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                          "workflow_type": "kyb",
                          "workflow_label": "Standard KYB",
                          "company_name": "Acme Holdings S.L.",
                          "registration_number": "B12345678",
                          "country": "ES"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "301": {
            "description": "कैनोनिकल ट्रेलिंग-स्लैश URL पर रीडायरेक्ट करें। तब लौटाया जाता है जब अनुरोध पथ `/v3/sessions` (बिना ट्रेलिंग स्लैश) होता है; `Location` हेडर क्वेरी स्ट्रिंग को सुरक्षित रखते हुए `/v3/sessions/` की ओर संकेत करता है। GET क्लाइंट आमतौर पर इसे स्वचालित रूप से फ़ॉलो करते हैं।"
          },
          "400": {
            "description": "अमान्य क्वेरी पैरामीटर। body एक ऑब्जेक्ट है, जिसकी कुंजी उस पैरामीटर के नाम पर है जिसमें त्रुटि है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid session_kind": {
                    "summary": "session_kind user/business/all में से एक नहीं है",
                    "value": {
                      "session_kind": "Must be \"user\", \"business\", or \"all\"."
                    }
                  },
                  "Invalid date": {
                    "summary": "गलत स्वरूपित date_from/date_to",
                    "value": {
                      "date_from": [
                        "Enter a valid date."
                      ]
                    }
                  },
                  "Invalid didit_internal_id": {
                    "summary": "didit_internal_id एक UUID नहीं है",
                    "value": {
                      "didit_internal_id": [
                        "Enter a valid UUID."
                      ]
                    }
                  },
                  "Invalid api_service": {
                    "summary": "api_service अनुमत विकल्पों में नहीं है",
                    "value": {
                      "api_service": [
                        "Select a valid choice. FOO is not one of the available choices."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, विकृत या निरस्त API कुंजी। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।\n\n**हटाया गया एप्लिकेशन:** किसी एप्लिकेशन को हटाए जाने के बाद कुछ मिनटों के लिए, उसकी किसी API कुंजी से किए गए अनुरोध का रिस्पॉन्स `{\"detail\": \"This application was deleted.\", \"code\": \"application_deleted\"}` हो सकता है। पुनः प्रयास न करें: एप्लिकेशन और उसकी API कुंजियाँ अब मौजूद नहीं हैं। उन कुछ मिनटों के बाद, कुंजी को किसी भी अन्य अमान्य कुंजी की तरह अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "You do not have permission to perform this action."
                    },
                    "code": {
                      "type": "string",
                      "description": "मशीन-पठनीय कारण, केवल कुछ विफलताओं पर मौजूद। `application_deleted`: API कुंजी उस एप्लिकेशन की है जिसे हटा दिया गया था।",
                      "example": "application_deleted"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                },
                "examples": {
                  "Forbidden": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "ApplicationDeleted": {
                    "summary": "हटाए गए एप्लिकेशन की API कुंजी",
                    "value": {
                      "detail": "This application was deleted.",
                      "code": "application_deleted"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -s 'https://verification.didit.me/v3/sessions/?status=Approved,In%20Review&date_from=2026-06-01&limit=20' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.sessions.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.sessions.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.ListAutoPaging(ctx, didit.SessionsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.sessions().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->sessions->list() as $item) {\n    print_r($item);\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Sessions.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/share/": {
      "post": {
        "summary": "पूर्ण सत्यापन सत्र के लिए एक शेयर token जनरेट करें",
        "description": "एक अल्पकालिक JWT जनरेट करें जो किसी विशिष्ट Didit एप्लिकेशन को इस पूर्ण सत्र को इंपोर्ट करने की अनुमति देता है। `POST /v3/session/import-shared/` के साथ उपयोग करें।",
        "operationId": "post_v3_session_share",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "share",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "200": {
            "description": "शेयर token मिंट किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "share_token": {
                      "type": "string",
                      "description": "HS256-हस्ताक्षरित JWT। इसे टारगेट एप्लिकेशन पर [`POST /v3/session/import-shared/`](/sessions-api/import-shared-session) को `share_token` के रूप में हूबहू पास करें।",
                      "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                    },
                    "for_application_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "उस लक्षित एप्लिकेशन UUID का इको करता है जिससे टोकन बाउंड है।",
                      "example": "a5f3bca2-46e2-411e-90ef-a580900a57ee"
                    },
                    "session_kind": {
                      "type": "string",
                      "enum": [
                        "user",
                        "business"
                      ],
                      "description": "क्या स्रोत सत्र एक उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र है।"
                    }
                  }
                },
                "examples": {
                  "User session": {
                    "summary": "KYC सत्र साझा करें",
                    "value": {
                      "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uX2lkIjoiMjBiYjNjM2ItNjE0Ni00MzlmLTg0YTQtYmQzMGQwMGFjNmEyIiwiZnJvbV9hcHBsaWNhdGlvbl9pZCI6ImRiZDIwZTM0LTQyZTktNGYyYy1iYTkxLWNmMDc2MjAxNmY2NCIsImZvcl9hcHBsaWNhdGlvbl9pZCI6ImE1ZjNiY2EyLTQ2ZTItNDExZS05MGVmLWE1ODA5MDBhNTdlZSIsImlhdCI6MTc1MzYzMDY2NiwiZXhwIjoxNzUzNjM0MjY2fQ.JJ9pNE_hqZsOtbR0XYZIWw4JzidjdEl279iUrsIkhGE",
                      "for_application_id": "a5f3bca2-46e2-411e-90ef-a580900a57ee",
                      "session_kind": "user"
                    }
                  },
                  "Business session": {
                    "summary": "KYB सत्र साझा करें",
                    "value": {
                      "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                      "for_application_id": "a5f3bca2-46e2-411e-90ef-a580900a57ee",
                      "session_kind": "business"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल। अधिकांश v3 endpoints के विपरीत, यह endpoint अनुमति डेकोरेटर के माध्यम से प्रमाणित करता है और कोई मान्य token/कुंजी प्रस्तुत न होने पर `401` लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unauthorized": {
                    "summary": "अनधिकृत",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "आपके एप्लिकेशन में दिए गए `session_id` वाला कोई सत्र मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "सत्र नहीं मिला",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां फ़ील्ड नाम के अनुसार व्यवस्थित होती हैं; पूरा न होने की त्रुटि `detail` key के तहत (एक array के रूप में) आती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Wrong status": {
                    "summary": "स्रोत सत्र समाप्त नहीं हुआ है",
                    "value": {
                      "detail": [
                        "Only finished sessions (\"Approved\", \"Declined\", \"In Review\") can be shared."
                      ]
                    }
                  },
                  "Target missing": {
                    "summary": "लक्षित एप्लिकेशन मौजूद नहीं है",
                    "value": {
                      "for_application_id": [
                        "Target application does not exist."
                      ]
                    }
                  },
                  "Self-share": {
                    "summary": "टारगेट ही कॉल करने वाला एप्लिकेशन है",
                    "value": {
                      "for_application_id": [
                        "Cannot share a session with the same application."
                      ]
                    }
                  },
                  "TTL bounds": {
                    "summary": "ttl_in_seconds सीमाओं से बाहर है",
                    "value": {
                      "ttl_in_seconds": [
                        "Ensure this value is greater than or equal to 60."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मान्य हैं लेकिन इस एप्लिकेशन के लिए `write:sessions` अनुमति नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "No Permission": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    },
                    "summary": "कोई अनुमति नहीं"
                  }
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "token मिंट करने के लिए स्रोत सत्यापन सत्र का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "for_application_id"
                ],
                "properties": {
                  "for_application_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "Didit एप्लिकेशन का UUID जो token को रिडीम करेगा। यह मौजूद होना चाहिए, हटाया हुआ नहीं होना चाहिए, और कॉल करने वाले एप्लिकेशन से भिन्न होना चाहिए। इसे Business Console में **Settings → Application** के अंतर्गत खोजें।",
                    "example": "a5f3bca2-46e2-411e-90ef-a580900a57ee"
                  },
                  "ttl_in_seconds": {
                    "type": "integer",
                    "description": "Token का लाइफ़टाइम, सेकंड में। न्यूनतम `60`, अधिकतम `86400` (24 घंटे)। डिफ़ॉल्ट रूप से `3600` (1 घंटा)।",
                    "minimum": 60,
                    "maximum": 86400,
                    "default": 3600,
                    "example": 3600
                  }
                }
              },
              "example": {
                "for_application_id": "a5f3bca2-46e2-411e-90ef-a580900a57ee",
                "ttl_in_seconds": 7200
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/share/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"for_application_id\": \"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n    \"ttl_in_seconds\": 7200\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.share(\n    \"11111111-2222-3333-4444-555555555555\",\n    for_application_id=\"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n    ttl_in_seconds=7200,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.share(\"11111111-2222-3333-4444-555555555555\", {\n  for_application_id: \"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n  ttl_in_seconds: 7200,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Share(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsShareParams{\n\tForApplicationID: \"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n\tTTLInSeconds:     didit.Int(7200),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsShareParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().share(\"11111111-2222-3333-4444-555555555555\", SessionsShareParams.builder()\n        .forApplicationId(\"a5f3bca2-46e2-411e-90ef-a580900a57ee\")\n        .ttlInSeconds(7200L)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->share('11111111-2222-3333-4444-555555555555', [\n    'for_application_id' => 'a5f3bca2-46e2-411e-90ef-a580900a57ee',\n    'ttl_in_seconds' => 7200,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.share(\n  \"11111111-2222-3333-4444-555555555555\",\n  for_application_id: \"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n  ttl_in_seconds: 7200\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ShareAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsShareParams\n{\n    ForApplicationId = \"a5f3bca2-46e2-411e-90ef-a580900a57ee\",\n    TtlInSeconds = 7200,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/import-shared/": {
      "post": {
        "summary": "सत्यापन सत्र को अपने एप्लिकेशन में क्लोन करने के लिए एक शेयर token रिडीम करें",
        "description": "कॉल करने वाले एप्लिकेशन में एक नए `session_id` के साथ KYC या KYB सत्र को क्लोन करने के लिए एक शेयर token को रिडीम करें। आइडेम्पोटेंट नहीं है — एक token प्रति प्राप्तकर्ता केवल एक बार रिडीम होता है।",
        "operationId": "post_v3_session_import_shared",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "import_shared",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "201": {
            "description": "सत्र क्लोन किया गया। बॉडी दोनों प्रकारों के लिए V3 निर्णय payload है, जिसे `session_kind` द्वारा अलग किया गया है: `id_verifications`, `liveness_checks`, `aml_screenings` जैसे सूची-आधारित सुविधा ब्लॉकों के साथ `\"user\"` (KYC); `registry_checks` और `key_people_checks` जैसे ब्लॉकों के साथ `\"business\"` (KYB)। दोनों में `shared_from_session` शामिल है — स्रोत एप्लिकेशन में मूल सत्र का `session_id`। `trust_review: false` के साथ क्लोन किए गए सत्र का `status` जबरन `In Review` पर सेट किया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDecision"
                },
                "examples": {
                  "User session imported": {
                    "summary": "क्लोन किया गया KYC सत्र (संक्षिप्त — वास्तव में पूर्ण V3 निर्णय payload)",
                    "value": {
                      "session_id": "11111111-2222-3333-4444-555555555555",
                      "session_kind": "user",
                      "shared_from_session": "99999999-8888-7777-6666-555555555555",
                      "session_number": 43762,
                      "session_url": null,
                      "status": "In Review",
                      "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                      "vendor_data": "user-1",
                      "created_at": "2026-05-17T08:42:11Z",
                      "expires_at": "2026-05-24T08:42:11Z"
                    }
                  },
                  "Business session imported": {
                    "summary": "क्लोन किया गया KYB सत्र (संक्षिप्त — वास्तव में पूर्ण V3 KYB निर्णय payload)",
                    "value": {
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "session_kind": "business",
                      "shared_from_session": "88888888-7777-6666-5555-444444444444",
                      "session_number": 982,
                      "session_url": null,
                      "status": "Approved",
                      "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                      "vendor_data": "company-1"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि (token अमान्य, समय-सीमा समाप्त, गलत लक्ष्य, या किसी ऐसे सत्र को संदर्भित करता है जो अब मौजूद नहीं है)।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Share Token": {
                    "summary": "अमान्य JWT",
                    "value": {
                      "share_token": [
                        "Invalid share token."
                      ]
                    }
                  },
                  "Expired Share Token": {
                    "summary": "Token `exp` से आगे निकल चुका है",
                    "value": {
                      "share_token": [
                        "Share token has expired."
                      ]
                    }
                  },
                  "Wrong audience": {
                    "summary": "Token इस एप्लिकेशन से संबद्ध नहीं है",
                    "value": {
                      "share_token": [
                        "This token is not valid for this application."
                      ]
                    }
                  },
                  "Original missing": {
                    "summary": "स्रोत सत्र हटा दिया गया था",
                    "value": {
                      "share_token": [
                        "Original session does not exist."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी मौजूद नहीं है (गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है), या यह स्रोत सत्र पहले ही कॉल करने वाले एप्लिकेशन में इंपोर्ट किया जा चुका है (प्रति प्राप्तकर्ता एक रिडीम)।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "summary": "निषिद्ध",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Already imported": {
                    "summary": "स्रोत पहले ही एक बार इंपोर्ट किया जा चुका है",
                    "value": {
                      "detail": "This session has already been shared with your application."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "`workflow_id` कॉल करने वाले एप्लिकेशन से संबंधित नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Workflow not found": {
                    "summary": "वर्कफ़्लो अज्ञात",
                    "value": {
                      "detail": "Workflow does not exist for this application."
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "share_token",
                  "trust_review",
                  "workflow_id"
                ],
                "properties": {
                  "share_token": {
                    "type": "string",
                    "description": "[`POST /v3/session/{sessionId}/share/`](/sessions-api/share-session) द्वारा जारी किया गया JWT शेयर टोकन।",
                    "example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
                  },
                  "trust_review": {
                    "type": "boolean",
                    "description": "यदि `true` है, तो क्लोन किया गया सत्र स्रोत की अंतिम `status` बनाए रखता है। यदि `false` है, तो इसे `In Review` में डाल दिया जाता है।",
                    "example": false
                  },
                  "workflow_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "कॉल करने वाले एप्लिकेशन में किसी वर्कफ़्लो का UUID। क्रॉस-एप्लिकेशन ID को `404` के साथ अस्वीकार कर दिया जाता है।",
                    "example": "9f9b1234-aaaa-bbbb-cccc-1234567890ab"
                  },
                  "vendor_data": {
                    "type": "string",
                    "nullable": true,
                    "description": "क्लोन किए गए सत्र के `vendor_data` के लिए वैकल्पिक ओवरराइड।",
                    "example": "user-1"
                  }
                }
              },
              "example": {
                "share_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                "trust_review": false,
                "workflow_id": "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                "vendor_data": "user-1"
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/import-shared/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"share_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"trust_review\": false,\n    \"workflow_id\": \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n    \"vendor_data\": \"user-1\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.import_shared(\n    share_token=\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    trust_review=False,\n    workflow_id=\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n    vendor_data=\"user-1\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.importShared({\n  share_token: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  trust_review: false,\n  workflow_id: \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n  vendor_data: \"user-1\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ImportShared(ctx, didit.SessionsImportSharedParams{\n\tShareToken:  \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n\tTrustReview: false,\n\tWorkflowID:  \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n\tVendorData:  didit.String(\"user-1\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsImportSharedParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().importShared(SessionsImportSharedParams.builder()\n        .shareToken(\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\")\n        .trustReview(false)\n        .workflowId(\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\")\n        .vendorData(\"user-1\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->importShared([\n    'share_token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...',\n    'trust_review' => false,\n    'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',\n    'vendor_data' => 'user-1',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.import_shared(\n  share_token: \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  trust_review: false,\n  workflow_id: \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n  vendor_data: \"user-1\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ImportSharedAsync(new SessionsImportSharedParams\n{\n    ShareToken = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    TrustReview = false,\n    WorkflowId = \"9f9b1234-aaaa-bbbb-cccc-1234567890ab\",\n    VendorData = \"user-1\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/kyb/search/": {
      "post": {
        "summary": "KYB रजिस्ट्री कंपनी खोज (स्टैंडअलोन)",
        "operationId": "post_v3_kyb_search",
        "x-didit-sdk": {
          "resource": "kyb",
          "method": "search",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [],
        "description": "Search official company registries for candidate companies by name and/or registration number. This is step 1 of the two-step registry flow: **search** returns lightweight candidates, then `POST /v3/kyb/select/` retrieves the full profile of one candidate.\n\n**Search billing.** Successful searches using a paid company-data source cost USD 0.50 per request, regardless of candidate count. Empty results, failures and results served only by other sources are not charged. The applicable price is reserved before searching; insufficient balance returns 403 with code `insufficient_credits`. Contract rates apply where agreed, and an unconfigured contract search rate returns 403. Sandbox searches are free. Repeating a successful search can incur another charge; callback delivery does not add a charge. Profile retrieval is billed separately. This search fee also applies to v2. Candidates always come back with `fetch_status: \"pending\"`: the full company data is only fetched (and billed) on select.\n\n**`kyb_response_id` is ephemeral.** It is a per-search handle, not a stable company id. Select promptly after searching and re-search to get a fresh handle instead of storing it.\n\n**`tier` picks the provider chain.** `tier` names the registry tier the search runs on: `basic` (the default, the Lite chain), `shareholders` or `ubo`. The search uses the provider chain that serves that tier, and it is not always the same chain the Lite search reads, so an empty Lite search is not proof that the registry does not hold the company — search again at the tier you need. A country that does not offer the tier you name is searched at the highest tier it offers up to that one. Retrieve the candidate from the endpoint that sells that tier: `POST /v3/kyb/select/` (Lite), `POST /v3/kyb/shareholders/` or `POST /v3/kyb/ubo/`.\n\n**Authentication.** `POST /v3/kyb/search/` (and `/v2/`) takes your application's API key in the `x-api-key` header. The hosted `POST /v1/kyb/search/` is the session-authenticated route a hosted verification flow calls: API कुंजी देने पर यह `403` लौटाता है और कोई `tier` नहीं लेता है — वर्कफ़्लो का KYB रजिस्ट्री कॉन्फ़िगरेशन श्रृंखला का चयन करता है।\n\n**Two modes.**\n- *सिंक्रोनस (डिफ़ॉल्ट):* API रजिस्ट्री को तब तक पोल करता है जब तक कि सर्च पूरी न हो जाए और अंतिम उम्मीदवार सूची (`search_resolved: true`) वापस न आ जाए।\n- *असिंक्रोनस:* `webhook_url` पास करें और API तुरंत वापस आ जाता है — आमतौर पर `search_status: \"pending\"` और एक खाली उम्मीदवार सूची के साथ — फिर रजिस्ट्री की खोज पूरी होने पर आपके URL पर `kyb.registry_search.resolved` कॉलबैक POST करता है। कॉलबैक का मुख्य भाग `{\"event_id\", \"event_type\": \"kyb.registry_search.resolved\", \"request_id\", \"vendor_data\", \"metadata\", \"search_status\", \"search_resolved\", \"kyb_registry\", \"timestamp\", \"created_at\"}` होता है — ध्यान दें कि कॉलबैक में `timestamp` और `created_at` epoch पूर्णांक हैं, इस endpoint के ISO `created_at` के विपरीत — और इसे **अहस्ताक्षरित** भेजा जाता है (हेडर `X-Didit-Unsigned-Callback: true`, कोई `X-Signature` नहीं)।\n\n**देश कोड।** ISO 3166-1 alpha-2 (`GB`, `DE`), साथ ही `XX-YY` उपखंड कोड जहाँ रजिस्ट्रियां क्षेत्रीय हैं — उदाहरण के लिए कैलिफ़ोर्निया के लिए `US-CA`।\n\n**सैंडबॉक्स।** सैंडबॉक्स एप्लिकेशन की कुंजियाँ किसी भी रजिस्ट्री से संपर्क किए बिना एक स्थिर उम्मीदवार लौटाती हैं।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "country_code"
                ],
                "properties": {
                  "country_code": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "उस देश का ISO 3166-1 alpha-2 कोड जिसकी कंपनी रजिस्ट्री में खोज करनी है। उदाहरण के लिए, `GB`। जहाँ कंपनी रजिस्ट्रियाँ राज्य या प्रांत स्तर पर संचालित होती हैं, वहाँ ISO 3166-2 सबडिवीजन कोड को `XX-YY` के रूप में जोड़ें: `US-CA` कैलिफ़ोर्निया रजिस्ट्री में खोज करता है। संयुक्त राज्य अमेरिका की खोजों के लिए हमेशा सबडिवीजन की आवश्यकता होती है — केवल `US` को अस्वीकार कर दिया जाता है। केस-असंवेदी; अपरकेस में सामान्यीकृत किया जाता है।",
                    "example": "GB"
                  },
                  "name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "खोजने के लिए कंपनी का नाम। या तो `name` या `registration_number` आवश्यक है।",
                    "example": "Tesco"
                  },
                  "registration_number": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "खोजने के लिए रजिस्ट्री पंजीकरण संख्या। `name` या `registration_number` में से कोई एक आवश्यक है।"
                  },
                  "tier": {
                    "type": "string",
                    "enum": [
                      "basic",
                      "shareholders",
                      "ubo"
                    ],
                    "default": "basic",
                    "description": "रजिस्ट्री स्तर जिसकी प्रदाता श्रृंखला पर यह खोज चलती है। `basic` (डिफ़ॉल्ट) देश की Lite श्रृंखला को खोजता है; `shareholders` और `ubo` उस स्तर की स्वामित्व श्रृंखला को खोजते हैं, जो एक अलग स्रोत हो सकता है, इसलिए खाली Lite खोज यह साबित नहीं करती कि रजिस्ट्री में कंपनी मौजूद नहीं है। जिस देश में नामित स्तर की सुविधा नहीं है, वहां उस स्तर तक उपलब्ध उच्चतम स्तर पर खोज की जाती है। उस endpoint से उम्मीदवार को पुनः प्राप्त करें जो आपके द्वारा खोजे गए स्तर को बेचता है: `POST /v3/kyb/select/` (Lite), `POST /v3/kyb/shareholders/` या `POST /v3/kyb/ubo/`।",
                    "example": "basic"
                  },
                  "search_type": {
                    "type": "string",
                    "enum": [
                      "contains"
                    ],
                    "default": "contains",
                    "description": "रजिस्ट्री खोज द्वारा लागू नाम-मिलान रणनीति। `contains` एकमात्र स्वीकृत मान है: खोज के पीछे कोई भी रजिस्ट्री स्रोत प्रीफ़िक्स या फ़ज़ी मोड प्रदान नहीं करता है, इसलिए `start_with` और `fuzzy` को `400` (`not a valid choice`) के साथ अस्वीकार कर दिया जाता है।"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "इस लुकअप के लिए आपका पहचानकर्ता; वापस दोहराया जाता है और webhook कॉलबैक में शामिल किया जाता है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "फ़्री-फ़ॉर्म JSON; वापस लौटाया गया और webhook कॉलबैक में शामिल किया गया।"
                  },
                  "webhook_url": {
                    "type": "string",
                    "format": "uri",
                    "maxLength": 500,
                    "description": "खोज को एसिंक्रोनस मोड में स्विच करता है: API तुरंत रिस्पॉन्स देता है और उम्मीदवारों की सूची तैयार होने पर इस URL पर एक अनहस्ताक्षरित `kyb.registry_search.resolved` कॉलबैक POST करता है।"
                  }
                }
              },
              "example": {
                "country_code": "GB",
                "name": "Tesco",
                "search_type": "contains",
                "vendor_data": "company-1234"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/kyb/search/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"country_code\": \"GB\",\n    \"name\": \"Tesco\",\n    \"search_type\": \"contains\",\n    \"vendor_data\": \"company-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.kyb.search(\n    country_code=\"GB\",\n    name=\"Tesco\",\n    search_type=\"contains\",\n    vendor_data=\"company-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.kyb.search({\n  country_code: \"GB\",\n  name: \"Tesco\",\n  search_type: \"contains\",\n  vendor_data: \"company-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.KYB.Search(ctx, didit.KYBSearchParams{\n\tCountryCode: \"GB\",\n\tName:        didit.String(\"Tesco\"),\n\tSearchType:  didit.Some(didit.KYBSearchParamsSearchType(\"contains\")),\n\tVendorData:  didit.String(\"company-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.KybSearchParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.kyb().search(KybSearchParams.builder()\n        .countryCode(\"GB\")\n        .name(\"Tesco\")\n        .searchType(KybSearchParams.SearchType.of(\"contains\"))\n        .vendorData(\"company-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->kyb->search([\n    'country_code' => 'GB',\n    'name' => 'Tesco',\n    'search_type' => 'contains',\n    'vendor_data' => 'company-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.kyb.search(\n  country_code: \"GB\",\n  name: \"Tesco\",\n  search_type: \"contains\",\n  vendor_data: \"company-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Kyb.SearchAsync(new KybSearchParams\n{\n    CountryCode = \"GB\",\n    Name = \"Tesco\",\n    SearchType = new KybSearchParamsSearchType(\"contains\"),\n    VendorData = \"company-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "खोज स्वीकार कर ली गई। सिंक्रोनस मोड हल की गई उम्मीदवार सूची लौटाता है; webhook मोड तुरंत रिस्पॉन्स देता है (अक्सर `search_status: \"pending\"`) और `kyb.registry_search.resolved` कॉलबैक के माध्यम से अंतिम सूची डिलीवर करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`webhook_url` के साथ: स्थायी रूप से संग्रहीत खोज-अनुरोध ID, जो `kyb.registry_search.resolved` कॉलबैक में `request_id` के रूप में दोहराई जाती है। `webhook_url` के बिना: एक अस्थायी कोरिलेशन UUID (खोज संग्रहीत नहीं की जाती है)।"
                    },
                    "kyb_registry": {
                      "$ref": "#/components/schemas/KYBRegistrySearchResults"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "Resolved search": {
                    "summary": "सिंक्रोनस मोड — अंतिम उम्मीदवार सूची",
                    "value": {
                      "request_id": "0c7e9a40-3a13-4f7e-8a44-9d2e2f1c5b6a",
                      "kyb_registry": {
                        "companies": [
                          {
                            "kyb_response_id": "69aeeb95febb0f1704042259",
                            "name": "Tesco PLC",
                            "registration_number": "00445790",
                            "status": "active",
                            "type": "Public Limited Company",
                            "risk_level": null,
                            "fetch_status": "pending"
                          },
                          {
                            "kyb_response_id": "69aeeb95febb0f170404225a",
                            "name": "E-TESCO LTD",
                            "registration_number": "15168476",
                            "status": "active",
                            "type": "Private Limited Company",
                            "risk_level": null,
                            "fetch_status": "pending"
                          }
                        ],
                        "pagination": {
                          "total": 2,
                          "page": 1,
                          "per_page": 25
                        },
                        "search_status": "resolved",
                        "search_resolved": true
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:40:00.000000+00:00"
                    }
                  },
                  "Pending search (webhook mode)": {
                    "summary": "`webhook_url` प्रदान किया गया — उम्मीदवार kyb.registry_search.resolved कॉलबैक के माध्यम से आते हैं",
                    "value": {
                      "request_id": "5f2d8c1b-7e4a-4b9c-9f0d-3a6e8c2b1d4f",
                      "kyb_registry": {
                        "companies": [],
                        "pagination": {
                          "total": 0,
                          "page": 1,
                          "per_page": 25
                        },
                        "search_status": "pending",
                        "search_resolved": false
                      },
                      "vendor_data": "company-1234",
                      "metadata": {
                        "source": "onboarding"
                      },
                      "created_at": "2026-06-11T10:41:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवेलप का उपयोग करती हैं; नाम/पंजीकरण संख्या नियम `non_field_errors` के तहत रिपोर्ट करता है। ऐसा देश जिसे रजिस्ट्रियां कवर नहीं करती हैं, वह `code: kyb_registry_country_unsupported` के साथ `400` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing search criteria": {
                    "summary": "न तो `name` और न ही `registration_number` प्रदान किया गया",
                    "value": {
                      "non_field_errors": [
                        "Either 'name' or 'registration_number' is required."
                      ]
                    }
                  },
                  "Invalid country_code": {
                    "summary": "`XX` (alpha-2) या `XX-YY` सबडिवीज़न होना चाहिए",
                    "value": {
                      "country_code": [
                        "country_code must be a 2-letter ISO code."
                      ]
                    }
                  },
                  "Invalid search_type": {
                    "summary": "केवल `contains` स्वीकार किया जाता है",
                    "value": {
                      "search_type": [
                        "\"start_with\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid webhook_url": {
                    "summary": "`webhook_url` एक मान्य URL होना चाहिए",
                    "value": {
                      "webhook_url": [
                        "Enter a valid URL."
                      ]
                    }
                  },
                  "Country not covered": {
                    "summary": "कोई भी कंपनी रजिस्ट्री इस देश को कवर नहीं करती है",
                    "value": {
                      "detail": "Company registry search is not available for this country. Enter the company details manually to continue.",
                      "code": "kyb_registry_country_unsupported"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। खोज करने से पहले तब भी लौटाया जाता है जब लागू खोज शुल्क को कवर नहीं किया जा सकता (`code: \"insufficient_credits\"`), या जब कोई अनुबंध खोज दर अनुपलब्ध हो।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई, या खोज की सीमा समाप्त हो गई है। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है), साथ ही `X-RateLimit-*` और `Retry-After` हेडर भी होते हैं। अलग से, सशुल्क रजिस्ट्री खोजें प्रति एप्लिकेशन प्रति घंटे 600 तक सीमित हैं: इसके बाद रिस्पॉन्स `code: kyb_registry_search_limit_reached` के साथ `429` होता है, और केवल मुफ़्त स्रोतों द्वारा प्रदान की जाने वाली खोजें अभी भी काम करती हैं। प्रतीक्षा करें और बाद में पुनः खोजें।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  },
                  "Search allowance spent": {
                    "summary": "पिछले एक घंटे में 600 से अधिक सशुल्क खोजें",
                    "value": {
                      "detail": "The maximum number of company registry searches for this session has been reached. Enter the company details manually to continue.",
                      "code": "kyb_registry_search_limit_reached"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "KYB रजिस्ट्री प्रदाता अस्थायी रूप से अनुपलब्ध है - अपस्ट्रीम रजिस्ट्री से 5xx रिस्पॉन्स, टाइमआउट, या कनेक्शन विफलता। खोज के लिए बिल नहीं लिया जाता है। बाद में पुनः प्रयास करें, या Didit के होस्टेड सत्यापन फ़्लो में उपयोगकर्ता को केवल पुनः प्रयास वाली त्रुटि के बजाय स्वचालित रूप से मैन्युअल कंपनी प्रविष्टि की पेशकश की जाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Registry provider outage": {
                    "summary": "रजिस्ट्री प्रदाता ने खोज का उत्तर नहीं दिया",
                    "value": {
                      "detail": "The KYB registry provider is temporarily unavailable. Please try again shortly.",
                      "code": "kyb_registry_provider_unavailable"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/kyb/select/": {
      "post": {
        "summary": "KYB रजिस्ट्री कंपनी चयन — Lite स्तर (स्टैंडअलोन)",
        "operationId": "post_v3_kyb_select",
        "x-didit-sdk": {
          "resource": "kyb",
          "method": "select",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [],
        "description": "`POST /v3/kyb/search/` द्वारा लौटाए गए एक उम्मीदवार की **Lite** रजिस्ट्री प्रोफ़ाइल प्राप्त करें — कंपनी विवरण, पंजीकृत पता, पहचानकर्ता, स्थिति, गतिविधि और अधिकारी, साथ ही रॉ रजिस्ट्री payload। शेयरधारक और वास्तविक स्वामी `POST /v3/kyb/shareholders/` और `POST /v3/kyb/ubo/` के माध्यम से उपलब्ध कराए जाते हैं।\n\n**सर्च के साथ युग्मन।** उम्मीदवार की `kyb_response_id` ठीक उसी प्रकार पास करें जैसा उसी एप्लिकेशन के सर्च द्वारा लौटाया गया था। हैंडल अल्पकालिक होता है और उस सर्च तक ही सीमित होता है — तुरंत चयन करें, और इसे संग्रहीत करने के बजाय नए हैंडल के लिए फिर से सर्च करें।\n\n**बिलिंग।** प्रत्येक चयन का बिल देश की Lite कीमत पर लिया जाता है (कोई भी सर्च शुल्क अलग है); [KYB रजिस्ट्री मूल्य निर्धारण](/hi/getting-started/kyb-registry-pricing) देखें। किसी भी रजिस्ट्री कॉल से पहले बैलेंस की जांच की जाती है (कमी होने पर `403`) और शुल्क बनाए गए व्यावसायिक सत्र के विरुद्ध दर्ज किया जाता है।\n\n**स्थायित्व अनिवार्य है।** प्रत्येक चयन एक व्यावसायिक सत्र बनाता है (इसकी id `request_id` है) ताकि बिलिंग और पुनर्प्राप्ति को ट्रैक किया जा सके; यह कंसोल में दिखाई देता है। समरूपता के लिए `save_api_request` स्वीकार किया जाता है लेकिन यह `true` (डिफ़ॉल्ट) होना चाहिए — `false` भेजने पर `400` लौटता है।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KYBRegistryCandidateRequest"
              },
              "example": {
                "kyb_response_id": "69aeeb95febb0f1704042259",
                "vendor_data": "company-1234"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/kyb/select/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"kyb_response_id\": \"69aeeb95febb0f1704042259\",\n    \"vendor_data\": \"company-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.kyb.select(\n    kyb_response_id=\"69aeeb95febb0f1704042259\",\n    vendor_data=\"company-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.kyb.select({\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.KYB.Select(ctx, didit.KYBRegistryCandidateRequest{\n\tKYBResponseID: \"69aeeb95febb0f1704042259\",\n\tVendorData:    didit.String(\"company-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.KYBRegistryCandidateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.kyb().select(KYBRegistryCandidateRequest.builder()\n        .kybResponseId(\"69aeeb95febb0f1704042259\")\n        .vendorData(\"company-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->kyb->select([\n    'kyb_response_id' => '69aeeb95febb0f1704042259',\n    'vendor_data' => 'company-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.kyb.select(\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Kyb.SelectAsync(new KYBRegistryCandidateRequest\n{\n    KybResponseId = \"69aeeb95febb0f1704042259\",\n    VendorData = \"company-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कंपनी प्राप्त की गई और बिल की गई। `kyb_registry` में पूर्ण प्रोफ़ाइल शामिल है; `data_resolved` की जाँच करें — जब `false` हो, तो रजिस्ट्री अभी भी प्रोसेस कर रही थी और रिज़ॉल्व होने पर संग्रहीत रिकॉर्ड अपने आप पूरा हो जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "इस पुनर्प्राप्ति के लिए बनाए गए व्यवसाय सत्र की Id। यदि रिस्पॉन्स के बाद रजिस्ट्री से जानकारी मिलती है, तो संग्रहीत रिकॉर्ड (कंसोल में दृश्यमान) अपडेट होता रहता है।"
                    },
                    "registry_tier_requested": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo"
                      ],
                      "description": "यह endpoint जो स्तर बेचता है: चुनिंदा के लिए `basic` (Lite), `shareholders`, `ubo`।"
                    },
                    "registry_tier_delivered": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo"
                      ],
                      "description": "वास्तव में डिलीवर और बिल किया गया स्तर। अनुरोध किए गए स्तर से कम तब होता है जब देश की रजिस्ट्रियों में कोई स्वामित्व डेटा नहीं होता है, या रजिस्ट्री में इस कंपनी के लिए कोई स्वामित्व रिकॉर्ड नहीं होता है।"
                    },
                    "kyb_registry": {
                      "type": "object",
                      "description": "पूर्ण रजिस्ट्री कंपनी प्रोफ़ाइल।",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid",
                          "description": "इस कंपनी रिकॉर्ड के लिए Didit की id।"
                        },
                        "node_id": {
                          "type": "string",
                          "example": "feature_kyb_registry"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "Not Finished",
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "रजिस्ट्री जांच पर Didit का मूल्यांकन (उदा. `In Review` जब कंपनी रजिस्ट्री में सक्रिय नहीं है या स्वामित्व डेटा प्राप्त नहीं किया जा सका)।"
                        },
                        "registry_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "active",
                            "dissolved",
                            "deregistered",
                            "see full details",
                            "authorised",
                            "appointed representative",
                            "unauthorised",
                            "inactive",
                            "no longer authorised",
                            "closed",
                            "struck off"
                          ],
                          "description": "रजिस्ट्री द्वारा रिपोर्ट की गई कंपनी की सामान्यीकृत स्थिति।"
                        },
                        "data_resolved": {
                          "type": "boolean",
                          "description": "रजिस्ट्री द्वारा पूर्ण प्रोफ़ाइल लौटाने के बाद `true`। `false` जब पोलिंग के बाद भी रजिस्ट्री प्रक्रिया कर रही थी — रजिस्ट्री का समाधान होते ही संग्रहीत रिकॉर्ड स्वचालित रूप से पूरा हो जाता है।"
                        },
                        "company_name": {
                          "type": "string",
                          "example": "Tesco PLC"
                        },
                        "registration_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "00445790"
                        },
                        "country_code": {
                          "type": "string",
                          "description": "ISO 3166-1 alpha-2।",
                          "example": "GB"
                        },
                        "region": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री के क्षेत्रीय होने पर सबडिवीजन कोड (जैसे `US-CA` के लिए `CA`); अन्यथा खाली।"
                        },
                        "company_type": {
                          "type": "string",
                          "nullable": true,
                          "example": "Public Limited Company"
                        },
                        "incorporation_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "1947-11-27"
                        },
                        "registered_address": {
                          "type": "string",
                          "nullable": true,
                          "example": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA"
                        },
                        "tax_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "GB412 8925 93"
                        },
                        "risk_level": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जोखिम स्तर, जब उपलब्ध हो।"
                        },
                        "verification_status": {
                          "type": "string",
                          "enum": [
                            "verified",
                            "failed",
                            "unknown"
                          ],
                          "nullable": true,
                          "description": "क्रॉस-क्षेत्राधिकार सत्यापन स्थिति: जब रजिस्ट्री स्थिति कंपनी के अच्छी स्थिति में होने की पुष्टि करती है (`active`) तो `verified`, जब यह दर्शाती है कि कंपनी अब अच्छी स्थिति में नहीं है (उदाहरण के लिए `dissolved`) तो `failed`, अन्यथा `unknown`। रजिस्ट्री से न आई कंपनी के लिए और चयन के अभी भी `pending` रहने के दौरान `null`।"
                        },
                        "is_from_registry": {
                          "type": "boolean",
                          "description": "इस endpoint के लिए हमेशा `true` — प्रोफ़ाइल आधिकारिक रजिस्ट्री से प्राप्त की गई थी।"
                        },
                        "fetch_status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "resolved"
                          ],
                          "description": "रजिस्ट्री फ़ेच लाइफ़साइकिल। `data_resolved` द्वारा प्रतिबिंबित।"
                        },
                        "alternative_names": {
                          "type": "string",
                          "nullable": true,
                          "description": "वैकल्पिक, व्यापारिक, पूर्व या मूल-भाषा कंपनी के नाम टेक्स्ट के रूप में, जब रिपोर्ट किए गए हों।"
                        },
                        "nature_of_business": {
                          "type": "string",
                          "nullable": true,
                          "description": "गतिविधि विवरण या वर्गीकरण कोड, जब रिपोर्ट किया गया हो।"
                        },
                        "registered_capital": {
                          "type": "string",
                          "nullable": true
                        },
                        "registered_capital_amount": {
                          "type": "string",
                          "nullable": true,
                          "description": "स्ट्रिंग के रूप में दशमलव राशि, जब रिपोर्ट की गई हो।"
                        },
                        "registered_capital_currency": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO 4217 कोड, रिपोर्ट किए जाने पर।"
                        },
                        "website": {
                          "type": "string",
                          "nullable": true,
                          "example": "https://www.tesco.com/"
                        },
                        "email": {
                          "type": "string",
                          "nullable": true,
                          "example": "customer.service@tesco.co.uk"
                        },
                        "phone": {
                          "type": "string",
                          "nullable": true,
                          "example": "03301231688"
                        },
                        "legal_entity_identifier": {
                          "type": "string",
                          "nullable": true,
                          "description": "LEI, जब रिपोर्ट किया गया हो।"
                        },
                        "location_of_registration": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री/क्षेत्राधिकार जहां कंपनी पंजीकृत है, जब रिपोर्ट किया गया हो।"
                        },
                        "vat_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "EU VAT संख्या, जब होस्टेड रजिस्ट्री चरण के दौरान एकत्र की गई हो या बाद में संपादित की गई हो। चयन के समय यह आमतौर पर अभी तक सेट नहीं होती है — VAT और कर पहचान संख्या सत्यापन तब चलता है जब अंतिम उपयोगकर्ता होस्टेड फ़्लो में रजिस्ट्री चरण सबमिट करता है।"
                        },
                        "vat_validation_status": {
                          "type": "string",
                          "enum": [
                            "valid",
                            "invalid",
                            "format_valid",
                            "invalid_format",
                            "could_not_validate",
                            "not_applicable"
                          ],
                          "description": "रजिस्ट्री सबमिट पर VAT संख्या या, यदि कोई नहीं है, तो `tax_number` के सत्यापन का परिणाम। `valid` / `invalid`: देश की आधिकारिक रजिस्ट्री द्वारा तय किया जाता है (EU VIES, नॉर्वे, स्विट्जरलैंड, ब्राजील, कोलंबिया, कोस्टा रिका, इक्वाडोर, पराग्वे; पोलैंड अपने घरेलू VAT रजिस्टर द्वारा भी)। `format_valid` / `invalid_format`: देश के प्रारूप और चेक-डिजिट नियमों द्वारा तय किया जाता है जहाँ किसी रजिस्ट्री से क्वेरी नहीं की जा सकती। `could_not_validate`: रजिस्ट्री अनुपलब्ध थी। `not_applicable`: कोई संख्या नहीं, बिना रजिस्ट्री या नियमों वाला देश, या कोई सैंडबॉक्स सत्र।"
                        },
                        "vat_validated_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "वह संख्या जिसकी जाँच की गई थी, जैसा कि स्रोत इसे जानता है (उदाहरण के लिए फ्रेंच SIREN या डच RSIN से प्राप्त VAT संख्या)। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validation_source": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "eu_vies",
                            "pl_vat_white_list",
                            "no_brreg",
                            "ch_uid_register",
                            "br_receita_federal",
                            "co_rues",
                            "cr_hacienda",
                            "ec_sri",
                            "py_dnit",
                            "format_rules",
                            null
                          ],
                          "description": "वह स्रोत जिसने `vat_validation_status` तय किया: एक आधिकारिक रजिस्ट्री, या `format_rules`। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validated_name": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के साथ पंजीकृत नाम, जब वह इसे प्रकट करता है। केवल तब सेट होता है जब स्थिति `valid` हो।"
                        },
                        "vat_validated_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के पास पंजीकृत पता, यदि वह इसे प्रकट करता है। केवल तभी सेट किया जाता है जब स्थिति `valid` हो।"
                        },
                        "vat_checked_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "जांच का टाइमस्टैम्प। कोई जांच न चलने पर `null`।"
                        },
                        "financial_summary": {
                          "type": "object",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए शेयर/पूंजी विवरण (मुद्रा, कुल शेयर, शेयर वर्ग), जब उपलब्ध हों।"
                        },
                        "officers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string",
                                "example": "MELISSA BETHELL"
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री से प्राप्त रॉ पदनाम (उदा. `Director`, `Secretary`)।"
                              },
                              "role": {
                                "type": "string",
                                "description": "पदनाम से प्राप्त सामान्यीकृत भूमिका। पूर्ण 17-मान मॉडल सेट; इस endpoint पर रजिस्ट्री पार्सिंग आमतौर पर director, non_executive_director, secretary, chairman, या company_officer उत्सर्जित करती है।",
                                "enum": [
                                  "director",
                                  "non_executive_director",
                                  "secretary",
                                  "chairman",
                                  "ubo",
                                  "shareholder",
                                  "representative",
                                  "founder",
                                  "legal_advisor",
                                  "authorized_signatory",
                                  "trustee",
                                  "beneficiary",
                                  "company_officer",
                                  "settlor",
                                  "protector",
                                  "investor",
                                  "other"
                                ]
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "is_active": {
                                "type": "boolean",
                                "description": "`false` जब रजिस्ट्री नियुक्ति को इस्तीफ़ा दिया हुआ चिह्नित करती है।"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending"
                                ],
                                "description": "संबंधित KYC सत्र की स्थिति, जब इस अधिकारी के लिए कोई सत्र शुरू किया गया हो। अन्यथा `null`।"
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true,
                                "description": "संबद्ध KYC सत्र का सत्यापन URL, जब कोई मौजूद हो।"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "पहला नाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो; पूरे नाम से अनुमानित नहीं।"
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "कुलनाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो।"
                              },
                              "address": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया अधिकारी का पता।"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "अधिकारी की नियुक्ति की तारीख।",
                                "format": "date"
                              },
                              "termination_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "नियुक्ति समाप्त होने की तारीख, जब रिपोर्ट की गई हो।",
                                "format": "date"
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट की गई पूरी जन्म तिथि। केवल जन्म वर्ष या माह ज्ञात होने पर Null।",
                                "format": "date"
                              },
                              "date_of_birth_year": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 9999,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म वर्ष, जिसमें पूर्ण तिथि अनुपलब्ध होने की स्थिति भी शामिल है।"
                              },
                              "date_of_birth_month": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 12,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म का महीना। केवल वर्ष ज्ञात होने पर Null।"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए निदेशक, सचिव और अन्य अधिकारी।"
                        },
                        "beneficial_owners": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "entity_type": {
                                "type": "string",
                                "enum": [
                                  "person",
                                  "company"
                                ],
                                "description": "क्या स्वामी कोई प्राकृतिक व्यक्ति है या कॉर्पोरेट इकाई।"
                              },
                              "roles": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "सामान्यीकृत भूमिकाएँ (उदा. `ubo`, `shareholder`)।"
                              },
                              "ownership_min_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की निचली सीमा (उदा. `25%`)।"
                              },
                              "ownership_max_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की ऊपरी सीमा।"
                              },
                              "is_active": {
                                "type": "boolean"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending"
                                ]
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true
                              },
                              "effective_ownership_percent": {
                                "type": "number",
                                "nullable": true,
                                "description": "पार्स किया गया स्वामित्व प्रतिशत (अधिकतम सीमा, न्यूनतम सीमा पर फ़ॉलबैक)।"
                              },
                              "company_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "registration_number": {
                                "type": "string",
                                "nullable": true
                              },
                              "country_of_birth": {
                                "type": "string",
                                "nullable": true
                              },
                              "email": {
                                "type": "string",
                                "nullable": true
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_min_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_max_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर पूरी जन्म तिथि।",
                                "format": "date"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर नियुक्ति तिथि।",
                                "format": "date"
                              },
                              "shareholding": {
                                "$ref": "#/components/schemas/KYBRegistryShareholding"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए वास्तविक स्वामी / महत्वपूर्ण नियंत्रण वाले व्यक्ति। जब रजिस्ट्री स्वामित्व को उजागर नहीं करती है तो खाली हो सकता है।"
                        },
                        "addresses": {
                          "type": "array",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा उल्लिखित प्रत्येक पता, एक कैनोनिकल स्वरूप में। यदि कोई उल्लिखित नहीं है तो Null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryAddress"
                          }
                        },
                        "industries": {
                          "type": "array",
                          "nullable": true,
                          "description": "वे गतिविधियाँ जिनके तहत रजिस्ट्री कंपनी को वर्गीकृत करती है, एक विहित आकार। जब यह कोई गतिविधि नहीं बताती है तब null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryIndustry"
                          }
                        },
                        "accounts": {
                          "type": "object",
                          "nullable": true,
                          "additionalProperties": true,
                          "description": "रजिस्ट्री फ़ाइलिंग तिथियां, जब उपलब्ध हों। वार्षिक रिटर्न और आम बैठकों के लिए last_annual_return_date और last_agm_date का उपयोग किया जाता है; वे वित्तीय खातों से भिन्न होते हैं।"
                        },
                        "registry_data": {
                          "$ref": "#/components/schemas/KYBRegistryData"
                        },
                        "user_provided_data": {
                          "type": "object",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null` (होस्टेड KYB फ़्लो द्वारा उपयोग किया जाता है जब अंतिम उपयोगकर्ता रजिस्ट्री डेटा संपादित करते हैं)।"
                        },
                        "confirmed_by_user_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "last_console_edit_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "तब सेट किया जाता है जब कोई कंसोल समीक्षक बाद में रिकॉर्ड को संपादित करता है।"
                        },
                        "is_editable": {
                          "type": "boolean",
                          "description": "क्या रजिस्ट्री से प्राप्त डेटा को अभी भी होस्टेड फ़्लो/कंसोल में संपादित किया जा सकता है।"
                        },
                        "registry_tier_delivered": {
                          "type": "string",
                          "enum": [
                            "basic",
                            "shareholders",
                            "ubo"
                          ],
                          "description": "शीर्ष-स्तरीय `registry_tier_delivered` के समान।"
                        },
                        "registry_ownership_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "not_requested",
                            "delivered",
                            "not_held",
                            "unavailable"
                          ],
                          "description": "`delivered` जब स्वामित्व डेटा वापस मिल गया, `not_held` जब स्वामित्व रजिस्ट्री ने उत्तर दिया और इस कंपनी को सूचीबद्ध नहीं करती है (`registry_data.ownership_error` देखें), `unavailable` जब स्वामित्व स्तर का अनुरोध किया गया था लेकिन रजिस्ट्री के पास इस कंपनी के लिए कोई डेटा नहीं था या पूछा नहीं जा सका (`registry_data.ownership_error` देखें), Lite स्तर पर `not_requested`।"
                        },
                        "ownership": {
                          "$ref": "#/components/schemas/KYBRegistryOwnership"
                        },
                        "registry_tier": {
                          "type": "string",
                          "nullable": true,
                          "description": "वर्कफ़्लो द्वारा आदेशित रजिस्ट्री स्तर: `basic`, `shareholders` या `ubo`। `ownership.tier_requested` में भी।"
                        },
                        "registry_monitoring": {
                          "type": "object",
                          "nullable": true,
                          "description": "कंपनी के लिए नवीनतम रजिस्ट्री मॉनिटर, या कोई मौजूद न होने पर `null`।",
                          "properties": {
                            "uuid": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "status": {
                              "type": "string"
                            },
                            "unavailable_reason": {
                              "type": "string",
                              "nullable": true
                            },
                            "enrolled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "cancelled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "last_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "next_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "last_event_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "events_count": {
                              "type": "integer"
                            },
                            "watched_fields": {
                              "description": "कंपनी के वे फ़ील्ड जिन पर मॉनिटर नज़र रखता है।"
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "Resolved company": {
                    "summary": "पूर्ण रजिस्ट्री प्रोफ़ाइल (संक्षिप्तता के लिए अधिकारी सूची छोटी की गई है)",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "f1e2d3c4-b5a6-4789-9c0d-1e2f3a4b5c6d",
                        "node_id": "feature_kyb_registry",
                        "status": "In Review",
                        "registry_status": "active",
                        "data_resolved": true,
                        "company_name": "Tesco PLC",
                        "registration_number": "00445790",
                        "country_code": "GB",
                        "region": "",
                        "company_type": "Public Limited Company",
                        "incorporation_date": "1947-11-27",
                        "registered_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                        "tax_number": "GB412 8925 93",
                        "risk_level": "low risk",
                        "verification_status": "verified",
                        "is_from_registry": true,
                        "fetch_status": "resolved",
                        "alternative_names": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY",
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": "https://www.tesco.com/",
                        "email": "customer.service@tesco.co.uk",
                        "phone": "03301231688",
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {
                          "currency": "Pound (£)",
                          "total_number_of_shares": "8174378721",
                          "meta_detail": {
                            "Class_Of_Share": "Ordinary"
                          }
                        },
                        "officers": [
                          {
                            "uuid": "a1b2c3d4-e5f6-4789-9a0b-1c2d3e4f5a6b",
                            "name": "CHRISTOPHER JON TAYLOR",
                            "designation": "Secretary",
                            "role": "secretary",
                            "nationality": null,
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          },
                          {
                            "uuid": "b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c",
                            "name": "MELISSA BETHELL",
                            "designation": "Director",
                            "role": "director",
                            "nationality": "British",
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          }
                        ],
                        "beneficial_owners": [],
                        "addresses": [
                          {
                            "address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                            "type": "legal_entity_registry_address",
                            "description": "registered office address"
                          }
                        ],
                        "industries": null,
                        "accounts": {
                          "last_account": "26 February 2025",
                          "next_account": "26 February 2026",
                          "due_by_date": "26 August 2026"
                        },
                        "registry_data": {},
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00"
                    }
                  },
                  "Pending (registry still resolving)": {
                    "summary": "पोलिंग के बाद चयन पेंडिंग रहा — स्पार्स फ़ील्ड, सर्वर-साइड अपने-आप पूरे हो जाते हैं",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "7c0a4f7e-2b1d-4f6a-9c3e-8d5b2a1f0e9d",
                        "node_id": "feature_kyb_registry",
                        "status": "Not Finished",
                        "registry_status": null,
                        "data_resolved": false,
                        "company_name": "Tesco PLC",
                        "registration_number": "00445790",
                        "country_code": "GB",
                        "region": null,
                        "company_type": null,
                        "incorporation_date": null,
                        "registered_address": null,
                        "tax_number": null,
                        "risk_level": null,
                        "verification_status": null,
                        "is_from_registry": true,
                        "fetch_status": "pending",
                        "alternative_names": null,
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": null,
                        "email": null,
                        "phone": null,
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {},
                        "officers": [],
                        "beneficial_owners": [],
                        "addresses": null,
                        "industries": null,
                        "accounts": null,
                        "registry_data": {},
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवेलप का उपयोग करती हैं। ऐसा देश जिसे रजिस्ट्रियां कवर नहीं करती हैं, वह `code: kyb_registry_country_unsupported` के साथ `400` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing kyb_response_id": {
                    "summary": "`kyb_response_id` आवश्यक है",
                    "value": {
                      "kyb_response_id": [
                        "This field is required."
                      ]
                    }
                  },
                  "save_api_request=false rejected": {
                    "summary": "चयन हमेशा बने रहते हैं",
                    "value": {
                      "save_api_request": [
                        "KYB registry select must be saved so billing and retrieval can be tracked."
                      ]
                    }
                  },
                  "Country not covered": {
                    "summary": "कोई भी कंपनी रजिस्ट्री इस देश को कवर नहीं करती है",
                    "value": {
                      "detail": "Company registry search is not available for this country. Enter the company details manually to continue.",
                      "code": "kyb_registry_country_unsupported"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या प्रदाता कॉल से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/passive-liveness/": {
      "post": {
        "summary": "निष्क्रिय लाइवनेस",
        "description": "एक ही चेहरे की छवि से प्रेज़ेंटेशन अटैक — प्रिंटेड फ़ोटो, स्क्रीन रीप्ले, मास्क, डीपफ़ेक — का पता लगाएं। किसी वीडियो, गति या उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है।\n\n**यह कैसे काम करता है।** छवि का एक बायोमेट्रिक मॉडल द्वारा विश्लेषण किया जाता है; सबसे बड़े पहचाने गए चेहरे का मूल्यांकन किया जाता है और एक लाइवनेस `score` (0–100) की गणना की जाती है। जब कोई `error`-गंभीरता वाली चेतावनी ट्रिगर होती है, तो `status` बदलकर `Declined` हो जाता है:\n- `NO_FACE_DETECTED` — लाइवनेस मॉडल को कोई चेहरा नहीं मिला,\n- `LOW_LIVENESS_SCORE` — स्कोर `face_liveness_score_decline_threshold` (डिफ़ॉल्ट `30`) पर या उससे कम है,\n- `LIVENESS_FACE_ATTACK` — मॉडल ने प्रेज़ेंटेशन अटैक का पता लगाया,\n- `FACE_IN_BLOCKLIST` / `POSSIBLE_FACE_IN_BLOCKLIST` — चेहरा आपकी फ़ेस ब्लॉकलिस्ट की किसी प्रविष्टि से मेल खाता है।\n\n`MULTIPLE_FACES_DETECTED` एक `warning`-गंभीरता वाला सिग्नल है (यह अस्वीकृत नहीं करता है), और `DUPLICATED_FACE` / `POSSIBLE_DUPLICATED_FACE` `information`-गंभीरता वाले सिग्नल हैं जो दर्शाते हैं कि वही चेहरा पहले से ही किसी अन्य स्वीकृत सत्र में दिखाई दिया था (वे कभी अस्वीकृत नहीं करते हैं)। `face_quality` और `face_luminance` (0–100, null हो सकने वाले) कैप्चर गुणवत्ता का वर्णन करते हैं।\n\n**ब्लॉकलिस्ट और डुप्लिकेट स्क्रीनिंग।** **प्रत्येक** कॉल पर चलती है — `save_api_request` के साथ या उसके बिना — पहचाने गए चेहरे का आपके एप्लिकेशन के चेहरा खोज इंडेक्स से मिलान करके। समान `vendor_data` वाले पूर्व चेहरों को पूरे इंडेक्स सर्च से बाहर रखा जाता है — इसलिए एक ही उपयोगकर्ता के लिए लाइवनेस फिर से चलाने पर `DUPLICATED_FACE` ट्रिगर नहीं होता है, और कॉलर के अपने `vendor_data` वाले सत्र से उत्पन्न ब्लॉकलिस्टेड चेहरे को भी फ़्लैग नहीं किया जाता है (समान-`vendor_data` वाले चेहरों के लिए `FACE_IN_BLOCKLIST` स्क्रीनिंग को बायपास कर दिया जाता है)।\n\n**बिलिंग।** प्रत्येक `200` रिस्पॉन्स एक Passive Liveness API क्रेडिट की खपत करता है (आपके प्लान क्रेडिट या टॉप अप बैलेंस से भुगतान किया जाता है)। अपर्याप्त बैलेंस होने पर किसी भी छवि प्रोसेसिंग से पहले `403` रिटर्न होता है।\n\n**सत्र का स्थायित्व और चेहरे का नामांकन (`save_api_request`, डिफ़ॉल्ट `true`)।** जब `true` होता है, तो कॉल को API-प्रकार के सत्र के रूप में सुरक्षित रखा जाता है (Business Console, लौटाए गए `request_id` के माध्यम से `GET /v3/session/{sessionId}/decision/`, `status.updated` webhook), संदर्भ छवि और फ़ेस क्रॉप संग्रहीत किए जाते हैं, और पहचाने गए चेहरे को **आपके चेहरा खोज इंडेक्स में नामांकित किया जाता है** ताकि बाद के चेहरा खोज कॉल और डुप्लिकेट जांच इसका मिलान कर सकें। जब `false` होता है, तो कॉल वन-शॉट होती है: कुछ भी संग्रहीत नहीं किया जाता है और चेहरे को नामांकित नहीं किया जाता है (ब्लॉकलिस्ट/डुप्लिकेट स्क्रीनिंग अभी भी चलती है)।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ सभी प्रोसेसिंग और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक स्थिर `Approved` मॉक payload लौटाता है, कोई सत्र सुरक्षित नहीं रखा जाता है, और कोई क्रेडिट खपत नहीं होता है।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` हेडर में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं — यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` रिटर्न होता है।",
        "operationId": "post_v3passive-liveness",
        "x-didit-sdk": {
          "resource": "passive_liveness",
          "method": "check",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "user_image"
                ],
                "properties": {
                  "user_image": {
                    "type": "string",
                    "format": "binary",
                    "description": "सामने की ओर चेहरे की इमेज (उदा. सेल्फ़ी)। स्वीकृत एक्सटेंशन: `tiff`, `jpg`, `jpeg`, `png`, `webp`। अधिकतम अपलोड आकार: **5 MB** (फ़ाइलें इससे बड़ी होने पर `400` के साथ अस्वीकृत कर दी जाती हैं)। प्रोसेसिंग से पहले इमेज स्वचालित रूप से ~0.5 MB तक कंप्रेस की जाती हैं, इसलिए बहुत उच्च रिज़ॉल्यूशन सटीकता में सुधार नहीं करते हैं। इमेज में एक ही व्यक्ति होना चाहिए — जब कई चेहरे मौजूद होते हैं, तो सबसे बड़े चेहरे का मूल्यांकन किया जाता है और `MULTIPLE_FACES_DETECTED` चेतावनी जोड़ी जाती है।"
                  },
                  "face_liveness_score_decline_threshold": {
                    "type": "number",
                    "format": "float",
                    "default": 30,
                    "minimum": 0,
                    "maximum": 100,
                    "description": "लाइवनेस स्कोर थ्रेशोल्ड (0–100)। इस मान **पर या उससे नीचे** का परिकलित स्कोर `LOW_LIVENESS_SCORE` चेतावनी जारी करता है और `status` को `Declined` पर सेट करता है। डिफ़ॉल्ट `30`; अधिक सख्त एंटी-स्पूफिंग स्थिति के लिए इसे बढ़ाएं। 0–100 से बाहर के मान `400` लौटाते हैं।",
                    "example": 30
                  },
                  "rotate_image": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो सेवा इनपुट के 90-डिग्री घुमावों का प्रयास करती है और उस ओरिएंटेशन का उपयोग करती है जिससे सबसे अच्छा फ़ेस डिटेक्शन प्राप्त होता है। तब उपयोगी होता है जब EXIF ओरिएंटेशन गायब हो। विलंबता जोड़ता है।",
                    "example": false
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "जब `true` (डिफ़ॉल्ट) होता है, तो कॉल को API-प्रकार के सत्र के रूप में सुरक्षित रखा जाता है, फ़ेस छवियों को संग्रहीत किया जाता है, `status.updated` webhook उत्सर्जित किया जाता है, और पहचानी गई फ़ेस को आपके चेहरा खोज इंडेक्स में नामांकित किया जाता है। जब `false` होता है, तो कॉल वन-शॉट होती है — कुछ भी संग्रहीत नहीं किया जाता है और चेहरा नामांकित नहीं होता है। ब्लॉकलिस्ट और डुप्लिकेट स्क्रीनिंग दोनों ही मामलों में चलती हैं।",
                    "example": true
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक अपारदर्शी पहचानकर्ता (आपकी उपयोगकर्ता ID, ईमेल, UUID…) जो स्थायी सत्र पर संग्रहीत होता है और वापस भेजा जाता है। इसका उपयोग डुप्लिकेट-चेहरा जांच से उसी `vendor_data` वाले पूर्व सत्रों को बाहर करने के लिए भी किया जाता है, ताकि उसी उपयोगकर्ता को पुनः सत्यापित करने पर `DUPLICATED_FACE` न उठे।",
                    "example": "user-123"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "सत्र के साथ संग्रहीत (जब `save_api_request=true`) और वापस लौटाया जाने वाला वैकल्पिक JSON ऑब्जेक्ट। मल्टीपार्ट अनुरोधों में, इसे JSON-एन्कोडेड स्ट्रिंग फ़ील्ड के रूप में भेजें — इसे एक ऑब्जेक्ट में पार्स किया जाता है।",
                    "example": {
                      "flow": "withdrawal"
                    }
                  }
                }
              },
              "example": {
                "user_image": "(binary JPEG/PNG selfie)",
                "face_liveness_score_decline_threshold": 30,
                "rotate_image": false,
                "save_api_request": true,
                "vendor_data": "user-123",
                "metadata": {
                  "flow": "withdrawal"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "निष्क्रिय लाइवनेस पूर्ण हुई। `liveness.score` मॉडल का 0–100 विश्वास स्कोर है कि छवि एक जीवित व्यक्ति को दर्शाती है; `status` `Approved` है जब तक कि `error`-गंभीरता वाली चेतावनी ट्रिगर न हुई हो। एक स्पूफ़ किया गया या ब्लॉकलिस्ट किया गया चेहरा अभी भी `200` लौटाता है — केवल HTTP कोड ही नहीं, बल्कि `liveness.status` और `liveness.warnings` की भी जांच करें। जब `save_api_request=true` होता है, तो `request_id` संरक्षित सत्र आईडी होती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Approved": {
                    "summary": "लाइव चेहरा — कोई चेतावनी नहीं",
                    "value": {
                      "request_id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
                      "liveness": {
                        "status": "Approved",
                        "method": "PASSIVE",
                        "score": 95.0,
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                661,
                                728,
                                1688,
                                2188
                              ],
                              "confidence": 0.732973,
                              "age": 26.91,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [],
                        "face_quality": 84.21,
                        "face_luminance": 50.33
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  },
                  "Declined - presentation attack": {
                    "summary": "मॉडल ने स्पूफ (प्रिंट, रीप्ले, मास्क…) को फ़्लैग किया",
                    "value": {
                      "request_id": "f1c8c9b2-d3e4-4f5a-9b8c-7d6e5f4a3b2c",
                      "liveness": {
                        "status": "Declined",
                        "method": "PASSIVE",
                        "score": 12.5,
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                100,
                                120,
                                420,
                                540
                              ],
                              "confidence": 0.81,
                              "age": 30.1,
                              "gender": "female",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [
                          {
                            "risk": "LOW_LIVENESS_SCORE",
                            "feature": "LIVENESS",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Low liveness score",
                            "long_description": "The liveness check resulted in a low score, indicating potential use of non-live facial representations or poor-quality biometric data."
                          },
                          {
                            "risk": "LIVENESS_FACE_ATTACK",
                            "feature": "LIVENESS",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Liveness Face Attack",
                            "long_description": "The system detected a potential attempt to bypass the liveness check."
                          }
                        ],
                        "face_quality": 72.4,
                        "face_luminance": 48.2
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  },
                  "Declined - face on blocklist": {
                    "summary": "लाइव चेहरा, लेकिन यह ब्लॉकलिस्ट प्रविष्टि से मेल खाता है",
                    "value": {
                      "request_id": "0b54a1de-22aa-4e0f-9c84-5a2b1f3c4d5e",
                      "liveness": {
                        "status": "Declined",
                        "method": "PASSIVE",
                        "score": 93.75,
                        "user_image": {
                          "entities": [
                            {
                              "bbox": [
                                40,
                                40,
                                100,
                                100
                              ],
                              "confidence": 0.722082,
                              "age": 27.0,
                              "gender": "male",
                              "race": null
                            }
                          ],
                          "best_angle": 0
                        },
                        "warnings": [
                          {
                            "risk": "FACE_IN_BLOCKLIST",
                            "feature": "LIVENESS",
                            "additional_data": {
                              "blocklisted_session_id": "882c42d5-8a4d-4d20-8080-a22f57822c86",
                              "blocklisted_session_number": 3242,
                              "api_service": null
                            },
                            "log_type": "error",
                            "short_description": "Face in blocklist",
                            "long_description": "The system identified a face in the blocklist, which means the face is not allowed to be verified."
                          }
                        ],
                        "face_quality": null,
                        "face_luminance": null
                      },
                      "vendor_data": "user-123",
                      "metadata": null,
                      "created_at": "2026-06-12T01:04:42.763237+00:00"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "liveness": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined"
                          ],
                          "description": "`Declined` जब कम से कम एक `error`-गंभीरता वाली चेतावनी ट्रिगर हुई हो (कोई चेहरा नहीं, कम स्कोर, प्रेज़ेंटेशन अटैक, या कोई ब्लॉकलिस्ट हिट); अन्यथा `Approved`। `warning`/`information` प्रविष्टियाँ (एकाधिक चेहरे, डुप्लिकेट) अपने आप कभी अस्वीकृत नहीं करती हैं।"
                        },
                        "method": {
                          "type": "string",
                          "enum": [
                            "PASSIVE"
                          ],
                          "description": "इस endpoint के लिए हमेशा `PASSIVE`।"
                        },
                        "score": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "लाइवनेस विश्वास (0–100, दो दशमलव) कि छवि स्पूफिंग के बजाय एक जीवित व्यक्ति को दर्शाती है। जब मॉडल ने कोई विश्वास नहीं लौटाया तो `null`।",
                          "example": 95.0
                        },
                        "user_image": {
                          "type": "object",
                          "description": "सबमिट की गई छवि के लिए चेहरा-पहचान परिणाम।",
                          "properties": {
                            "entities": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "bbox": {
                                    "type": "array",
                                    "items": {
                                      "type": "integer"
                                    },
                                    "minItems": 4,
                                    "maxItems": 4,
                                    "description": "प्रोसेस की गई छवि में `[x_min, y_min, x_max, y_max]` पिक्सेल निर्देशांक के रूप में पहचाने गए चेहरे का बाउंडिंग बॉक्स।",
                                    "example": [
                                      661,
                                      728,
                                      1688,
                                      2188
                                    ]
                                  },
                                  "confidence": {
                                    "type": "number",
                                    "format": "float",
                                    "minimum": 0,
                                    "maximum": 1,
                                    "description": "चेहरा-पहचान विश्वास (0–1)।",
                                    "example": 0.732973
                                  },
                                  "age": {
                                    "type": "number",
                                    "format": "float",
                                    "description": "पहचाने गए चेहरे की मॉडल-अनुमानित आयु, वर्षों में। केवल सूचनात्मक — यह लाइवनेस निर्णय को प्रभावित नहीं करती है।",
                                    "example": 26.91
                                  },
                                  "gender": {
                                    "type": "string",
                                    "description": "पहचाने गए चेहरे का मॉडल-अनुमानित लिंग (`male` या `female`)। केवल सूचनात्मक।",
                                    "example": "male"
                                  },
                                  "race": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "आरक्षित फ़ील्ड — इस endpoint से मिलने वाले रिस्पॉन्स में हमेशा `null` होता है।",
                                    "example": null
                                  }
                                }
                              },
                              "description": "प्रत्येक पहचाने गए चेहरे के लिए एक प्रविष्टि। सबसे बड़े चेहरे का मूल्यांकन किया जाता है।"
                            },
                            "best_angle": {
                              "type": "integer",
                              "nullable": true,
                              "description": "रोटेशन (डिग्री) जिसने चेहरे का सर्वोत्तम डिटेक्शन उत्पन्न किया; केवल तभी गैर-शून्य जब `rotate_image=true` ने ओरिएंटेशन को ठीक किया।",
                              "example": 0
                            }
                          }
                        },
                        "warnings": {
                          "type": "array",
                          "description": "जोखिम सिग्नल। `error` गंभीरता (अस्वीकृति): `NO_FACE_DETECTED`, `LOW_LIVENESS_SCORE` (स्कोर थ्रेशोल्ड पर या उससे नीचे), `LIVENESS_FACE_ATTACK`, `FACE_IN_BLOCKLIST`, `POSSIBLE_FACE_IN_BLOCKLIST`। `warning` गंभीरता (समीक्षा, कोई अस्वीकृति नहीं): `MULTIPLE_FACES_DETECTED`। `information` गंभीरता (कोई अस्वीकृति नहीं): `DUPLICATED_FACE`, `POSSIBLE_DUPLICATED_FACE` — वही चेहरा पहले ही किसी अन्य स्वीकृत सत्र में दिखाई दे चुका है।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "risk": {
                                "type": "string",
                                "enum": [
                                  "NO_FACE_DETECTED",
                                  "LOW_LIVENESS_SCORE",
                                  "LIVENESS_FACE_ATTACK",
                                  "MULTIPLE_FACES_DETECTED",
                                  "FACE_IN_BLOCKLIST",
                                  "POSSIBLE_FACE_IN_BLOCKLIST",
                                  "DUPLICATED_FACE",
                                  "POSSIBLE_DUPLICATED_FACE"
                                ],
                                "description": "मशीन-पठनीय जोखिम कोड।"
                              },
                              "feature": {
                                "type": "string",
                                "enum": [
                                  "LIVENESS"
                                ],
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की। इस endpoint पर हमेशा `LIVENESS`।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": true,
                                "description": "अधिकांश चेतावनियों के लिए `null`। ब्लॉकलिस्ट हिट्स में `{blocklisted_session_id, blocklisted_session_number, api_service}` शामिल होते हैं; डुप्लिकेट हिट्स में `{duplicated_session_id, duplicated_session_number, api_service}` शामिल होते हैं जो मिलान वाले सत्र की ओर संकेत करते हैं।"
                              },
                              "log_type": {
                                "type": "string",
                                "enum": [
                                  "error",
                                  "warning",
                                  "information"
                                ],
                                "description": "गंभीरता। `error` चेतावनियाँ `status` को `Declined` में बदल देती हैं; `warning` और `information` प्रविष्टियाँ केवल सलाहकारी होती हैं और अपने आप कभी अस्वीकृत नहीं करती हैं।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                              }
                            }
                          }
                        },
                        "face_quality": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "डिटेक्ट किए गए चेहरे का कैप्चर-गुणवत्ता स्कोर, 0–100 में सामान्यीकृत। जब मॉडल विश्वसनीय मान उत्पन्न नहीं कर सका तो `null`।",
                          "example": 84.21
                        },
                        "face_luminance": {
                          "type": "number",
                          "format": "float",
                          "nullable": true,
                          "minimum": 0,
                          "maximum": 100,
                          "description": "पहचाने गए चेहरे की चमक (brightness), 0–100 में सामान्यीकृत। अनुपलब्ध होने पर `null`।",
                          "example": 50.33
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको, या `null`।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "आपके द्वारा भेजे गए `metadata` ऑब्जेक्ट का इको, या `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "रिस्पॉन्स जनरेट होने का ISO 8601 टाइमस्टैम्प (UTC), उदा. `2026-06-12T01:04:42.763237+00:00`।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। तब लौटाई जाती है जब `user_image` गायब हो, 5 MB से अधिक हो, इसका एक्सटेंशन असमर्थित हो, सर्वर-साइड इमेज डिकोडिंग विफल हो जाए, या जब कोई विकल्प सीमा से बाहर हो। फ़ील्ड त्रुटियां DRF के `{field: [messages]}` एनवेलप का उपयोग करती हैं; इमेज-डिकोडिंग विफलताएं `{\"error\": ...}` का उपयोग करती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing image": {
                    "summary": "`user_image` फ़ॉर्म डेटा में शामिल नहीं है",
                    "value": {
                      "user_image": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Invalid image format": {
                    "summary": "स्वीकृत एक्सटेंशन लेकिन अनडीकोडेबल इमेज सामग्री",
                    "value": {
                      "error": "Invalid user image format.",
                      "code": "invalid_image"
                    }
                  },
                  "Unsupported file extension": {
                    "summary": "फ़ाइल एक्सटेंशन tiff/jpg/jpeg/png/webp से बाहर है",
                    "value": {
                      "user_image": [
                        "File extension “txt” is not allowed. Allowed extensions are: tiff, jpg, jpeg, png, webp."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "अपलोड 5 MB की सीमा से अधिक है",
                    "value": {
                      "user_image": [
                        "File size should not exceed 5 MB"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी इमेज प्रोसेसिंग से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/passive-liveness/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'user_image=@./selfie.jpg' \\\n  -F 'face_liveness_score_decline_threshold=30' \\\n  -F 'save_api_request=true' \\\n  -F 'vendor_data=user-123'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.passive_liveness.check(\n    user_image=open(\"user_image.jpg\", \"rb\"),\n    face_liveness_score_decline_threshold=30.0,\n    rotate_image=False,\n    save_api_request=True,\n    vendor_data=\"user-123\",\n    metadata={\"flow\": \"withdrawal\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.passiveLiveness.check({\n  user_image: await fileFromPath(\"user_image.jpg\"),\n  face_liveness_score_decline_threshold: 30.0,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"withdrawal\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.PassiveLiveness.Check(ctx, didit.PassiveLivenessCheckParams{\n\tUserImage:                         didit.FileFromPath(\"user_image.jpg\"),\n\tFaceLivenessScoreDeclineThreshold: didit.Float(30.0),\n\tRotateImage:                       didit.Bool(false),\n\tSaveAPIRequest:                    didit.Bool(true),\n\tVendorData:                        didit.String(\"user-123\"),\n\tMetadata:                          didit.Some(map[string]any{\"flow\": \"withdrawal\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.PassiveLivenessCheckParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.passiveLiveness().check(PassiveLivenessCheckParams.builder()\n        .userImage(Path.of(\"user_image.jpg\"))\n        .faceLivenessScoreDeclineThreshold(30.0)\n        .rotateImage(false)\n        .saveApiRequest(true)\n        .vendorData(\"user-123\")\n        .metadata(Map.of(\"flow\", \"withdrawal\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->passiveLiveness->check([\n    'user_image' => File::fromPath('user_image.jpg'),\n    'face_liveness_score_decline_threshold' => 30.0,\n    'rotate_image' => false,\n    'save_api_request' => true,\n    'vendor_data' => 'user-123',\n    'metadata' => ['flow' => 'withdrawal'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.passive_liveness.check(\n  user_image: Pathname(\"user_image.jpg\"),\n  face_liveness_score_decline_threshold: 30.0,\n  rotate_image: false,\n  save_api_request: true,\n  vendor_data: \"user-123\",\n  metadata: { flow: \"withdrawal\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.PassiveLiveness.CheckAsync(new PassiveLivenessCheckParams\n{\n    UserImage = FileUpload.FromPath(\"user_image.jpg\"),\n    FaceLivenessScoreDeclineThreshold = 30.0,\n    RotateImage = false,\n    SaveApiRequest = true,\n    VendorData = \"user-123\",\n    Metadata = new Dictionary<string, object> { [\"flow\"] = \"withdrawal\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/database-validation/": {
      "post": {
        "summary": "डेटाबेस सत्यापन (स्टैंडअलोन)",
        "operationId": "post_v3database-validation",
        "x-didit-sdk": {
          "resource": "database_validation",
          "method": "validate",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [],
        "description": "आधिकारिक सरकारी और रजिस्ट्री स्रोतों के विरुद्ध किसी व्यक्ति के पहचान डेटा को सत्यापित करें — ब्राज़ील में CPF, अर्जेंटीना में RENAPER, स्पेन और पेरू में DNI रजिस्ट्रियाँ, मेक्सिको में INE, और 60+ देशों में 100+ से अधिक सेवाएँ।\n\n**सेवा चयन।** प्रत्येक देश एक या अधिक कैटलॉग सेवाएँ प्रदर्शित करता है जिनकी पहचान एक `service_id` (उदा. `bra_cpf`, `arg_renaper`, `pan_cedula_sib`) द्वारा की जाती है। `services` ऐरे के साथ उन सेवाओं को पिन करें जिन्हें आप चाहते हैं — यदि आप इसे छोड़ देते हैं, तो ठीक **एक** डिफ़ॉल्ट सेवा चलती है (देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा)। `services` भेजने से रिस्पॉन्स भी `services_used` और `match_score` वाले विस्तारित प्रारूप में स्विच हो जाता है। `GET /v1/organization/database-validation-countries/` (इस विनिर्देश में प्रलेखित नहीं किया गया एक कैटलॉग endpoint) या Business Console वर्कफ़्लो संपादक के माध्यम से सेवाओं, उनके आवश्यक फ़ील्ड और कीमतों का पता लगाएं। कैटलॉग में कुछ सेवाओं को `requires_consent=true` के रूप में फ़्लैग किया गया है और उनके लिए `consent=true` आवश्यक है; दूसरों को कॉल किए जाने से पहले आपके संगठन के लिए ऑनबोर्डिंग की आवश्यकता होती है।\n\n**इनपुट फ़ील्ड।** `identification_number` एक सार्वभौमिक फ़ील्ड है जो स्वचालित रूप से सही देश-विशिष्ट फ़ील्ड में मैप हो जाता है (इसका विवरण देखें)। किसी भी प्रदाता को कॉल करने से पहले देश प्रारूप नियमों को लागू किया जाता है (उदा. BRA CPF में ठीक 11 अंक होने चाहिए) और प्रारूप विफलताओं के लिए कभी बिल नहीं किया जाता है। बायोमेट्रिक सेवाओं के लिए `selfie` अपलोड (केवल multipart) की आवश्यकता होती है; अर्जेंटीना RENAPER को अतिरिक्त रूप से `gender` की आवश्यकता होती है।\n\n**परिणाम।** प्रत्येक सेवा फ़ील्ड-दर-फ़ील्ड `validation` मैप के साथ-साथ एक वेंडर-न्यूट्रल `outcome_code` (`MATCH`, `PARTIAL_MATCH`, `NO_MATCH`, `DOCUMENT_NOT_FOUND`, `INVALID_DOCUMENT_FORMAT`, `INVALID_INPUT`, `MINOR_BLOCKED`, `DECEASED`, `BIOMETRIC_NO_MATCH`, `BIOMETRIC_IMAGE_UNUSABLE`, `INCONCLUSIVE`, `DOCUMENT_SUPERSEDED`, `REGISTRY_UNAVAILABLE`, `REGISTRY_ERROR`) लौटाती है। अंतरों पर ध्यान दें: `NO_MATCH` एक निश्चित बेमेल है, `INCONCLUSIVE` का अर्थ है कि रजिस्ट्री किसी भी तरह से पुष्टि नहीं कर सकी (समीक्षा करें, अस्वीकार न करें), और `BIOMETRIC_IMAGE_UNUSABLE` एक तकनीकी सेल्फ़ी समस्या है (फिर से लें), निश्चित `BIOMETRIC_NO_MATCH` के विपरीत। समग्र `match_type` सेवाओं में एग्रीगेट होता है (कोई भी पूर्ण → `full_match`, अन्यथा कोई भी आंशिक → `partial_match`, अन्यथा `no_match`) और `no_match_action`/`partial_match_action` इसे अंतिम `status` में अनुवादित करते हैं। `validation_type` व्युत्पन्न है: `two_by_two` जब दो या अधिक विशिष्ट सेवाओं ने पूर्ण मिलान दिया हो (पहचान संख्या पर, पूरा नाम + जन्म तिथि पर एक साथ, या बिना किसी विरोधाभास के पते पर), अन्यथा `one_by_one`।\n\n**स्थायित्व।** `save_api_request` डिफ़ॉल्ट रूप से **true** होता है: परिणाम एक सत्र के रूप में संग्रहीत किया जाता है (`request_id`, `GET /v3/session/{sessionId}/decision/` के साथ काम करता है), कंसोल में दिखाई देता है, और एक `status.updated` webhook ट्रिगर करता है। यह `validations` प्रारूप को भी नियंत्रित करता है — सहेजे जाने पर प्रति-सेवा ऑब्जेक्ट, और न होने पर एक मर्ज किया गया `{field: match}` मैप।\n\n**बिलिंग।** प्रति-सेवा: प्रत्येक सेवा जो बिल योग्य परिणाम लौटाती है, उससे उसकी अपनी कैटलॉग कीमत ली जाती है। विफल या छोड़ी गई सेवाओं के लिए बिल नहीं लिया जाता है, और `400` के साथ अस्वीकृत अनुरोधों का कोई शुल्क नहीं लगता है। प्री-फ़्लाइट बैलेंस जांच चयनित सेवाओं की कीमतों के योग को कवर करती है (कमी होने पर `403`)।\n\n**विफलताएं।** जब कोई भी चयनित सेवा उपयोग योग्य परिणाम नहीं लौटाती है, तो API `validation_errors` के साथ `400` लौटाता है यदि प्रत्येक अनुत्तरित प्रयास ने स्पष्ट रूप से इनपुट को अस्वीकार कर दिया हो (`provider_rejected_input`, `retryable: false`)। पुनः प्रयास करने से पहले इनपुट को सही करें। अन्यथा यह `validation_errors` (`empty_provider_response`, `retryable: true`) के साथ `502` लौटाता है, जिसमें मिश्रित इनपुट अस्वीकृति और अनुपलब्ध फ़ॉलबैक प्रयास शामिल हैं; कुछ भी बिल नहीं किया जाता है (जब `save_api_request=true` हो तो `Not Finished` स्थिति के साथ एक सत्र अभी भी रिकॉर्ड किया जाता है)। जब केवल कुछ सेवाएँ विफल होती हैं, तो `200` रिस्पॉन्स `database_validation.errors` में उनकी विफलताएँ रखता है।\n\n**सैंडबॉक्स।** सैंडबॉक्स एप्लिकेशन की कुंजियाँ रजिस्ट्री कॉल और बिलिंग को छोड़ देती हैं और एक स्थिर `full_match` रिस्पॉन्स लौटाती हैं — सैंडबॉक्स payload में हमेशा `services_used` और `match_score: 100` शामिल होता है, चाहे `services` कैसे भी भेजा गया हो, इसलिए सैंडबॉक्स रिस्पॉन्स के विरुद्ध लाइव विस्तारित-प्रारूप की शर्तों या 0.0–1.0 `match_score` अंश को मान्य न करें।\n\nअनुरोध को `application/json` के रूप में भेजें, या `selfie` अपलोड करते समय `multipart/form-data` के रूप में।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "issuing_state"
                ],
                "properties": {
                  "issuing_state": {
                    "type": "string",
                    "description": "सत्यापन के लिए रजिस्ट्री का ISO 3166-1 **alpha-3** देश कोड (उदाहरण के लिए `BRA`, `ESP`, `COL`)। यह निर्धारित करता है कि कौन सी सेवाएँ उपलब्ध हैं। असमर्थित कोड मान्य विकल्पों की पूरी सूची के साथ `400` लौटाते हैं।",
                    "example": "BRA"
                  },
                  "services": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस देश के लिए चलाए जाने वाले कैटलॉग `service_id` (उदा. `[\"bra_cpf\"]`)। यह एकल स्ट्रिंग या कॉमा-सेपरेटेड/JSON-एन्कोडेड स्ट्रिंग भी स्वीकार करता है। **यदि छोड़ दिया जाए या खाली हो, तो ठीक एक डिफ़ॉल्ट सेवा चलती है** — देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा; अधिक नई, बायोमेट्रिक, और पे-ऐज़-यू-गो सेवाओं को स्पष्ट रूप से नामित किया जाना चाहिए। `services` भेजने से रिस्पॉन्स विस्तारित आकार में बदल जाता है (`services_used` और `match_score` जुड़ जाते हैं)। प्रत्येक id का अस्तित्व होना चाहिए और `issuing_state` के लिए लाइव होना चाहिए; जिन सेवाओं के लिए ऑनबोर्डिंग की आवश्यकता होती है, वे आपके संगठन के लिए सक्रिय होने तक `400` लौटाती हैं। `GET /v1/organization/database-validation-countries/` (एक कैटलॉग endpoint जो इस विनिर्देश में प्रलेखित नहीं है) या Business Console वर्कफ़्लो संपादक के माध्यम से प्रति देश उपलब्ध सेवाओं की खोज करें।",
                    "example": [
                      "bra_cpf"
                    ]
                  },
                  "validation_type": {
                    "type": "string",
                    "deprecated": true,
                    "description": "अप्रचलित। पश्चगामी अनुकूलता के लिए स्वीकृत लेकिन अनदेखा — रिस्पॉन्स `validation_type` अब इस बात से लिया जाता है कि कितनी सेवाएँ पूरी तरह से मेल खाती हैं। विशिष्ट सेवाओं को पिन करने के लिए `services` का उपयोग करें।"
                  },
                  "consent": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब अंतिम उपयोगकर्ता ने चयनित सत्यापन सेवाओं के लिए स्पष्ट रूप से सहमति दी हो, तो `true` पर सेट करें। कैटलॉग में `requires_consent=true` के रूप में फ़्लैग की गई सेवाओं के लिए यह आवश्यक है — इसके बिना वे सेवाएँ `services_requiring_consent` के साथ `400` लौटाती हैं।"
                  },
                  "identification_number": {
                    "type": "string",
                    "description": "सार्वभौमिक पहचान संख्या — स्वचालित रूप से सही देश-विशिष्ट फ़ील्ड में मैप की जाती है, ताकि आप इसे `personal_number`/`tax_number`/`document_number` के स्थान पर उपयोग कर सकें: ARG→document_number (DNI), BOL→document_number (CI), BRA→tax_number (CPF, 11 अंक), CHL→personal_number (RUT), COL→personal_number (Cédula), CRI→personal_number (Cédula), DOM→personal_number (Cédula, 11 अंक), ECU→personal_number (Cédula, 10 अंक), ESP→personal_number (DNI/NIE), GTM→document_number (DPI), HND→document_number (DNI), MEX→personal_number (CURP, 18 वर्ण), PAN→personal_number (Cédula), PER→personal_number (DNI, 8 अंक), PRY→document_number (CI), SLV→document_number (DUI), URY→personal_number (CI), VEN→document_number (Cédula)। यह स्पष्ट रूप से प्रदान किए गए देश-विशिष्ट फ़ील्ड को कभी भी ओवरराइड नहीं करता है।"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "व्यक्ति का पहला नाम। कुछ सेवाओं/देशों के लिए आवश्यक।",
                    "example": "John"
                  },
                  "last_name": {
                    "type": "string",
                    "description": "व्यक्ति का अंतिम नाम। कुछ सेवाओं/देशों द्वारा आवश्यक।",
                    "example": "Doe"
                  },
                  "middle_name": {
                    "type": "string",
                    "description": "मध्य नाम, कुछ देश सेवाओं (AUS, NZL, …) द्वारा उपयोग किया जाता है।"
                  },
                  "full_name": {
                    "type": "string",
                    "description": "पूरा नाम — कुछ सेवाएँ इसे प्रथम/अंतिम नाम के बदले स्वीकार करती हैं (उदाहरण के लिए CHN सेवाएँ, जो मूल-लिपि नाम का मिलान करती हैं)।"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "description": "जन्म तिथि, `YYYY-MM-DD`। कई सेवाओं द्वारा आवश्यक।",
                    "example": "1980-01-01"
                  },
                  "personal_number": {
                    "type": "string",
                    "description": "सरकार द्वारा जारी विशिष्ट व्यक्तिगत पहचानकर्ता। इनके द्वारा उपयोग किया जाता है: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY। इसके बजाय `identification_number` पर विचार करें।"
                  },
                  "tax_number": {
                    "type": "string",
                    "description": "कर पहचान संख्या। इनमें प्रयुक्त: BRA (CPF, 11 अंक)। इसके बजाय `identification_number` का उपयोग करने पर विचार करें।"
                  },
                  "document_number": {
                    "type": "string",
                    "description": "दस्तावेज़ संख्या। इनके द्वारा उपयोग किया जाता है: ARG (DNI), BOL (CI), GTM (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula)। इसके बजाय `identification_number` पर विचार करें।"
                  },
                  "document_type": {
                    "type": "string",
                    "enum": [
                      "P",
                      "DL",
                      "ID",
                      "RP",
                      "SSC",
                      "HIC",
                      "WP",
                      "TC",
                      "VISA",
                      "PSC",
                      "BC",
                      "OTHER"
                    ],
                    "description": "सत्यापित किए जा रहे दस्तावेज़ का प्रकार: `P` पासपोर्ट, `DL` ड्राइविंग लाइसेंस, `ID` राष्ट्रीय पहचान पत्र, `RP` निवास परमिट (साथ ही `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`)। कुछ सेवाओं (जैसे ESP) द्वारा आवश्यक।"
                  },
                  "expiration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "दस्तावेज़ की समाप्ति तिथि, `YYYY-MM-DD`। ESP (स्पेन) सत्यापन के लिए आवश्यक।",
                    "example": "2030-01-15"
                  },
                  "date_of_issue": {
                    "type": "string",
                    "format": "date",
                    "description": "दस्तावेज़ जारी करने की तिथि, `YYYY-MM-DD` (fecha de expedición)। COL (कोलंबिया) cédula सत्यापन के लिए आवश्यक।",
                    "example": "2015-06-20"
                  },
                  "nationality": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-3 के रूप में राष्ट्रीयता। कुछ सेवाओं द्वारा आवश्यक।"
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "M",
                      "F",
                      "X"
                    ],
                    "description": "लिंग: `M`, `F`, या `X` (अन्य/अज्ञात)। अर्जेंटीना के RENAPER सत्यापन (`arg_renaper`) के लिए आवश्यक।"
                  },
                  "address": {
                    "description": "आवासीय पता। संरचित ऑब्जेक्ट `{\"street_1\":\"123 Main St\",\"street_2\":\"Apt 4B\",\"city\":\"Springfield\",\"region\":\"IL\",\"postal_code\":\"62701\",\"country\":\"US\"}` को प्राथमिकता दें; पूरी सिंगल-लाइन स्ट्रिंग अभी भी स्वीकार की जाती है। पता-सत्यापन सेवाओं द्वारा आवश्यक; जब कोई सेवा पते की आवश्यकताएं निर्धारित करती है, तो छूटे हुए हिस्से `address_fields_required_by` के साथ `400` लौटाते हैं।",
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "street_1": {
                            "type": "string"
                          },
                          "street_2": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "region": {
                            "type": "string"
                          },
                          "postal_code": {
                            "type": "string"
                          },
                          "country": {
                            "type": "string"
                          }
                        }
                      },
                      {
                        "type": "string",
                        "description": "पूर्ण एकल-पंक्ति पता (लीगेसी)।"
                      }
                    ]
                  },
                  "address_element_1": {
                    "type": "string",
                    "description": "सड़क संख्या और प्रकार सहित सड़क का पता। यदि छोड़ दिया जाए, तो यह `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_2": {
                    "type": "string",
                    "description": "अपार्टमेंट, यूनिट, भवन, फ़्लोर, या अतिरिक्त पता पंक्ति। केवल तभी भेजें जब आपके पास यह स्पष्ट रूप से उपलब्ध हो।"
                  },
                  "address_element_3": {
                    "type": "string",
                    "description": "शहर, उपनगर, ज़िला, इलाका या पड़ोस। यदि छोड़ा गया है, तो `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_4": {
                    "type": "string",
                    "description": "राज्य, प्रांत, क्षेत्र या कस्बा। यदि छोड़ दिया जाए, तो `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_5": {
                    "type": "string",
                    "description": "पोस्टकोड या डाक कोड। `postal_code` को एक उपनाम के रूप में स्वीकार किया जाता है।"
                  },
                  "postal_code": {
                    "type": "string",
                    "description": "पता-आधारित सेवाओं के लिए डाक कोड (`address_element_5` का उपनाम)।"
                  },
                  "driver_license_number": {
                    "type": "string",
                    "description": "सरकारी दस्तावेज़-सत्यापन सेवाओं (AUS, NZL, IND) के लिए ड्राइविंग लाइसेंस संख्या।"
                  },
                  "driver_license_card_number": {
                    "type": "string",
                    "description": "भौतिक ड्राइविंग लाइसेंस कार्ड नंबर, जहाँ लाइसेंस नंबर (AUS) से अलग आवश्यक हो।"
                  },
                  "driver_license_state": {
                    "type": "string",
                    "description": "ड्राइविंग लाइसेंस जारी करने वाला राज्य या क्षेत्र (AUS)।"
                  },
                  "driver_license_version": {
                    "type": "string",
                    "description": "ड्राइविंग लाइसेंस वर्ज़न कोड (NZL)।"
                  },
                  "passport_number": {
                    "type": "string",
                    "description": "सरकारी पासपोर्ट-सत्यापन सेवाओं (AUS, NZL, IND, CHN) के लिए पासपोर्ट संख्या।"
                  },
                  "passport_expiration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "पासपोर्ट समाप्ति तिथि, `YYYY-MM-DD`, पासपोर्ट-सत्यापन सेवाओं के लिए।"
                  },
                  "passport_file_number": {
                    "type": "string",
                    "description": "पासपोर्ट फ़ाइल संख्या (IND)।"
                  },
                  "passport_issue_country": {
                    "type": "string",
                    "description": "पासपोर्ट-सत्यापन सेवाओं के लिए पासपोर्ट का जारीकर्ता देश (ISO 3166-1 alpha-3)।"
                  },
                  "medicare_card_number": {
                    "type": "string",
                    "description": "मेडिकेयर कार्ड नंबर (AUS)।"
                  },
                  "immi_card_number": {
                    "type": "string",
                    "description": "ऑस्ट्रेलियाई ImmiCard संख्या।"
                  },
                  "immi_card_expiry_date": {
                    "type": "string",
                    "format": "date",
                    "description": "ऑस्ट्रेलियाई ImmiCard की समाप्ति तिथि।"
                  },
                  "citizenship_certificate_number": {
                    "type": "string",
                    "description": "नागरिकता प्रमाणपत्र संख्या (AUS)।"
                  },
                  "birth_registration_number": {
                    "type": "string",
                    "description": "जन्म प्रमाण पत्र पंजीकरण संख्या (AUS)।"
                  },
                  "birth_registration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "जन्म प्रमाण पत्र पंजीकरण तिथि (AUS)।"
                  },
                  "birth_registration_state": {
                    "type": "string",
                    "description": "जन्म प्रमाण पत्र पंजीकरण राज्य (AUS)।"
                  },
                  "marriage_certificate_number": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र संख्या (AUS)।"
                  },
                  "change_of_name_certificate_number": {
                    "type": "string",
                    "description": "नाम परिवर्तन प्रमाणपत्र संख्या (AUS)।"
                  },
                  "first_partner_name": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र (AUS) पर साथी का पहला नाम।"
                  },
                  "last_partner_name": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र (AUS) पर साथी का अंतिम नाम।"
                  },
                  "voter_id": {
                    "type": "string",
                    "description": "मतदाता पंजीकरण संख्या (IND EPIC, IRL)।"
                  },
                  "epic_card": {
                    "type": "string",
                    "description": "भारत EPIC वोटर कार्ड नंबर।"
                  },
                  "pan": {
                    "type": "string",
                    "description": "भारत PAN (Permanent Account Number)।"
                  },
                  "national_id": {
                    "type": "string",
                    "description": "राष्ट्रीय पहचान संख्या (CHN, MYS, KEN, KHM, NGA, ZAF, …)।"
                  },
                  "cic": {
                    "type": "string",
                    "description": "मेक्सिकन INE/IFE Código de Identificación de Credencial (CIC), 9 अंक। MEX INE क्रेडेंशियल-वैधता सेवा (`mex_ine_vigencia`) द्वारा उपयोग किया जाता है।"
                  },
                  "identificador_ciudadano": {
                    "type": "string",
                    "description": "मेक्सिकन INE Identificador del Ciudadano (9 अंक)। `mex_ine_vigencia` में आधुनिक INE मॉडल (E/F/G/H) के लिए `cic` के साथ उपयोग किया जाता है।"
                  },
                  "ocr": {
                    "type": "string",
                    "description": "मेक्सिकन INE OCR नंबर (13 अंक, कार्ड का पिछला भाग)। `mex_ine_vigencia` में मॉडल D के लिए `cic` के साथ उपयोग किया जाता है।"
                  },
                  "voter_number": {
                    "type": "string",
                    "description": "मेक्सिकन INE Clave de Elector (18 वर्ण)। `mex_ine_vigencia` में लीगेसी IFE मॉडल (A/B/C) के लिए `emission_number` के साथ उपयोग किया जाता है।"
                  },
                  "emission_number": {
                    "type": "string",
                    "description": "मेक्सिकन INE Número de Emisión। `mex_ine_vigencia` में लीगेसी IFE मॉडल (A/B/C) के लिए `voter_number` के साथ उपयोग किया जाता है।"
                  },
                  "bvn": {
                    "type": "string",
                    "description": "नाइजीरियाई बैंक सत्यापन संख्या।"
                  },
                  "bank_card_number": {
                    "type": "string",
                    "description": "बैंक कार्ड नंबर (CHN बैंक-कार्ड सत्यापन)।"
                  },
                  "company_registration_number": {
                    "type": "string",
                    "description": "कंपनी पंजीकरण संख्या जैसा कि कंपनी रजिस्ट्री द्वारा जारी किया गया है: ब्राज़ील में CNPJ (उदा. `11222333000181`), दक्षिण अफ्रीका में पंजीकरण संख्या (उदा. `1936/007721/06`)। कंपनी रजिस्ट्री और कंपनी निदेशक सेवाओं (`bra_company_registry`, `bra_company_directors`, `zaf_company_registry`, `zaf_company_directors`) द्वारा आवश्यक।"
                  },
                  "company_name": {
                    "type": "string",
                    "description": "पंजीकृत कंपनी का नाम, रजिस्टर प्रविष्टि के साथ क्रॉस-चेक किया गया। `zaf_company_registry` के लिए वैकल्पिक।"
                  },
                  "initials": {
                    "type": "string",
                    "description": "दस्तावेज़ पर छपे व्यक्ति के आद्याक्षर। `zaf_drivers_license` के लिए आवश्यक; `zaf_bank_account_holder` द्वारा स्वीकृत।"
                  },
                  "licence_number": {
                    "type": "string",
                    "description": "`zaf_drivers_license` के लिए कार्ड पर मुद्रित ड्राइविंग लाइसेंस संख्या। छोड़े जाने पर, `document_number` का उपयोग किया जाता है।"
                  },
                  "refugee_file_number": {
                    "type": "string",
                    "description": "दक्षिण अफ़्रीका के गृह विभाग द्वारा जारी की गई शरणार्थी फ़ाइल संख्या। `zaf_refugee` द्वारा आवश्यक।"
                  },
                  "bank_name": {
                    "type": "string",
                    "description": "उस बैंक का नाम जिसमें खाता है। `zaf_bank_account_holder` के लिए आवश्यक।"
                  },
                  "bank_account_number": {
                    "type": "string",
                    "description": "बैंक खाता संख्या। `zaf_bank_account_holder` द्वारा आवश्यक; `zaf_fraud_prevention` द्वारा स्वीकृत।"
                  },
                  "account_type": {
                    "type": "string",
                    "description": "`zaf_bank_account_holder` के लिए बैंक खाते का प्रकार: `current`, `savings`, `transmission`, `subscriptionShare` या `notKnown`, केस-असंवेदनशील। कोई भी अन्य मान `400` लौटाता है। जब आपको प्रकार न पता हो तो इसे छोड़ दें: खाता-प्रकार क्रॉस-चेक तब अपुष्ट के रूप में रिपोर्ट किया जाता है।"
                  },
                  "phone_number": {
                    "type": "string",
                    "description": "संपर्क मोबाइल नंबर, उन सेवाओं के लिए जो संपर्क क्षमता की क्रॉस-जांच करती हैं (`zaf_bank_account_holder`, `zaf_fraud_prevention`, `zaf_refugee`)।"
                  },
                  "right_thumb": {
                    "type": "string",
                    "description": "`zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड दाएं अंगूठे का फ़िंगरप्रिंट, `left_thumb` के साथ या अकेले।"
                  },
                  "left_thumb": {
                    "type": "string",
                    "description": "`zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड बाएं अंगूठे का फ़िंगरप्रिंट, `right_thumb` के साथ या अकेले।"
                  },
                  "score_level": {
                    "type": "integer",
                    "description": "`zaf_criminal_face_screening` के लिए न्यूनतम बायोमेट्रिक स्कोर स्तर। डिफ़ॉल्ट `3` है।"
                  },
                  "max_matches": {
                    "type": "integer",
                    "description": "`zaf_criminal_face_screening` द्वारा लौटाए जाने वाले उम्मीदवार मिलानों की अधिकतम संख्या। डिफ़ॉल्ट `1` है।"
                  },
                  "vehicle_register_number": {
                    "type": "string",
                    "description": "वाहन पंजीकरण संख्या। `zaf_vehicle_ownership` द्वारा `vehicle_licence_plate` और `vin` के साथ आवश्यक।"
                  },
                  "vehicle_licence_plate": {
                    "type": "string",
                    "description": "वाहन लाइसेंस प्लेट नंबर। `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और `vin` के साथ आवश्यक।"
                  },
                  "vin": {
                    "type": "string",
                    "description": "वाहन पहचान संख्या (VIN या चेसिस नंबर)। `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और `vehicle_licence_plate` के साथ आवश्यक।"
                  },
                  "ssn": {
                    "type": "string",
                    "description": "सोशल सिक्योरिटी नंबर (USA)।"
                  },
                  "phone": {
                    "type": "string",
                    "description": "फ़ोन-सत्यापन सेवाओं के लिए फ़ोन नंबर।"
                  },
                  "landline": {
                    "type": "string",
                    "description": "फ़ोन सत्यापन सेवाओं के लिए लैंडलाइन नंबर।"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "पहचान सत्यापन सेवाओं के लिए ईमेल पता।"
                  },
                  "country_of_residence": {
                    "type": "string",
                    "description": "निवास का ISO 3166-1 alpha-2 देश। लुकअप को फ़ोकस करने के लिए वैश्विक पहचान-संवर्धन सेवाओं (उदा. `glb_identity_enrichment`) द्वारा उपयोग किया जाता है।",
                    "example": "US"
                  },
                  "partial_match_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "NO_ACTION",
                    "description": "`partial_match` द्वारा `database_validation.status` पर की जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `NO_ACTION` (स्थिति चेतावनी के साथ `Approved` रहती है)।"
                  },
                  "no_match_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "`no_match` द्वारा `database_validation.status` पर की जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `DECLINE`।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "सत्यापन को एक सत्र के रूप में बनाए रखें (कंसोल दृश्यता, निर्णय endpoint, `status.updated` webhook)। यह `validations` रिस्पॉन्स के फ़ॉर्मैट को भी बदलता है: `true` (डिफ़ॉल्ट) होने पर प्रति-सेवा ऑब्जेक्ट, `false` होने पर मर्ज किया गया फ़ील्ड मैप।"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "सत्यापित उपयोगकर्ता के लिए आपका पहचानकर्ता; वापस दोहराया जाता है और सत्र के साथ संग्रहीत किया जाता है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "अनुरोध के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।"
                  }
                }
              },
              "example": {
                "issuing_state": "BRA",
                "services": [
                  "bra_cpf"
                ],
                "identification_number": "12345678900",
                "first_name": "John",
                "last_name": "Doe",
                "date_of_birth": "1980-01-01",
                "vendor_data": "user-1234"
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "issuing_state"
                ],
                "properties": {
                  "issuing_state": {
                    "type": "string",
                    "description": "सत्यापन के लिए रजिस्ट्री का ISO 3166-1 **alpha-3** देश कोड (उदाहरण के लिए `BRA`, `ESP`, `COL`)। यह निर्धारित करता है कि कौन सी सेवाएँ उपलब्ध हैं। असमर्थित कोड मान्य विकल्पों की पूरी सूची के साथ `400` लौटाते हैं।",
                    "example": "BRA"
                  },
                  "services": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस देश के लिए चलाए जाने वाले कैटलॉग `service_id` (उदा. `[\"bra_cpf\"]`)। यह एकल स्ट्रिंग या कॉमा-सेपरेटेड/JSON-एन्कोडेड स्ट्रिंग भी स्वीकार करता है। **यदि छोड़ दिया जाए या खाली हो, तो ठीक एक डिफ़ॉल्ट सेवा चलती है** — देश के लिए सबसे लंबे समय से स्थापित लाइव सेवा; अधिक नई, बायोमेट्रिक, और पे-ऐज़-यू-गो सेवाओं को स्पष्ट रूप से नामित किया जाना चाहिए। `services` भेजने से रिस्पॉन्स विस्तारित आकार में बदल जाता है (`services_used` और `match_score` जुड़ जाते हैं)। प्रत्येक id का अस्तित्व होना चाहिए और `issuing_state` के लिए लाइव होना चाहिए; जिन सेवाओं के लिए ऑनबोर्डिंग की आवश्यकता होती है, वे आपके संगठन के लिए सक्रिय होने तक `400` लौटाती हैं। `GET /v1/organization/database-validation-countries/` (एक कैटलॉग endpoint जो इस विनिर्देश में प्रलेखित नहीं है) या Business Console वर्कफ़्लो संपादक के माध्यम से प्रति देश उपलब्ध सेवाओं की खोज करें।",
                    "example": [
                      "bra_cpf"
                    ]
                  },
                  "validation_type": {
                    "type": "string",
                    "deprecated": true,
                    "description": "अप्रचलित। पश्चगामी अनुकूलता के लिए स्वीकृत लेकिन अनदेखा — रिस्पॉन्स `validation_type` अब इस बात से लिया जाता है कि कितनी सेवाएँ पूरी तरह से मेल खाती हैं। विशिष्ट सेवाओं को पिन करने के लिए `services` का उपयोग करें।"
                  },
                  "consent": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब अंतिम उपयोगकर्ता ने चयनित सत्यापन सेवाओं के लिए स्पष्ट रूप से सहमति दी हो, तो `true` पर सेट करें। कैटलॉग में `requires_consent=true` के रूप में फ़्लैग की गई सेवाओं के लिए यह आवश्यक है — इसके बिना वे सेवाएँ `services_requiring_consent` के साथ `400` लौटाती हैं।"
                  },
                  "identification_number": {
                    "type": "string",
                    "description": "सार्वभौमिक पहचान संख्या — स्वचालित रूप से सही देश-विशिष्ट फ़ील्ड में मैप की जाती है, ताकि आप इसे `personal_number`/`tax_number`/`document_number` के स्थान पर उपयोग कर सकें: ARG→document_number (DNI), BOL→document_number (CI), BRA→tax_number (CPF, 11 अंक), CHL→personal_number (RUT), COL→personal_number (Cédula), CRI→personal_number (Cédula), DOM→personal_number (Cédula, 11 अंक), ECU→personal_number (Cédula, 10 अंक), ESP→personal_number (DNI/NIE), GTM→document_number (DPI), HND→document_number (DNI), MEX→personal_number (CURP, 18 वर्ण), PAN→personal_number (Cédula), PER→personal_number (DNI, 8 अंक), PRY→document_number (CI), SLV→document_number (DUI), URY→personal_number (CI), VEN→document_number (Cédula)। यह स्पष्ट रूप से प्रदान किए गए देश-विशिष्ट फ़ील्ड को कभी भी ओवरराइड नहीं करता है।"
                  },
                  "first_name": {
                    "type": "string",
                    "description": "व्यक्ति का पहला नाम। कुछ सेवाओं/देशों के लिए आवश्यक।",
                    "example": "John"
                  },
                  "last_name": {
                    "type": "string",
                    "description": "व्यक्ति का अंतिम नाम। कुछ सेवाओं/देशों द्वारा आवश्यक।",
                    "example": "Doe"
                  },
                  "middle_name": {
                    "type": "string",
                    "description": "मध्य नाम, कुछ देश सेवाओं (AUS, NZL, …) द्वारा उपयोग किया जाता है।"
                  },
                  "full_name": {
                    "type": "string",
                    "description": "पूरा नाम — कुछ सेवाएँ इसे प्रथम/अंतिम नाम के बदले स्वीकार करती हैं (उदाहरण के लिए CHN सेवाएँ, जो मूल-लिपि नाम का मिलान करती हैं)।"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "description": "जन्म तिथि, `YYYY-MM-DD`। कई सेवाओं द्वारा आवश्यक।",
                    "example": "1980-01-01"
                  },
                  "personal_number": {
                    "type": "string",
                    "description": "सरकार द्वारा जारी विशिष्ट व्यक्तिगत पहचानकर्ता। इनके द्वारा उपयोग किया जाता है: CHL (RUT), COL (Cédula), CRI, DOM, ECU, ESP (DNI/NIE), MEX (CURP), PAN (Cédula), PER (DNI), URY। इसके बजाय `identification_number` पर विचार करें।"
                  },
                  "tax_number": {
                    "type": "string",
                    "description": "कर पहचान संख्या। इनमें प्रयुक्त: BRA (CPF, 11 अंक)। इसके बजाय `identification_number` का उपयोग करने पर विचार करें।"
                  },
                  "document_number": {
                    "type": "string",
                    "description": "दस्तावेज़ संख्या। इनके द्वारा उपयोग किया जाता है: ARG (DNI), BOL (CI), GTM (DPI), HND (DNI), PRY (CI), SLV (DUI), VEN (Cédula)। इसके बजाय `identification_number` पर विचार करें।"
                  },
                  "document_type": {
                    "type": "string",
                    "enum": [
                      "P",
                      "DL",
                      "ID",
                      "RP",
                      "SSC",
                      "HIC",
                      "WP",
                      "TC",
                      "VISA",
                      "PSC",
                      "BC",
                      "OTHER"
                    ],
                    "description": "सत्यापित किए जा रहे दस्तावेज़ का प्रकार: `P` पासपोर्ट, `DL` ड्राइविंग लाइसेंस, `ID` राष्ट्रीय पहचान पत्र, `RP` निवास परमिट (साथ ही `SSC`, `HIC`, `WP`, `TC`, `VISA`, `PSC`, `BC`, `OTHER`)। कुछ सेवाओं (जैसे ESP) द्वारा आवश्यक।"
                  },
                  "expiration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "दस्तावेज़ की समाप्ति तिथि, `YYYY-MM-DD`। ESP (स्पेन) सत्यापन के लिए आवश्यक।",
                    "example": "2030-01-15"
                  },
                  "date_of_issue": {
                    "type": "string",
                    "format": "date",
                    "description": "दस्तावेज़ जारी करने की तिथि, `YYYY-MM-DD` (fecha de expedición)। COL (कोलंबिया) cédula सत्यापन के लिए आवश्यक।",
                    "example": "2015-06-20"
                  },
                  "nationality": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-3 के रूप में राष्ट्रीयता। कुछ सेवाओं द्वारा आवश्यक।"
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "M",
                      "F",
                      "X"
                    ],
                    "description": "लिंग: `M`, `F`, या `X` (अन्य/अज्ञात)। अर्जेंटीना के RENAPER सत्यापन (`arg_renaper`) के लिए आवश्यक।"
                  },
                  "address": {
                    "description": "आवासीय पता। संरचित ऑब्जेक्ट `{\"street_1\":\"123 Main St\",\"street_2\":\"Apt 4B\",\"city\":\"Springfield\",\"region\":\"IL\",\"postal_code\":\"62701\",\"country\":\"US\"}` को प्राथमिकता दें; पूरी सिंगल-लाइन स्ट्रिंग अभी भी स्वीकार की जाती है। पता-सत्यापन सेवाओं द्वारा आवश्यक; जब कोई सेवा पते की आवश्यकताएं निर्धारित करती है, तो छूटे हुए हिस्से `address_fields_required_by` के साथ `400` लौटाते हैं।",
                    "oneOf": [
                      {
                        "type": "object",
                        "properties": {
                          "street_1": {
                            "type": "string"
                          },
                          "street_2": {
                            "type": "string"
                          },
                          "city": {
                            "type": "string"
                          },
                          "region": {
                            "type": "string"
                          },
                          "postal_code": {
                            "type": "string"
                          },
                          "country": {
                            "type": "string"
                          }
                        }
                      },
                      {
                        "type": "string",
                        "description": "पूर्ण एकल-पंक्ति पता (लीगेसी)।"
                      }
                    ]
                  },
                  "address_element_1": {
                    "type": "string",
                    "description": "सड़क संख्या और प्रकार सहित सड़क का पता। यदि छोड़ दिया जाए, तो यह `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_2": {
                    "type": "string",
                    "description": "अपार्टमेंट, यूनिट, भवन, फ़्लोर, या अतिरिक्त पता पंक्ति। केवल तभी भेजें जब आपके पास यह स्पष्ट रूप से उपलब्ध हो।"
                  },
                  "address_element_3": {
                    "type": "string",
                    "description": "शहर, उपनगर, ज़िला, इलाका या पड़ोस। यदि छोड़ा गया है, तो `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_4": {
                    "type": "string",
                    "description": "राज्य, प्रांत, क्षेत्र या कस्बा। यदि छोड़ दिया जाए, तो `address` से प्राप्त किया जाता है।"
                  },
                  "address_element_5": {
                    "type": "string",
                    "description": "पोस्टकोड या डाक कोड। `postal_code` को एक उपनाम के रूप में स्वीकार किया जाता है।"
                  },
                  "postal_code": {
                    "type": "string",
                    "description": "पता-आधारित सेवाओं के लिए डाक कोड (`address_element_5` का उपनाम)।"
                  },
                  "driver_license_number": {
                    "type": "string",
                    "description": "सरकारी दस्तावेज़-सत्यापन सेवाओं (AUS, NZL, IND) के लिए ड्राइविंग लाइसेंस संख्या।"
                  },
                  "driver_license_card_number": {
                    "type": "string",
                    "description": "भौतिक ड्राइविंग लाइसेंस कार्ड नंबर, जहाँ लाइसेंस नंबर (AUS) से अलग आवश्यक हो।"
                  },
                  "driver_license_state": {
                    "type": "string",
                    "description": "ड्राइविंग लाइसेंस जारी करने वाला राज्य या क्षेत्र (AUS)।"
                  },
                  "driver_license_version": {
                    "type": "string",
                    "description": "ड्राइविंग लाइसेंस वर्ज़न कोड (NZL)।"
                  },
                  "passport_number": {
                    "type": "string",
                    "description": "सरकारी पासपोर्ट-सत्यापन सेवाओं (AUS, NZL, IND, CHN) के लिए पासपोर्ट संख्या।"
                  },
                  "passport_expiration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "पासपोर्ट समाप्ति तिथि, `YYYY-MM-DD`, पासपोर्ट-सत्यापन सेवाओं के लिए।"
                  },
                  "passport_file_number": {
                    "type": "string",
                    "description": "पासपोर्ट फ़ाइल संख्या (IND)।"
                  },
                  "passport_issue_country": {
                    "type": "string",
                    "description": "पासपोर्ट-सत्यापन सेवाओं के लिए पासपोर्ट का जारीकर्ता देश (ISO 3166-1 alpha-3)।"
                  },
                  "medicare_card_number": {
                    "type": "string",
                    "description": "मेडिकेयर कार्ड नंबर (AUS)।"
                  },
                  "immi_card_number": {
                    "type": "string",
                    "description": "ऑस्ट्रेलियाई ImmiCard संख्या।"
                  },
                  "immi_card_expiry_date": {
                    "type": "string",
                    "format": "date",
                    "description": "ऑस्ट्रेलियाई ImmiCard की समाप्ति तिथि।"
                  },
                  "citizenship_certificate_number": {
                    "type": "string",
                    "description": "नागरिकता प्रमाणपत्र संख्या (AUS)।"
                  },
                  "birth_registration_number": {
                    "type": "string",
                    "description": "जन्म प्रमाण पत्र पंजीकरण संख्या (AUS)।"
                  },
                  "birth_registration_date": {
                    "type": "string",
                    "format": "date",
                    "description": "जन्म प्रमाण पत्र पंजीकरण तिथि (AUS)।"
                  },
                  "birth_registration_state": {
                    "type": "string",
                    "description": "जन्म प्रमाण पत्र पंजीकरण राज्य (AUS)।"
                  },
                  "marriage_certificate_number": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र संख्या (AUS)।"
                  },
                  "change_of_name_certificate_number": {
                    "type": "string",
                    "description": "नाम परिवर्तन प्रमाणपत्र संख्या (AUS)।"
                  },
                  "first_partner_name": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र (AUS) पर साथी का पहला नाम।"
                  },
                  "last_partner_name": {
                    "type": "string",
                    "description": "विवाह प्रमाण पत्र (AUS) पर साथी का अंतिम नाम।"
                  },
                  "voter_id": {
                    "type": "string",
                    "description": "मतदाता पंजीकरण संख्या (IND EPIC, IRL)।"
                  },
                  "epic_card": {
                    "type": "string",
                    "description": "भारत EPIC वोटर कार्ड नंबर।"
                  },
                  "pan": {
                    "type": "string",
                    "description": "भारत PAN (Permanent Account Number)।"
                  },
                  "national_id": {
                    "type": "string",
                    "description": "राष्ट्रीय पहचान संख्या (CHN, MYS, KEN, KHM, NGA, ZAF, …)।"
                  },
                  "cic": {
                    "type": "string",
                    "description": "मेक्सिकन INE/IFE Código de Identificación de Credencial (CIC), 9 अंक। MEX INE क्रेडेंशियल-वैधता सेवा (`mex_ine_vigencia`) द्वारा उपयोग किया जाता है।"
                  },
                  "identificador_ciudadano": {
                    "type": "string",
                    "description": "मेक्सिकन INE Identificador del Ciudadano (9 अंक)। `mex_ine_vigencia` में आधुनिक INE मॉडल (E/F/G/H) के लिए `cic` के साथ उपयोग किया जाता है।"
                  },
                  "ocr": {
                    "type": "string",
                    "description": "मेक्सिकन INE OCR नंबर (13 अंक, कार्ड का पिछला भाग)। `mex_ine_vigencia` में मॉडल D के लिए `cic` के साथ उपयोग किया जाता है।"
                  },
                  "voter_number": {
                    "type": "string",
                    "description": "मेक्सिकन INE Clave de Elector (18 वर्ण)। `mex_ine_vigencia` में लीगेसी IFE मॉडल (A/B/C) के लिए `emission_number` के साथ उपयोग किया जाता है।"
                  },
                  "emission_number": {
                    "type": "string",
                    "description": "मेक्सिकन INE Número de Emisión। `mex_ine_vigencia` में लीगेसी IFE मॉडल (A/B/C) के लिए `voter_number` के साथ उपयोग किया जाता है।"
                  },
                  "bvn": {
                    "type": "string",
                    "description": "नाइजीरियाई बैंक सत्यापन संख्या।"
                  },
                  "bank_card_number": {
                    "type": "string",
                    "description": "बैंक कार्ड नंबर (CHN बैंक-कार्ड सत्यापन)।"
                  },
                  "company_registration_number": {
                    "type": "string",
                    "description": "कंपनी पंजीकरण संख्या जैसा कि कंपनी रजिस्ट्री द्वारा जारी किया गया है: ब्राज़ील में CNPJ (उदा. `11222333000181`), दक्षिण अफ्रीका में पंजीकरण संख्या (उदा. `1936/007721/06`)। कंपनी रजिस्ट्री और कंपनी निदेशक सेवाओं (`bra_company_registry`, `bra_company_directors`, `zaf_company_registry`, `zaf_company_directors`) द्वारा आवश्यक।"
                  },
                  "company_name": {
                    "type": "string",
                    "description": "पंजीकृत कंपनी का नाम, रजिस्टर प्रविष्टि के साथ क्रॉस-चेक किया गया। `zaf_company_registry` के लिए वैकल्पिक।"
                  },
                  "initials": {
                    "type": "string",
                    "description": "दस्तावेज़ पर छपे व्यक्ति के आद्याक्षर। `zaf_drivers_license` के लिए आवश्यक; `zaf_bank_account_holder` द्वारा स्वीकृत।"
                  },
                  "licence_number": {
                    "type": "string",
                    "description": "`zaf_drivers_license` के लिए कार्ड पर मुद्रित ड्राइविंग लाइसेंस संख्या। छोड़े जाने पर, `document_number` का उपयोग किया जाता है।"
                  },
                  "refugee_file_number": {
                    "type": "string",
                    "description": "दक्षिण अफ़्रीका के गृह विभाग द्वारा जारी की गई शरणार्थी फ़ाइल संख्या। `zaf_refugee` द्वारा आवश्यक।"
                  },
                  "bank_name": {
                    "type": "string",
                    "description": "उस बैंक का नाम जिसमें खाता है। `zaf_bank_account_holder` के लिए आवश्यक।"
                  },
                  "bank_account_number": {
                    "type": "string",
                    "description": "बैंक खाता संख्या। `zaf_bank_account_holder` द्वारा आवश्यक; `zaf_fraud_prevention` द्वारा स्वीकृत।"
                  },
                  "account_type": {
                    "type": "string",
                    "description": "`zaf_bank_account_holder` के लिए बैंक खाते का प्रकार: `current`, `savings`, `transmission`, `subscriptionShare` या `notKnown`, केस-असंवेदनशील। कोई भी अन्य मान `400` लौटाता है। जब आपको प्रकार न पता हो तो इसे छोड़ दें: खाता-प्रकार क्रॉस-चेक तब अपुष्ट के रूप में रिपोर्ट किया जाता है।"
                  },
                  "phone_number": {
                    "type": "string",
                    "description": "संपर्क मोबाइल नंबर, उन सेवाओं के लिए जो संपर्क क्षमता की क्रॉस-जांच करती हैं (`zaf_bank_account_holder`, `zaf_fraud_prevention`, `zaf_refugee`)।"
                  },
                  "right_thumb": {
                    "type": "string",
                    "description": "`zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड दाएं अंगूठे का फ़िंगरप्रिंट, `left_thumb` के साथ या अकेले।"
                  },
                  "left_thumb": {
                    "type": "string",
                    "description": "`zaf_dha_fingerprint_match` के लिए Base64-एन्कोडेड बाएं अंगूठे का फ़िंगरप्रिंट, `right_thumb` के साथ या अकेले।"
                  },
                  "score_level": {
                    "type": "integer",
                    "description": "`zaf_criminal_face_screening` के लिए न्यूनतम बायोमेट्रिक स्कोर स्तर। डिफ़ॉल्ट `3` है।"
                  },
                  "max_matches": {
                    "type": "integer",
                    "description": "`zaf_criminal_face_screening` द्वारा लौटाए जाने वाले उम्मीदवार मिलानों की अधिकतम संख्या। डिफ़ॉल्ट `1` है।"
                  },
                  "vehicle_register_number": {
                    "type": "string",
                    "description": "वाहन पंजीकरण संख्या। `zaf_vehicle_ownership` द्वारा `vehicle_licence_plate` और `vin` के साथ आवश्यक।"
                  },
                  "vehicle_licence_plate": {
                    "type": "string",
                    "description": "वाहन लाइसेंस प्लेट नंबर। `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और `vin` के साथ आवश्यक।"
                  },
                  "vin": {
                    "type": "string",
                    "description": "वाहन पहचान संख्या (VIN या चेसिस नंबर)। `zaf_vehicle_ownership` द्वारा `vehicle_register_number` और `vehicle_licence_plate` के साथ आवश्यक।"
                  },
                  "ssn": {
                    "type": "string",
                    "description": "सोशल सिक्योरिटी नंबर (USA)।"
                  },
                  "phone": {
                    "type": "string",
                    "description": "फ़ोन-सत्यापन सेवाओं के लिए फ़ोन नंबर।"
                  },
                  "landline": {
                    "type": "string",
                    "description": "फ़ोन सत्यापन सेवाओं के लिए लैंडलाइन नंबर।"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "पहचान सत्यापन सेवाओं के लिए ईमेल पता।"
                  },
                  "country_of_residence": {
                    "type": "string",
                    "description": "निवास का ISO 3166-1 alpha-2 देश। लुकअप को फ़ोकस करने के लिए वैश्विक पहचान-संवर्धन सेवाओं (उदा. `glb_identity_enrichment`) द्वारा उपयोग किया जाता है।",
                    "example": "US"
                  },
                  "partial_match_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "NO_ACTION",
                    "description": "`partial_match` द्वारा `database_validation.status` पर की जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `NO_ACTION` (स्थिति चेतावनी के साथ `Approved` रहती है)।"
                  },
                  "no_match_action": {
                    "type": "string",
                    "enum": [
                      "DECLINE",
                      "NO_ACTION"
                    ],
                    "default": "DECLINE",
                    "description": "`no_match` द्वारा `database_validation.status` पर की जाने वाली कार्रवाई। डिफ़ॉल्ट रूप से `DECLINE`।"
                  },
                  "save_api_request": {
                    "type": "boolean",
                    "default": true,
                    "description": "सत्यापन को एक सत्र के रूप में बनाए रखें (कंसोल दृश्यता, निर्णय endpoint, `status.updated` webhook)। यह `validations` रिस्पॉन्स के फ़ॉर्मैट को भी बदलता है: `true` (डिफ़ॉल्ट) होने पर प्रति-सेवा ऑब्जेक्ट, `false` होने पर मर्ज किया गया फ़ील्ड मैप।"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "सत्यापित उपयोगकर्ता के लिए आपका पहचानकर्ता; वापस दोहराया जाता है और सत्र के साथ संग्रहीत किया जाता है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "अनुरोध के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।"
                  },
                  "selfie": {
                    "type": "string",
                    "format": "binary",
                    "description": "बायोमेट्रिक सत्यापन सेवाओं के लिए सेल्फ़ी छवि (`jpg`, `jpeg`, `png`, `webp`; अधिकतम 2 MB — रजिस्ट्री में अपलोड करने से पहले छवियाँ ~1.5 MB तक संपीड़ित की जाती हैं), उदाहरण के लिए अर्जेंटीना RENAPER (`arg_renaper`) और पनामा SIB (`pan_cedula_sib`, `pan_cedula_sib_plus`)। जब भी कोई चयनित सेवा इसे एक आवश्यक फ़ील्ड के रूप में सूचीबद्ध करती है, तो यह आवश्यक है। केवल `multipart/form-data` के माध्यम से उपलब्ध।"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/database-validation/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"issuing_state\": \"BRA\",\n    \"services\": [\"bra_cpf\"],\n    \"identification_number\": \"12345678900\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"date_of_birth\": \"1980-01-01\",\n    \"vendor_data\": \"user-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.database_validation.validate(\n    issuing_state=\"BRA\",\n    services=[\"bra_cpf\"],\n    identification_number=\"12345678900\",\n    first_name=\"John\",\n    last_name=\"Doe\",\n    date_of_birth=\"1980-01-01\",\n    vendor_data=\"user-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.databaseValidation.validate({\n  issuing_state: \"BRA\",\n  services: [\"bra_cpf\"],\n  identification_number: \"12345678900\",\n  first_name: \"John\",\n  last_name: \"Doe\",\n  date_of_birth: \"1980-01-01\",\n  vendor_data: \"user-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{\n\tIssuingState:         \"BRA\",\n\tServices:             didit.Some([]string{\"bra_cpf\"}),\n\tIdentificationNumber: didit.String(\"12345678900\"),\n\tFirstName:            didit.String(\"John\"),\n\tLastName:             didit.String(\"Doe\"),\n\tDateOfBirth:          didit.String(\"1980-01-01\"),\n\tVendorData:           didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.DatabaseValidationValidateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()\n        .issuingState(\"BRA\")\n        .services(List.of(\"bra_cpf\"))\n        .identificationNumber(\"12345678900\")\n        .firstName(\"John\")\n        .lastName(\"Doe\")\n        .dateOfBirth(LocalDate.parse(\"1980-01-01\"))\n        .vendorData(\"user-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->databaseValidation->validate([\n    'issuing_state' => 'BRA',\n    'services' => ['bra_cpf'],\n    'identification_number' => '12345678900',\n    'first_name' => 'John',\n    'last_name' => 'Doe',\n    'date_of_birth' => '1980-01-01',\n    'vendor_data' => 'user-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.database_validation.validate(\n  issuing_state: \"BRA\",\n  services: [\"bra_cpf\"],\n  identification_number: \"12345678900\",\n  first_name: \"John\",\n  last_name: \"Doe\",\n  date_of_birth: \"1980-01-01\",\n  vendor_data: \"user-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams\n{\n    IssuingState = \"BRA\",\n    Services = new string[] { \"bra_cpf\" },\n    IdentificationNumber = \"12345678900\",\n    FirstName = \"John\",\n    LastName = \"Doe\",\n    DateOfBirth = \"1980-01-01\",\n    VendorData = \"user-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सत्यापन पूरा हुआ — कम से कम एक चयनित सेवा ने प्रयोग करने योग्य परिणाम लौटाया। समग्र परिणाम के लिए `database_validation.match_type`, प्रति-सेवा फ़ील्ड तुलनाओं और `outcome_code`s के लिए `validations`, और विफल सेवाओं के लिए `errors` (उपस्थित होने पर) का निरीक्षण करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "`save_api_request=true` होने पर सहेजी गई सत्र ID (`GET /v3/session/{sessionId}/decision/` के साथ उपयोग योग्य); अन्यथा एक क्षणिक सहसंबंध UUID।"
                    },
                    "database_validation": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "string",
                          "enum": [
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "`Declined` जब समग्र `match_type` एक `DECLINE` कार्रवाई को ट्रिगर करता है (`no_match_action` का डिफ़ॉल्ट `DECLINE` है, `partial_match_action` का `NO_ACTION`); `In Review` जब किसी भी सेवा ने उपयोग करने योग्य तुलना उत्पन्न नहीं की, उदाहरण के लिए जब एकमात्र चयनित सेवा `REGISTRY_UNAVAILABLE` या `INCONCLUSIVE` के रूप में लौटी; अन्यथा `Approved`। कई सेवाओं का चयन करने वाला अनुरोध एक सेवा के मिलान पर `Approved` हो सकता है जबकि दूसरी अनुपलब्ध थी, इसलिए `errors` और प्रति-सेवा `outcome_code` भी देखें।"
                        },
                        "issuing_state": {
                          "type": "string",
                          "description": "सत्यापित किए गए ISO 3166-1 alpha-3 देश का इको।",
                          "example": "BRA"
                        },
                        "validation_type": {
                          "type": "string",
                          "enum": [
                            "one_by_one",
                            "two_by_two"
                          ],
                          "description": "परिणामों से प्राप्त: `two_by_two` जब ≥2 अलग-अलग सेवाओं ने पूर्ण मिलान प्रस्तुत किया (पहचान संख्या पर, पूरे नाम + जन्म तिथि पर एक साथ, या बिना किसी विरोधाभास के पते पर); अन्यथा `one_by_one`। (समान नाम वाला अनुरोध फ़ील्ड बहिष्कृत और अनदेखा किया जाता है।)"
                        },
                        "screened_data": {
                          "type": "object",
                          "description": "चयनित सेवाओं को भेजे गए इनपुट फ़ील्ड्स का इको (तारीखें `YYYY-MM-DD` में सामान्यीकृत की गई हैं; भेजे जाने पर `selfie` को प्री-साइन्ड URL के रूप में लौटाया जाता है; सहमति दिए जाने पर `consent_obtained: true` जोड़ा जाता है)।"
                        },
                        "match_type": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "full_match",
                            "partial_match",
                            "no_match"
                          ],
                          "description": "फ़ील्ड-स्तरीय तुलना वाली सेवाओं में एकत्रित समग्र परिणाम: कोई भी `full_match` → `full_match`; अन्यथा कोई भी `partial_match` → `partial_match`; अन्यथा `no_match`। केवल-परिणाम सेवाएँ, जैसे कि बायोमेट्रिक आपराधिक स्क्रीनिंग, `null` लौटा सकती हैं; `validations` में प्रत्येक आइटम के `outcome_code` का निरीक्षण करें।"
                        },
                        "validations": {
                          "description": "`save_api_request` पर आकार निर्भर करता है। **`true` (डिफ़ॉल्ट):** प्रति-सेवा ऑब्जेक्ट्स की एक ऐरे (`service_id`, `service_name`, `validation`, `outcome_code`, `outcome_detail`, `source_data`)। **`false`:** सभी सेवाओं के फ़ील्ड-स्तरीय परिणामों को मर्ज करने वाला एक एकल फ़्लैट ऑब्जेक्ट (`{\"full_name\": \"full_match\", ...}`)।",
                          "oneOf": [
                            {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "प्रति-सेवा सत्यापन परिणाम (`save_api_request=true` होने पर लौटाया जाता है, जो डिफ़ॉल्ट है)।",
                                "properties": {
                                  "service_id": {
                                    "type": "string",
                                    "description": "इस परिणाम को उत्पन्न करने वाली सेवा का कैटलॉग id (उदा. `bra_cpf`)।",
                                    "example": "bra_cpf"
                                  },
                                  "service_name": {
                                    "type": "string",
                                    "description": "सेवा का मानव-पठनीय कैटलॉग नाम।",
                                    "example": "Brazil - CPF status check"
                                  },
                                  "validation": {
                                    "type": "object",
                                    "description": "आपके इनपुट और रजिस्ट्री रिकॉर्ड के बीच फ़ील्ड-दर-फ़ील्ड तुलना। कुंजियाँ विहित (canonical) फ़ील्ड नाम (`full_name`, `date_of_birth`, `identification_number`, `address`, …) हैं; मान `full_match`, `partial_match`, या `no_match` हैं।",
                                    "additionalProperties": {
                                      "type": "string",
                                      "enum": [
                                        "full_match",
                                        "partial_match",
                                        "no_match"
                                      ]
                                    }
                                  },
                                  "outcome_code": {
                                    "type": "string",
                                    "enum": [
                                      "MATCH",
                                      "PARTIAL_MATCH",
                                      "NO_MATCH",
                                      "DOCUMENT_NOT_FOUND",
                                      "INVALID_DOCUMENT_FORMAT",
                                      "INVALID_INPUT",
                                      "MINOR_BLOCKED",
                                      "DECEASED",
                                      "BIOMETRIC_NO_MATCH",
                                      "BIOMETRIC_IMAGE_UNUSABLE",
                                      "INCONCLUSIVE",
                                      "DOCUMENT_SUPERSEDED",
                                      "REGISTRY_UNAVAILABLE",
                                      "REGISTRY_ERROR"
                                    ],
                                    "description": "रजिस्ट्री लुकअप का वेंडर-तटस्थ परिणाम। `MATCH`/`PARTIAL_MATCH`/`NO_MATCH` तुलना का वर्णन करते हैं; `DOCUMENT_NOT_FOUND` का अर्थ है कि पहचानकर्ता रजिस्ट्री में नहीं है; `INCONCLUSIVE` का अर्थ है कि रजिस्ट्री किसी भी तरह से पुष्टि नहीं कर सकी (समीक्षा के लिए भेजा गया — नो-मैच नहीं); `BIOMETRIC_NO_MATCH` एक निश्चित चेहरा बेमेल है जबकि `BIOMETRIC_IMAGE_UNUSABLE` एक तकनीकी छवि समस्या है (सेल्फ़ी पुनः लें); `DECEASED`/`MINOR_BLOCKED` रजिस्ट्री-नीति परिणाम हैं; `DOCUMENT_SUPERSEDED` का अर्थ है कि पहचान मेल खाती है लेकिन प्रस्तुत दस्तावेज़ का संस्करण फ़ाइल में मौजूद संस्करण नहीं है (एक नया संस्करण जारी किया गया है); `INVALID_DOCUMENT_FORMAT`/`INVALID_INPUT` का अर्थ है कि रजिस्ट्री ने स्वयं भेजे गए डेटा को अस्वीकार कर दिया; `REGISTRY_UNAVAILABLE`/`REGISTRY_ERROR` अपस्ट्रीम विफलताओं का संकेत देते हैं।"
                                  },
                                  "outcome_detail": {
                                    "type": "string",
                                    "nullable": true,
                                    "description": "परिणाम कोड का समर्थन करने वाला रॉ अपस्ट्रीम स्थिति विवरण (उदा. कोई HTTP या रजिस्ट्री स्थिति कोड)।"
                                  },
                                  "source_data": {
                                    "type": "object",
                                    "nullable": true,
                                    "description": "कैनोनिकल फ़ील्ड नामों (`identification_number`, `first_name`, `last_name`, `date_of_birth`, साथ ही रजिस्ट्री-विशिष्ट फ़्लैग्स) का उपयोग करके रजिस्ट्री रिकॉर्ड का साफ़, सामान्यीकृत दृश्य। छवि फ़ील्ड, उपस्थित होने पर, प्री-हस्ताक्षरित URL के रूप में लौटाए जाते हैं।"
                                  }
                                }
                              }
                            },
                            {
                              "type": "object",
                              "additionalProperties": {
                                "type": "string",
                                "enum": [
                                  "full_match",
                                  "partial_match",
                                  "no_match"
                                ]
                              },
                              "description": "मर्ज किए गए फ़ील्ड-स्तरीय परिणाम (स्टेटलेस `save_api_request=false` संरचना)।"
                            }
                          ]
                        },
                        "warnings": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "feature": {
                                "type": "string",
                                "description": "सुविधा जिसने चेतावनी उत्पन्न की।"
                              },
                              "risk": {
                                "type": "string",
                                "description": "मशीन-पठनीय जोखिम पहचानकर्ता।"
                              },
                              "additional_data": {
                                "type": "object",
                                "nullable": true,
                                "description": "उपलब्ध होने पर, चेतावनी के लिए अतिरिक्त संदर्भ।"
                              },
                              "log_type": {
                                "type": "string",
                                "description": "`warning`, `information`, या `error` — जोखिम ने परिणाम को कैसे प्रभावित किया।"
                              },
                              "short_description": {
                                "type": "string",
                                "description": "एक पंक्ति का मानव-पठनीय सारांश।"
                              },
                              "long_description": {
                                "type": "string",
                                "description": "पूर्ण मानव-पठनीय विवरण।"
                              }
                            }
                          },
                          "description": "लागू होने पर `DATABASE_VALIDATION_NO_MATCH` या `DATABASE_VALIDATION_PARTIAL_MATCH`; पूर्ण मिलान पर खाली।"
                        },
                        "errors": {
                          "type": "array",
                          "description": "केवल तभी मौजूद होता है जब कुछ (लेकिन सभी नहीं) चयनित सेवाएँ विफल हो जाती हैं। प्रत्येक प्रविष्टि में `service_id`, `code`, `message`, और `retryable` होता है। यहाँ रिपोर्ट की गई सेवा `validations` और `services_used` से अनुपस्थित होती है, और इसका बिल नहीं लिया जाता है। यह ऐरे एकमात्र ऐसा स्थान है जहाँ यह दिखाई देता है, इसलिए इसका निरीक्षण तब भी करें जब `status` `Approved` हो।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "service_id": {
                                "type": "string"
                              },
                              "code": {
                                "type": "string",
                                "example": "empty_provider_response"
                              },
                              "message": {
                                "type": "string"
                              },
                              "retryable": {
                                "type": "boolean",
                                "description": "`true` जब सेवा ने कोई उत्तर नहीं दिया और बाद में पुनः प्रयास करने पर यह सफल हो सकता है; `false` जब स्रोत ने भेजे गए डेटा को अस्वीकार कर दिया और इनपुट को पहले ठीक किया जाना चाहिए।",
                                "example": true
                              }
                            }
                          }
                        },
                        "services_used": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "बिल योग्य परिणाम लौटाने वाली सेवाओं के कैटलॉग id। **केवल तब मौजूद होता है जब अनुरोध में स्पष्ट रूप से `services` भेजा गया हो।**"
                        },
                        "match_score": {
                          "type": "number",
                          "description": "प्रयास की गई सेवाओं का अंश (0.0–1.0) जिसने पूर्ण मिलान उत्पन्न किया (पहचान संख्या पर, पूरा नाम + जन्म तिथि पर एक साथ, या बिना किसी विरोधाभास के पते पर)। **केवल तभी मौजूद होता है जब अनुरोध ने स्पष्ट रूप से `services` भेजा हो।**"
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "Full match (Approved)": {
                    "summary": "डिफ़ॉल्ट save_api_request=true — प्रति-सेवा `validations` ऑब्जेक्ट्स",
                    "value": {
                      "request_id": "7f9a1c0e-1f2b-4f6e-9d3a-2b1c0e7f9a1c",
                      "database_validation": {
                        "status": "Approved",
                        "issuing_state": "BRA",
                        "validation_type": "one_by_one",
                        "screened_data": {
                          "tax_number": "12345678900",
                          "first_name": "John",
                          "last_name": "Doe",
                          "date_of_birth": "1980-01-01"
                        },
                        "match_type": "full_match",
                        "validations": [
                          {
                            "validation": {
                              "full_name": "full_match",
                              "date_of_birth": "full_match",
                              "identification_number": "full_match"
                            },
                            "outcome_code": "MATCH",
                            "outcome_detail": "200",
                            "service_id": "bra_cpf",
                            "service_name": "Brazil - CPF status check",
                            "source_data": {
                              "identification_number": "12345678900",
                              "first_name": "JOHN",
                              "last_name": "DOE",
                              "date_of_birth": "1980-01-01",
                              "lgpd_minor": false,
                              "minor_under_16": false,
                              "minor_under_18": false
                            }
                          }
                        ],
                        "warnings": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:30:00.000000+00:00"
                    }
                  },
                  "Explicit services (extended shape)": {
                    "summary": "अनुरोध में `services` भेजे गए — रिस्पॉन्स में `services_used` और `match_score` जुड़ते हैं",
                    "value": {
                      "request_id": "b3e7c1a2-9d4f-4f0b-8a6c-5e2d1f0a9b3e",
                      "database_validation": {
                        "status": "Approved",
                        "issuing_state": "BRA",
                        "validation_type": "one_by_one",
                        "screened_data": {
                          "tax_number": "12345678900",
                          "first_name": "John",
                          "last_name": "Doe",
                          "date_of_birth": "1980-01-01"
                        },
                        "match_type": "full_match",
                        "validations": [
                          {
                            "validation": {
                              "full_name": "full_match",
                              "date_of_birth": "full_match",
                              "identification_number": "full_match"
                            },
                            "outcome_code": "MATCH",
                            "outcome_detail": "200",
                            "service_id": "bra_cpf",
                            "service_name": "Brazil - CPF status check",
                            "source_data": {
                              "identification_number": "12345678900",
                              "first_name": "JOHN",
                              "last_name": "DOE",
                              "date_of_birth": "1980-01-01",
                              "lgpd_minor": false,
                              "minor_under_16": false,
                              "minor_under_18": false
                            }
                          }
                        ],
                        "warnings": [],
                        "services_used": [
                          "bra_cpf"
                        ],
                        "match_score": 1.0
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:30:00.000000+00:00"
                    }
                  },
                  "No match (Declined)": {
                    "summary": "रजिस्ट्री रिकॉर्ड मेल नहीं खाता — डिफ़ॉल्ट `no_match_action=DECLINE`",
                    "value": {
                      "request_id": "0a1b2c3d-4e5f-6789-abcd-ef0123456789",
                      "database_validation": {
                        "status": "Declined",
                        "issuing_state": "BRA",
                        "validation_type": "one_by_one",
                        "screened_data": {
                          "tax_number": "12345678900",
                          "first_name": "John",
                          "last_name": "Doe",
                          "date_of_birth": "1980-01-01"
                        },
                        "match_type": "no_match",
                        "validations": [
                          {
                            "validation": {
                              "full_name": "no_match",
                              "date_of_birth": "no_match",
                              "identification_number": "no_match"
                            },
                            "outcome_code": "NO_MATCH",
                            "outcome_detail": "200",
                            "service_id": "bra_cpf",
                            "service_name": "Brazil - CPF status check",
                            "source_data": {
                              "identification_number": "00987654321",
                              "first_name": "TOTALLY",
                              "last_name": "DIFFERENT NAME",
                              "date_of_birth": "1999-01-01",
                              "lgpd_minor": false,
                              "minor_under_16": false,
                              "minor_under_18": false
                            }
                          }
                        ],
                        "warnings": [
                          {
                            "feature": "DATABASE_VALIDATION",
                            "risk": "DATABASE_VALIDATION_NO_MATCH",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Database validation no match",
                            "long_description": "The system identified a no match in the database validation, requiring further investigation."
                          }
                        ]
                      },
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-06-11T10:31:00.000000+00:00"
                    }
                  },
                  "Stateless (save_api_request=false)": {
                    "summary": "`validations` एक मर्ज किए गए फ़ील्ड मैप में संक्षिप्त हो जाता है; कुछ भी संग्रहीत नहीं किया जाता है",
                    "value": {
                      "request_id": "c4d5e6f7-8901-2345-6789-abcdef012345",
                      "database_validation": {
                        "status": "Approved",
                        "issuing_state": "BRA",
                        "validation_type": "one_by_one",
                        "screened_data": {
                          "tax_number": "12345678900",
                          "first_name": "John",
                          "last_name": "Doe",
                          "date_of_birth": "1980-01-01"
                        },
                        "match_type": "full_match",
                        "validations": {
                          "full_name": "full_match",
                          "date_of_birth": "full_match",
                          "identification_number": "full_match"
                        },
                        "warnings": []
                      },
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-06-11T10:32:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि - कुछ भी बिल नहीं किया जाता है। प्रीफ़्लाइट फ़ील्ड त्रुटियां किसी भी बाहरी कॉल से पहले होती हैं। यदि प्रत्येक अनुत्तरित प्रयास इनपुट को स्पष्ट रूप से अस्वीकार करता है, तो रिस्पॉन्स में इसके बजाय `code: provider_rejected_input` और `retryable: false` के साथ `validation_errors` शामिल होता है; पुनः प्रयास करने से पहले इनपुट को ठीक करें। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवलप का उपयोग करती हैं; कैटलॉग समस्याएं एक `services` ऐरे लौटाती हैं (प्रासंगिक होने पर `requires_onboarding` या `services_requiring_consent` के साथ); अनुपलब्ध-फ़ील्ड त्रुटियों में `fields_required_by` शामिल होता है जो प्रत्येक अनुपलब्ध फ़ील्ड को उन सेवाओं से मैप करता है जिन्हें इसकी आवश्यकता है; ऐसी सेवाएं जिन्हें कम से कम एक अतिरिक्त पहचानकर्ता की आवश्यकता होती है (उदा. `usa_states_credit_bureau`, जो अकेले नाम का सत्यापन नहीं कर सकती) `any_field_required_by` लौटाती हैं जो प्रत्येक सेवा को उन फ़ील्ड से मैप करती है जिनमें से कम से कम एक मौजूद होना चाहिए; प्रति सेवा जांची गई प्रारूप समस्याएं `invalid_fields_by_service` लौटाती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid issuing_state": {
                    "summary": "देश समर्थित नहीं है — संदेश में प्रत्येक मान्य alpha-3 कोड सूचीबद्ध है",
                    "value": {
                      "error": [
                        "Invalid issuing state. Valid options are: ARE, ARG, AUS, AUT, BEL, BGD, BOL, BRA, CAN, CHE, CHL, CHN, CIV, COL, CRI, CZE, DEU, DNK, DOM, ECU, ESP, FIN, FRA, GBR, GHA, GLB, GRC, GTM, HKG, HND, IDN, IND, IRL, ITA, KEN, KHM, MAR, MEX, MYS, NGA, NLD, NOR, NZL, OMN, PAN, PER, PHL, POL, PRT, PRY, QAT, SGP, SLV, SVK, SWE, THA, UGA, URY, USA, VEN, ZAF, ZMB, ZWE"
                      ]
                    }
                  },
                  "Missing required fields": {
                    "summary": "यूनिवर्सल-फ़ील्ड संकेत के साथ, चयनित सेवाओं में आवश्यक फ़ील्ड का यूनियन",
                    "value": {
                      "error": [
                        "Missing required fields: tax_number (or use 'identification_number' which maps to 'tax_number' for BRA)"
                      ],
                      "fields_required_by": {
                        "tax_number": [
                          "bra_cpf"
                        ]
                      }
                    }
                  },
                  "Unknown service id": {
                    "summary": "`services` में एक ऐसी id शामिल है जो कैटलॉग में नहीं है",
                    "value": {
                      "services": [
                        "Unknown service_id(s): ['bogus_service']"
                      ]
                    }
                  },
                  "Service not live for country": {
                    "summary": "`services` किसी अन्य देश की सेवा (या एक स्टब प्रविष्टि) का नाम देता है",
                    "value": {
                      "services": [
                        "Services not currently live for PER: ['bra_cpf']. Available services: ['per_dni', 'per_residential', 'per_tax_registration']"
                      ]
                    }
                  },
                  "Service requires onboarding": {
                    "summary": "सेवा मौजूद है लेकिन आपके संगठन के लिए अभी सक्रिय नहीं की गई है",
                    "value": {
                      "services": [
                        "Services require onboarding before they can be enabled for AUS: ['aus_australia_driver_licence']. Contact Didit support to activate them."
                      ],
                      "requires_onboarding": [
                        "aus_australia_driver_licence"
                      ]
                    }
                  },
                  "Consent missing": {
                    "summary": "एक चयनित सेवा requires_consent=true के रूप में फ़्लैग की गई है और `consent` का मान `true` नहीं था",
                    "value": {
                      "consent": [
                        "Explicit end-user consent is required for these database validation services: ['chn_national_id']. Send `consent=true`."
                      ],
                      "services_requiring_consent": [
                        "chn_national_id"
                      ]
                    }
                  },
                  "Country format rule violation": {
                    "summary": "पहचानकर्ता देश के प्रारूप नियम (लंबाई/अंक/regex) में विफल रहता है",
                    "value": {
                      "tax_number": [
                        "Invalid tax number for BRA: Brazilian CPF (exactly 11 digits). Must be exactly 11 characters long (got 10)."
                      ]
                    }
                  },
                  "Service-specific format violation": {
                    "summary": "एक फ़ील्ड चयनित सेवा की अपनी प्रारूप आवश्यकताओं को पूरा करने में विफल रहता है",
                    "value": {
                      "error": [
                        "One or more fields do not match the format required by the selected service."
                      ],
                      "invalid_fields_by_service": {
                        "chn_national_id": [
                          "national_id_format"
                        ]
                      }
                    }
                  },
                  "Input refused by every attempt": {
                    "summary": "पुनः प्रयास करने से पहले इनपुट को सही करें",
                    "value": {
                      "error": "The source refused to run this query with the supplied input.",
                      "validation_errors": [
                        {
                          "service_id": "bra_cpf",
                          "code": "provider_rejected_input",
                          "message": "The source refused to run this query with the supplied input.",
                          "retryable": false
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "error": {
                      "description": "अनुरोध-स्तरीय स्पष्टीकरण या प्रीफ़्लाइट फ़ील्ड त्रुटियाँ।",
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      ]
                    },
                    "validation_errors": {
                      "type": "array",
                      "description": "तब मौजूद होता है जब प्रत्येक अनुत्तरित प्रयास ने प्रीफ़्लाइट के बाद इनपुट को अस्वीकार कर दिया।",
                      "items": {
                        "type": "object",
                        "properties": {
                          "service_id": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          },
                          "retryable": {
                            "type": "boolean",
                            "description": "क्या बाद में पुनः प्रयास करने से यह सेवा विफलता हल हो सकती है। False का अर्थ है पहले प्रदान किए गए इनपुट को सही करें।"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या प्रदाता कॉल से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "किसी भी चयनित सेवा ने उपयोग करने योग्य परिणाम नहीं दिया। पुनः प्रयास करने से पहले प्रत्येक validation_errors प्रविष्टि की जांच करें; केवल HTTP 502 क्षणिक विफलता स्थापित नहीं करता है। retryable: true के साथ empty_provider_response अनुपलब्ध या अस्पष्टीकृत परिणाम दर्शाता है, जिसमें एक अस्वीकृत प्राथमिक के बाद अनुपलब्ध फ़ॉलबैक शामिल है। लेगेसी provider_invalid_input और provider_validation_error प्रविष्टियों के लिए इसके बजाय सही इनपुट की आवश्यकता होती है और इनमें retryable छोड़ा जा सकता है। कुछ भी बिल नहीं किया जाता है। जब save_api_request=true होता है, तो विफल प्रयास को Not Finished स्थिति वाले सत्र के रूप में रिकॉर्ड किया जाता है। आंशिक विफलताओं पर database_validation.errors के साथ 200 लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "validation_errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "service_id": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          },
                          "retryable": {
                            "type": "boolean",
                            "description": "क्या बाद में पुनः प्रयास करने से यह सेवा विफलता हल हो सकती है। False का अर्थ है पहले प्रदान किए गए इनपुट को सही करें।"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Provider returned no result": {
                    "summary": "प्रत्येक चयनित सेवा विफल रही",
                    "value": {
                      "error": "Database validation could not be performed. The external validation service did not return a result. Please try again later.",
                      "validation_errors": [
                        {
                          "service_id": "bra_cpf",
                          "code": "empty_provider_response",
                          "message": "The provider did not return a database validation result.",
                          "retryable": true
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/phone/send/": {
      "post": {
        "summary": "फ़ोन कोड भेजें",
        "description": "WhatsApp, SMS या किसी अन्य समर्थित चैनल के माध्यम से किसी फ़ोन नंबर पर वन-टाइम पासकोड (OTP) भेजें, फिर [`POST /v3/phone/check/`](/hi/standalone-apis/phone-check) के साथ इसे सत्यापित करें。\n\n**send और check एक साथ कैसे काम करते हैं।** सत्यापन स्थिति आपके एप्लिकेशन और E.164 `phone_number` द्वारा निर्धारित होती है — check कॉल में `request_id` नहीं लिया जाता है। प्रत्येक नया send एक लंबित सत्यापन बनाता है जो **5 मिनट** तक मान्य रहता है: विंडो बंद होने से पहले उसी नंबर और उपयोगकर्ता द्वारा प्राप्त कोड के साथ check को कॉल करें। सत्यापन लंबित रहने के दौरान उसी नंबर के लिए फिर से send कॉल करने पर उसी सत्यापन के लिए कोड पुनः भेजा जाता है (`status: \"Retry\"`, वही `request_id`)। इस तरह से अधिकतम एक पुनः प्रयास जोड़ा जाता है (कुल दो send); इसके बाद किया गया send एक नए `request_id` के साथ एक नया सत्यापन शुरू करता है। 5 मिनट की विंडो पहले send से मापी जाती है और पुनः प्रयासों द्वारा बढ़ाई नहीं जाती है。\n\n**डिलीवरी चैनल।** `options.preferred_channel` चैनल का चयन करता है (डिफ़ॉल्ट रूप से `whatsapp`; `sms`, `telegram`, `voice`, `rcs`, `viber`, और `zalo` भी समर्थित हैं)। जब गंतव्य देश या नंबर के लिए पसंदीदा चैनल अनुपलब्ध होता है, तो डिलीवरी अपने आप SMS पर फ़ालबैक हो जाती है — send अभी भी `Success` रिपोर्ट करता है, और वास्तव में उपयोग किए गए चैनल की रिपोर्ट check रिस्पॉन्स (`phone.verification_method` और `lifecycle` इवेंट) द्वारा दी जाती है。\n\n**ब्रांडिंग।** SMS कोड बिना किसी अतिरिक्त लागत के Business Console में सेट किए गए आपके एप्लिकेशन के SMS सेंडर नाम के साथ जाते हैं। किसी कोड को दूसरे नाम से भेजने के लिए `options.sms_sender_name` पास करें, या कोई सेंडर नाम सेट न होने पर अपने व्हाइट लेबल सार्वजनिक नाम पर फ़ालबैक करने के लिए `options.use_white_label_customization: true` पास करें। WhatsApp कोड एक निश्चित संदेश का उपयोग करते हैं; उन्हें अपने व्यवसाय के नाम और नंबर से भेजने के लिए Business Console में अपना स्वयं का WhatsApp Business नंबर कनेक्ट करें, जिस पर केवल Didit शुल्क लिया जाएगा。\n\n**Send स्थितियां।** `Success` — नए सत्यापन के लिए OTP भेजा गया; `Retry` — लंबित सत्यापन के लिए OTP पुनः भेजा गया; `Blocked` — धोखाधड़ी-रोधी परत ने भेजने से मना कर दिया (`reason` देखें, जैसे `repeated_attempts`, `suspicious`, `spam`)। एक `Blocked` send सत्यापन को तुरंत उच्च-जोखिम चेतावनी के साथ `Declined` के रूप में अंतिम रूप देता है, इसलिए अनुवर्ती check `Expired or Not Found` लौटाता है。\n\n**बिलिंग।** कीमत गंतव्य देश और संदेश को वास्तव में डिलीवर करने वाले चैनल पर निर्भर करती है — [फ़ोन सत्यापन मूल्य निर्धारण](/hi/getting-started/phone-verification-pricing) देखें। केवल `Blocked` send ही निःशुल्क होने की गारंटी है: किसी भी अन्य अनबिल किए गए send प्रयास का शुल्क सत्यापन पूरा होने या समाप्त होने पर लिया जाता है, भले ही डिलीवरी की पुष्टि कभी न हुई हो या डिलीवरी प्रदाता ने संदेश को डिलीवर न किए जाने योग्य बताया हो। Checks हमेशा निःशुल्क होते हैं। दुरुपयोग-रोधी उपाय के रूप में, आपके संगठन के पहले टॉप अप (`403`) तक फ़ोन सत्यापन अक्षम रहता है。\n\n**सत्र निरंतरता।** प्रत्येक नया सत्यापन एक API-प्रकार के सत्र के रूप में सुरक्षित रहता है: `request_id` एक वास्तविक सत्र ID है जिसे आप `GET /v3/session/{sessionId}/decision/` पर पास कर सकते हैं, सत्यापन Business Console में दिखाई देता है, और इसके आगे बढ़ने पर `status.updated` webhook इवेंट ट्रिगर होते हैं。\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ डिलीवरी और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत इनपुट अभी भी `400` लौटाता है), endpoint एक यादृच्छिक `request_id` के साथ एक स्थिर `Success` payload लौटाता है; कोई संदेश नहीं भेजा जाता है और कुछ भी सहेजा नहीं जाता है। सैंडबॉक्स check पर कोड `123456` का उपयोग करें。\n\n**प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं (`{\"detail\": \"You do not have permission to perform this action.\"}`) — यह API कभी भी `401` नहीं लौटाती है。\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट, साथ ही प्रति फ़ोन नंबर प्रति घंटे 4 send प्रयासों की दुरुपयोग-रोधी सीमा; किसी भी सीमा से अधिक होने पर `429` लौटता है।",
        "operationId": "post_v3phone_send",
        "x-didit-sdk": {
          "resource": "phone",
          "method": "send_code",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/phone/send/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"phone_number\": \"+14155552671\",\n    \"options\": {\n      \"code_size\": 6,\n      \"preferred_channel\": \"whatsapp\",\n      \"locale\": \"en-US\"\n    },\n    \"vendor_data\": \"user-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.phone.send_code(\n    phone_number=\"+14155552671\",\n    options={\n        \"locale\": \"en-US\",\n        \"preferred_channel\": \"whatsapp\",\n    },\n    vendor_data=\"user-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.phone.sendCode({\n  phone_number: \"+14155552671\",\n  options: {\n    locale: \"en-US\",\n    preferred_channel: \"whatsapp\",\n  },\n  vendor_data: \"user-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.SendCode(ctx, didit.PhoneSendCodeParams{\n\tPhoneNumber: \"+14155552671\",\n\tOptions: didit.Some(didit.PhoneSendCodeParamsOptions{\n\t\tLocale:           didit.String(\"en-US\"),\n\t\tPreferredChannel: didit.Some(didit.PhoneSendCodeParamsOptionsPreferredChannel(\"whatsapp\")),\n\t}),\n\tVendorData: didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.PhoneSendCodeParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.phone().sendCode(PhoneSendCodeParams.builder()\n        .phoneNumber(\"+14155552671\")\n        .options(PhoneSendCodeParams.Options.builder()\n                .locale(\"en-US\")\n                .preferredChannel(PhoneSendCodeParams.Options.PreferredChannel.of(\"whatsapp\"))\n                .build())\n        .vendorData(\"user-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->phone->sendCode([\n    'phone_number' => '+14155552671',\n    'options' => [\n        'locale' => 'en-US',\n        'preferred_channel' => 'whatsapp',\n    ],\n    'vendor_data' => 'user-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.phone.send_code(\n  phone_number: \"+14155552671\",\n  options: {\n    locale: \"en-US\",\n    preferred_channel: \"whatsapp\",\n  },\n  vendor_data: \"user-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Phone.SendCodeAsync(new PhoneSendCodeParams\n{\n    PhoneNumber = \"+14155552671\",\n    Options = new PhoneSendCodeParamsOptions\n    {\n        Locale = \"en-US\",\n        PreferredChannel = new PhoneSendCodeParamsOptionsPreferredChannel(\"whatsapp\"),\n    },\n    VendorData = \"user-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phone_number": {
                    "type": "string",
                    "maxLength": 20,
                    "description": "E.164 प्रारूप में प्राप्तकर्ता का फ़ोन नंबर — शुरुआती `+` और देश कोड (उदा., `+14155552671`)। नंबरों को मान्य और E.164 में सामान्यीकृत किया जाता है; पार्स न होने योग्य या अमान्य नंबर `phone_number` फ़ील्ड त्रुटि के साथ `400` लौटाते हैं।",
                    "example": "+14155552671"
                  },
                  "options": {
                    "type": "object",
                    "description": "OTP डिलीवरी विकल्प। सभी फ़ील्ड वैकल्पिक हैं।",
                    "properties": {
                      "code_size": {
                        "type": "integer",
                        "minimum": 4,
                        "maximum": 8,
                        "default": 6,
                        "description": "OTP में अंकों की संख्या।"
                      },
                      "locale": {
                        "type": "string",
                        "maxLength": 5,
                        "pattern": "^[a-z]{2,3}(-[A-Z]{2,3})?$",
                        "description": "सत्यापन संदेश को स्थानीयकृत करने के लिए उपयोग किया जाने वाला BCP-47 लोकेल (उदा. `en-US`, `fr`, `es`)। अमान्य प्रारूप `400` लौटाते हैं।",
                        "example": "en-US"
                      },
                      "preferred_channel": {
                        "type": "string",
                        "enum": [
                          "whatsapp",
                          "sms",
                          "telegram",
                          "voice",
                          "rcs",
                          "viber",
                          "zalo"
                        ],
                        "default": "whatsapp",
                        "description": "पसंदीदा डिलीवरी चैनल। यदि गंतव्य देश या नंबर के लिए चैनल अनुपलब्ध है, तो संदेश स्वचालित रूप से SMS पर फ़ॉलबैक हो जाता है — भेजने का परिणाम फिर भी `Success` रिपोर्ट होता है।"
                      },
                      "use_white_label_customization": {
                        "type": "boolean",
                        "default": false,
                        "description": "जब `true` होता है, तो भेजना व्हाइट-लेबल होता है: यदि आपके एप्लिकेशन का कोई SMS प्रेषक नाम नहीं है, तो SMS इसके बजाय आपके व्हाइट लेबल सार्वजनिक नाम का उल्लेख करता है (\"123456 Acme Bank के लिए आपका सत्यापन कोड है\")। आपका SMS प्रेषक नाम, जब सेट होता है, इस ध्वज के साथ या उसके बिना उपयोग किया जाता है। अन्य चैनल से SMS फ़ॉलबैक सहित SMS संदेशों पर लागू होता है; WhatsApp कोड एक निश्चित संदेश के साथ भेजे जाते हैं और ब्रांडेड नहीं होते हैं। डिफ़ॉल्ट रूप से `false` होता है।"
                      },
                      "sms_sender_name": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 30,
                        "example": "Acme Bank",
                        "description": "वह नाम जो इस कोड के SMS में होता है (\"123456 is your verification code for Acme Bank\"), आपके एप्लिकेशन के SMS सेंडर नाम के बजाय। निःशुल्क। 1 से 30 वर्ण: केवल अक्षर, अंक, स्पेस और ' & - !, केवल अंक नहीं, शब्दों के बीच सिंगल स्पेस के साथ; कोई अन्य मान `400` लौटाता है और कोई कोड नहीं भेजा जाता है। छोड़े जाने, `null` या रिक्त होने पर, आपके एप्लिकेशन के SMS सेंडर नाम का उपयोग किया जाता है। प्रत्येक एप्लिकेशन प्रति दिन (UTC) अधिकतम दो नए नामों का उपयोग शुरू कर सकता है; इसके बाद, कोड आपके एप्लिकेशन के नाम के साथ भेजा जाता है। SMS संदेशों पर लागू होता है, जिसमें किसी अन्य चैनल से SMS फ़ॉलबैक शामिल है; WhatsApp कोड ब्रांडेड नहीं होते हैं।",
                        "pattern": "^$|^(?![\\d ]+$)[\\p{L}\\p{N}'&!-]+( [\\p{L}\\p{N}'&!-]+)*$"
                      }
                    }
                  },
                  "signals": {
                    "type": "object",
                    "description": "अंतिम उपयोगकर्ता के बारे में वैकल्पिक डिवाइस और नेटवर्क सिग्नल, जो धोखाधड़ी-रोधी परत को अग्रेषित किए जाते हैं ताकि दुरुपयोगी या स्वचालित ट्रैफ़िक का बेहतर पता लगाया जा सके। सभी फ़ील्ड वैकल्पिक हैं।",
                    "properties": {
                      "ip": {
                        "type": "string",
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का IP पता। IPv4 या IPv6।",
                        "example": "192.0.2.1"
                      },
                      "device_id": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का विशिष्ट पहचानकर्ता। Android: `ANDROID_ID`; iOS: `identifierForVendor`।",
                        "example": "8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2"
                      },
                      "device_platform": {
                        "type": "string",
                        "enum": [
                          "android",
                          "ios",
                          "ipados",
                          "tvos",
                          "web"
                        ],
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का प्लेटफ़ॉर्म।"
                      },
                      "device_model": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का मॉडल।",
                        "example": "iPhone17,2"
                      },
                      "os_version": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का ऑपरेटिंग-सिस्टम संस्करण।",
                        "example": "18.0.1"
                      },
                      "app_version": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "आपके एप्लिकेशन का संस्करण।",
                        "example": "1.2.34"
                      },
                      "user_agent": {
                        "type": "string",
                        "maxLength": 512,
                        "description": "अंतिम उपयोगकर्ता के ब्राउज़र या ऐप का यूज़र एजेंट।",
                        "example": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1"
                      }
                    }
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक कॉलर-नियंत्रित पहचानकर्ता (आपकी आंतरिक उपयोगकर्ता id, एक ईमेल, एक UUID, आदि) जो सत्र में सुरक्षित रहता है और भेजने के रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhook और Business Console में वापस लौटाया जाता है। Didit के `request_id` को अपने उपयोगकर्ता रिकॉर्ड के साथ सहसंबंधित करने के लिए इसका उपयोग करें।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "वैकल्पिक फ़्री-फ़ॉर्म JSON ऑब्जेक्ट जो सत्र पर बना रहता है और सेंड रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhooks और Business Console में वापस प्रदर्शित होता है।"
                  }
                },
                "required": [
                  "phone_number"
                ]
              },
              "examples": {
                "WhatsApp (default)": {
                  "summary": "WhatsApp के माध्यम से 6-अंकीय OTP, जो स्वचालित रूप से SMS पर फ़ॉलबैक करता है",
                  "value": {
                    "phone_number": "+14155552671",
                    "options": {
                      "preferred_channel": "whatsapp",
                      "locale": "en-US"
                    },
                    "vendor_data": "user-1234"
                  }
                },
                "SMS with custom code length": {
                  "summary": "4-अंकीय कोड के साथ SMS डिलीवरी बाध्य करें",
                  "value": {
                    "phone_number": "+34699999999",
                    "options": {
                      "preferred_channel": "sms",
                      "code_size": 4,
                      "locale": "es"
                    }
                  }
                },
                "With fraud signals": {
                  "summary": "एंटी-फ़्रॉड स्क्रीनिंग को मजबूत करने के लिए डिवाइस सिग्नल फ़ॉरवर्ड करें",
                  "value": {
                    "phone_number": "+14155552671",
                    "signals": {
                      "ip": "192.0.2.1",
                      "device_id": "8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2",
                      "device_platform": "ios",
                      "device_model": "iPhone17,2",
                      "os_version": "18.0.1",
                      "app_version": "1.2.34"
                    },
                    "vendor_data": "user-1234"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "भेजने की पुष्टि की गई। `status` की जांच करें: `Success` और `Retry` का अर्थ है कि एक कोड रास्ते में है; `Blocked` का अर्थ है कि धोखाधड़ी-रोधी लेयर ने अस्वीकार कर दिया और सत्यापन पहले ही `Declined` के रूप में अंतिम रूप ले चुका है। `request_id` संग्रहीत सत्र आईडी है (`Retry` पर वही आईडी)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneVerificationSendResponse"
                },
                "examples": {
                  "Success": {
                    "summary": "एक नए सत्यापन के लिए भेजा गया OTP",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Success",
                      "reason": null,
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  },
                  "Retry": {
                    "summary": "5 मिनट की समय-सीमा के भीतर उसी नंबर पर दूसरा प्रेषण — समान request_id",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Retry",
                      "reason": null,
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  },
                  "Blocked": {
                    "summary": "धोखाधड़ी-रोधी अस्वीकृति — सत्यापन को अस्वीकृत के रूप में अंतिम रूप दिया गया, कोई बिलिंग नहीं की गई",
                    "value": {
                      "request_id": "0d8af1f4-0c43-46d7-b75c-6e4e22c0a7b3",
                      "status": "Blocked",
                      "reason": "repeated_attempts",
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। विकृत इनपुट DRF का फ़ील्ड-त्रुटि एनवेलप लौटाता है (प्रति आपत्तिजनक फ़ील्ड संदेशों की एक सरणी, विकल्प त्रुटियों के लिए `options` के अंतर्गत नेस्टेड)। ऐसा नंबर जो पार्स तो हो जाता है लेकिन भेजने के समय अस्वीकृत हो जाता है (पहुंच से बाहर, या कोई अयोग्य लाइन प्रकार जैसे शॉर्ट कोड), इसके बजाय `{\"detail\": ...}` एनवेलप लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid phone number (field error)": {
                    "summary": "नंबर मान्य E.164 नहीं है",
                    "value": {
                      "phone_number": [
                        "Invalid phone number provided."
                      ]
                    }
                  },
                  "Missing phone number": {
                    "summary": "`phone_number` बॉडी में शामिल नहीं है",
                    "value": {
                      "phone_number": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid options": {
                    "summary": "सीमा से बाहर `code_size`, विकृत `locale`, अज्ञात `preferred_channel`",
                    "value": {
                      "options": {
                        "code_size": [
                          "Ensure this value is less than or equal to 8."
                        ],
                        "locale": [
                          "Ensure this field has no more than 5 characters."
                        ],
                        "preferred_channel": [
                          "\"carrier_pigeon\" is not a valid choice."
                        ]
                      }
                    }
                  },
                  "Number rejected at send time": {
                    "summary": "मान्य E.164 प्रारूप लेकिन नंबर OTP प्राप्त नहीं कर सकता",
                    "value": {
                      "detail": "Invalid phone number provided."
                    }
                  },
                  "Ineligible line type": {
                    "summary": "लाइन प्रकार OTP प्राप्त नहीं कर सकता (उदा., शॉर्ट कोड)",
                    "value": {
                      "detail": "Invalid phone line type provided."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो (`{\"detail\": ...}`); गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। किसी भी सेंड से पहले तब भी लौटाया जाता है जब संगठन ने कभी टॉप अप न किया हो (दुरुपयोग-रोधी द्वार) या जब उसका बैलेंस गंतव्य की भेजने की कीमत को कवर नहीं कर सकता (`{\"error\": ...}`).",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Top-up required": {
                    "summary": "संगठन के पहले टॉप अप तक फ़ोन सत्यापन अक्षम रहता है",
                    "value": {
                      "detail": "To protect against abuse, phone verification is disabled until your first top-up."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस भेजने की कीमत को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। इसके अतिरिक्त, अपस्ट्रीम में प्रति फ़ोन नंबर प्रति घंटे 4 सत्यापन प्रयासों की एक दुरुपयोग-विरोधी सीमा लागू होती है। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर शामिल होते हैं। ध्यान दें: `X-RateLimit-*`/`Retry-After` हेडर केवल 300/मिनट राइट-लिमिट 429 के साथ आते हैं; प्रति-नंबर कैप 429 में कोई दर-सीमा हेडर नहीं होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Per-number cap": {
                    "summary": "पिछले एक घंटे में उसी नंबर के लिए 4 से अधिक सत्यापन प्रयास",
                    "value": {
                      "detail": "Maximum verification attempts reached for this phone number. Only 4 authentication attempts are allowed per hour. Try again later or use a different number."
                    }
                  },
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "फ़ोन सत्यापन प्रदाता अस्थायी रूप से अनुपलब्ध है - एक 5xx रिस्पॉन्स, टाइमआउट, या कनेक्शन विफलता जो इन-बिल्ट पुनः प्रयासों के बाद भी बनी रही। पुनः प्रयास करना सुरक्षित है; कोई शुल्क नहीं लिया जाता है और कोई प्रयास खर्च नहीं होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Provider outage": {
                    "summary": "प्रदाता ने भेजने के अनुरोध का उत्तर नहीं दिया",
                    "value": {
                      "detail": "Phone verification is temporarily unavailable. Please try again shortly.",
                      "code": "phone_provider_unavailable"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "सत्यापन बनाते समय अप्रत्याशित विफलता जो किसी ज्ञात प्रदाता आउटेज के कारण नहीं है। पुनः प्रयास करना सुरक्षित है।",
            "content": {
              "application/json": {
                "examples": {
                  "Provider error": {
                    "summary": "OTP डिलीवरी शुरू नहीं की जा सकी",
                    "value": {
                      "detail": "Error creating phone verification"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/phone/check/": {
      "post": {
        "summary": "फ़ोन कोड जांचें",
        "description": "[`POST /v3/phone/send/`](/hi/standalone-apis/phone-send) द्वारा डिलीवर किए गए OTP को सत्यापित करें और अंतिम सत्यापन परिणाम के साथ फ़ोन इंटेलिजेंस प्राप्त करें: कैरियर का नाम और लाइन का प्रकार, वर्चुअल (VoIP) और डिस्पोजेबल फ़्लैग, और आपके सत्रों में नंबर का डुप्लिकेट उपयोग।\n\n**जांच सत्यापन कैसे ढूंढती है।** मिलान आपके एप्लिकेशन और E.164 `phone_number` द्वारा होता है — `request_id` कोई इनपुट नहीं है। पिछले **5 मिनट** के भीतर बनाए गए सबसे हालिया पेंडिंग सत्यापन की जांच की जाती है। यदि कोई नहीं है (कभी नहीं भेजा गया, पहले ही फ़ाइनलाइज़ हो चुका है, या 5 मिनट से अधिक पुराना है) तो endpoint `status: \"Expired or Not Found\"` के साथ `200` लौटाता है।\n\n**प्रयास बजट।** प्रत्येक सत्यापन **3 कोड प्रयासों** की अनुमति देता है। पहले दो गलत कोड शेष प्रयासों और `phone: null` के साथ `status: \"Failed\"` लौटाते हैं; तीसरा गलत कोड सत्यापन को `VERIFICATION_CODE_ATTEMPTS_EXCEEDED` चेतावनी के साथ `Declined` के रूप में फ़ाइनलाइज़ करता है और पूर्ण फ़ोन रिपोर्ट लौटाता है।\n\n**परिणाम।** `Approved` — सही कोड और अस्वीकृति का कोई जोखिम नहीं। `Declined` — टर्मिनल: कोड सही था लेकिन अस्वीकृति का कोई जोखिम मेल खा गया (नीचे दी गई `DECLINE` कार्रवाई, ब्लॉकलिस्ट किया गया या उच्च जोखिम वाला नंबर), या प्रयास बजट समाप्त हो गया था। `Failed` — गलत कोड, प्रयास शेष हैं। `Expired or Not Found` — जांचने के लिए कुछ नहीं है। `Approved`/`Declined` पर `request_id` सेंड के `request_id` (सत्र id) के बराबर होता है और `phone` पूर्ण रिपोर्ट (`carrier`, `is_virtual`, `is_disposable`, `warnings`, `lifecycle`, `matches`) रखता है; `Failed` और `Expired or Not Found` पर `request_id` एक बार का रैंडम UUID होता है।\n\n**जोखिम कार्रवाइयां।** `duplicated_phone_number_action`, `disposable_number_action`, और `voip_number_action` तय करते हैं कि सही कोड पर संबंधित जोखिम का पता चलने पर क्या होगा: `DECLINE` अंतिम स्थिति को `Declined` में बदल देता है; `NO_ACTION` (डिफ़ॉल्ट) स्थिति को प्रभावित किए बिना `phone.warnings` में जोखिम रिकॉर्ड करता है।\n\n**बिलिंग।** जांच निःशुल्क हैं — डिलीवरी का बिल भेजने वाले अनुरोध पर लिया जाता है ([फ़ोन सत्यापन मूल्य निर्धारण](/hi/getting-started/phone-verification-pricing) देखें)।\n\n**सत्र स्थायित्व।** एक फ़ाइनलाइज़ की गई जांच सेंड द्वारा बनाए गए सत्र को अपडेट करती है (Business Console में दृश्यमान, `GET /v3/session/{sessionId}/decision/` के माध्यम से पूछताछ योग्य) और एक `status.updated` webhook ट्रिगर करती है।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियां सभी प्रोसेसिंग को छोड़ देती हैं: कोई भी सही ढंग से फ़ॉर्मेट किया गया कोड (4–8 अंक, `123456` शामिल) एक सरलीकृत फ़्लैट `phone` ऑब्जेक्ट (`status`, `phone_number`, `country_code`, `carrier_name`, `line_type`, `flags`) के साथ एक स्टैटिक `Approved` payload लौटाता है; गलत फ़ॉर्मेट वाला इनपुट अभी भी `400` लौटाता है। कुछ भी स्थायी रूप से सहेजा नहीं जाता है।\n\n**प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं — यह API कभी भी `401` नहीं लौटाता है।\n\n**रेट लिमिट।** प्रति API कुंजी प्रति मिनट 300 अनुरोधों का साझा राइट बजट, साथ ही प्रति घंटे प्रति नंबर 4 प्रयासों की अपस्ट्रीम एंटी-एब्यूज सीमा; किसी भी सीमा को पार करने पर `429` लौटता है।\n\n**सोशल फ़ुटप्रिंट।** `phone_social` ब्लॉक जोड़ने के लिए `enable_social` को `true` पर सेट करें: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह नंबर पंजीकृत है, प्रति-श्रेणी गणना और उपलब्ध कोई भी प्रोफ़ाइल विवरण। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जांच की गई थी और नंबर उनमें से किसी पर भी नहीं मिला - एक मान्य, बिल करने योग्य उत्तर। जब ऐड-ऑन का अनुरोध नहीं किया गया था या जांच पूरी नहीं की जा सकी, तो यह ब्लॉक अनुपस्थित रहता है, और उस स्थिति में इसका बिल नहीं लिया जाता है। बिलिंग इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `phone_social` यूनिट जोड़ती है।",
        "operationId": "post_v3phone_check",
        "x-didit-sdk": {
          "resource": "phone",
          "method": "check_code",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/phone/check/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"phone_number\": \"+14155552671\",\n    \"code\": \"123456\",\n    \"voip_number_action\": \"DECLINE\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.phone.check_code(\n    phone_number=\"+14155552671\",\n    code=\"123456\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.phone.checkCode({\n  phone_number: \"+14155552671\",\n  code: \"123456\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Phone.CheckCode(ctx, didit.PhoneCheckCodeParams{\n\tPhoneNumber: \"+14155552671\",\n\tCode:        \"123456\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.PhoneCheckCodeParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.phone().checkCode(PhoneCheckCodeParams.builder()\n        .phoneNumber(\"+14155552671\")\n        .code(\"123456\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->phone->checkCode([\n    'phone_number' => '+14155552671',\n    'code' => '123456',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.phone.check_code(\n  phone_number: \"+14155552671\",\n  code: \"123456\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Phone.CheckCodeAsync(new PhoneCheckCodeParams\n{\n    PhoneNumber = \"+14155552671\",\n    Code = \"123456\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "phone_number": {
                    "type": "string",
                    "maxLength": 20,
                    "description": "वही फ़ोन नंबर जो संबंधित [`POST /v3/phone/send/`](/hi/standalone-apis/phone-send) कॉल में उपयोग किया गया था, E.164 प्रारूप में। यह चेक को सेंड से लिंक करता है।",
                    "example": "+14155552671"
                  },
                  "code": {
                    "type": "string",
                    "minLength": 4,
                    "maxLength": 8,
                    "pattern": "^[0-9]{4,8}$",
                    "description": "अंतिम उपयोगकर्ता को प्राप्त OTP। 4–8 संख्यात्मक अंक होने चाहिए — कोई अन्य मान प्रयास की खपत किए बिना `400` लौटाता है। एक सही प्रारूप वाला लेकिन गलत कोड `status: \"Failed\"` के साथ `200` लौटाता है और 3 प्रयासों में से एक की खपत करता है।",
                    "example": "123456"
                  },
                  "duplicated_phone_number_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "आपके एप्लिकेशन के किसी भिन्न उपयोगकर्ता (भिन्न `vendor_data`) द्वारा समान नंबर का पहले ही उपयोग किए जाने पर क्या कार्रवाई की जाए। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `phone.warnings` में रिकॉर्ड करता है और `phone.matches` को भरता है।"
                  },
                  "disposable_number_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब कैरियर लुकअप नंबर को एक अस्थायी/बर्नर लाइन के रूप में फ़्लैग करता है (`phone.is_disposable`) तो क्या कार्रवाई करें। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `phone.warnings` में रिकॉर्ड करता है।"
                  },
                  "voip_number_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब कैरियर लुकअप वर्चुअल लाइन प्रकार — `voip`, `isp`, या `vpn` रिपोर्ट करता है (`phone.is_virtual`) तो क्या कार्रवाई करें। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `phone.warnings` में रिकॉर्ड करता है।"
                  },
                  "enable_enrichment": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो नंबर पर फ़ोन इंटेलिजेंस भी चलाएं: एक जोखिम स्कोर, लाइन का प्रकार, क्या इसे हाल ही में पोर्ट किया गया था और एक ट्रस्ट इंडेक्स। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `phone_intelligence_api` यूनिट ($0.05 सूची मूल्य पर) के रूप में बिल किया जाता है। जब आपका बैलेंस इसे कवर नहीं कर पाता है, तो अनुरोध `403` लौटाता है।",
                    "example": false
                  },
                  "phone_intelligence_score_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब फ़ोन इंटेलिजेंस जोखिम स्कोर थ्रेशोल्ड से अधिक हो, तब की जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "phone_type_risk_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब नंबर एक उच्च-जोखिम वाली लाइन का प्रकार हो, तब की जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "recent_port_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब नंबर हाल ही में किसी अन्य कैरियर में पोर्ट किया गया हो, तब की जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "low_phone_trust_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब फ़ोन इंटेलिजेंस ट्रस्ट इंडेक्स थ्रेशोल्ड पर या उससे कम हो, तब की जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "enable_social": {
                    "type": "boolean",
                    "default": false,
                    "description": "true होने पर, नंबर के सोशल फ़ुटप्रिंट की भी खोज करें - मैसेजिंग, सोशल, ई-कॉमर्स और व्यावसायिक प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `phone_social` इकाई के रूप में बिल किया जाता है।",
                    "example": true
                  },
                  "phone_no_social_presence_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब सोशल फ़ुटप्रिंट जाँच में यह पाया जाता है कि नंबर इसके दायरे में आने वाले किसी भी प्लेटफ़ॉर्म पर पंजीकृत नहीं है, तब की जाने वाली कार्रवाई। इस endpoint पर केवल NO_ACTION और DECLINE स्वीकार किए जाते हैं; REVIEW इसी नाम की वर्कफ़्लो कॉन्फ़िगरेशन कुंजी पर उपलब्ध है।"
                  }
                },
                "required": [
                  "phone_number",
                  "code"
                ]
              },
              "examples": {
                "Default": {
                  "summary": "किसी भी जोखिम को रिकॉर्ड करें लेकिन कभी भी स्वतः अस्वीकृत न करें",
                  "value": {
                    "phone_number": "+14155552671",
                    "code": "123456"
                  }
                },
                "Strict risk policy": {
                  "summary": "VoIP और डिस्पोज़ेबल लाइनों को स्वतः अस्वीकृत करें",
                  "value": {
                    "phone_number": "+14155552671",
                    "code": "123456",
                    "voip_number_action": "DECLINE",
                    "disposable_number_action": "DECLINE"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जांच पूरी हुई — गलत कोड और छूटे हुए सत्यापन भी `200` लौटाते हैं; HTTP कोड नहीं, `status` का निरीक्षण करें। `phone` केवल अंतिम परिणामों (`Approved`/`Declined`) पर पॉप्युलेट होता है, `Failed` पर `null`, और `Expired or Not Found` पर अनुपस्थित होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PhoneVerificationCheckResponse"
                },
                "examples": {
                  "Approved": {
                    "summary": "सही कोड — कैरियर, लाइफ़साइकिल और मिलानों के साथ पूर्ण फ़ोन रिपोर्ट",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Approved",
                      "message": "The verification code is correct.",
                      "phone": {
                        "status": "Approved",
                        "phone_number_prefix": "+1",
                        "phone_number": "4155552671",
                        "full_number": "+14155552671",
                        "country_code": "US",
                        "country_name": "United States",
                        "carrier": {
                          "name": "AT&T",
                          "type": "mobile"
                        },
                        "is_disposable": false,
                        "is_virtual": false,
                        "verification_method": "whatsapp",
                        "verification_attempts": 1,
                        "verified_at": "2026-06-12T01:24:47.311323Z",
                        "warnings": [],
                        "lifecycle": [
                          {
                            "type": "PHONE_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null,
                              "channel": "whatsapp",
                              "actual_channel": "whatsapp"
                            },
                            "fee": 0.0509
                          },
                          {
                            "type": "PHONE_DELIVERY_DELIVERED",
                            "timestamp": "2026-06-12T01:23:43.118220+00:00",
                            "details": {
                              "channel": "whatsapp",
                              "status": "delivered"
                            },
                            "fee": 0
                          },
                          {
                            "type": "VALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "123456",
                              "status": "Approved"
                            },
                            "fee": 0
                          },
                          {
                            "type": "PHONE_VERIFICATION_APPROVED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": null,
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Failed (attempts remaining)": {
                    "summary": "गलत कोड — उपयोगकर्ता पुनः प्रयास कर सकता है; यहाँ request_id एक वन-टाइम UUID है",
                    "value": {
                      "request_id": "11111111-2222-3333-4444-555555555555",
                      "status": "Failed",
                      "message": "The verification code is incorrect. Attempts remaining: 2",
                      "phone": null,
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:21.512340+00:00"
                    }
                  },
                  "Declined (max attempts)": {
                    "summary": "तीसरा गलत कोड — सत्यापन अस्वीकृत के रूप में अंतिम रूप दिया गया",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Declined",
                      "message": "The verification code is incorrect. Maximum attempts reached.",
                      "phone": {
                        "status": "Declined",
                        "phone_number_prefix": "+1",
                        "phone_number": "4155552671",
                        "full_number": "+14155552671",
                        "country_code": "US",
                        "country_name": "United States",
                        "carrier": {
                          "name": "AT&T",
                          "type": "mobile"
                        },
                        "is_disposable": false,
                        "is_virtual": false,
                        "verification_method": "whatsapp",
                        "verification_attempts": 1,
                        "verified_at": null,
                        "warnings": [
                          {
                            "feature": "PHONE",
                            "risk": "VERIFICATION_CODE_ATTEMPTS_EXCEEDED",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Verification code attempts exceeded",
                            "long_description": "The system detected that the phone number has exceeded the maximum number of verification code attempts."
                          }
                        ],
                        "lifecycle": [
                          {
                            "type": "PHONE_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null,
                              "channel": "whatsapp",
                              "actual_channel": "whatsapp"
                            },
                            "fee": 0.0509
                          },
                          {
                            "type": "INVALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:01.118220+00:00",
                            "details": {
                              "code_tried": "111111",
                              "status": "Failed"
                            },
                            "fee": 0
                          },
                          {
                            "type": "INVALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:21.512340+00:00",
                            "details": {
                              "code_tried": "222222",
                              "status": "Failed"
                            },
                            "fee": 0
                          },
                          {
                            "type": "INVALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "333333",
                              "status": "Failed"
                            },
                            "fee": 0
                          },
                          {
                            "type": "PHONE_VERIFICATION_DECLINED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": {
                              "reason": "VERIFICATION_CODE_ATTEMPTS_EXCEEDED"
                            },
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Declined (risk policy)": {
                    "summary": "सही कोड, लेकिन लाइन VoIP है और voip_number_action=DECLINE है",
                    "value": {
                      "request_id": "7f1c9d2e-44a1-4b6e-9a3e-5b8e6f1c2d3a",
                      "status": "Declined",
                      "message": "The verification code is correct.",
                      "phone": {
                        "status": "Declined",
                        "phone_number_prefix": "+1",
                        "phone_number": "5005550006",
                        "full_number": "+15005550006",
                        "country_code": "US",
                        "country_name": "United States",
                        "carrier": {
                          "name": "CLEC LLC",
                          "type": "voip"
                        },
                        "is_disposable": false,
                        "is_virtual": true,
                        "verification_method": "sms",
                        "verification_attempts": 1,
                        "verified_at": "2026-06-12T01:24:47.311323Z",
                        "warnings": [
                          {
                            "feature": "PHONE",
                            "risk": "VOIP_NUMBER_DETECTED",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "VoIP number detected",
                            "long_description": "The system detected that the phone number is a VoIP number, which is not allowed."
                          }
                        ],
                        "lifecycle": [
                          {
                            "type": "PHONE_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null,
                              "channel": "whatsapp",
                              "actual_channel": "sms"
                            },
                            "fee": 0.0509
                          },
                          {
                            "type": "VALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "123456",
                              "status": "Approved"
                            },
                            "fee": 0
                          },
                          {
                            "type": "PHONE_VERIFICATION_DECLINED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": {
                              "reason": "VOIP_NUMBER_DETECTED"
                            },
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Expired or Not Found": {
                    "summary": "पिछले 5 मिनट में इस नंबर के लिए कोई लंबित सत्यापन नहीं है",
                    "value": {
                      "request_id": "69cc35c6-280a-47a6-ab8c-4f32abc02ed0",
                      "status": "Expired or Not Found",
                      "message": "No pending phone verification found in the last 5 minutes.",
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.311323+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — DRF का फ़ील्ड-त्रुटि एनवलप: प्रति त्रुटियुक्त फ़ील्ड संदेशों का एक ऐरे।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid code format": {
                    "summary": "`code` 4–8 संख्यात्मक अंक नहीं है",
                    "value": {
                      "code": [
                        "Invalid code format. Enter 4 to 8 numeric digits."
                      ]
                    }
                  },
                  "Invalid phone number": {
                    "summary": "`phone_number` मान्य E.164 नहीं है",
                    "value": {
                      "phone_number": [
                        "Invalid phone number provided."
                      ]
                    }
                  },
                  "Invalid action": {
                    "summary": "जोखिम कार्रवाइयां केवल NO_ACTION या DECLINE स्वीकार करती हैं",
                    "value": {
                      "voip_number_action": [
                        "\"REVIEW\" is not a valid choice."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। जाँच निःशुल्क हैं, इसलिए यहाँ कोई क्रेडिट जाँच नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। इसके अतिरिक्त, अपस्ट्रीम में प्रति फ़ोन नंबर प्रति घंटे 4 सत्यापन प्रयासों की एक दुरुपयोग-विरोधी सीमा लागू होती है। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर शामिल होते हैं। ध्यान दें: `X-RateLimit-*`/`Retry-After` हेडर केवल 300/मिनट राइट-लिमिट 429 के साथ आते हैं; प्रति-नंबर कैप 429 में कोई दर-सीमा हेडर नहीं होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Per-number cap": {
                    "summary": "पिछले एक घंटे में उसी नंबर के लिए 4 से अधिक सत्यापन प्रयास",
                    "value": {
                      "detail": "Maximum verification attempts reached for this phone number. Only 4 authentication attempts are allowed per hour. Try again later or use a different number."
                    }
                  },
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "फ़ोन सत्यापन प्रदाता अस्थायी रूप से अनुपलब्ध है - एक 5xx रिस्पॉन्स, टाइमआउट, या कनेक्शन विफलता जो इन-बिल्ट पुनः प्रयासों के बाद भी बनी रही। पुनः प्रयास करना सुरक्षित है; प्रयास का बजट खर्च नहीं होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Provider outage": {
                    "summary": "प्रदाता ने जांच अनुरोध का उत्तर नहीं दिया",
                    "value": {
                      "detail": "Phone verification is temporarily unavailable. Please try again shortly.",
                      "code": "phone_provider_unavailable"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "अपस्ट्रीम में कोड सत्यापित करते समय अप्रत्याशित विफलता जो किसी ज्ञात प्रदाता आउटेज के कारण नहीं है। पुनः प्रयास करना सुरक्षित है; प्रयास बजट केवल पूर्ण की गई जाँचों द्वारा ही उपयोग किया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Provider error": {
                    "summary": "कोड सत्यापन पूरा नहीं किया जा सका",
                    "value": {
                      "detail": "Error checking phone verification"
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/bank/account-check/": {
      "post": {
        "summary": "बैंक खाते की जांच करें",
        "description": "बैंक खाते में पैसे भेजने से पहले यह जांचें कि वह आपके द्वारा नामित व्यक्ति या कंपनी का है या नहीं। कोई सत्र नहीं और कोई साइन-इन नहीं: नाम और खाता भेजें, परिणाम पढ़ें। यह आपके बैकएंड से चलने वाला बैंक सत्यापन चरण का [खाता जांच](/hi/core-technology/bank-verification/account-check) है।\n\n**आप क्या भेजते हैं।** खाते का `country` (ISO 3166-1 alpha-3), `account`, उस देश में प्रचलित प्रारूप में, और `holder` नाम: किसी व्यक्ति के लिए `full_name` या किसी कंपनी के लिए `business_name`। व्यवसाय का नाम देने पर व्यावसायिक खाते की जांच होती है।\n\n**आपको क्या वापस मिलता है।** `result` या तो `match`, `close_match`, `no_match` या `cannot_verify` होता है। `close_match` पर, `holder_name` वह नाम होता है जिसके नाम पर बैंक ने खाता रखा है, जब बैंक ने इसे लौटाया हो। `account` केवल अंतिम 4 वर्ण दिखाते हुए मास्क होकर वापस आता है।\n\n**बिलिंग।** बैंक जिस प्रत्येक जांच का उत्तर देता है, उसका बिल खाते के देश के लिए निर्धारित खाता जांच की कीमत पर एक बार लगाया जाता है, चाहे परिणाम कुछ भी हो: `no_match`, जो खाता मौजूद नहीं है और `cannot_verify` का भी बिल भेजा जाता है। त्रुटि के साथ उत्तर दिए गए अनुरोध का कभी बिल नहीं भेजा जाता है।\n\n**प्रत्येक अनुरोध एक नई जांच है।** कोई आइडेम्पोटेंसी कुंजी नहीं है और जांच को वापस पढ़ने के लिए कोई endpoint नहीं है, इसलिए पुनः प्रयास किया गया अनुरोध फिर से चलता है, और उसका फिर से बिल भेजा जाता है। रिस्पॉन्स को संग्रहीत करें।\n\n**सैंडबॉक्स।** नमूना खाता विवरणों के साथ सैंडबॉक्स API कुंजी का उपयोग करें। एक सैंडबॉक्स कुंजी किसी भी बैंक को कॉल नहीं करती है और कोई शुल्क नहीं लिया जाता है। IBAN के अंतिम 4 वर्ण, अन्यथा खाता संख्या के अंतिम 4 वर्ण, उत्तर चुनते हैं: `0001` एक `holder_name` के साथ `close_match`, `0002` बिना किसी नाम के `close_match`, `0003` और `0006` एक `no_match`, `0004` `cannot_verify`, `0005` एक `503` और `0009` एक `400`। कोई भी अन्य अंतिम 4 वर्ण `match` चुनते हैं।\n\n**API कुंजियाँ।** एक स्कोप्ड API कुंजी को सत्रों के लिए राइट एक्सेस की आवश्यकता होती है।",
        "operationId": "post_v3_bank_account_check",
        "tags": [
          "Standalone APIs"
        ],
        "x-didit-sdk": {
          "resource": "bank",
          "method": "account_check",
          "auth": "api_key",
          "server": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BankAccountCheckRequest"
              },
              "examples": {
                "Person, Nigeria": {
                  "summary": "एक बैंक कोड और खाता संख्या, जिसे किसी व्यक्ति के नाम के विरुद्ध जाँचा गया है",
                  "value": {
                    "country": "NGA",
                    "account": {
                      "bank_code": "000014",
                      "account_number": "0123450001"
                    },
                    "holder": {
                      "full_name": "Maria Oliveira"
                    },
                    "vendor_data": "payout_20481"
                  }
                },
                "Company, Nigeria": {
                  "summary": "एक बैंक कोड और खाता संख्या, जिसे कंपनी के नाम के विरुद्ध जाँचा गया है",
                  "value": {
                    "country": "NGA",
                    "account": {
                      "bank_code": "000014",
                      "account_number": "0123456789"
                    },
                    "holder": {
                      "business_name": "Northwind Trading Ltd"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "बैंक ने उत्तर दिया। परिणाम चाहे जो भी हो, जाँच के लिए शुल्क लिया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckResponse"
                },
                "examples": {
                  "Close match": {
                    "summary": "बैंक खाते को मिलते-जुलते नाम के तहत रखता है",
                    "value": {
                      "request_id": "c2f4a9e0-7b1d-4c3a-9e55-1d0a6b8f2a47",
                      "result": "close_match",
                      "holder_name": "MARIA R OLIVEIRA",
                      "account": "****0001",
                      "vendor_data": "payout_20481",
                      "created_at": "2026-10-21T14:32:08Z"
                    }
                  },
                  "Match": {
                    "summary": "बैंक भेजे गए नाम के तहत खाता रखता है",
                    "value": {
                      "request_id": "5b0e2d7c-41a8-4f6e-9c3b-8e7d1a2f6c90",
                      "result": "match",
                      "holder_name": null,
                      "account": "****6789",
                      "vendor_data": null,
                      "created_at": "2026-10-21T14:35:41Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "भेजे गए रूप में अस्वीकार कर दिया गया, और बिल नहीं किया गया। `field` उस बॉडी फ़ील्ड का नाम बताता है जिसे ठीक करना है और `reason` बताता है कि क्यों, उन्हीं कारणों के साथ जो होस्टेड खाता फ़ॉर्म दिखाता है। केवल पहले अस्वीकार किए गए फ़ील्ड की रिपोर्ट की जाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Missing field": {
                    "summary": "देश के सत्यापन के लिए बैंक कोड की आवश्यकता होती है",
                    "value": {
                      "detail": "The bank code is not valid (required).",
                      "code": "invalid_account_input",
                      "field": "account.bank_code",
                      "reason": "required"
                    }
                  },
                  "Invalid IBAN": {
                    "summary": "IBAN की लंबाई उसके देश के अनुसार गलत है",
                    "value": {
                      "detail": "The iban is not valid (length).",
                      "code": "invalid_account_input",
                      "field": "account.iban",
                      "reason": "length"
                    }
                  },
                  "Refused by the bank": {
                    "summary": "बैंक ने भेजे गए खाते को अस्वीकार कर दिया",
                    "value": {
                      "detail": "The account was refused as typed (rejected).",
                      "code": "invalid_account_input",
                      "field": "account.account_number",
                      "reason": "rejected"
                    }
                  },
                  "No name": {
                    "summary": "`holder` में न तो `full_name` है और न ही `business_name`",
                    "value": {
                      "detail": "Send full_name for a person or business_name for a company.",
                      "code": "invalid_account_input",
                      "field": "holder",
                      "reason": "required"
                    }
                  },
                  "Consent required": {
                    "summary": "देश के खाता सत्यापन के लिए खाताधारक की सहमति आवश्यक है",
                    "value": {
                      "detail": "Account checks in this country need the account holder's explicit consent. Ask for it, then send `consent=true`.",
                      "code": "invalid_account_input",
                      "field": "consent",
                      "reason": "required"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "जाँच के लिए भुगतान नहीं किया जा सकता, इसलिए यह नहीं चली। अपना बैलेंस टॉप अप करें, फिर इसे दोबारा भेजें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Out of credit": {
                    "summary": "आपका बैलेंस एक जांच को कवर नहीं कर सकता",
                    "value": {
                      "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me",
                      "code": "insufficient_credits"
                    }
                  },
                  "Not in your contract": {
                    "summary": "आपके अनुबंध में Account check API के लिए कोई कीमत नहीं है",
                    "value": {
                      "detail": "Your contract does not price the Account check API. Contact your account manager.",
                      "code": "contract_rate_missing"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर या वाहक token अनुपस्थित या अमान्य है, अनुरोध कुंजी की IP सूची से बाहर के पते से आया है, या किसी स्कोप्ड कुंजी के पास सत्रों के लिए राइट एक्सेस नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई मान्य API कुंजी या token नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "No sessions write": {
                    "summary": "सत्रों के लिए राइट (write) एक्सेस के बिना एक स्कोप्ड कुंजी",
                    "value": {
                      "detail": "This API key has no write access to sessions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "कोई खाता जाँच अभी इस खाते की सेवा नहीं करती है, इसलिए कुछ भी जाँचा या बिल नहीं किया गया। `country_not_covered`: कोई भी इसके देश, या वहाँ इसके प्रकार के खाते (व्यक्ति या व्यवसाय) की सेवा नहीं करता है। `bank_not_covered`: कोई भी इसके बैंक की सेवा नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Country not covered": {
                    "summary": "देश के लिए कोई खाता जाँच उपलब्ध नहीं है",
                    "value": {
                      "detail": "No account check serves this country yet.",
                      "code": "country_not_covered"
                    }
                  },
                  "Bank not covered": {
                    "summary": "खाते के बैंक के लिए कोई खाता जाँच उपलब्ध नहीं है",
                    "value": {
                      "detail": "No account check serves this account's bank yet.",
                      "code": "bank_not_covered"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          },
          "503": {
            "description": "बैंक उत्तर नहीं दे सका। न तो जाँच की गई और न ही शुल्क लिया गया; जाँच बाद में पुनः भेजें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankAccountCheckError"
                },
                "examples": {
                  "Unavailable": {
                    "summary": "बैंक ने उत्तर नहीं दिया",
                    "value": {
                      "detail": "The account check is temporarily unavailable and this request was not charged. Please try again.",
                      "code": "account_check_unavailable"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/bank/account-check/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"country\": \"NGA\",\n    \"account\": {\"bank_code\": \"000014\", \"account_number\": \"0123450001\"},\n    \"holder\": {\"full_name\": \"Maria Oliveira\"},\n    \"vendor_data\": \"payout_20481\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.bank.account_check(\n    country=\"NGA\",\n    account={\n        \"account_number\": \"0123450001\",\n        \"bank_code\": \"000014\",\n    },\n    holder={\n        \"full_name\": \"Maria Oliveira\",\n    },\n    vendor_data=\"payout_20481\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.bank.accountCheck({\n  country: \"NGA\",\n  account: {\n    account_number: \"0123450001\",\n    bank_code: \"000014\",\n  },\n  holder: {\n    full_name: \"Maria Oliveira\",\n  },\n  vendor_data: \"payout_20481\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Bank.AccountCheck(ctx, didit.BankAccountCheckRequest{\n\tCountry: \"NGA\",\n\tAccount: didit.BankAccountCheckRequestAccount{\n\t\tAccountNumber: didit.String(\"0123450001\"),\n\t\tBankCode:      didit.String(\"000014\"),\n\t},\n\tHolder: didit.BankAccountCheckHolder{\n\t\tFullName: didit.String(\"Maria Oliveira\"),\n\t},\n\tVendorData: didit.String(\"payout_20481\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BankAccountCheckHolder;\nimport me.didit.types.BankAccountCheckPersonHolder;\nimport me.didit.types.BankAccountCheckRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.bank().accountCheck(BankAccountCheckRequest.builder()\n        .country(\"NGA\")\n        .account(BankAccountCheckRequest.Account.builder()\n                .accountNumber(\"0123450001\")\n                .bankCode(\"000014\")\n                .build())\n        .holder(BankAccountCheckHolder.ofBankAccountCheckPersonHolder(BankAccountCheckPersonHolder.builder()\n                .fullName(\"Maria Oliveira\")\n                .build()))\n        .vendorData(\"payout_20481\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->bank->accountCheck([\n    'country' => 'NGA',\n    'account' => [\n        'account_number' => '0123450001',\n        'bank_code' => '000014',\n    ],\n    'holder' => [\n        'full_name' => 'Maria Oliveira',\n    ],\n    'vendor_data' => 'payout_20481',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.bank.account_check(\n  country: \"NGA\",\n  account: {\n    account_number: \"0123450001\",\n    bank_code: \"000014\",\n  },\n  holder: {\n    full_name: \"Maria Oliveira\",\n  },\n  vendor_data: \"payout_20481\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Bank.AccountCheckAsync(new BankAccountCheckRequest\n{\n    Country = \"NGA\",\n    Account = new()\n    {\n        AccountNumber = \"0123450001\",\n        BankCode = \"000014\",\n    },\n    Holder = new()\n    {\n        FullName = \"Maria Oliveira\",\n    },\n    VendorData = \"payout_20481\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/email/send/": {
      "post": {
        "summary": "ईमेल कोड भेजें",
        "description": "किसी ईमेल पते पर वन-टाइम पासकोड (OTP) भेजें, फिर [`POST /v3/email/check/`](/hi/standalone-apis/email-check) के साथ इसे सत्यापित करें।\n\n**सेंड और चेक कैसे एक साथ काम करते हैं।** सत्यापन स्थिति आपके एप्लिकेशन और `email` पते द्वारा कुंजीबद्ध की जाती है — चेक कॉल में `request_id` नहीं लिया जाता है। प्रत्येक नया सेंड एक लंबित सत्यापन बनाता है जो **5 मिनट** तक सक्रिय रहता है: विंडो बंद होने से पहले उसी पते और उपयोगकर्ता द्वारा प्राप्त कोड के साथ चेक को कॉल करें। जब सत्यापन लंबित हो, उसी पते के लिए दोबारा सेंड कॉल करने पर उसी सत्यापन के लिए एक नया कोड जनरेट होता है (`status: \"Retry\"`, वही `request_id`); पिछला कोड काम करना बंद कर देता है। इस तरह अधिकतम एक पुनः प्रयास संलग्न किया जाता है (कुल दो सेंड); अगला सेंड एक नए `request_id` के साथ एक नया सत्यापन शुरू करता है। 5 मिनट की विंडो को पहले सेंड से मापा जाता है और पुनः प्रयासों द्वारा इसे बढ़ाया नहीं जाता है।\n\n**डिलीवरेबिलिटी प्री-चेक।** कुछ भी भेजे जाने से पहले, पता सिंटैक्स और DNS/MX सत्यापन से गुजरता है। जो पते मेल प्राप्त नहीं कर सकते वे `status: \"Undeliverable\"` और `reason: \"email_can_not_be_delivered\"` के साथ `200` लौटाते हैं — कोई ईमेल नहीं भेजा जाता है, कोई बिलिंग नहीं होती है, और सत्यापन तुरंत `Declined` के रूप में अंतिम रूप ले लेता है (एक अनुवर्ती चेक `Expired or Not Found` लौटाता है)। ऐसा सेंड जो पते के अलावा किसी अन्य कारण से विफल होता है (ईमेल को डिलीवरी के लिए नहीं सौंपा जा सका) इसके बजाय `503` लौटाता है: कोई कोड नहीं भेजा जाता है, कोई बिलिंग नहीं होती है, सत्यापन खुला रहता है और वही अनुरोध दोहराया जा सकता है।\n\n**कोड फ़ॉर्मेट और ब्रांडिंग।** कोड 4–8 वर्णों के होते हैं (`options.code_size`, डिफ़ॉल्ट 6), डिफ़ॉल्ट रूप से संख्यात्मक; बड़े अक्षरों और अंकों के लिए `options.alphanumeric_code: true` सेट करें (चेक तुलना केस-इनसेंसिटिव होती है)। ईमेल टेम्पलेट को `options.locale` (54 समर्थित भाषाएँ) के माध्यम से स्थानीयकृत किया जाता है और यह `options.use_white_label_customization` के माध्यम से आपके एप्लिकेशन की व्हाइट लेबल ब्रांडिंग का उपयोग कर सकता है।\n\n**बिलिंग।** प्रति सफल सेंड (`status: \"Success\"`) पर एक ईमेल सत्यापन API क्रेडिट, जो सेंड के समय चार्ज किया जाता है। `Retry` और `Undeliverable` सेंड निःशुल्क हैं, और चेक भी निःशुल्क हैं।\n\n**सत्र निरंतरता।** प्रत्येक नया सत्यापन एक API-प्रकार के सत्र के रूप में सुरक्षित किया जाता है: `request_id` एक वास्तविक सत्र आईडी है जिसे आप `GET /v3/session/{sessionId}/decision/` को पास कर सकते हैं, सत्यापन Business Console में दिखाई देता है, और इसके आगे बढ़ने पर `status.updated` webhook ट्रिगर होते हैं।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियाँ डिलीवरी और बिलिंग को छोड़ देती हैं: अनुरोध सत्यापन के बाद (गलत फ़ॉर्मेट वाला इनपुट अभी भी `400` लौटाता है), endpoint एक यादृच्छिक `request_id` के साथ एक स्थिर `Success` payload लौटाता है; कोई ईमेल नहीं भेजा जाता है और कुछ भी सुरक्षित नहीं किया जाता है। सैंडबॉक्स चेक पर कोड `123456` का उपयोग करें।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी को `x-api-key` हेडर में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं — यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इससे अधिक होने पर `429` लौटता है।",
        "operationId": "post_v3email_send",
        "x-didit-sdk": {
          "resource": "email",
          "method": "send_code",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/email/send/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email\": \"alice@example.com\",\n    \"options\": { \"code_size\": 6, \"locale\": \"en\" },\n    \"vendor_data\": \"user-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.email.send_code(\n    email=\"alice@example.com\",\n    options={\n        \"locale\": \"en\",\n    },\n    vendor_data=\"user-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.email.sendCode({\n  email: \"alice@example.com\",\n  options: {\n    locale: \"en\",\n  },\n  vendor_data: \"user-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.SendCode(ctx, didit.EmailSendCodeParams{\n\tEmail: \"alice@example.com\",\n\tOptions: didit.Some(didit.EmailSendCodeParamsOptions{\n\t\tLocale: didit.Some(didit.EmailSendCodeParamsOptionsLocale(\"en\")),\n\t}),\n\tVendorData: didit.String(\"user-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.EmailSendCodeParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.email().sendCode(EmailSendCodeParams.builder()\n        .email(\"alice@example.com\")\n        .options(EmailSendCodeParams.Options.builder()\n                .locale(EmailSendCodeParams.Options.Locale.of(\"en\"))\n                .build())\n        .vendorData(\"user-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->email->sendCode([\n    'email' => 'alice@example.com',\n    'options' => [\n        'locale' => 'en',\n    ],\n    'vendor_data' => 'user-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.email.send_code(\n  email: \"alice@example.com\",\n  options: {\n    locale: \"en\",\n  },\n  vendor_data: \"user-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Email.SendCodeAsync(new EmailSendCodeParams\n{\n    Email = \"alice@example.com\",\n    Options = new EmailSendCodeParamsOptions\n    {\n        Locale = new EmailSendCodeParamsOptionsLocale(\"en\"),\n    },\n    VendorData = \"user-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "प्राप्तकर्ता का ईमेल पता। विकृत पते `400` लौटाते हैं; सिंटैक्स की दृष्टि से मान्य पते जो मेल प्राप्त नहीं कर सकते (विफल DNS/MX सत्यापन) `status: \"Undeliverable\"` के साथ `200` लौटाते हैं।",
                    "example": "alice@example.com"
                  },
                  "options": {
                    "type": "object",
                    "description": "OTP प्रारूप, स्थानीयकरण और ब्रांडिंग विकल्प। सभी फ़ील्ड वैकल्पिक हैं।",
                    "properties": {
                      "code_size": {
                        "type": "integer",
                        "minimum": 4,
                        "maximum": 8,
                        "default": 6,
                        "description": "OTP में वर्णों की संख्या (डिफ़ॉल्ट रूप से अंक; बड़े अक्षर और अंक जब `alphanumeric_code` का मान `true` हो)।"
                      },
                      "alphanumeric_code": {
                        "type": "boolean",
                        "default": false,
                        "description": "जब `true` होता है, तो OTP केवल अंकों के बजाय बड़े अक्षरों `A–Z` और अंकों `0–9` से बना होता है। `/v3/email/check/` तुलना केस-असंवेदनशील होती है।"
                      },
                      "locale": {
                        "type": "string",
                        "maxLength": 5,
                        "enum": [
                          "en",
                          "ar",
                          "bn",
                          "bg",
                          "bs",
                          "ca",
                          "cs",
                          "da",
                          "de",
                          "el",
                          "es",
                          "et",
                          "fa",
                          "fi",
                          "fr",
                          "he",
                          "hi",
                          "hr",
                          "hu",
                          "hy",
                          "id",
                          "it",
                          "ja",
                          "ka",
                          "kk",
                          "ko",
                          "ky",
                          "lt",
                          "lv",
                          "cnr",
                          "mk",
                          "mn",
                          "ms",
                          "nl",
                          "no",
                          "pl",
                          "pt-BR",
                          "pt",
                          "ro",
                          "ru",
                          "sk",
                          "sl",
                          "so",
                          "sq",
                          "sr",
                          "sv",
                          "th",
                          "tr",
                          "uk",
                          "uz",
                          "vi",
                          "zh-CN",
                          "zh-TW",
                          "zh"
                        ],
                        "description": "OTP ईमेल टेम्पलेट की भाषा। डिफ़ॉल्ट रूप से `en`। असमर्थित मान सभी समर्थित लोकेल सूचीबद्ध करते हुए `400` लौटाते हैं।",
                        "example": "en"
                      },
                      "use_white_label_customization": {
                        "type": "boolean",
                        "default": false,
                        "description": "जब `true` होता है, तो OTP ईमेल डिफ़ॉल्ट Didit टेम्पलेट के बजाय आपके एप्लिकेशन के व्हाइट लेबल अनुकूलन (लोगो, रंग, प्रेषक ब्रांडिंग) का उपयोग करता है।"
                      }
                    }
                  },
                  "signals": {
                    "type": "object",
                    "description": "अंतिम उपयोगकर्ता के बारे में वैकल्पिक डिवाइस और नेटवर्क सिग्नल, जो धोखाधड़ी-रोधी परत को अग्रेषित किए जाते हैं ताकि दुरुपयोगी या स्वचालित ट्रैफ़िक का बेहतर पता लगाया जा सके। सभी फ़ील्ड वैकल्पिक हैं।",
                    "properties": {
                      "ip": {
                        "type": "string",
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का IP पता। IPv4 या IPv6।",
                        "example": "192.0.2.1"
                      },
                      "device_id": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का विशिष्ट पहचानकर्ता। Android: `ANDROID_ID`; iOS: `identifierForVendor`।",
                        "example": "8F0B8FDD-C2CB-4387-B20A-56E9B2E5A0D2"
                      },
                      "device_platform": {
                        "type": "string",
                        "enum": [
                          "android",
                          "ios",
                          "ipados",
                          "tvos",
                          "web"
                        ],
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का प्लेटफ़ॉर्म।"
                      },
                      "device_model": {
                        "type": "string",
                        "maxLength": 255,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का मॉडल।",
                        "example": "iPhone17,2"
                      },
                      "os_version": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "अंतिम उपयोगकर्ता के डिवाइस का ऑपरेटिंग-सिस्टम संस्करण।",
                        "example": "18.0.1"
                      },
                      "app_version": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "आपके एप्लिकेशन का संस्करण।",
                        "example": "1.2.34"
                      },
                      "user_agent": {
                        "type": "string",
                        "maxLength": 512,
                        "description": "अंतिम उपयोगकर्ता के ब्राउज़र या ऐप का यूज़र एजेंट।",
                        "example": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Mobile/15E148 Safari/604.1"
                      }
                    }
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "वैकल्पिक कॉलर-नियंत्रित पहचानकर्ता (आपकी आंतरिक उपयोगकर्ता id, एक ईमेल, एक UUID, आदि) जो सत्र में सुरक्षित रहता है और भेजने के रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhook और Business Console में वापस लौटाया जाता है। Didit के `request_id` को अपने उपयोगकर्ता रिकॉर्ड के साथ सहसंबंधित करने के लिए इसका उपयोग करें।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "वैकल्पिक फ़्री-फ़ॉर्म JSON ऑब्जेक्ट जो सत्र पर बना रहता है और सेंड रिस्पॉन्स, मिलान जांच रिस्पॉन्स, webhooks और Business Console में वापस प्रदर्शित होता है।"
                  }
                },
                "required": [
                  "email"
                ]
              },
              "examples": {
                "Numeric 6-digit code": {
                  "summary": "डिफ़ॉल्ट — अंग्रेज़ी में 6 अंकों का संख्यात्मक कोड",
                  "value": {
                    "email": "alice@example.com",
                    "options": {
                      "locale": "en"
                    },
                    "vendor_data": "user-1234"
                  }
                },
                "Alphanumeric 8-character code": {
                  "summary": "अपरकेस अक्षर + अंक, स्पैनिश टेम्पलेट",
                  "value": {
                    "email": "bob@example.com",
                    "options": {
                      "code_size": 8,
                      "alphanumeric_code": true,
                      "locale": "es"
                    }
                  }
                },
                "White-label branding": {
                  "summary": "अपने एप्लिकेशन के व्हाइट लेबल अनुकूलन के साथ OTP ईमेल भेजें",
                  "value": {
                    "email": "carol@example.com",
                    "options": {
                      "locale": "en",
                      "use_white_label_customization": true
                    },
                    "vendor_data": "user-5678"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "भेजने की पुष्टि की गई। `status` की जाँच करें: `Success` और `Retry` का अर्थ है कि एक कोड रास्ते में है; `Undeliverable` का अर्थ है कि पता मेल प्राप्त नहीं कर सकता है और सत्यापन पहले ही `Declined` के रूप में अंतिम रूप ले चुका है। `request_id` संग्रहीत सत्र आईडी है (`Retry` पर वही आईडी)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationSendResponse"
                },
                "examples": {
                  "Success": {
                    "summary": "एक नए सत्यापन के लिए ईमेल किया गया OTP (बिल किया गया)",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Success",
                      "reason": null,
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  },
                  "Retry": {
                    "summary": "5 मिनट की समय-सीमा के भीतर दूसरा प्रेषण — नया कोड, समान request_id, निःशुल्क",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Retry",
                      "reason": null,
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  },
                  "Undeliverable": {
                    "summary": "पता DNS/MX सत्यापन में विफल रहा — सत्यापन अस्वीकृत के रूप में अंतिम रूप दिया गया, कोई बिलिंग नहीं हुई",
                    "value": {
                      "request_id": "cb1a5011-344d-444d-bdce-218904745d7f",
                      "status": "Undeliverable",
                      "reason": "email_can_not_be_delivered",
                      "vendor_data": "user-1234",
                      "metadata": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — DRF का फ़ील्ड-त्रुटि एनवलप: प्रति त्रुटियुक्त फ़ील्ड संदेशों का एक ऐरे, विकल्प त्रुटियों के लिए `options` के अंतर्गत नेस्टेड।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid email": {
                    "summary": "गलत स्वरूपित ईमेल पता",
                    "value": {
                      "email": [
                        "Enter a valid email address."
                      ]
                    }
                  },
                  "Unsupported locale": {
                    "summary": "`options.locale` समर्थित सेट से बाहर है",
                    "value": {
                      "options": {
                        "locale": [
                          "Invalid locale. Supported locales are en, ar, bn, bg, bs, ca, cs, da, de, el, es, et, fa, fi, fr, he, hi, hr, hu, hy, id, it, ja, ka, kk, ko, ky, lt, lv, cnr, mk, mn, ms, nl, no, pl, pt-BR, pt, ro, ru, sk, sl, so, sq, sr, sv, th, tr, uk, uz, vi, zh-CN, zh-TW, zh."
                        ]
                      }
                    }
                  },
                  "Code size out of range": {
                    "summary": "`options.code_size` 4–8 से बाहर है",
                    "value": {
                      "options": {
                        "code_size": [
                          "Ensure this value is less than or equal to 8."
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो (`{\"detail\": ...}`); गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। किसी भी सेंड से पहले तब भी लौटाया जाता है जब संगठन का बैलेंस एक ईमेल सत्यापन API क्रेडिट को कवर नहीं कर सकता (`{\"error\": ...}`).",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस भेजने की कीमत को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "पते से असंबंधित किसी कारण से ईमेल नहीं भेजा जा सका (ईमेल प्रदाता से संपर्क नहीं हो सका, टाइम आउट हो गया या उसने स्वयं भेजने से मना कर दिया), इसलिए कोई कोड नहीं भेजा गया और न ही कुछ बिल किया गया या भेजने के प्रयास के रूप में गिना गया। वही अनुरोध दोहराएं।",
            "content": {
              "application/json": {
                "examples": {
                  "Email delivery unavailable": {
                    "summary": "एक स्वचालित पुनः प्रयास के बाद ईमेल प्रदाता विफल रहा",
                    "value": {
                      "detail": "Email delivery is temporarily unavailable. Please try again."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/email/check/": {
      "post": {
        "summary": "ईमेल कोड जांचें",
        "description": "[`POST /v3/email/send/`](/hi/standalone-apis/email-send) द्वारा डिलीवर किए गए OTP को सत्यापित करें और अंतिम सत्यापन परिणाम के साथ-साथ ईमेल इंटेलिजेंस प्राप्त करें: डिलीवरी योग्यता, ब्रीच एक्सपोज़र (`is_breached` और ब्रीच-इंटेलिजेंस डेटाबेस से `breaches` सूची), डिस्पोज़ेबल-प्रदाता डिटेक्शन, और आपके सत्रों में पते का डुप्लिकेट उपयोग।\n\n**जाँच सत्यापन कैसे ढूँढती है।** मिलान आपके एप्लिकेशन और `email` पते द्वारा होता है — `request_id` इनपुट नहीं है। पिछले **5 मिनट** के भीतर बनाए गए नवीनतम लंबित सत्यापन की जाँच की जाती है। यदि कोई नहीं है (कभी नहीं भेजा गया, पहले ही अंतिम रूप दे दिया गया, भेजते समय डिलीवर न होने योग्य था, या 5 मिनट से अधिक पुराना है), तो endpoint `status: \"Expired or Not Found\"` के साथ `200` लौटाता है।\n\n**प्रयास बजट।** प्रत्येक सत्यापन **3 कोड प्रयासों** की अनुमति देता है। पहले दो गलत कोड शेष प्रयासों और `email: null` के साथ `status: \"Failed\"` लौटाते हैं; तीसरा गलत कोड सत्यापन को `EMAIL_CODE_ATTEMPTS_EXCEEDED` चेतावनी के साथ `Declined` के रूप में अंतिम रूप देता है और पूरी ईमेल रिपोर्ट लौटाता है। कोड की तुलना केस-असंवेदनशील रूप से की जाती है (`alphanumeric_code` भेजने के लिए प्रासंगिक); केवल सबसे हाल ही में भेजा गया कोड ही मान्य होता है।\n\n**परिणाम।** `Approved` — सही कोड और कोई अस्वीकार करने वाला जोखिम नहीं। `Declined` — टर्मिनल: कोड सही था लेकिन एक अस्वीकार करने वाला जोखिम मेल खाता है (नीचे दी गई `DECLINE` कार्रवाई, एक ब्लॉकलिस्ट किया गया पता, या फ़ाइनलाइज़ेशन पर पता डिलीवर न होने योग्य पाया गया), या प्रयास बजट समाप्त हो गया था। `Failed` — गलत कोड, प्रयास शेष। `Expired or Not Found` — जाँचने के लिए कुछ नहीं है। `Approved`/`Declined` पर `request_id` भेजे गए `request_id` (सत्र id) के बराबर होता है और `email` पूरी रिपोर्ट रखता है (`is_breached`, `breaches`, `is_disposable`, `is_undeliverable`, `warnings`, `lifecycle`, `matches`); `Failed` और `Expired or Not Found` पर `request_id` एक बार का रैंडम UUID होता है।\n\n**जोखिम कार्रवाइयां।** `duplicated_email_action`, `breached_email_action`, और `disposable_email_action` तय करते हैं कि सही कोड पर संबंधित जोखिम का पता चलने पर क्या होता है: `DECLINE` अंतिम स्थिति को `Declined` में बदल देता है; `NO_ACTION` (डिफ़ॉल्ट) स्थिति को प्रभावित किए बिना `email.warnings` में जोखिम रिकॉर्ड करता है।\n\n**बिलिंग।** जाँचें निःशुल्क हैं — क्रेडिट की खपत सफल सेंड द्वारा होती है।\n\n**सत्र निरंतरता।** अंतिम रूप दी गई जाँच सेंड द्वारा बनाए गए सत्र को अपडेट करती है (Business Console में दृश्यमान, `GET /v3/session/{sessionId}/decision/` के माध्यम से क्वेरी करने योग्य) और एक `status.updated` webhook ट्रिगर करती है।\n\n**सैंडबॉक्स।** सैंडबॉक्स API कुंजियां सभी प्रोसेसिंग छोड़ देती हैं: कोई भी सही ढंग से फ़ॉर्मेट किया गया कोड (`123456` सहित) एक सरलीकृत `email` ऑब्जेक्ट (`status`, `email`, `is_breached`, `is_disposable`, `is_undeliverable`) के साथ एक स्थिर `Approved` payload लौटाता है; अमान्य इनपुट अभी भी `400` लौटाता है। कुछ भी सहेजा नहीं जाता है।\n\n**प्रमाणीकरण।** `x-api-key` हेडर में अपने एप्लिकेशन की API कुंजी भेजें। अनुपस्थित या अमान्य क्रेडेंशियल्स `403` लौटाते हैं (`{\"detail\": \"You do not have permission to perform this action.\"}`) — यह API कभी भी `401` नहीं लौटाता है।\n\n**रेट लिमिट।** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` लौटता है।\n\n**सोशल फ़ुटप्रिंट।** `email_social` ब्लॉक जोड़ने के लिए `enable_social` को `true` पर सेट करें: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पता पंजीकृत है, प्रति-श्रेणी गणना और उपलब्ध प्रोफ़ाइल विवरण के साथ। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जाँच की गई थी और उनमें से किसी पर भी पता नहीं मिला - एक मान्य, बिल करने योग्य उत्तर। जब ऐड-ऑन का अनुरोध नहीं किया गया था या जाँच पूरी नहीं की जा सकी, तो यह ब्लॉक अनुपस्थित रहता है, और उस मामले में इसका बिल नहीं लिया जाता है। बिलिंग इस endpoint की अपनी कीमत के अलावा प्रति अनुरोध एक `email_social` यूनिट जोड़ती है।",
        "operationId": "post_v3email_check",
        "x-didit-sdk": {
          "resource": "email",
          "method": "check_code",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/email/check/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"email\": \"alice@example.com\",\n    \"code\": \"123456\",\n    \"disposable_email_action\": \"DECLINE\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.email.check_code(\n    email=\"alice@example.com\",\n    code=\"123456\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.email.checkCode({\n  email: \"alice@example.com\",\n  code: \"123456\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Email.CheckCode(ctx, didit.EmailCheckCodeParams{\n\tEmail: \"alice@example.com\",\n\tCode:  \"123456\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.EmailCheckCodeParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.email().checkCode(EmailCheckCodeParams.builder()\n        .email(\"alice@example.com\")\n        .code(\"123456\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->email->checkCode([\n    'email' => 'alice@example.com',\n    'code' => '123456',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.email.check_code(\n  email: \"alice@example.com\",\n  code: \"123456\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Email.CheckCodeAsync(new EmailCheckCodeParams\n{\n    Email = \"alice@example.com\",\n    Code = \"123456\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "वही ईमेल पता जो संबंधित [`POST /v3/email/send/`](/hi/standalone-apis/email-send) कॉल में उपयोग किया गया था। यह चेक को सेंड से लिंक करता है।",
                    "example": "alice@example.com"
                  },
                  "code": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "अंतिम उपयोगकर्ता को प्राप्त OTP: 4–8 अंक, या 4–8 अक्षर/अंक जब भेजते समय `alphanumeric_code: true` का उपयोग किया गया था। तुलना केस-असंवेदनशील है।",
                    "example": "123456"
                  },
                  "duplicated_email_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "आपके एप्लिकेशन के किसी भिन्न उपयोगकर्ता (भिन्न `vendor_data`) द्वारा समान पते का पहले ही उपयोग और स्वीकृत किए जाने पर क्या कार्रवाई की जाए (केवल पहले स्वीकृत सत्यापन ही गिने जाते हैं)। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `email.warnings` में रिकॉर्ड करता है और `email.matches` को भरता है।"
                  },
                  "breached_email_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब पता ज्ञात डेटा उल्लंघनों में दिखाई देता है (`email.is_breached`) तो क्या कार्रवाई करें। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `email.warnings` में रिकॉर्ड करता है।"
                  },
                  "disposable_email_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "डोमेन के डिस्पोज़ेबल/अस्थायी-मेल प्रदाता (`email.is_disposable`) से संबंधित होने पर क्या कार्रवाई की जाए। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` जोखिम को `email.warnings` में रिकॉर्ड करता है।"
                  },
                  "enable_enrichment": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो पते पर ईमेल इंटेलिजेंस भी चलाएं: एक जोखिम स्कोर और इसका ब्रीच इतिहास। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `email_intelligence_api` यूनिट ($0.05 सूची मूल्य पर) के रूप में बिल किया जाता है। जब आपका बैलेंस इसे कवर नहीं कर पाता है, तो अनुरोध `403` लौटाता है।",
                    "example": false
                  },
                  "email_intelligence_score_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब ईमेल इंटेलिजेंस जोखिम स्कोर थ्रेशोल्ड से अधिक हो, तब की जाने वाली कार्रवाई। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तभी प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "recent_email_breach_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "कार्रवाई जब पता हाल ही में ज्ञात डेटा ब्रीच में दिखाई देता है। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तब प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "frequent_email_breach_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "कार्रवाई जब पता कई ज्ञात डेटा ब्रीच में दिखाई देता है। `DECLINE` अंतिम `status` को `Declined` में बदल देता है; `NO_ACTION` अस्वीकार किए बिना सिग्नल रिकॉर्ड करता है। केवल तब प्रभावी होता है जब `enable_enrichment` का मान `true` हो।"
                  },
                  "enable_social": {
                    "type": "boolean",
                    "default": false,
                    "description": "true होने पर, पते के सोशल फ़ुटप्रिंट की भी खोज करें - ईमेल, सोशल, व्यावसायिक, ई-कॉमर्स और मनोरंजन प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `email_social` इकाई के रूप में बिल किया जाता है।",
                    "example": true
                  },
                  "email_no_social_presence_action": {
                    "type": "string",
                    "enum": [
                      "NO_ACTION",
                      "DECLINE"
                    ],
                    "default": "NO_ACTION",
                    "description": "जब सोशल फ़ुटप्रिंट जाँच में पता चलता है कि पता इसके द्वारा कवर किए गए किसी भी प्लेटफ़ॉर्म पर पंजीकृत नहीं है, तब की जाने वाली कार्रवाई। इस endpoint पर केवल NO_ACTION और DECLINE स्वीकार किए जाते हैं; REVIEW इसी नाम की वर्कफ़्लो कॉन्फ़िगरेशन कुंजी पर उपलब्ध है।"
                  }
                },
                "required": [
                  "email",
                  "code"
                ]
              },
              "examples": {
                "Default": {
                  "summary": "किसी भी जोखिम को रिकॉर्ड करें लेकिन कभी भी स्वतः अस्वीकृत न करें",
                  "value": {
                    "email": "alice@example.com",
                    "code": "123456"
                  }
                },
                "Strict risk policy": {
                  "summary": "डिस्पोज़ेबल और ब्रीच हुए इनबॉक्स को स्वतः अस्वीकृत करें",
                  "value": {
                    "email": "alice@example.com",
                    "code": "123456",
                    "disposable_email_action": "DECLINE",
                    "breached_email_action": "DECLINE"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जांच पूरी हुई — गलत कोड और छूटे हुए सत्यापन भी `200` लौटाते हैं; HTTP कोड नहीं, `status` का निरीक्षण करें। `email` केवल अंतिम परिणामों (`Approved`/`Declined`) पर पॉप्युलेट होता है, `Failed` पर `null`, और `Expired or Not Found` पर अनुपस्थित होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailVerificationCheckResponse"
                },
                "examples": {
                  "Approved": {
                    "summary": "सही कोड — स्वच्छ पता, पूर्ण ईमेल रिपोर्ट",
                    "value": {
                      "request_id": "e39cb057-92fc-4b59-b84e-02fec29a0f24",
                      "status": "Approved",
                      "message": "The verification code is correct.",
                      "email": {
                        "status": "Approved",
                        "email": "alice@example.com",
                        "is_breached": false,
                        "breaches": [],
                        "is_disposable": false,
                        "is_undeliverable": false,
                        "verification_attempts": 1,
                        "verified_at": "2026-06-12T01:24:47.311323Z",
                        "warnings": [],
                        "lifecycle": [
                          {
                            "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null
                            },
                            "fee": 0.02
                          },
                          {
                            "type": "VALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "123456",
                              "status": "Approved"
                            },
                            "fee": 0
                          },
                          {
                            "type": "EMAIL_VERIFICATION_APPROVED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": null,
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Approved with breach exposure": {
                    "summary": "सही कोड; डेटा उल्लंघन एक्सपोज़र चेतावनी के रूप में दर्ज किया गया (breached_email_action=NO_ACTION)",
                    "value": {
                      "request_id": "3a1f2b6c-9d4e-4f7a-8b2c-1e5d6f7a8b9c",
                      "status": "Approved",
                      "message": "The verification code is correct.",
                      "email": {
                        "status": "Approved",
                        "email": "bob@example.com",
                        "is_breached": true,
                        "breaches": [
                          {
                            "name": "ExampleApp",
                            "domain": "exampleapp.com",
                            "breach_date": "2019-03-21",
                            "breach_emails_count": 763117,
                            "description": "In March 2019, the social platform ExampleApp suffered a data breach that exposed email addresses and passwords.",
                            "logo_path": "https://<media-host>/logos/ExampleApp.png",
                            "data_classes": [
                              "email_addresses",
                              "passwords"
                            ],
                            "is_verified": true
                          }
                        ],
                        "is_disposable": false,
                        "is_undeliverable": false,
                        "verification_attempts": 1,
                        "verified_at": "2026-06-12T01:24:47.311323Z",
                        "warnings": [
                          {
                            "feature": "EMAIL",
                            "risk": "BREACHED_EMAIL_DETECTED",
                            "additional_data": null,
                            "log_type": "information",
                            "short_description": "Breached email detected",
                            "long_description": "This email address was found in one or more known data breaches."
                          }
                        ],
                        "lifecycle": [
                          {
                            "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null
                            },
                            "fee": 0.02
                          },
                          {
                            "type": "VALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "835126",
                              "status": "Approved"
                            },
                            "fee": 0
                          },
                          {
                            "type": "EMAIL_VERIFICATION_APPROVED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": null,
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-5678",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Failed (attempts remaining)": {
                    "summary": "गलत कोड — उपयोगकर्ता पुनः प्रयास कर सकता है; यहाँ request_id एक वन-टाइम UUID है",
                    "value": {
                      "request_id": "11111111-2222-3333-4444-555555555555",
                      "status": "Failed",
                      "message": "The verification code is incorrect. Attempts remaining: 2",
                      "email": null,
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:21.512340+00:00"
                    }
                  },
                  "Declined (risk policy)": {
                    "summary": "सही कोड, लेकिन पता डिस्पोज़ेबल है और disposable_email_action=DECLINE है",
                    "value": {
                      "request_id": "8c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
                      "status": "Declined",
                      "message": "The verification code is correct.",
                      "email": {
                        "status": "Declined",
                        "email": "tempuser42@mailinator.com",
                        "is_breached": false,
                        "breaches": [],
                        "is_disposable": true,
                        "is_undeliverable": false,
                        "verification_attempts": 1,
                        "verified_at": "2026-06-12T01:24:47.311323Z",
                        "warnings": [
                          {
                            "feature": "EMAIL",
                            "risk": "DISPOSABLE_EMAIL_DETECTED",
                            "additional_data": null,
                            "log_type": "error",
                            "short_description": "Disposable email detected",
                            "long_description": "The system detected that the email is disposable, which is not allowed."
                          }
                        ],
                        "lifecycle": [
                          {
                            "type": "EMAIL_VERIFICATION_MESSAGE_SENT",
                            "timestamp": "2026-06-12T01:23:39.580554+00:00",
                            "details": {
                              "status": "Success",
                              "reason": null
                            },
                            "fee": 0.02
                          },
                          {
                            "type": "VALID_CODE_ENTERED",
                            "timestamp": "2026-06-12T01:24:47.311201+00:00",
                            "details": {
                              "code_tried": "123456",
                              "status": "Approved"
                            },
                            "fee": 0
                          },
                          {
                            "type": "EMAIL_VERIFICATION_DECLINED",
                            "timestamp": "2026-06-12T01:24:47.384292+00:00",
                            "details": {
                              "reason": "DISPOSABLE_EMAIL_DETECTED"
                            },
                            "fee": 0
                          }
                        ],
                        "matches": []
                      },
                      "vendor_data": "user-1234",
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:47.401719+00:00"
                    }
                  },
                  "Expired or Not Found": {
                    "summary": "पिछले 5 मिनट में इस पते के लिए कोई लंबित सत्यापन नहीं है",
                    "value": {
                      "request_id": "88808a77-06e9-4cb0-85f5-9c052ddfd987",
                      "status": "Expired or Not Found",
                      "message": "No pending email verification found in the last 5 minutes.",
                      "vendor_data": null,
                      "metadata": null,
                      "created_at": "2026-06-12T01:24:59.887904+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — DRF का फ़ील्ड-त्रुटि एनवलप: प्रति त्रुटियुक्त फ़ील्ड संदेशों का एक ऐरे।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid email": {
                    "summary": "गलत स्वरूपित ईमेल पता",
                    "value": {
                      "email": [
                        "Enter a valid email address."
                      ]
                    }
                  },
                  "Missing code": {
                    "summary": "बॉडी में `code` शामिल नहीं है",
                    "value": {
                      "code": [
                        "This field is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। जाँच निःशुल्क हैं, इसलिए यहाँ कोई क्रेडिट जाँच नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/workflows/": {
      "get": {
        "summary": "वर्कफ़्लो सूचीबद्ध करें",
        "description": "अपने वर्कफ़्लो को सबसे नए पहले क्रम में, limit/offset पेजिनेशन एन्वेलप (`{count, next, previous, results}`, डिफ़ॉल्ट पेज आकार 50) में सूचीबद्ध करें। प्रत्येक पंक्ति एक संस्करण है; `workflow_id` स्थिर समूह ID है और नए सत्र नवीनतम `published` संस्करण का उपयोग करते हैं।",
        "operationId": "list_workflows",
        "x-didit-sdk": {
          "resource": "workflows",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "पेज का आकार (प्रति पेज वर्कफ़्लो की संख्या)।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "पहले लौटाए गए वर्कफ़्लो से पहले छोड़ी जाने वाली पंक्तियों की संख्या।"
          }
        ],
        "responses": {
          "200": {
            "description": "`created_at` के अवरोही क्रम में वर्कफ़्लो का एक पेज, जो पेजिनेशन एनवलप में रैप किया गया है। `results` में प्रत्येक आइटम एक `WorkflowListItem` है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "एप्लिकेशन के लिए वर्कफ़्लो संस्करणों की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WorkflowListItem"
                      }
                    }
                  }
                },
                "examples": {
                  "Two workflows": {
                    "summary": "एक डिफ़ॉल्ट KYC वर्कफ़्लो और एक ड्राफ़्ट KYC + AML वर्कफ़्लो",
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "a1b2c3d4-5678-90ab-cdef-111111111111",
                          "workflow_id": "a1b2c3d4-5678-90ab-cdef-111111111111",
                          "workflow_label": "Standard KYC",
                          "workflow_type": "kyc",
                          "is_default": true,
                          "is_archived": false,
                          "is_white_label_enabled": false,
                          "total_price": 0.15,
                          "min_price": 0.15,
                          "max_price": 0.15,
                          "features": "OCR + LIVENESS + FACE_MATCH",
                          "is_simple_workflow": true,
                          "is_editable": false,
                          "workflow_url": "https://verify.didit.me/u/_yljPOx8RWG3UAz5ZRQGVQ",
                          "max_retry_attempts": 3,
                          "retry_window_days": 7,
                          "session_expiration_time": 604800,
                          "version": 2,
                          "status": "published",
                          "has_draft": false,
                          "created_by": {
                            "name": "Alex Mateo",
                            "email": "alex@example.com",
                            "type": "user"
                          },
                          "updated_at": "2026-04-12T10:30:00Z"
                        },
                        {
                          "uuid": "b2c3d4e5-6789-01bc-defa-222222222222",
                          "workflow_id": "b2c3d4e5-6789-01bc-defa-222222222222",
                          "workflow_label": "Full Verification + AML",
                          "workflow_type": "kyc",
                          "is_default": false,
                          "is_archived": false,
                          "is_white_label_enabled": false,
                          "total_price": 0.25,
                          "min_price": 0.25,
                          "max_price": 0.25,
                          "features": "OCR + LIVENESS + FACE_MATCH + AML",
                          "is_simple_workflow": true,
                          "is_editable": true,
                          "workflow_url": "https://verify.didit.me/u/Aq3kPOx8RWG3UAz5ZRQGVQ",
                          "max_retry_attempts": 3,
                          "retry_window_days": 7,
                          "session_expiration_time": 604800,
                          "version": 1,
                          "status": "draft",
                          "has_draft": true,
                          "created_by": null,
                          "updated_at": "2026-04-15T18:05:21Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समय-सीमा समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन से संबंधित है। मुख्य भाग: `{\"detail\": \"You do not have permission to perform this action.\"}`। [Auth API](/hi/auth-api/get-credentials) के माध्यम से token को रीफ्रेश करें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें और किसी भी `Retry-After` हेडर का पालन करें।"
          },
          "500": {
            "description": "सूची बनाते समय अप्रत्याशित सर्वर त्रुटि। अनुरोध का सुरक्षित रूप से पुनः प्रयास किया जा सकता है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET 'https://verification.didit.me/v3/workflows/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Accept: application/json'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.workflows.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.workflows.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Workflows.ListAutoPaging(ctx, didit.WorkflowsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.workflows().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->workflows->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.workflows.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Workflows.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "वर्कफ़्लो बनाएं",
        "description": "एक सरल वर्कफ़्लो बनाएँ। `features` को निष्पादन क्रम में भेजें (क्रम निर्धारण नियम लागू होते हैं); डिफ़ॉल्ट रूप से `published` v1 पर सेट होता है। बॉडी केवल `SimpleWorkflowRequest` में सूचीबद्ध फ़ील्ड्स को स्वीकार करती है — किसी भी अन्य कुंजी (जिसमें `workflow_type` भी शामिल है) को 400 के साथ अस्वीकृत कर दिया जाता है। आइडेम्पोटेंट नहीं है — प्रत्येक कॉल एक नया वर्कफ़्लो बनाती है। प्रति एप्लिकेशन अधिकतम 50 वर्कफ़्लो।",
        "operationId": "create_workflow",
        "x-didit-sdk": {
          "resource": "workflows",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Workflows"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleWorkflowRequest"
              },
              "examples": {
                "Simple KYC": {
                  "summary": "ID, लाइवनेस और चेहरा मिलान का रैखिक वर्कफ़्लो",
                  "value": {
                    "workflow_label": "Standard KYC",
                    "features": [
                      {
                        "feature": "OCR",
                        "config": {
                          "duplicated_user_action": "review"
                        }
                      },
                      {
                        "feature": "LIVENESS",
                        "config": {
                          "face_liveness_method": "passive"
                        }
                      },
                      {
                        "feature": "FACE_MATCH",
                        "config": {
                          "face_match_score_decline_threshold": 40,
                          "face_match_score_review_threshold": 60
                        }
                      }
                    ]
                  }
                },
                "KYC + AML": {
                  "summary": "पहचान सत्यापन के बाद AML स्क्रीनिंग चलाएं",
                  "value": {
                    "workflow_label": "KYC with AML",
                    "features": [
                      {
                        "feature": "OCR"
                      },
                      {
                        "feature": "AML",
                        "config": {
                          "aml_score_review_threshold": 70,
                          "aml_score_approve_threshold": 30
                        }
                      }
                    ]
                  }
                },
                "Questionnaire workflow": {
                  "summary": "POST /v3/questionnaires/ के साथ बनाई गई प्रश्नावली चलाएं",
                  "value": {
                    "workflow_label": "Source of Funds",
                    "features": [
                      {
                        "feature": "QUESTIONNAIRE",
                        "config": {
                          "questionnaire_uuid": "11111111-2222-3333-4444-555555555555",
                          "review_questionnaire_manually": true
                        }
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "वर्कफ़्लो बनाया गया। रिस्पॉन्स बॉडी पूर्ण वर्कफ़्लो कॉन्फ़िगरेशन है — वही रॉ `VerificationSettings` सीरियलाइज़ेशन जो `GET /v3/workflows/{settings_uuid}/` द्वारा लौटाया जाता है (~190 फ़ील्ड: प्रत्येक सुविधा टॉगल, थ्रेशोल्ड, कार्रवाई और जनरेट किया गया `workflow_graph`), संक्षिप्त सूची आइटम नहीं। `uuid` (जो `workflow_id` के रूप में भी प्रदर्शित है) को संग्रहीत करें ताकि आप बाद के सत्र-निर्माण कॉलों में इसका संदर्भ दे सकें। ध्यान दें: `features` एक `\" + \"`-जुड़ी हुई स्ट्रिंग है और कीमतें JSON नंबर हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowDetail"
                },
                "examples": {
                  "Created (abbreviated)": {
                    "summary": "पूर्ण कॉन्फ़िगरेशन ऑब्जेक्ट के प्रमुख फ़ील्ड",
                    "value": {
                      "uuid": "c3d4e5f6-7890-12cd-ef34-333333333333",
                      "workflow_id": "c3d4e5f6-7890-12cd-ef34-333333333333",
                      "workflow_label": "Standard KYC",
                      "workflow_type": null,
                      "is_default": false,
                      "is_archived": false,
                      "total_price": 0.15,
                      "min_price": 0.15,
                      "max_price": 0.15,
                      "features": "OCR + LIVENESS + FACE_MATCH",
                      "is_simple_workflow": false,
                      "is_editable": false,
                      "workflow_url": "https://verify.didit.me/u/w9TkPOx8RWG3UAz5ZRQGVQ",
                      "workflow_graph": {
                        "start_node": "ocr",
                        "nodes": "... one node per feature plus a final status node ..."
                      },
                      "max_retry_attempts": 3,
                      "retry_window_days": 7,
                      "session_expiration_time": 604800,
                      "version": 1,
                      "status": "published",
                      "published_at": "2026-05-17T10:30:00Z",
                      "created_at": "2026-05-17T10:30:00Z",
                      "updated_at": "2026-05-17T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। सामान्य कारण: स्वीकृत व्हाइटलिस्ट के बाहर एक शीर्ष-स्तरीय कुंजी (उदा. `workflow_type`), एक अज्ञात `feature` मान, किसी सुविधा को उसकी निर्भरता से पहले रखा जाना (उदा. `OCR` से पहले `FACE_MATCH`), पहले चरण के रूप में एक पैसिव सुविधा (`AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`, `KYB_KEY_PEOPLE`) का उपयोग, एक `QUESTIONNAIRE` सुविधा जिसका `config.questionnaire_uuid` इस एप्लिकेशन के लिए मौजूद नहीं है, एक `SIGNATURE` सुविधा जो बिना किसी हस्ताक्षर योग्य दस्तावेज़ के लाइव हो जाएगी, `signature_level: \"aes\"` पर एक `SIGNATURE` सुविधा जबकि Advanced (AES) उपलब्ध नहीं है (`aes_not_available`, वर्कफ़्लो पर `signature_availability` देखें), या सीमा से बाहर का थ्रेशोल्ड। बॉडी एक DRF सत्यापन त्रुटि ऑब्जेक्ट है — कुंजियाँ फ़ील्ड नाम हैं और मान मानव-पठनीय संदेशों के ऐरे हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Advanced (AES) not available": {
                    "value": {
                      "features": {
                        "signature_level": [
                          "Node 'signature': Advanced (AES) is not available yet (aes_not_available)."
                        ]
                      }
                    }
                  },
                  "Signature step with no document": {
                    "value": {
                      "features": {
                        "non_field_errors": [
                          "Node 'signature': Add a document to sign, or let each session bring its own."
                        ]
                      }
                    }
                  },
                  "Missing feature": {
                    "value": {
                      "features": [
                        "At least one feature is required."
                      ]
                    }
                  },
                  "Unknown top-level field": {
                    "value": {
                      "workflow_type": [
                        "The v3 workflow API only accepts `workflow_label`, `is_default`, `status`, `features`, `is_white_label_enabled`, `is_desktop_allowed`, `max_retry_attempts`, `retry_window_days`, `session_expiration_time`, `face_liveness_max_attempts`, `face_match_max_attempts`."
                      ]
                    }
                  },
                  "Unknown feature": {
                    "value": {
                      "features": [
                        "Invalid feature 'FOO'. Allowed values: AGE_ESTIMATION, AML, DATABASE_VALIDATION, EMAIL_VERIFICATION, FACE_MATCH, IP_ANALYSIS, KYB_DOCUMENTS, KYB_KEY_PEOPLE, KYB_REGISTRY, LIVENESS, NFC, OCR, PHONE_VERIFICATION, PROOF_OF_ADDRESS, QUESTIONNAIRE."
                      ]
                    }
                  },
                  "Ordering": {
                    "value": {
                      "features": [
                        "Feature 'FACE_MATCH' must appear after one of: OCR."
                      ]
                    }
                  },
                  "Questionnaire not found": {
                    "value": {
                      "features": "Questionnaire '11111111-2222-3333-4444-555555555555' was not found for this application. Create the questionnaire first, then use its questionnaire_id."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समय-सीमा समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप्ड है। [Auth API](/hi/auth-api/get-credentials) के माध्यम से रीफ्रेश करें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "415": {
            "description": "असमर्थित मीडिया प्रकार। `Content-Type: application/json` सेट करें और JSON बॉडी भेजें।"
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "वर्कफ़्लो बनाते समय अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/workflows/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"workflow_label\": \"Standard KYC\",\n    \"features\": [\n      {\"feature\": \"OCR\"},\n      {\"feature\": \"LIVENESS\", \"config\": {\"face_liveness_method\": \"passive\"}},\n      {\"feature\": \"FACE_MATCH\", \"config\": {\"face_match_score_decline_threshold\": 40, \"face_match_score_review_threshold\": 60}}\n    ]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.workflows.create(\n    workflow_label=\"Standard KYC\",\n    features=[{\n        \"feature\": \"OCR\",\n        \"config\": {\"duplicated_user_action\": \"review\"},\n    }, {\n        \"feature\": \"LIVENESS\",\n        \"config\": {\"face_liveness_method\": \"passive\"},\n    }, {\n        \"feature\": \"FACE_MATCH\",\n        \"config\": {\"face_match_score_decline_threshold\": 40, \"face_match_score_review_threshold\": 60},\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.workflows.create({\n  workflow_label: \"Standard KYC\",\n  features: [{\n    feature: \"OCR\",\n    config: { duplicated_user_action: \"review\" },\n  }, {\n    feature: \"LIVENESS\",\n    config: { face_liveness_method: \"passive\" },\n  }, {\n    feature: \"FACE_MATCH\",\n    config: { face_match_score_decline_threshold: 40, face_match_score_review_threshold: 60 },\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Workflows.Create(ctx, didit.SimpleWorkflowRequest{\n\tWorkflowLabel: didit.String(\"Standard KYC\"),\n\tFeatures: []didit.SimpleWorkflowFeature{{\n\t\tFeature: \"OCR\",\n\t\tConfig:  didit.Some(map[string]any{\"duplicated_user_action\": \"review\"}),\n\t}, {\n\t\tFeature: \"LIVENESS\",\n\t\tConfig:  didit.Some(map[string]any{\"face_liveness_method\": \"passive\"}),\n\t}, {\n\t\tFeature: \"FACE_MATCH\",\n\t\tConfig:  didit.Some(map[string]any{\"face_match_score_decline_threshold\": 40, \"face_match_score_review_threshold\": 60}),\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SimpleWorkflowFeature;\nimport me.didit.types.SimpleWorkflowRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.workflows().create(SimpleWorkflowRequest.builder()\n        .workflowLabel(\"Standard KYC\")\n        .features(List.of(\n                SimpleWorkflowFeature.builder()\n                        .feature(SimpleWorkflowFeature.Feature.of(\"OCR\"))\n                        .config(Map.of(\"duplicated_user_action\", \"review\"))\n                        .build(),\n                SimpleWorkflowFeature.builder()\n                        .feature(SimpleWorkflowFeature.Feature.of(\"LIVENESS\"))\n                        .config(Map.of(\"face_liveness_method\", \"passive\"))\n                        .build(),\n                SimpleWorkflowFeature.builder()\n                        .feature(SimpleWorkflowFeature.Feature.of(\"FACE_MATCH\"))\n                        .config(Map.of(\"face_match_score_decline_threshold\", 40, \"face_match_score_review_threshold\", 60))\n                        .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->workflows->create([\n    'workflow_label' => 'Standard KYC',\n    'features' => [[\n        'feature' => 'OCR',\n        'config' => ['duplicated_user_action' => 'review'],\n    ], [\n        'feature' => 'LIVENESS',\n        'config' => ['face_liveness_method' => 'passive'],\n    ], [\n        'feature' => 'FACE_MATCH',\n        'config' => ['face_match_score_decline_threshold' => 40, 'face_match_score_review_threshold' => 60],\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.workflows.create(\n  workflow_label: \"Standard KYC\",\n  features: [{\n    feature: \"OCR\",\n    config: { duplicated_user_action: \"review\" },\n  }, {\n    feature: \"LIVENESS\",\n    config: { face_liveness_method: \"passive\" },\n  }, {\n    feature: \"FACE_MATCH\",\n    config: { face_match_score_decline_threshold: 40, face_match_score_review_threshold: 60 },\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Workflows.CreateAsync(new SimpleWorkflowRequest\n{\n    WorkflowLabel = \"Standard KYC\",\n    Features = new SimpleWorkflowFeature[]\n    {\n        new()\n        {\n            Feature = \"OCR\",\n            Config = new Dictionary<string, object> { [\"duplicated_user_action\"] = \"review\" },\n        },\n        new()\n        {\n            Feature = \"LIVENESS\",\n            Config = new Dictionary<string, object> { [\"face_liveness_method\"] = \"passive\" },\n        },\n        new()\n        {\n            Feature = \"FACE_MATCH\",\n            Config = new Dictionary<string, object> { [\"face_match_score_decline_threshold\"] = 40, [\"face_match_score_review_threshold\"] = 60 },\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/workflows/{settings_uuid}/": {
      "get": {
        "summary": "वर्कफ़्लो प्राप्त करें",
        "description": "`settings_uuid` द्वारा एक वर्कफ़्लो संस्करण के लिए पूर्ण कॉन्फ़िगरेशन प्राप्त करें: फ़ीचर टॉगल, थ्रेशोल्ड, अनुमत दस्तावेज़, ग्राफ़, पुनः प्रयास नीति, कॉलबैक और मूल्य निर्धारण।",
        "operationId": "get_workflow",
        "x-didit-sdk": {
          "resource": "workflows",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "settings_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वर्कफ़्लो का प्रति-संस्करण UUID (सूची endpoint द्वारा लौटाया गया `uuid` मान)। वर्कफ़्लो के प्रत्येक संस्करण का अपना `settings_uuid` होता है।"
          }
        ],
        "responses": {
          "200": {
            "description": "पूर्ण वर्कफ़्लो कॉन्फ़िगरेशन। इसका स्वरूप रॉ `VerificationSettings` सीरियलाइज़ेशन है (~190 फ़ील्ड: प्रत्येक सुविधा टॉगल, थ्रेशोल्ड, चेतावनी कार्रवाई, अनुमत-दस्तावेज़ कॉन्फ़िग, `workflow_graph`, पुनः प्रयास नीति, कॉलबैक और मूल्य निर्धारण)। नीचे दिया गया उदाहरण संक्षिप्त है। नोट: `features` एक `\" + \"` से जुड़ी हुई स्ट्रिंग है (उदा. `\"OCR + LIVENESS\"`), कीमतें JSON संख्याएँ हैं, और `is_editable` केवल `draft` संस्करणों के लिए `true` है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowDetail"
                },
                "examples": {
                  "KYC workflow with face match (abbreviated)": {
                    "value": {
                      "uuid": "a1b2c3d4-5678-90ab-cdef-111111111111",
                      "workflow_id": "a1b2c3d4-5678-90ab-cdef-111111111111",
                      "workflow_label": "Standard KYC",
                      "workflow_type": "kyc",
                      "is_default": true,
                      "is_archived": false,
                      "is_liveness_enabled": true,
                      "face_liveness_method": "passive",
                      "face_liveness_score_decline_threshold": 50,
                      "face_liveness_score_review_threshold": 70,
                      "is_face_match_enabled": true,
                      "face_match_score_decline_threshold": 40,
                      "face_match_score_review_threshold": 60,
                      "is_aml_enabled": false,
                      "is_phone_verification_enabled": false,
                      "is_email_verification_enabled": false,
                      "is_database_validation_enabled": false,
                      "is_ip_analysis_enabled": false,
                      "is_nfc_enabled": false,
                      "duplicated_user_action": "no_action",
                      "documents_allowed": {
                        "ESP": {
                          "P": {
                            "sides": 1,
                            "enabled": 1,
                            "subtypes": [
                              "EPASSPORT",
                              "PASSPORT_GENERIC"
                            ],
                            "preferred_characters": "latin",
                            "expiration_check_mode": "strict"
                          }
                        }
                      },
                      "max_retry_attempts": 3,
                      "retry_window_days": 7,
                      "session_expiration_time": 604800,
                      "version": 2,
                      "status": "published",
                      "published_at": "2026-04-12T10:30:00Z",
                      "is_simple_workflow": false,
                      "is_editable": false,
                      "workflow_url": "https://verify.didit.me/u/_yljPOx8RWG3UAz5ZRQGVQ",
                      "total_price": 0.15,
                      "min_price": 0.15,
                      "max_price": 0.15,
                      "features": "OCR + LIVENESS + FACE_MATCH",
                      "created_at": "2025-01-15T10:30:00Z",
                      "updated_at": "2026-04-12T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध है, विकृत है, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `settings_uuid` वाला कोई वर्कफ़्लो मौजूद नहीं है। या तो UUID गलत है या यह किसी अन्य एप्लिकेशन से संबंधित है — Didit क्रॉस-एप्लिकेशन रिकॉर्ड्स के अस्तित्व को लीक होने से बचाने के लिए जानबूझकर इन दोनों मामलों में अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET 'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.workflows.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.workflows.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Workflows.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.workflows().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->workflows->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.workflows.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Workflows.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "summary": "वर्कफ़्लो अपडेट करें",
        "description": "वर्कफ़्लो अपडेट करें। वर्ज़निंग आपके द्वारा भेजे गए `status` फ़ील्ड और वर्ज़न की वर्तमान स्थिति पर निर्भर करती है: (1) **published** वर्ज़न पर कोई `status` नहीं → प्रकाशित वर्ज़न उसी स्थान पर अपडेट किया जाता है (समान `uuid`, समान `version`); (2) **draft** पर कोई `status` नहीं → ड्राफ़्ट अपडेट किया जाता है और तुरंत प्रकाशित किया जाता है; (3) **published** वर्ज़न पर `status: \"published\"` → समान `workflow_id` के तहत एक नया प्रकाशित वर्ज़न बनाया जाता है (नया `uuid`, `version` + 1) और वापस किया जाता है, और समूह में मौजूद कोई भी मौजूदा ड्राफ़्ट हटा दिया जाता है; (4) `status: \"draft\"` ड्राफ़्ट को ड्राफ़्ट के रूप में रखता है (ऑटोसेव) लेकिन प्रकाशित वर्ज़न पर 400 के साथ अस्वीकार कर दिया जाता है (`\"Cannot revert a published version to draft.\"`). बॉडी create की तरह ही सख्त फ़ील्ड श्वेतसूची स्वीकार करती है — अज्ञात कुंजियों को 400 के साथ अस्वीकार कर दिया जाता है।",
        "operationId": "update_workflow",
        "x-didit-sdk": {
          "resource": "workflows",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "settings_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "अपडेट करने के लिए वर्कफ़्लो का प्रति-संस्करण UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleWorkflowUpdateRequest"
              },
              "examples": {
                "Replace features": {
                  "summary": "इच्छित सुविधाओं का पूरा क्रम भेजें",
                  "value": {
                    "features": [
                      {
                        "feature": "OCR"
                      },
                      {
                        "feature": "AML"
                      }
                    ]
                  }
                },
                "Rename": {
                  "summary": "वर्कफ़्लो का नाम बदलें",
                  "value": {
                    "workflow_label": "Premium KYC"
                  }
                },
                "Set as default": {
                  "summary": "इस वर्कफ़्लो को एप्लिकेशन का डिफ़ॉल्ट बनाएं",
                  "value": {
                    "is_default": true
                  }
                },
                "Update config": {
                  "summary": "सुविधा कॉन्फ़िगरेशन बदलें",
                  "value": {
                    "features": [
                      {
                        "feature": "OCR"
                      },
                      {
                        "feature": "LIVENESS",
                        "config": {
                          "face_liveness_method": "passive"
                        }
                      }
                    ]
                  }
                },
                "Publish a draft": {
                  "summary": "ड्राफ़्ट को प्रकाशित स्थिति में प्रमोट करें",
                  "value": {
                    "status": "published"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "वर्कफ़्लो अपडेट किया गया। बॉडी परिणामी संस्करण का FULL कॉन्फ़िगरेशन है (`GET /v3/workflows/{settings_uuid}/` के समान कच्ची `VerificationSettings` संरचना)। जब अपडेट ने एक नया संस्करण बनाया (`status: \"published\"` प्रकाशित पंक्ति पर भेजा गया) तो लौटाए गए `uuid` और `version` आपके द्वारा पैच किए गए संस्करणों से भिन्न होते हैं — बाद के कॉल के लिए लौटाए गए `uuid` का उपयोग करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkflowDetail"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — स्वीकृत व्हाइटलिस्ट के बाहर एक शीर्ष-स्तरीय कुंजी, एक अज्ञात सुविधा, अमान्य क्रम, सीमा से बाहर थ्रेशोल्ड, गैर-मौजूद प्रश्नावली का संदर्भ देना, एक `SIGNATURE` सुविधा जो हस्ताक्षर करने के लिए किसी दस्तावेज़ के बिना लाइव हो जाएगी, `signature_level: \"aes\"` पर एक नई `SIGNATURE` सुविधा जबकि Advanced (AES) उपलब्ध नहीं है (`aes_not_available`, वर्कफ़्लो पर `signature_availability` देखें; एक चरण जो पहले से ही `aes` संग्रहीत करता है वह इसे रखता है), या प्रकाशित संस्करण के लिए भेजा गया `status: \"draft\"` (`\"Cannot revert a published version to draft.\"`). रिस्पॉन्स बॉडी फ़ील्ड नाम द्वारा कीड की गई एक DRF सत्यापन त्रुटि है।"
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध या अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `settings_uuid` वाला कोई वर्कफ़्लो मौजूद नहीं है।"
          },
          "415": {
            "description": "असमर्थित मीडिया प्रकार। `Content-Type: application/json` सेट करें।"
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"workflow_label\": \"Premium KYC\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.workflows.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    features=[{\n        \"feature\": \"OCR\",\n    }, {\n        \"feature\": \"AML\",\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.workflows.update(\"11111111-2222-3333-4444-555555555555\", {\n  features: [{\n    feature: \"OCR\",\n  }, {\n    feature: \"AML\",\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Workflows.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SimpleWorkflowUpdateRequest{\n\tFeatures: didit.Some([]didit.SimpleWorkflowFeature{{\n\t\tFeature: \"OCR\",\n\t}, {\n\t\tFeature: \"AML\",\n\t}}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SimpleWorkflowFeature;\nimport me.didit.types.SimpleWorkflowUpdateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.workflows().update(\"11111111-2222-3333-4444-555555555555\", SimpleWorkflowUpdateRequest.builder()\n        .features(List.of(\n                SimpleWorkflowFeature.builder()\n                        .feature(SimpleWorkflowFeature.Feature.of(\"OCR\"))\n                        .build(),\n                SimpleWorkflowFeature.builder()\n                        .feature(SimpleWorkflowFeature.Feature.of(\"AML\"))\n                        .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->workflows->update('11111111-2222-3333-4444-555555555555', [\n    'features' => [[\n        'feature' => 'OCR',\n    ], [\n        'feature' => 'AML',\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.workflows.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  features: [{\n    feature: \"OCR\",\n  }, {\n    feature: \"AML\",\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Workflows.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new SimpleWorkflowUpdateRequest\n{\n    Features = new SimpleWorkflowFeature[]\n    {\n        new()\n        {\n            Feature = \"OCR\",\n        },\n        new()\n        {\n            Feature = \"AML\",\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "वर्कफ़्लो हटाएं",
        "description": "एक वर्कफ़्लो संस्करण को स्थायी रूप से हटाएं (पूर्ववत नहीं किया जा सकता)। मौजूदा सत्र अपने सत्यापन परिणाम बनाए रखते हैं लेकिन उनका वर्कफ़्लो संदर्भ साफ़ कर दिया जाता है; उसी `workflow_id` समूह के अन्य संस्करण नहीं हटाए जाते हैं।",
        "operationId": "delete_workflow",
        "x-didit-sdk": {
          "resource": "workflows",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Workflows"
        ],
        "parameters": [
          {
            "name": "settings_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "हटाने के लिए वर्कफ़्लो का प्रति-संस्करण UUID।"
          }
        ],
        "responses": {
          "204": {
            "description": "वर्कफ़्लो हटा दिया गया। रिस्पॉन्स बॉडी खाली है।"
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध या अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `settings_uuid` वाला कोई वर्कफ़्लो मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/workflows/a1b2c3d4-5678-90ab-cdef-111111111111/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.workflows.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.workflows.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Workflows.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.workflows().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->workflows->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.workflows.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Workflows.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ]
      }
    },
    "/v3/questionnaires/": {
      "get": {
        "summary": "प्रश्नावलियाँ सूचीबद्ध करें",
        "description": "अपनी प्रश्नावलियों को सबसे नए पहले क्रम में, limit/offset पेजिनेशन एन्वेलप (`{count, next, previous, results}`, डिफ़ॉल्ट पेज आकार 50) में सूचीबद्ध करें। प्रत्येक पंक्ति एक संस्करण है; `questionnaire_group_id` नवीनतम `published` संस्करण पर रीज़ॉल्व की गई स्थिर समूह ID है।",
        "operationId": "list_questionnaires",
        "x-didit-sdk": {
          "resource": "questionnaires",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Questionnaires"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50
            },
            "description": "पेज का आकार (प्रति पेज प्रश्नावलियों की संख्या)।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0
            },
            "description": "पहली लौटाई गई प्रश्नावली से पहले छोड़ी जाने वाली पंक्तियों की संख्या।"
          }
        ],
        "responses": {
          "200": {
            "description": "`created_at` के अवरोही क्रम में व्यवस्थित प्रश्नावलियों का एक पेज, जो पेजिनेशन एनवलप में रैप किया गया है। `results` में प्रत्येक आइटम एक `QuestionnaireListItem` है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "एप्लिकेशन के लिए प्रश्नावली संस्करणों की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/QuestionnaireListItem"
                      }
                    }
                  }
                },
                "examples": {
                  "One questionnaire": {
                    "summary": "एक सरल द्विभाषी प्रश्नावली",
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "11111111-2222-3333-4444-555555555555",
                          "title": "KYC Questionnaire",
                          "description": "Additional verification questions",
                          "languages": [
                            "en",
                            "es"
                          ],
                          "default_language": "en",
                          "is_active": true,
                          "is_simple_questionnaire": true,
                          "created_at": "2026-04-23T09:55:00Z",
                          "updated_at": "2026-04-23T10:00:00Z",
                          "question_types": [
                            "SHORT_TEXT",
                            "MULTIPLE_CHOICE",
                            "FILE_UPLOAD"
                          ],
                          "workflow_names": [],
                          "questionnaire_group_id": "11111111-2222-3333-4444-555555555555",
                          "version": 1,
                          "status": "published",
                          "published_at": "2026-04-23T10:00:00Z",
                          "is_editable": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "सूची बनाते समय अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET 'https://verification.didit.me/v3/questionnaires/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.questionnaires.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.questionnaires.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Questionnaires.ListAutoPaging(ctx, didit.QuestionnairesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.questionnaires().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->questionnaires->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.questionnaires.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Questionnaires.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "प्रश्नावली बनाएं",
        "description": "एक सरल रैखिक प्रश्नावली बनाएँ। `form_elements` को प्रदर्शन क्रम में भेजें; ब्रांचिंग और दोहराए जाने वाले समूहों के लिए Console की आवश्यकता होती है। डिफ़ॉल्ट रूप से `published` v1 पर सेट होता है।",
        "operationId": "create_questionnaire",
        "x-didit-sdk": {
          "resource": "questionnaires",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Questionnaires"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleQuestionnaireRequest"
              },
              "examples": {
                "Simple": {
                  "summary": "बुनियादी प्रश्नावली",
                  "value": {
                    "title": "Customer Onboarding",
                    "description": "Additional information needed for verification",
                    "default_language": "en",
                    "languages": [
                      "en"
                    ],
                    "is_active": true,
                    "form_elements": [
                      {
                        "id": "occupation",
                        "element_type": "short_text",
                        "label": {
                          "en": "What is your occupation?"
                        },
                        "is_required": true,
                        "placeholder": {
                          "en": "Software engineer"
                        }
                      },
                      {
                        "id": "source_of_funds",
                        "element_type": "multiple_choice",
                        "label": {
                          "en": "Source of funds"
                        },
                        "is_required": true,
                        "options": [
                          {
                            "value": "employment",
                            "label": {
                              "en": "Employment"
                            }
                          },
                          {
                            "value": "business",
                            "label": {
                              "en": "Business"
                            }
                          },
                          {
                            "value": "investments",
                            "label": {
                              "en": "Investments"
                            }
                          },
                          {
                            "value": "other",
                            "label": {
                              "en": "Other"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "प्रश्नावली बनाई गई। रिस्पॉन्स में `questionnaire_id` शामिल है — वर्कफ़्लो या भविष्य के अपडेट/डिलीट कॉल से इस प्रश्नावली को संदर्भित करने के लिए इसे संग्रहीत करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuestionnaireDetail"
                },
                "examples": {
                  "Created": {
                    "value": {
                      "questionnaire_id": "11111111-2222-3333-4444-555555555555",
                      "title": "Customer Onboarding",
                      "description": "Additional information needed for verification",
                      "languages": [
                        "en"
                      ],
                      "default_language": "en",
                      "is_active": true,
                      "is_simple_questionnaire": true,
                      "graph": {
                        "start_node": "occupation",
                        "nodes": {
                          "occupation": {
                            "element_type": "SHORT_TEXT",
                            "is_required": true,
                            "title": {
                              "en": "What is your occupation?"
                            },
                            "next": "source_of_funds"
                          },
                          "source_of_funds": {
                            "element_type": "MULTIPLE_CHOICE",
                            "is_required": true,
                            "title": {
                              "en": "Source of funds"
                            },
                            "choices": [
                              {
                                "value": "employment",
                                "label": {
                                  "en": "Employment"
                                }
                              },
                              {
                                "value": "business",
                                "label": {
                                  "en": "Business"
                                }
                              }
                            ],
                            "next": null
                          }
                        }
                      },
                      "sections": [],
                      "questionnaire_group_id": "11111111-2222-3333-4444-555555555555",
                      "version": 1,
                      "status": "published",
                      "published_at": "2026-04-23T10:00:00Z",
                      "is_editable": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। सामान्य कारण: एक अज्ञात `element_type`, अनुवाद योग्य फ़ील्ड में `languages` में से किसी एक के लिए अनुवाद का न होना, `languages` में `en` का न होना, `default_language` का `languages` में न होना, बिना `label` का विकल्प, ऐसा प्रश्न जिसमें `branches`/`required_if`/`repeatable_config` हों (इस endpoint द्वारा समर्थित नहीं), या `form_elements` के बजाय रॉ `graph` भेजना। बॉडी फ़ील्ड नाम के अनुसार व्यवस्थित एक DRF सत्यापन त्रुटि है।",
            "content": {
              "application/json": {
                "examples": {
                  "Graph not accepted": {
                    "value": {
                      "graph": "The v3 questionnaire API only accepts simple `form_elements`, not `graph`."
                    }
                  },
                  "Missing label": {
                    "value": {
                      "form_elements": [
                        {
                          "label": [
                            "This field is required."
                          ]
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "415": {
            "description": "असमर्थित मीडिया प्रकार। `Content-Type: application/json` सेट करें और JSON बॉडी भेजें।"
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "प्रश्नावली बनाते समय अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X POST 'https://verification.didit.me/v3/questionnaires/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"title\": \"Customer Onboarding\",\n    \"default_language\": \"en\",\n    \"languages\": [\"en\"],\n    \"form_elements\": [\n      {\n        \"id\": \"occupation\",\n        \"element_type\": \"short_text\",\n        \"label\": {\"en\": \"What is your occupation?\"},\n        \"is_required\": true\n      }\n    ]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.questionnaires.create(\n    title=\"Customer Onboarding\",\n    description=\"Additional information needed for verification\",\n    languages=[\"en\"],\n    default_language=\"en\",\n    is_active=True,\n    form_elements=[{\n        \"id\": \"occupation\",\n        \"element_type\": \"short_text\",\n        \"label\": {\"en\": \"What is your occupation?\"},\n        \"placeholder\": {\"en\": \"Software engineer\"},\n        \"is_required\": True,\n    }, {\n        \"id\": \"source_of_funds\",\n        \"element_type\": \"multiple_choice\",\n        \"label\": {\"en\": \"Source of funds\"},\n        \"is_required\": True,\n        \"options\": [{\n            \"value\": \"employment\",\n            \"label\": {\"en\": \"Employment\"},\n        }, {\n            \"value\": \"business\",\n            \"label\": {\"en\": \"Business\"},\n        }, {\n            \"value\": \"investments\",\n            \"label\": {\"en\": \"Investments\"},\n        }, {\n            \"value\": \"other\",\n            \"label\": {\"en\": \"Other\"},\n        }],\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.questionnaires.create({\n  title: \"Customer Onboarding\",\n  description: \"Additional information needed for verification\",\n  languages: [\"en\"],\n  default_language: \"en\",\n  is_active: true,\n  form_elements: [{\n    id: \"occupation\",\n    element_type: \"short_text\",\n    label: { en: \"What is your occupation?\" },\n    placeholder: { en: \"Software engineer\" },\n    is_required: true,\n  }, {\n    id: \"source_of_funds\",\n    element_type: \"multiple_choice\",\n    label: { en: \"Source of funds\" },\n    is_required: true,\n    options: [{\n      value: \"employment\",\n      label: { en: \"Employment\" },\n    }, {\n      value: \"business\",\n      label: { en: \"Business\" },\n    }, {\n      value: \"investments\",\n      label: { en: \"Investments\" },\n    }, {\n      value: \"other\",\n      label: { en: \"Other\" },\n    }],\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Questionnaires.Create(ctx, didit.SimpleQuestionnaireRequest{\n\tTitle:           \"Customer Onboarding\",\n\tDescription:     didit.String(\"Additional information needed for verification\"),\n\tLanguages:       []string{\"en\"},\n\tDefaultLanguage: didit.String(\"en\"),\n\tIsActive:        didit.Bool(true),\n\tFormElements: []didit.SimpleQuestionnaireElement{{\n\t\tID:          didit.String(\"occupation\"),\n\t\tElementType: \"short_text\",\n\t\tLabel:       map[string]string{\"en\": \"What is your occupation?\"},\n\t\tPlaceholder: didit.Some(map[string]string{\"en\": \"Software engineer\"}),\n\t\tIsRequired:  didit.Bool(true),\n\t}, {\n\t\tID:          didit.String(\"source_of_funds\"),\n\t\tElementType: \"multiple_choice\",\n\t\tLabel:       map[string]string{\"en\": \"Source of funds\"},\n\t\tIsRequired:  didit.Bool(true),\n\t\tOptions: didit.Some([]didit.SimpleQuestionnaireElementOptions{{\n\t\t\tValue: didit.String(\"employment\"),\n\t\t\tLabel: map[string]string{\"en\": \"Employment\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"business\"),\n\t\t\tLabel: map[string]string{\"en\": \"Business\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"investments\"),\n\t\t\tLabel: map[string]string{\"en\": \"Investments\"},\n\t\t}, {\n\t\t\tValue: didit.String(\"other\"),\n\t\t\tLabel: map[string]string{\"en\": \"Other\"},\n\t\t}}),\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SimpleQuestionnaireElement;\nimport me.didit.types.SimpleQuestionnaireRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.questionnaires().create(SimpleQuestionnaireRequest.builder()\n        .title(\"Customer Onboarding\")\n        .description(\"Additional information needed for verification\")\n        .languages(List.of(\"en\"))\n        .defaultLanguage(\"en\")\n        .isActive(true)\n        .formElements(List.of(\n                SimpleQuestionnaireElement.builder()\n                        .id(\"occupation\")\n                        .elementType(SimpleQuestionnaireElement.ElementType.of(\"short_text\"))\n                        .label(Map.of(\"en\", \"What is your occupation?\"))\n                        .placeholder(Map.of(\"en\", \"Software engineer\"))\n                        .isRequired(true)\n                        .build(),\n                SimpleQuestionnaireElement.builder()\n                        .id(\"source_of_funds\")\n                        .elementType(SimpleQuestionnaireElement.ElementType.of(\"multiple_choice\"))\n                        .label(Map.of(\"en\", \"Source of funds\"))\n                        .isRequired(true)\n                        .options(List.of(\n                                SimpleQuestionnaireElement.Options.builder()\n                                        .value(\"employment\")\n                                        .label(Map.of(\"en\", \"Employment\"))\n                                        .build(),\n                                SimpleQuestionnaireElement.Options.builder()\n                                        .value(\"business\")\n                                        .label(Map.of(\"en\", \"Business\"))\n                                        .build(),\n                                SimpleQuestionnaireElement.Options.builder()\n                                        .value(\"investments\")\n                                        .label(Map.of(\"en\", \"Investments\"))\n                                        .build(),\n                                SimpleQuestionnaireElement.Options.builder()\n                                        .value(\"other\")\n                                        .label(Map.of(\"en\", \"Other\"))\n                                        .build()))\n                        .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->questionnaires->create([\n    'title' => 'Customer Onboarding',\n    'description' => 'Additional information needed for verification',\n    'languages' => ['en'],\n    'default_language' => 'en',\n    'is_active' => true,\n    'form_elements' => [[\n        'id' => 'occupation',\n        'element_type' => 'short_text',\n        'label' => ['en' => 'What is your occupation?'],\n        'placeholder' => ['en' => 'Software engineer'],\n        'is_required' => true,\n    ], [\n        'id' => 'source_of_funds',\n        'element_type' => 'multiple_choice',\n        'label' => ['en' => 'Source of funds'],\n        'is_required' => true,\n        'options' => [[\n            'value' => 'employment',\n            'label' => ['en' => 'Employment'],\n        ], [\n            'value' => 'business',\n            'label' => ['en' => 'Business'],\n        ], [\n            'value' => 'investments',\n            'label' => ['en' => 'Investments'],\n        ], [\n            'value' => 'other',\n            'label' => ['en' => 'Other'],\n        ]],\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.questionnaires.create(\n  title: \"Customer Onboarding\",\n  description: \"Additional information needed for verification\",\n  languages: [\"en\"],\n  default_language: \"en\",\n  is_active: true,\n  form_elements: [{\n    id: \"occupation\",\n    element_type: \"short_text\",\n    label: { en: \"What is your occupation?\" },\n    placeholder: { en: \"Software engineer\" },\n    is_required: true,\n  }, {\n    id: \"source_of_funds\",\n    element_type: \"multiple_choice\",\n    label: { en: \"Source of funds\" },\n    is_required: true,\n    options: [{\n      value: \"employment\",\n      label: { en: \"Employment\" },\n    }, {\n      value: \"business\",\n      label: { en: \"Business\" },\n    }, {\n      value: \"investments\",\n      label: { en: \"Investments\" },\n    }, {\n      value: \"other\",\n      label: { en: \"Other\" },\n    }],\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Questionnaires.CreateAsync(new SimpleQuestionnaireRequest\n{\n    Title = \"Customer Onboarding\",\n    Description = \"Additional information needed for verification\",\n    Languages = new string[] { \"en\" },\n    DefaultLanguage = \"en\",\n    IsActive = true,\n    FormElements = new SimpleQuestionnaireElement[]\n    {\n        new()\n        {\n            Id = \"occupation\",\n            ElementType = \"short_text\",\n            Label = new Dictionary<string, string> { [\"en\"] = \"What is your occupation?\" },\n            Placeholder = new Dictionary<string, string> { [\"en\"] = \"Software engineer\" },\n            IsRequired = true,\n        },\n        new()\n        {\n            Id = \"source_of_funds\",\n            ElementType = \"multiple_choice\",\n            Label = new Dictionary<string, string> { [\"en\"] = \"Source of funds\" },\n            IsRequired = true,\n            Options = new SimpleQuestionnaireElementOptions[]\n            {\n                new()\n                {\n                    Value = \"employment\",\n                    Label = new Dictionary<string, string> { [\"en\"] = \"Employment\" },\n                },\n                new()\n                {\n                    Value = \"business\",\n                    Label = new Dictionary<string, string> { [\"en\"] = \"Business\" },\n                },\n                new()\n                {\n                    Value = \"investments\",\n                    Label = new Dictionary<string, string> { [\"en\"] = \"Investments\" },\n                },\n                new()\n                {\n                    Value = \"other\",\n                    Label = new Dictionary<string, string> { [\"en\"] = \"Other\" },\n                },\n            },\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/questionnaires/{questionnaire_uuid}/": {
      "get": {
        "summary": "प्रश्नावली प्राप्त करें",
        "description": "`questionnaire_uuid` द्वारा एक संस्करण के लिए पूर्ण प्रश्नावली विवरण प्राप्त करें: शीर्षक, `languages`, कैनोनिकल `graph`, व्युत्पन्न `sections`, और संस्करण मेटाडेटा।",
        "operationId": "get_questionnaire",
        "x-didit-sdk": {
          "resource": "questionnaires",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Questionnaires"
        ],
        "parameters": [
          {
            "name": "questionnaire_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "प्रश्नावली का प्रति-संस्करण UUID (सूची endpoint द्वारा लौटाया गया `uuid` मान, विवरण endpoints पर `questionnaire_id` के रूप में भी लौटाया जाता है)।"
          }
        ],
        "responses": {
          "200": {
            "description": "कैनोनिकल `graph`, व्युत्पन्न `sections` दृश्य, संस्करण मेटाडेटा और `is_editable` सहित पूर्ण प्रश्नावली विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuestionnaireDetail"
                },
                "examples": {
                  "Published questionnaire": {
                    "value": {
                      "questionnaire_id": "11111111-2222-3333-4444-555555555555",
                      "title": "Customer Onboarding",
                      "description": "Additional information needed for verification",
                      "languages": [
                        "en"
                      ],
                      "default_language": "en",
                      "is_active": true,
                      "is_simple_questionnaire": true,
                      "graph": {
                        "start_node": "occupation",
                        "nodes": {
                          "occupation": {
                            "element_type": "SHORT_TEXT",
                            "is_required": true,
                            "title": {
                              "en": "What is your occupation?"
                            },
                            "next": "source_of_funds"
                          },
                          "source_of_funds": {
                            "element_type": "MULTIPLE_CHOICE",
                            "is_required": true,
                            "title": {
                              "en": "Source of funds"
                            },
                            "choices": [
                              {
                                "value": "employment",
                                "label": {
                                  "en": "Employment"
                                }
                              },
                              {
                                "value": "business",
                                "label": {
                                  "en": "Business"
                                }
                              }
                            ],
                            "next": null
                          }
                        }
                      },
                      "sections": [
                        {
                          "title": {},
                          "description": {},
                          "items": [
                            {
                              "uuid": "11111111-2222-3333-4444-666666666666",
                              "value": "occupation",
                              "element_type": "SHORT_TEXT",
                              "is_required": true,
                              "title": {
                                "en": "What is your occupation?"
                              }
                            }
                          ]
                        }
                      ],
                      "questionnaire_group_id": "11111111-2222-3333-4444-555555555555",
                      "version": 1,
                      "status": "published",
                      "published_at": "2026-04-23T10:00:00Z",
                      "is_editable": false
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `questionnaire_uuid` वाली कोई प्रश्नावली मौजूद नहीं है। या तो UUID गलत है या यह किसी अन्य एप्लिकेशन से संबंधित है — API जानबूझकर इन दोनों मामलों में अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X GET 'https://verification.didit.me/v3/questionnaires/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.questionnaires.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.questionnaires.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Questionnaires.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.questionnaires().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->questionnaires->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.questionnaires.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Questionnaires.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "summary": "प्रश्नावली अपडेट करें",
        "description": "प्रश्नावली अपडेट करें। वर्ज़निंग आपके द्वारा भेजे गए `status` फ़ील्ड और वर्ज़न की वर्तमान स्थिति पर निर्भर करती है: (1) **published** वर्ज़न पर कोई `status` नहीं → प्रकाशित वर्ज़न उसी स्थान पर अपडेट किया जाता है (समान `questionnaire_id`, समान `version`); (2) **draft** पर कोई `status` नहीं → ड्राफ़्ट अपडेट किया जाता है और तुरंत प्रकाशित किया जाता है; (3) **published** वर्ज़न पर `status: \"published\"` → समान `questionnaire_group_id` के तहत एक नया प्रकाशित वर्ज़न बनाया जाता है (नया `questionnaire_id`, `version` + 1) और वापस किया जाता है, और समूह में मौजूद कोई भी मौजूदा ड्राफ़्ट हटा दिया जाता है; (4) `status: \"draft\"` ड्राफ़्ट को ड्राफ़्ट के रूप में रखता है (ऑटोसेव) लेकिन प्रकाशित वर्ज़न पर 400 के साथ अस्वीकार कर दिया जाता है (`\"Cannot revert a published version to draft.\"`)|",
        "operationId": "update_questionnaire",
        "x-didit-sdk": {
          "resource": "questionnaires",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Questionnaires"
        ],
        "parameters": [
          {
            "name": "questionnaire_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "अपडेट करने के लिए प्रश्नावली का प्रति-संस्करण UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SimpleQuestionnaireUpdateRequest"
              },
              "examples": {
                "Rename": {
                  "summary": "प्रश्नावली का नाम बदलें",
                  "value": {
                    "title": "Updated Customer Onboarding"
                  }
                },
                "Replace questions": {
                  "summary": "पूरी लीनियर प्रश्न सूची को बदलें",
                  "value": {
                    "form_elements": [
                      {
                        "id": "occupation",
                        "element_type": "short_text",
                        "label": {
                          "en": "What is your occupation?"
                        },
                        "is_required": true
                      },
                      {
                        "id": "source_of_funds",
                        "element_type": "multiple_choice",
                        "label": {
                          "en": "Source of funds"
                        },
                        "options": [
                          {
                            "value": "employment",
                            "label": {
                              "en": "Employment"
                            }
                          },
                          {
                            "value": "business",
                            "label": {
                              "en": "Business"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "प्रश्नावली अपडेट की गई। body परिणामी संस्करण की नवीनतम स्थिति है — इन-प्लेस अपडेट किया गया संस्करण, या नया बनाया गया प्रकाशित संस्करण जब आपने प्रकाशित पंक्ति पर `status: \"published\"` भेजा था (उस स्थिति में `questionnaire_id` और `version` आपके द्वारा पैच किए गए संस्करणों से भिन्न होते हैं)। रिस्पॉन्स में `questionnaire_id` प्रति-संस्करण UUID है; यदि आपको स्थिर समूह पहचानकर्ता की आवश्यकता है तो `questionnaire_group_id` का उपयोग करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuestionnaireDetail"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — अज्ञात `element_type`, अनुपलब्ध अनुवाद, असमर्थित ब्रांचिंग/सशर्त फ़ील्ड, `languages` में `en` का न होना, `default_language` का `languages` में न होना, बिना लेबल वाला विकल्प, रॉ `graph` भेजना, या किसी प्रकाशित वर्शन पर `status: \"draft\"` होना (`\"Cannot revert a published version to draft.\"` )। रिस्पॉन्स बॉडी फ़ील्ड नाम के अनुसार व्यवस्थित DRF सत्यापन त्रुटि है।"
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध या अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `questionnaire_uuid` वाली कोई प्रश्नावली मौजूद नहीं है।"
          },
          "415": {
            "description": "असमर्थित मीडिया प्रकार। `Content-Type: application/json` सेट करें।"
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/questionnaires/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"title\": \"Updated Customer Onboarding\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.questionnaires.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    title=\"Updated Customer Onboarding\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.questionnaires.update(\"11111111-2222-3333-4444-555555555555\", {\n  title: \"Updated Customer Onboarding\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Questionnaires.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SimpleQuestionnaireUpdateRequest{\n\tTitle: didit.String(\"Updated Customer Onboarding\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SimpleQuestionnaireUpdateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.questionnaires().update(\"11111111-2222-3333-4444-555555555555\", SimpleQuestionnaireUpdateRequest.builder()\n        .title(\"Updated Customer Onboarding\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->questionnaires->update('11111111-2222-3333-4444-555555555555', [\n    'title' => 'Updated Customer Onboarding',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.questionnaires.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  title: \"Updated Customer Onboarding\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Questionnaires.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new SimpleQuestionnaireUpdateRequest\n{\n    Title = \"Updated Customer Onboarding\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "प्रश्नावली हटाएं",
        "description": "एक प्रश्नावली संस्करण को स्थायी रूप से हटाएं (पूर्ववत नहीं किया जा सकता)। इस संस्करण से जुड़े संग्रहीत प्रश्नावली रिस्पॉन्स इसके साथ हटा दिए जाते हैं, और इसे संदर्भित करने वाले सत्र लिंक खो देते हैं; उसी समूह के अन्य संस्करण नहीं हटाए जाते हैं। इसे संदर्भित करने वाले वर्कफ़्लो चलते रहते हैं लेकिन प्रश्नावली चरण अब इसे लोड नहीं कर सकता।",
        "operationId": "delete_questionnaire",
        "x-didit-sdk": {
          "resource": "questionnaires",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Questionnaires"
        ],
        "parameters": [
          {
            "name": "questionnaire_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "हटाने के लिए प्रश्नावली का प्रति-संस्करण UUID।"
          }
        ],
        "responses": {
          "204": {
            "description": "प्रश्नावली हटाई गई। रिस्पॉन्स का मुख्य भाग खाली है।"
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध या अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "प्रमाणित एप्लिकेशन के लिए इस `questionnaire_uuid` वाली कोई प्रश्नावली मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          },
          "500": {
            "description": "अप्रत्याशित सर्वर त्रुटि। पुनः प्रयास करना सुरक्षित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/questionnaires/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.questionnaires.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.questionnaires.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Questionnaires.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.questionnaires().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->questionnaires->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.questionnaires.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Questionnaires.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ]
      }
    },
    "/v3/users/": {
      "get": {
        "summary": "उपयोगकर्ताओं को सूचीबद्ध करें",
        "description": "समान `vendor_data` (फ़्री-फ़ॉर्म स्ट्रिंग, UUID नहीं) साझा करने वाले KYC सत्रों से Didit द्वारा एकत्रित [उपयोगकर्ताओं](/entities/users) के साथ-साथ API के माध्यम से बनाए गए उपयोगकर्ताओं को सूचीबद्ध करें। पेजिनेटेड, `last_session_at` desc द्वारा क्रमित। यह endpoint फ़िल्टरिंग या खोज पैरामीटर का समर्थन नहीं करता है — पेज प्राप्त करें और क्लाइंट-साइड फ़िल्टर करें।",
        "operationId": "list_users",
        "x-didit-sdk": {
          "resource": "users",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "पेज का आकार। छोड़े जाने पर डिफ़ॉल्ट 50 होता है। कोई अनिवार्य अधिकतम सीमा नहीं है, लेकिन लेटेंसी के लिए पेजों को छोटा रखें।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "लौटाए जाने वाले पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट। इसे मैन्युअल रूप से गणना करने की तुलना में पिछले पृष्ठ से `next` URL का अनुसरण करना बेहतर है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/users/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.users.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.users.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Users.ListAutoPaging(ctx, didit.UsersListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.users().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->users->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.users.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Users.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "सत्यापन स्थिति, सत्र गणना और सुविधा ब्रेकडाउन के साथ उपयोगकर्ताओं की पेजिनेटेड सूची।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मिलान वाली पंक्तियों की संख्या — 100 तक सटीक, परफ़ॉर्मेंस के लिए उससे अधिक होने पर 100 पर सीमित। अंतिम पेज का पता लगाने के लिए इसका उपयोग न करें; इसके बजाय `next` के `null` होने पर निर्भर रहें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserListItem"
                      }
                    }
                  }
                },
                "examples": {
                  "Example": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
                          "vendor_data": "user-abc-123",
                          "display_name": null,
                          "full_name": "John Michael Doe",
                          "date_of_birth": "1990-05-15",
                          "effective_name": "John Michael Doe",
                          "status": "ACTIVE",
                          "portrait_image_url": "https://<media-host>/...",
                          "session_count": 3,
                          "approved_count": 2,
                          "declined_count": 0,
                          "in_review_count": 1,
                          "issuing_states": [
                            "USA"
                          ],
                          "approved_emails": [
                            "john@example.com"
                          ],
                          "approved_phones": [
                            "+14155551234"
                          ],
                          "features": {
                            "ID_VERIFICATION": "Approved",
                            "LIVENESS": "Approved",
                            "FACE_MATCH": "Approved",
                            "AML": "Approved"
                          },
                          "features_list": [
                            {
                              "feature": "ID_VERIFICATION",
                              "status": "Approved"
                            },
                            {
                              "feature": "LIVENESS",
                              "status": "Approved"
                            },
                            {
                              "feature": "FACE_MATCH",
                              "status": "Approved"
                            },
                            {
                              "feature": "AML",
                              "status": "Approved"
                            }
                          ],
                          "last_session_at": "2025-06-15T10:30:00Z",
                          "last_activity_at": "2025-06-15T10:30:00Z",
                          "first_session_at": "2025-06-01T08:00:00Z",
                          "tags": [
                            {
                              "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                              "name": "VIP",
                              "color": "#2567FF"
                            }
                          ],
                          "created_at": "2025-06-01T08:00:00Z"
                        },
                        {
                          "didit_internal_id": "6ed99d53-e8f5-4cf8-9ac1-4a506cb40f6b",
                          "vendor_data": null,
                          "display_name": "Jane S.",
                          "full_name": "Jane Elizabeth Smith",
                          "date_of_birth": "1985-11-22",
                          "effective_name": "Jane S.",
                          "status": "FLAGGED",
                          "portrait_image_url": null,
                          "session_count": 1,
                          "approved_count": 0,
                          "declined_count": 0,
                          "in_review_count": 1,
                          "issuing_states": [],
                          "approved_emails": [],
                          "approved_phones": [],
                          "features": {
                            "ID_VERIFICATION": "In Review"
                          },
                          "features_list": [
                            {
                              "feature": "ID_VERIFICATION",
                              "status": "In Review"
                            }
                          ],
                          "last_session_at": "2025-06-20T14:00:00Z",
                          "last_activity_at": "2025-06-20T14:05:00Z",
                          "first_session_at": "2025-06-20T14:00:00Z",
                          "tags": [],
                          "created_at": "2025-06-20T14:00:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कुंजी इस एप्लिकेशन के लिए उपयोगकर्ताओं को सूचीबद्ध नहीं कर सकती। कुंजी अनुपलब्ध होने पर `403` रिटर्न होता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` रिटर्न होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/users/{vendor_data}/": {
      "get": {
        "summary": "उपयोगकर्ता प्राप्त करें",
        "description": "`vendor_data` (सटीक मिलान) के आधार पर एक [उपयोगकर्ता](/entities/users) प्राप्त करें। सूची दृश्य में `metadata`, `comments`, और `updated_at` जोड़ता है, और `tags` को विस्तृत टैग-लिंक संरचना में बदलता है।",
        "operationId": "get_user",
        "x-didit-sdk": {
          "resource": "users",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता — एक मुक्त-रूप स्ट्रिंग (UUID नहीं)। यह वही मान है जिसे आपने इस उपयोगकर्ता को पहली बार पेश करने वाले सत्र को बनाते समय `vendor_data` के रूप में पास किया था, ठीक वैसे ही मिलान किया गया जैसा भेजा गया था।",
            "example": "user-abc-123"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/users/user-abc-123/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.retrieve(\n    \"user-abc-123\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.retrieve(\"user-abc-123\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Retrieve(ctx, \"user-abc-123\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().retrieve(\"user-abc-123\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->retrieve('user-abc-123');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.retrieve(\"user-abc-123\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.RetrieveAsync(\"user-abc-123\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "मेटाडेटा, टिप्पणियाँ/गतिविधि लॉग और संकलित सत्र डेटा सहित पूर्ण उपयोगकर्ता विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetailItem"
                },
                "examples": {
                  "Active user": {
                    "value": {
                      "didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
                      "vendor_data": "user-abc-123",
                      "display_name": null,
                      "full_name": "John Michael Doe",
                      "date_of_birth": "1990-05-15",
                      "effective_name": "John Michael Doe",
                      "status": "ACTIVE",
                      "metadata": {
                        "tier": "premium",
                        "source": "website"
                      },
                      "portrait_image_url": "https://<media-host>/...",
                      "session_count": 3,
                      "approved_count": 2,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "issuing_states": [
                        "USA"
                      ],
                      "approved_emails": [
                        "john@example.com"
                      ],
                      "approved_phones": [
                        "+14155551234"
                      ],
                      "features": {
                        "ID_VERIFICATION": "Approved",
                        "LIVENESS": "Approved",
                        "FACE_MATCH": "Approved",
                        "AML": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "ID_VERIFICATION",
                          "status": "Approved"
                        },
                        {
                          "feature": "LIVENESS",
                          "status": "Approved"
                        },
                        {
                          "feature": "FACE_MATCH",
                          "status": "Approved"
                        },
                        {
                          "feature": "AML",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2025-06-15T10:30:00Z",
                      "last_activity_at": "2025-06-15T10:30:00Z",
                      "first_session_at": "2025-06-01T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "tag": {
                            "uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
                            "name": "VIP",
                            "color": "#2567FF",
                            "description": null,
                            "source": "custom",
                            "created_at": "2025-05-01T09:00:00Z",
                            "updated_at": "2025-05-01T09:00:00Z"
                          },
                          "added_by_email": "analyst@acme.com",
                          "added_by_name": "Jane Analyst",
                          "created_at": "2025-06-02T11:00:00Z"
                        }
                      ],
                      "comments": [
                        {
                          "uuid": "c1111111-2222-4333-8444-555555555555",
                          "comment_type": "STATUS_CHANGED",
                          "comment": null,
                          "actor_email": "analyst@acme.com",
                          "actor_name": "Jane Analyst",
                          "previous_status": "FLAGGED",
                          "new_status": "ACTIVE",
                          "previous_value": null,
                          "new_value": null,
                          "changed_fields": [],
                          "metadata": null,
                          "mentioned_emails": [],
                          "created_at": "2025-06-01T10:30:00Z"
                        }
                      ],
                      "created_at": "2025-06-01T08:00:00Z",
                      "updated_at": "2025-06-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अमान्य या निरस्त की गई API कुंजी, या कुंजी इस एप्लिकेशन के उपयोगकर्ताओं को पढ़ने की अनुमति नहीं देती है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त की गई या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई उपयोगकर्ता मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "उपयोगकर्ता अपडेट करें",
        "description": "किसी उपयोगकर्ता का आंशिक अपडेट: `display_name`, `full_name`, `date_of_birth`, `status`, `metadata`, `approved_emails`/`approved_phones`/`issuing_states`। `metadata` पूरी तरह से बदल जाता है। यहाँ `status` बदलना [Update User Status](#patch-/v3/users/-vendor_data-/update-status/) की तरह काम करता है: यह वैकल्पिक `reason` के साथ `STATUS_CHANGED` गतिविधि रिकॉर्ड करता है, और `BLOCKED` सिस्टम ब्लॉकलिस्ट में `vendor_data` जोड़ता है (`BLOCKED` से हटाने पर वह प्रविष्टि हट जाती है)। `display_name`, `full_name`, `date_of_birth` या `metadata` में परिवर्तन `PROFILE_UPDATED` गतिविधि के रूप में रिकॉर्ड किए जाते हैं।",
        "operationId": "update_user",
        "x-didit-sdk": {
          "resource": "users",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप स्ट्रिंग, UUID नहीं)।",
            "example": "user-abc-123"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/users/user-abc-123/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"display_name\": \"Jane S.\", \"status\": \"FLAGGED\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.update(\n    \"user-abc-123\",\n    display_name=\"Jane S.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.update(\"user-abc-123\", {\n  display_name: \"Jane S.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Update(ctx, \"user-abc-123\", didit.UsersUpdateParams{\n\tDisplayName: didit.String(\"Jane S.\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.UsersUpdateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().update(\"user-abc-123\", UsersUpdateParams.builder()\n        .displayName(\"Jane S.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->update('user-abc-123', [\n    'display_name' => 'Jane S.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.update(\n  \"user-abc-123\",\n  display_name: \"Jane S.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.UpdateAsync(\"user-abc-123\", new UsersUpdateParams\n{\n    DisplayName = \"Jane S.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "उपयोगकर्ता अपडेट किया गया। पूरा अपडेट किया गया उपयोगकर्ता रिकॉर्ड (Get User के समान प्रारूप) लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetailItem"
                },
                "examples": {
                  "Updated": {
                    "value": {
                      "didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
                      "vendor_data": "user-abc-123",
                      "display_name": "Jane S.",
                      "full_name": "Jane Elizabeth Smith",
                      "date_of_birth": "1985-11-22",
                      "effective_name": "Jane S.",
                      "status": "FLAGGED",
                      "metadata": {
                        "tier": "premium"
                      },
                      "portrait_image_url": "https://<media-host>/...",
                      "session_count": 3,
                      "approved_count": 2,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "issuing_states": [
                        "USA"
                      ],
                      "approved_emails": [
                        "john@example.com"
                      ],
                      "approved_phones": [
                        "+14155551234"
                      ],
                      "features": {
                        "ID_VERIFICATION": "Approved",
                        "LIVENESS": "Approved",
                        "FACE_MATCH": "Approved",
                        "AML": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "ID_VERIFICATION",
                          "status": "Approved"
                        },
                        {
                          "feature": "LIVENESS",
                          "status": "Approved"
                        },
                        {
                          "feature": "FACE_MATCH",
                          "status": "Approved"
                        },
                        {
                          "feature": "AML",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2025-06-15T10:30:00Z",
                      "last_activity_at": "2025-06-15T10:30:00Z",
                      "first_session_at": "2025-06-01T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "tag": {
                            "uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
                            "name": "VIP",
                            "color": "#2567FF",
                            "description": null,
                            "source": "custom",
                            "created_at": "2025-05-01T09:00:00Z",
                            "updated_at": "2025-05-01T09:00:00Z"
                          },
                          "added_by_email": "analyst@acme.com",
                          "added_by_name": "Jane Analyst",
                          "created_at": "2025-06-02T11:00:00Z"
                        }
                      ],
                      "comments": [],
                      "created_at": "2025-06-01T08:00:00Z",
                      "updated_at": "2025-06-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body — आमतौर पर एक अज्ञात `status` या `YYYY-MM-DD` में न दी गई `date_of_birth`।",
            "content": {
              "application/json": {
                "examples": {
                  "Bad status": {
                    "value": {
                      "status": [
                        "\"INVALID\" is not a valid choice."
                      ]
                    }
                  },
                  "Bad date_of_birth": {
                    "value": {
                      "date_of_birth": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  },
                  "Reason too long": {
                    "value": {
                      "reason": [
                        "Ensure this field has no more than 1000 characters."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कुंजी इस एप्लिकेशन के लिए उपयोगकर्ताओं को अपडेट नहीं कर सकती। कुंजी अनुपलब्ध होने पर `403` रिटर्न होता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` रिटर्न होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई उपयोगकर्ता मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "full_name": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 512,
                    "description": "उपयोगकर्ता का पूरा नाम"
                  },
                  "display_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "इस उपयोगकर्ता के लिए कस्टम प्रदर्शन नाम"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "YYYY-MM-DD प्रारूप में जन्म तिथि"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE",
                      "FLAGGED",
                      "BLOCKED"
                    ],
                    "description": "उपयोगकर्ता जीवनचक्र स्थिति। परिवर्तन को `STATUS_CHANGED` गतिविधि के रूप में रिकॉर्ड किया जाता है, और `BLOCKED` सिस्टम ब्लॉकलिस्ट में `vendor_data` जोड़ता है (`BLOCKED` से हटने पर वह प्रविष्टि हट जाती है)।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "उपयोगकर्ता से जुड़ा आपका मनमाना JSON ऑब्जेक्ट। अपडेट करने पर मौजूदा मेटाडेटा को **पूरी तरह से बदल देता है** — यदि आप केवल कुंजियाँ जोड़ना चाहते हैं तो क्लाइंट-साइड मर्ज करें।"
                  },
                  "approved_emails": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस उपयोगकर्ता के लिए सत्यापित ईमेल पते, उदा. `[\"john@example.com\"]`। संग्रहीत सूची को पूरी तरह से बदल देता है।"
                  },
                  "approved_phones": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस उपयोगकर्ता के लिए सत्यापित फ़ोन नंबर। संग्रहीत सूची को पूरी तरह से बदल देता है।"
                  },
                  "issuing_states": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "जारीकर्ता देश (ISO 3166-1 alpha-3), उदाहरण के लिए `[\"USA\"]`। संग्रहीत सूची को पूरी तरह से बदल देता है।"
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 1000,
                    "description": "स्थिति क्यों बदली। उपयोगकर्ता की गतिविधि की स्थिति-परिवर्तन प्रविष्टि (`comments[].comment`, और Business Console में **Activity**) पर रिकॉर्ड किया जाता है, केवल तभी जब स्थिति वास्तव में बदलती है। Webhooks इसे शामिल नहीं करते हैं।"
                  }
                }
              },
              "examples": {
                "Rename": {
                  "summary": "प्रदर्शित नाम सेट करें",
                  "value": {
                    "display_name": "Jane S."
                  }
                },
                "Override status": {
                  "summary": "समीक्षा के लिए उपयोगकर्ता को फ़्लैग करें",
                  "value": {
                    "status": "FLAGGED"
                  }
                },
                "Add metadata": {
                  "summary": "मेटाडेटा JSON बदलें",
                  "value": {
                    "metadata": {
                      "tier": "premium",
                      "risk_level": "low"
                    }
                  }
                },
                "Fix extracted DOB": {
                  "summary": "निकाले गए प्रोफ़ाइल फ़ील्ड सही करें",
                  "value": {
                    "full_name": "Jane Elizabeth Smith",
                    "date_of_birth": "1985-11-22"
                  }
                },
                "Flag with reason": {
                  "summary": "उपयोगकर्ता को फ़्लैग करें और कारण रिकॉर्ड करें",
                  "value": {
                    "status": "FLAGGED",
                    "reason": "Address does not match the billing country"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/users/{vendor_data}/generate-pdf/": {
      "get": {
        "summary": "संपूर्ण उपयोगकर्ता इतिहास की PDF रिपोर्ट डाउनलोड करें",
        "description": "एक अनुपालन-तैयार PDF रेंडर करें और डाउनलोड करें जिसमें `vendor_data` द्वारा पहचाने गए उपयोगकर्ता का पूरा सत्यापन इतिहास शामिल हो। यह वही दस्तावेज़ है जो Console में **User detail → Actions → Download PDF** से जनरेट होता है, ताकि आवधिक अनुपालन एक्सपोर्ट के लिए अब किसी व्यक्ति द्वारा Console में क्लिक करने की आवश्यकता न पड़े।\n\n**रिपोर्ट में क्या शामिल है।** प्रोफ़ाइल सारांश (नाम, जन्म तिथि, जारीकर्ता राज्य, स्वीकृत ईमेल और फ़ोन), प्रत्येक सुविधा की नवीनतम स्थिति, सत्र काउंटर और शामिल सत्रों की एक अनुक्रमणिका वाला एक कवर पेज — इसके बाद कालानुक्रमिक क्रम (सबसे पुराना पहले) में प्रत्येक शामिल सत्र की मानक रिपोर्ट। प्रत्येक सत्र रिपोर्ट वही दस्तावेज़ है जो `GET /v3/session/{sessionId}/generate-pdf/` उस सत्र के लिए लौटाता है।\n\n**पात्र सत्र।** केवल `Approved`, `Declined`, `In Review` या `Kyc Expired` स्थिति वाले उपयोगकर्ता सत्यापन (KYC) सत्र ही शामिल किए जाते हैं; किसी अन्य स्थिति वाले सत्र छोड़ दिए जाते हैं। यदि उपयोगकर्ता का इनमें से किसी एक स्थिति में कोई सत्र नहीं है, तो endpoint `403` लौटाता है — नीचे देखें।\n\n**सीमा।** रिपोर्ट अधिकतम **20 सबसे हाल के** रिपोर्ट करने योग्य सत्रों तक सीमित है। जब किसी उपयोगकर्ता के पास इससे अधिक सत्र होते हैं, तो सबसे नए 20 सत्र शामिल किए जाते हैं और कवर पेज पर यह बताया जाता है कि कितने पुराने सत्र छोड़ दिए गए थे। JSON के रूप में पूरी सूची प्राप्त करने के लिए `GET /v3/sessions/?vendor_data=…` का उपयोग करें।\n\n**ब्रांडिंग।** यदि आपके एप्लिकेशन में व्हाइट लेबल कस्टमाइज़ेशन है, तो कवर और प्रत्येक सत्र रिपोर्ट आपके लोगो और गोपनीयता-नीति URL के साथ रेंडर की जाती है; अन्यथा उन पर Didit ब्रांडिंग होती है। रिपोर्ट अंग्रेज़ी में रेंडर की जाती हैं — कोई भाषा पैरामीटर नहीं है।\n\n**कोई कैशिंग नहीं।** प्रत्येक कॉल वर्तमान डेटा से PDF को फिर से रेंडर करती है, इसलिए मैन्युअल समीक्षा के बाद जनरेट की गई रिपोर्ट समीक्षक के निर्णय को दर्शाती है। एक ही उपयोगकर्ता के लिए दो कॉल बाइट-डिफ़रेंट फ़ाइलें उत्पन्न कर सकती हैं — यदि आपको एक अपरिवर्तनीय प्रतिलिपि की आवश्यकता है तो डाउनलोड की गई फ़ाइल को संग्रहीत करें।\n\n**विलंबता।** रेंडरिंग सिंक्रोनस है और प्रत्येक शामिल सत्र की प्रत्येक संग्रहीत छवि को डाउनलोड करती है, इसलिए कई मीडिया-भारी सत्रों वाले उपयोगकर्ता में कई दसियों सेकंड लग सकते हैं। एक उदार क्लाइंट रीड टाइमआउट (120 s अनुशंसित) का उपयोग करें और बॉडी को डिस्क पर स्ट्रीम करें। जेनरेशन तब तक चलने के बजाय सर्वर-साइड समय बजट पर रुक जाती है जब तक कि आपका क्लाइंट छोड़ न दे: यदि वह बजट पूरा हो जाता है, तो भी रिस्पॉन्स सबसे हाल के सत्रों वाली एक मान्य PDF होता है, और कवर पर बताया जाता है कि कितने सत्र छोड़ दिए गए थे।\n\n**दायरा।** उपयोगकर्ता का समाधान उस एप्लिकेशन के भीतर किया जाता है जिसके पास API कुंजी है। एक कुंजी कभी भी किसी अन्य एप्लिकेशन के उपयोगकर्ता को एक्सपोर्ट नहीं कर सकती है — ऐसा उपयोगकर्ता उसके लिए मौजूद नहीं होता है और endpoint `404` लौटाता है।\n\n**ट्रेलिंग स्लैश।** कैनोनिकल रूट एक ट्रेलिंग स्लैश (`…/generate-pdf/`) के साथ समाप्त होता है। इसके बिना किया गया अनुरोध सीधे उसी रिस्पॉन्स के साथ पूरा किया जाता है — कोई `301` रीडायरेक्ट नहीं होता है, इसलिए किसी भी क्लाइंट को रीडायरेक्ट का पालन करने की आवश्यकता नहीं होती है और `curl` को `-L` की आवश्यकता नहीं होती है। नमूनों की तरह स्लैश वाले URL का उपयोग करें।",
        "operationId": "get_user_generate_pdf",
        "x-didit-sdk": {
          "resource": "users",
          "method": "generate_pdf",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता — एक मुक्त-रूप स्ट्रिंग (UUID नहीं)। यह वही मान है जिसे आपने उपयोगकर्ता के सत्र बनाते समय `vendor_data` के रूप में पास किया था, ठीक वैसे ही मिलान किया गया जैसा भेजा गया था। इसे URL-एन्कोड करें; `/` युक्त मान को इस रूट द्वारा संबोधित नहीं किया जा सकता।",
            "example": "user-abc-123"
          }
        ],
        "responses": {
          "200": {
            "description": "रेंडर किया गया PDF दस्तावेज़, सीधे बाइनरी `application/pdf` के रूप में लौटाया गया — कोई JSON रैपर नहीं है और कोई डाउनलोड-URL इनडायरेक्शन नहीं है। बॉडी `%PDF` मैजिक बाइट्स से शुरू होती है। इसे `.pdf` फ़ाइल में सहेजें या अपने कॉलर को स्ट्रीम करें।",
            "headers": {
              "Content-Disposition": {
                "description": "`attachment; filename=user_{didit_internal_id}.pdf` — फ़ाइल का नाम उपयोगकर्ता के स्थिर Didit पहचानकर्ता (`GET /v3/users/{vendor_data}/` पर `didit_internal_id`) के नाम पर रखा गया है, न कि `vendor_data` के नाम पर।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=user_f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418.pdf"
                }
              },
              "Content-Length": {
                "description": "बाइट्स में PDF का कुल आकार; बॉडी चंक नहीं की गई है।",
                "schema": {
                  "type": "integer",
                  "example": 148213
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्राधिकरण या पात्रता विफलता। दोनों को `detail` स्ट्रिंग द्वारा पहचानें:\n\n- `\"You do not have permission to perform this action.\"` — API कुंजी अमान्य या निरस्त है, या अनुरोध में एप्लिकेशन API कुंजी के स्थान पर कंसोल उपयोगकर्ता token है।\n- `\"This user has no sessions in review, declined, approved or kyc expired to report.\"` — उपयोगकर्ता आपके एप्लिकेशन में मौजूद है लेकिन इसका कोई भी सत्र अभी रिपोर्ट करने योग्य स्थिति में नहीं है (उदाहरण के लिए प्रत्येक सत्र अभी भी `In Progress` है, या उपयोगकर्ता `POST /v3/users/create/` के माध्यम से बनाया गया था और उसने कभी सत्यापन नहीं किया है)। रिपोर्ट का अनुरोध करने से पहले `status.updated` webhook की प्रतीक्षा करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "This user has no sessions in review, declined, approved or kyc expired to report."
                    }
                  }
                },
                "examples": {
                  "Invalid credentials": {
                    "summary": "निरस्त या अमान्य API कुंजी, या एक Console उपयोगकर्ता token",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "No reportable sessions": {
                    "summary": "उपयोगकर्ता मौजूद है लेकिन उसके पास कोई स्वीकृत / अस्वीकृत / समीक्षाधीन / KYC की समय-सीमा समाप्त सत्र नहीं है",
                    "value": {
                      "detail": "This user has no sessions in review, declined, approved or kyc expired to report."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के पीछे एप्लिकेशन में दिए गए `vendor_data` वाला कोई उपयोगकर्ता मौजूद नहीं है। अन्य एप्लिकेशन के उपयोगकर्ता इस कुंजी के लिए अदृश्य हैं और वही `404` लौटाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "User not found."
                    }
                  }
                },
                "examples": {
                  "Unknown user": {
                    "summary": "vendor_data इस एप्लिकेशन के किसी भी उपयोगकर्ता से मेल नहीं खाता है",
                    "value": {
                      "detail": "User not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। वैश्विक 600/मिनट GET सीमा के अतिरिक्त, PDF जनरेशन की **प्रति क्रेडेंशियल 50 अनुरोध प्रति मिनट** (API कुंजी, Bearer token, या अप्रमाणित होने पर स्रोत IP) की एक समर्पित सीमा है, जो इस endpoint और `GET /v3/session/{sessionId}/generate-pdf/` के बीच साझा की जाती है। `Retry-After` सेकंड प्रतीक्षा करें (जो `X-RateLimit-*` हेडर में भी दिखाई देता है), फिर पुनः प्रयास करें। रिपोर्ट सर्वर-साइड कैश नहीं की जाती हैं, इसलिए प्रत्येक रिपोर्ट को एक बार डाउनलोड करें और इसे पुनः प्राप्त करने के बजाय फ़ाइल को स्टोर करें।",
            "headers": {
              "Retry-After": {
                "description": "अनुरोध का पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "वर्तमान विंडो में अनुमत PDF जनरेशन की अधिकतम संख्या (50)।",
                "schema": {
                  "type": "integer",
                  "example": 50
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix टाइमस्टैम्प (सेकंड) जिस पर वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1750000000
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "रेट लिमिट उल्लंघन का मानव-पठनीय स्पष्टीकरण।",
                      "example": "Session PDF generation rate limit exceeded. You can make up to 50 requests per minute."
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "summary": "समान क्रेडेंशियल से एक मिनट में 50 से अधिक PDF जनरेशन",
                    "value": {
                      "detail": "Session PDF generation rate limit exceeded. You can make up to 50 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --fail \\\n  'https://verification.didit.me/v3/users/user-abc-123/generate-pdf/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  --output user-history.pdf"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.users.generate_pdf(\n    \"user-abc-123\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.users.generatePdf(\"user-abc-123\");\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Users.GeneratePDF(ctx, \"user-abc-123\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.users().generatePdf(\"user-abc-123\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->users->generatePdf('user-abc-123');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.users.generate_pdf(\"user-abc-123\")\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Users.GeneratePdfAsync(\"user-abc-123\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ]
      }
    },
    "/v3/users/delete/": {
      "post": {
        "summary": "उपयोगकर्ताओं को बैच में हटाएं",
        "description": "उपयोगकर्ताओं को **स्थायी रूप से हटाएं**: उपयोगकर्ता रिकॉर्ड स्थायी रूप से हटा दिए जाते हैं। सामान्य ब्लॉक करने के लिए `BLOCKED` के साथ [उपयोगकर्ता स्थिति अपडेट करें](#patch-/v3/users/-vendor_data-/update-status/) को प्राथमिकता दें। `vendor_data_list` के साथ, `didit_internal_id_list` के साथ, या दोनों के साथ एक साथ उपयोगकर्ताओं का चयन करें; या `delete_all: true` पास करें। यह endpoint कभी भी फ़िल्टर के साथ `delete_all` को सीमित नहीं करता है। कंसोल के People फ़िल्टर `400` के साथ अस्वीकार कर दिए जाते हैं (`400` रिस्पॉन्स देखें), ताकि सीमित किया गया इरादा पूर्ण वाइप में न बदल जाए। दो अपवाद: `filter_has_approved_sessions` और `filter_has_declined_sessions` अस्वीकार नहीं किए जाते हैं और लागू नहीं किए जाते हैं, इसलिए `delete_all: true` के साथ वे अभी भी प्रत्येक उपयोगकर्ता को हटाते हैं; उन्हें न भेजें।\n\n**बायोमेट्रिक टेम्पलेट:** जब तक कि आप `retain_face_embeddings` को `true` पर सेट नहीं करते हैं, सत्र हटाने के बाद इन उपयोगकर्ताओं के लिए रखे गए प्रत्येक छवि-मुक्त बायोमेट्रिक टेम्पलेट (देखें `/v3/biometric-templates/`) को उपयोगकर्ता हटाए जाने से पहले पर्ज कर दिया जाता है, जिससे वह व्यक्ति डुप्लिकेट पहचान और चेहरा खोज में मेल खाना बंद कर देता है। `retain_face_embeddings: true` और `face_retention_days` के साथ, आप उस व्यक्ति के लिए उतने दिनों तक प्रति व्यक्ति एक छवि-मुक्त बायोमेट्रिक टेम्पलेट रखने का विकल्प चुनते हैं, और उस व्यक्ति के बारे में और कुछ नहीं रखा जाता है। यदि बायोमेट्रिक स्टोर अनुपलब्ध होने के कारण कोई टेम्पलेट पर्ज नहीं किया जा सकता है, तो कॉल `503` लौटाती है, अनुरोध में कोई भी उपयोगकर्ता हटाया नहीं जाता है, और अनुरोध को दोहराने से कार्य पूरा हो जाता है।\n\n**दाखिल नियामक रिपोर्टें:** यदि चयनित डेटा किसी अंतिम रूप दी गई नियामक रिपोर्ट में है, तो पूरा अनुरोध `409` के साथ अस्वीकार कर दिया जाता है और कुछ भी हटाया नहीं जाता है। बॉडी `code: in_filed_report` का उपयोग करती है और प्रत्येक रिपोर्ट का नाम `uuid`, `report_number`, `report_type` और `case_uuid` के साथ निर्दिष्ट करती है। रिपोर्टों को हटाएं, फिर अनुरोध दोहराएं।",
        "operationId": "batch_delete_users",
        "x-didit-sdk": {
          "resource": "users",
          "method": "batch_delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "`vendor_data_list`, `didit_internal_id_list`, या `delete_all: true` प्रदान करें। दोनों सूचियों को जोड़ा जा सकता है और वे OR से जुड़ी होती हैं। जब `delete_all` `true` होता है तो यह प्राथमिकता लेता है और दोनों सूचियों को अनदेखा कर दिया जाता है।",
                "properties": {
                  "vendor_data_list": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "हटाने के लिए आपके अपने पहचानकर्ता, ठीक वैसे ही मिलान किए जाते हैं जैसे भेजे गए थे।"
                  },
                  "didit_internal_id_list": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "हटाने के लिए Didit आंतरिक उपयोगकर्ता IDs - create और get endpoints द्वारा लौटाई गई `didit_internal_id`।"
                  },
                  "delete_all": {
                    "type": "boolean",
                    "default": false,
                    "description": "यदि `true` है, तो एप्लिकेशन में प्रत्येक उपयोगकर्ता को हटा देता है।"
                  },
                  "retain_face_embeddings": {
                    "type": "boolean",
                    "default": false,
                    "description": "डुप्लिकेट डिटेक्शन के लिए प्रत्येक हटाए गए व्यक्ति के एक छवि-मुक्त बायोमेट्रिक टेम्पलेट को `face_retention_days` के लिए रखने का आपका स्पष्ट विकल्प। व्यक्ति के बारे में बाकी सब कुछ हटा दिया जाता है। उपयोगकर्ताओं के साथ टेम्पलेट हटाने के लिए इसे छोड़ दें, या `false` भेजें। `true` होने पर, `face_retention_days` आवश्यक है।"
                  },
                  "face_retention_days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3650,
                    "description": "छवि-मुक्त बायोमेट्रिक टेम्पलेट को रखे जाने वाले दिनों की संख्या जब `retain_face_embeddings` का मान `true` हो। इसके साथ आवश्यक है, और इसके बिना `face_retention_days` पर `400` के साथ अस्वीकृत कर दिया जाता है।",
                    "example": 365
                  }
                }
              },
              "examples": {
                "Specific users": {
                  "summary": "vendor_data द्वारा उपयोगकर्ताओं को हटाएं",
                  "value": {
                    "vendor_data_list": [
                      "user-123",
                      "user-456"
                    ]
                  }
                },
                "By Didit internal ID": {
                  "summary": "didit_internal_id द्वारा उपयोगकर्ताओं को हटाएं",
                  "value": {
                    "didit_internal_id_list": [
                      "3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11"
                    ]
                  }
                },
                "All users": {
                  "summary": "इस एप्लिकेशन में प्रत्येक उपयोगकर्ता को मिटा दें",
                  "value": {
                    "delete_all": true
                  }
                },
                "Keep face templates": {
                  "summary": "उपयोगकर्ताओं को हटाएं और 365 दिनों के लिए अनाम फ़ेस टेम्पलेट रखें",
                  "value": {
                    "vendor_data_list": [
                      "user-123"
                    ],
                    "retain_face_embeddings": true,
                    "face_retention_days": 365
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/users/delete/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vendor_data_list\": [\"user-123\", \"user-456\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.batch_delete(\n    vendor_data_list=[\"user-123\", \"user-456\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.batchDelete({\n  vendor_data_list: [\"user-123\", \"user-456\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.BatchDelete(ctx, didit.UsersBatchDeleteParams{\n\tVendorDataList: didit.Some([]string{\"user-123\", \"user-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.UsersBatchDeleteParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().batchDelete(UsersBatchDeleteParams.builder()\n        .vendorDataList(List.of(\"user-123\", \"user-456\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->batchDelete([\n    'vendor_data_list' => ['user-123', 'user-456'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.batch_delete(vendor_data_list: [\"user-123\", \"user-456\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.BatchDeleteAsync(new UsersBatchDeleteParams\n{\n    VendorDataList = new string[] { \"user-123\", \"user-456\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "उपयोगकर्ता हटाए गए। वास्तव में हटाए गए उपयोगकर्ताओं की संख्या लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "integer",
                      "description": "हटाए गए उपयोगकर्ताओं की संख्या (vendor_data मानों को बाहर करता है जो किसी भी चीज़ से मेल नहीं खाते थे)।"
                    }
                  }
                },
                "examples": {
                  "Deleted some": {
                    "value": {
                      "deleted": 2
                    }
                  },
                  "Nothing matched": {
                    "value": {
                      "deleted": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि; कुछ भी हटाया नहीं गया है। त्रुटियों को फ़ील्ड नाम द्वारा कुंजीबद्ध किया जाता है। बिना किसी चयनकर्ता के (न तो कोई सूची दी गई है और न ही `delete_all` का मान `true` है) बॉडी `{\"vendor_data_list\": [\"This field is required unless delete_all is true.\"]}` होती है; एक खाली सूची को उसकी अपनी कुंजी के तहत `\"This list may not be empty.\"` के साथ अस्वीकार कर दिया जाता है। केवल-कंसोल फ़िल्टर (`filter_search`, `filter_status`, `filter_country`, `filter_date_from`, `filter_date_to`, `filter_tag`, `filter_latest_verification_status`, `filter_risk`, `filter_has_sessions`, `filter_has_open_alerts`, `filter_aml_monitoring`, `filter_can_sign_in`, `filter_auth_status`, `filter_auth_method` या `filter_auth_mfa_enabled`) जब भी कोई मान रखता है, भले ही `false` हो, तो उसे ऐसे प्रत्येक फ़ील्ड द्वारा कुंजीबद्ध ऑब्जेक्ट के साथ अस्वीकार कर दिया जाता है। किसी भी अन्य अज्ञात `filter_*` कुंजी को `\"Unknown filter.\"` के साथ अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing selector": {
                    "summary": "न तो list और न ही delete_all प्रदान किया गया",
                    "value": {
                      "vendor_data_list": [
                        "This field is required unless delete_all is true."
                      ]
                    }
                  },
                  "Console-only filter": {
                    "value": {
                      "filter_has_sessions": "This filter is Console-only and is not supported by this endpoint."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अमान्य या निरस्त की गई API कुंजी, या कुंजी इस एप्लिकेशन के उपयोगकर्ताओं को हटा नहीं सकती है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त की गई या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "बायोमेट्रिक टेम्पलेट को बनाए रखने या हटाने के दौरान एक बायोमेट्रिक स्टोर अनुपलब्ध था। कुछ भी हटाया नहीं गया है; वही अनुरोध दोहराएं। पुनः प्रयास आइडेम्पोटेंट होते हैं और एक ही टेम्पलेट पर कन्वर्ज होते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Retryable": {
                    "value": {
                      "detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "कुछ भी हटाया नहीं गया है। `code` इसका कारण बताता है: `in_filed_report` तब जब चयन में किसी अंतिम विनियामक रिपोर्ट में शामिल व्यक्ति हो, `subject_deletion_in_progress` तब जब कोई अन्य अनुरोध अभी भी चयनित व्यक्तियों में से किसी एक को हटा रहा हो। उस निष्कासन के समाप्त होने के बाद अनुरोध को दोहराएं।",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/InFiledReportError"
                    },
                    {
                      "$ref": "#/components/schemas/SubjectDeletionInProgressError"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/sessions/delete/": {
      "post": {
        "summary": "session_number द्वारा KYC सत्रों को बल्क में हटाएं",
        "description": "उपयोगकर्ता सत्यापन (KYC) सत्रों को उनके संख्यात्मक `session_number` द्वारा, या `delete_all: true` के साथ अपने एप्लिकेशन में प्रत्येक KYC सत्र को बल्क में हटाएं।\n\n`session_number` Console सत्र सूची में दिखाई देने वाला मानव-अनुकूल इनक्रीमेंटिंग काउंटर है और इसे create-session तथा decision endpoints द्वारा `session_number` के रूप में लौटाया जाता है; यह `session_id` UUID **नहीं** है। UUID द्वारा किसी सत्र को हटाने के लिए, या व्यवसाय सत्यापन (KYB) सत्र को हटाने के लिए (जिसे यह endpoint कभी नहीं छूता), इसके बजाय `DELETE /v3/session/{sessionId}/delete/` का उपयोग करें।\n\n**अनुरोध में अधिकतम 20 सत्र हटाए जाते हैं; इससे अधिक सत्र एक जॉब के रूप में चलते हैं।** मेल खाने वाले सत्रों की संख्या यह तय करती है, चाहे उन्हें `session_numbers` द्वारा चुना गया हो या `delete_all` के साथ:\n- अधिकतम 20 मेल खाने वाले सत्र: वे रिस्पॉन्स से पहले हटा दिए जाते हैं, जो `results[]` में प्रति सत्र एक प्रविष्टि के साथ `200` होता है।\n- 20 से अधिक: रिस्पॉन्स विलोपन जॉब के साथ `202` होता है, और सत्र बैकग्राउंड में हटाए जाते हैं। `GET /v3/sessions/delete/{job_id}/` को तब तक पोल करें जब तक कि `status` `COMPLETED` या `FAILED` न हो जाए। एक जॉब प्रति परिणाम केवल संख्या रिपोर्ट करता है, यह कभी नहीं बताता कि उसने कौन से सत्र हटाए हैं। एक `delete_all` जॉब केवल अनुरोध से पहले बनाए गए सत्रों को हटाता है; इसके चलने के दौरान शुरू किए गए सत्र नहीं हटाए जाते हैं।\n\nप्रत्येक हटाए गए सत्र के साथ ठीक वही व्यवहार किया जाता है जो एकल-सत्र विलोपन endpoint करता है: सत्र, उसमें मौजूद प्रत्येक सत्यापन प्रयास, उसका निर्णय और निकाला गया डेटा, उससे संबंधित फ़ीचर रिकॉर्ड (पहचान सत्यापन, फ़ेस, लाइवनेस, चेहरा मिलान, इत्यादि) और उसकी सभी संग्रहीत फ़ाइलें हटा दी जाती हैं, यह प्रत्येक रीड endpoint से गायब हो जाता है, और पहले जारी किए गए मीडिया URLs काम करना बंद कर देते हैं। हटाए गए सत्र के लिए कतार में मौजूद webhook डिलीवरी और उनके पुनः प्रयासों को छोड़ दिया जाता है; पहले से डिलीवर किए गए webhooks प्रभावित नहीं होते हैं। ब्लॉकलिस्ट प्रविष्टियाँ **नहीं** हटाई जाती हैं, पहले से उपयोग किए गए क्रेडिट **वापस नहीं** किए जाते हैं, और मूल User एंटिटीज़ **नहीं** हटाई जाती हैं (उनके लिए `POST /v3/users/delete/` का उपयोग करें); विलोपन के लिए कोई webhook उत्सर्जित नहीं किया जाता है। विलोपन स्थायी और अपरिवर्तनीय है।\n\n**चयन सिमेंटिक्स:**\n- `delete_all: true` के साथ आप `GET /v3/sessions/` के फ़िल्टर का उपयोग करके चयन को सीमित कर सकते हैं, जिनमें से प्रत्येक के आगे `filter_` उपसर्ग लगा होता है (उदाहरण के लिए `filter_status`, `filter_workflow_id`, `filter_date_from`)। List Sessions में कई मान लेने वाले फ़िल्टर (`status`, `workflow_id`, `country`, `region`, `document_type`, `document_name`, `session_type`, `warning`, `organization_name`) अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे स्वीकार करते हैं; अन्य केवल एक मान लेते हैं। एक खाली मान को नज़रअंदाज़ कर दिया जाता है। फ़िल्टर केवल `delete_all` के साथ ही लागू होते हैं, और एक विलोपन जॉब समान फ़िल्टर लागू करता है।\n- एक अज्ञात `filter_*` कुंजी, या एक फ़िल्टर मान जिसे पढ़ा नहीं जा सकता, कुछ भी हटाए जाने से पहले पूरे अनुरोध को `400` के साथ अस्वीकार कर देता है, ताकि गलत टाइप किया गया फ़िल्टर कभी भी विलोपन को हर सत्र तक विस्तृत न कर दे।\n- `session_numbers` में ऐसी प्रविष्टियाँ जो आपके एप्लिकेशन में किसी लाइव KYC सत्र से मेल नहीं खाती हैं (अज्ञात संख्याएँ, पहले से हटाए गए सत्र, या किसी अन्य एप्लिकेशन के स्वामित्व वाले सत्र) को **चुपचाप छोड़ दिया जाता है**: वे `results` में दिखाई नहीं देते हैं और किसी जॉब के `total` में नहीं गिने जाते हैं।\n- सत्यापन विफलताएं (एक गैर-संख्यात्मक प्रविष्टि, एक खाली सूची, न तो `session_numbers` और न ही `delete_all` प्रदान किया जाना, या ऐसा टेम्पलेट प्रतिधारण जिसका एप्लिकेशन पालन नहीं कर सकता) **पूरे अनुरोध** को `400` के साथ अस्वीकार कर देती हैं और कुछ भी नहीं हटाती हैं।\n- सत्र समूहों में हटाए जाते हैं। यदि कोई समूह नहीं हटाया जा सकता है (उदाहरण के लिए स्टोरेज सेवा अनुपलब्ध होने के कारण), तो उस समूह के प्रत्येक सत्र को `face_retention_outcome: failed_retryable` के रूप में रिपोर्ट किया जाता है और वह यथावत रहता है; अन्य समूह अप्रभावित रहते हैं। उन सत्रों के लिए अनुरोध दोहराएं। एक जॉब ऐसे समूह का स्वतः पुनः प्रयास करता है।\n- सूची की लंबाई पर कोई प्रलेखित सीमा नहीं है; साझा राइट रेट लिमिट (नीचे) ही व्यावहारिक सीमा है।\n\n**फ़ेस बायोमेट्रिक डेटा:** वैकल्पिक फ़ील्ड `retain_face_embeddings`, `face_retention_days`, `face_retention_deadline`, `deletion_instruction`, और `instruction_id` का वही अर्थ है जो `DELETE /v3/session/{sessionId}/delete/` पर है और ये प्रत्येक मेल खाने वाले सत्र पर लागू होते हैं। प्रत्येक परिणाम अपने स्वयं के `face_retention_outcome` की रिपोर्ट करता है।\n\n**रिस्पॉन्स:** अधिकतम 20 मेल खाने वाले सत्रों के लिए `results[]` के साथ `200 OK`, या अधिक के लिए विलोपन जॉब के साथ `202 Accepted`। प्रत्येक परिणाम विलोपन की पुष्टि करता है सिवाय `face_retention_outcome: failed_retryable` के, जो ऐसे सत्र की रिपोर्ट करता है जिसे हटाया नहीं गया था और जिसका पुनः प्रयास किया जाना चाहिए। इस endpoint के पुराने संस्करणों ने `204 No Content` लौटाया था; उन क्लाइंट्स को अपडेट करें जो `204` पर निर्भर हैं।\n\n**आइडेम्पोटेंसी:** वही अनुरोध दोहराने से कुछ भी अतिरिक्त नहीं हटता: वे संख्याएं जो अब किसी सत्र से मेल नहीं खाती हैं, उन्हें छोड़ दिया जाता है।\n\n**`delete_all: true` (विनाशकारी):** एप्लिकेशन में शेष **प्रत्येक** KYC सत्र को हटा देता है; सेट होने पर `session_numbers` को नज़रअंदाज़ कर दिया जाता है। इसमें कोई पुष्टिकरण चरण नहीं है और इसे पूर्ववत नहीं किया जा सकता।\n\n**प्रमाणीकरण:** `x-api-key` हेडर में API कुंजी। अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` (`{\"detail\": \"You do not have permission to perform this action.\"}`) लौटाते हैं; यह API कभी भी `401` नहीं लौटाता है।\n\n**रेट लिमिट:** सभी POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध/मिनट का साझा राइट बजट; इसे पार करने पर `429` प्राप्त होता है।\n\nयह endpoint केवल API कुंजियाँ स्वीकार करता है। Business Console उपयोगकर्ता Bearer टोकन को `403` के साथ अस्वीकार कर दिया जाता है (एकल-सत्र विलोपन के विपरीत, जो दोनों को स्वीकार करता है)।\n\n**दाखिल नियामक रिपोर्टें:** यदि चयनित डेटा किसी अंतिम रूप दी गई नियामक रिपोर्ट में है, तो पूरे अनुरोध को `409` के साथ अस्वीकार कर दिया जाता है और कुछ भी नहीं हटाया जाता है। बॉडी `code: in_filed_report` का उपयोग करती है और प्रत्येक रिपोर्ट को `uuid`, `report_number`, `report_type` और `case_uuid` के साथ निर्दिष्ट करती है। रिपोर्ट हटाएं, फिर अनुरोध दोहराएं।",
        "operationId": "batch_delete_sessions",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "batch_delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "session_numbers": {
                    "type": "array",
                    "description": "हटाए जाने वाले KYC सत्रों के संख्यात्मक `session_number` मान, केवल-अंक स्ट्रिंग के रूप में (JSON नंबर भी स्वीकार किए जाते हैं और ज़बरन बदले जाते हैं)। आवश्यक है जब तक कि `delete_all` `true` न हो; एक खाली सूची `400` लौटाती है। कोई भी गैर-अंक प्रविष्टि पूरे अनुरोध को `400` के साथ अस्वीकार कर देती है (जब तक कि `delete_all` `true` न हो, जिस स्थिति में सत्यापन छोड़ दिया जाता है और प्रविष्टियों को अनदेखा कर दिया जाता है)। वे नंबर जो आपके एप्लिकेशन में किसी लाइव सत्र से मेल नहीं खाते हैं, उन्हें चुपचाप छोड़ दिया जाता है।",
                    "items": {
                      "type": "string",
                      "pattern": "^[0-9]+$",
                      "example": "1001"
                    },
                    "minItems": 1,
                    "example": [
                      "1001",
                      "1002",
                      "1003"
                    ]
                  },
                  "delete_all": {
                    "type": "boolean",
                    "description": "जब `true` होता है, तो कॉलिंग एप्लिकेशन में प्रत्येक शेष KYC सत्र हटा दिया जाता है और `session_numbers` को अनदेखा कर दिया जाता है, जब तक कि आप `filter_*` कुंजियों के साथ चयन को सीमित न करें। 20 से अधिक मेल खाने वाले सत्र एक विलोपन जॉब (`202`) के रूप में चलते हैं जो केवल अनुरोध से पहले बनाए गए सत्रों को कवर करता है। डिफ़ॉल्ट रूप से `false` होता है। अपरिवर्तनीय; कोई पुष्टि चरण नहीं है।",
                    "default": false,
                    "example": false
                  },
                  "retain_face_embeddings": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "इस विलोपन के लिए एप्लिकेशन की `face_retention_policy` को ओवरराइड करें। `true` सत्र हटाए जाने के बाद सत्र के उपयोगकर्ता से जुड़े एक छवि-मुक्त चेहरे के बायोमेट्रिक टेम्पलेट को रखता है; `false` सत्र के साथ फ़ेस एम्बेडिंग को हटा देता है; एप्लिकेशन नीति का पालन करने के लिए छोड़ दें या `null` रखें। KYB सत्रों के लिए और बिना फ़ेस एम्बेडिंग वाले सत्रों के लिए अनदेखा किया जाता है।",
                    "example": true
                  },
                  "face_retention_days": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3650,
                    "description": "किसी बनाए रखे गए टेम्पलेट के लिए सीमित प्रतिधारण अवधि, दिनों में। जब कोई टेम्पलेट बनाए रखा जाता है तो यह आवश्यक होता है, जब तक कि एप्लिकेशन पहले से ही `face_retention_days` सेट न कर दे। टेम्पलेट की `expires_at` इस अवधि, एप्लिकेशन की सामान्य डेटा प्रतिधारण विंडो और `face_retention_deadline` में से जो सबसे पहले हो, वह होती है।",
                    "example": 365
                  },
                  "face_retention_deadline": {
                    "type": "string",
                    "format": "date-time",
                    "description": "प्रतिधारित टेम्पलेट के लिए वैकल्पिक हार्ड समाप्ति। भविष्य की होनी चाहिए।",
                    "example": "2027-08-28T00:00:00Z"
                  },
                  "deletion_instruction": {
                    "type": "string",
                    "enum": [
                      "operational_session_delete",
                      "privacy_erasure"
                    ],
                    "default": "operational_session_delete",
                    "description": "आपके द्वारा दिए जा रहे निर्देश का वर्ग। `operational_session_delete` सत्र को हटा देता है और केवल तभी टेम्पलेट को बनाए रखता है जब नीति या `retain_face_embeddings` ऐसा कहे। `privacy_erasure` सत्र को हटाने से पहले सत्र के उपयोगकर्ता से जुड़े प्रत्येक बनाए रखे गए बायोमेट्रिक टेम्पलेट को मिटा देता है, इसे एप्लिकेशन नीति द्वारा ओवरराइड नहीं किया जा सकता है, और इसे `retain_face_embeddings: true` (`400`) के साथ जोड़ा नहीं जा सकता है।",
                    "example": "operational_session_delete"
                  },
                  "instruction_id": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "इस विलोपन निर्देश के लिए आपका स्थायी संदर्भ (उदाहरण के लिए एक इरेज़र-टिकट id)। ऑडिट ट्रेल पर और किसी भी बनाए रखे गए टेम्पलेट पर रिकॉर्ड किया जाता है। छोड़ दिए जाने पर Didit द्वारा जनरेट किया जाता है।",
                    "example": "dsar-2026-0142"
                  },
                  "filter_status": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `status` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_vendor_data": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `vendor_data` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में जोड़ दिया जाता है, इसलिए कई मान विकल्पों के रूप में मेल नहीं खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string"
                  },
                  "filter_search": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `search` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में जोड़ दिया जाता है, इसलिए कई मान विकल्पों के रूप में मेल नहीं खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string"
                  },
                  "filter_workflow_id": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `workflow_id` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_date_from": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `date_from` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string",
                    "format": "date"
                  },
                  "filter_date_to": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `date_to` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string",
                    "format": "date"
                  },
                  "filter_country": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `country` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_document_type": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `document_type` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_document_name": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `document_name` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_region": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `region` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_didit_internal_id": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `didit_internal_id` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string",
                    "format": "uuid"
                  },
                  "filter_session_type": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `session_type` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_api_service": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `api_service` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string"
                  },
                  "filter_screened_full_name": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `screened_full_name` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को एक अल्पविराम से अलग किए गए टेक्स्ट में जोड़ दिया जाता है, इसलिए कई मान विकल्पों के रूप में मेल नहीं खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string"
                  },
                  "filter_warning": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `warning` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "filter_status_initialized_as_in_review": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `status_initialized_as_in_review` फ़िल्टर से मेल खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "boolean"
                  },
                  "filter_is_kyc_to_be_reviewed": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `is_kyc_to_be_reviewed` फ़िल्टर से मेल खाते हैं। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "boolean"
                  },
                  "filter_euuid": {
                    "description": "`delete_all` को उन्हीं सत्रों तक सीमित करता है जो समान मान के साथ [List Sessions](/hi/sessions-api/list-sessions) के `euuid` फ़िल्टर से मेल खाते हैं। एक मान, कोई सूची नहीं: एक ऐरे को अल्पविराम से अलग किए गए एक मान में जोड़ा जाता है, इसलिए कई मानों को `400` के साथ अस्वीकार कर दिया जाता है। `delete_all` के बिना अनदेखा किया जाता है। खाली मान को अनदेखा किया जाता है और यह चयन को सीमित नहीं करता है।",
                    "type": "string",
                    "format": "uuid"
                  },
                  "filter_organization_name": {
                    "description": "`delete_all` को उन सत्रों तक सीमित करता है जो समान मानों के साथ [List Sessions](/hi/sessions-api/list-sessions) के `organization_name` फ़िल्टर से मेल खाते हैं। अल्पविराम से अलग की गई स्ट्रिंग या एक ऐरे। API कुंजी के साथ यह केवल आपके अपने संगठन के नाम से मेल खा सकता है, इसलिए यह आपके सभी सत्रों का चयन करता है या किसी का भी नहीं। `delete_all` के बिना अनदेखा किया जाता है। रिक्त मान को अनदेखा कर दिया जाता है और यह चयन को सीमित नहीं करता है।",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  }
                }
              },
              "examples": {
                "Specific sessions": {
                  "summary": "संख्या द्वारा विशिष्ट सत्र हटाएं",
                  "value": {
                    "session_numbers": [
                      "1001",
                      "1002",
                      "1003"
                    ]
                  }
                },
                "All sessions": {
                  "summary": "एप्लिकेशन में प्रत्येक KYC सत्र को हटाएं",
                  "value": {
                    "delete_all": true
                  }
                },
                "Delete and retain templates": {
                  "summary": "सत्र हटाएं लेकिन 365 दिनों के लिए छवि-मुक्त बायोमेट्रिक टेम्पलेट रखें",
                  "value": {
                    "session_numbers": [
                      "1001",
                      "1002"
                    ],
                    "retain_face_embeddings": true,
                    "face_retention_days": 365,
                    "instruction_id": "post-approval-cleanup-2026-08"
                  }
                },
                "Privacy erasure": {
                  "summary": "सत्र हटाएं और उनके उपयोगकर्ताओं के लिए प्रत्येक बनाए रखे गए टेम्पलेट को पूरी तरह हटाएं",
                  "value": {
                    "session_numbers": [
                      "1001"
                    ],
                    "deletion_instruction": "privacy_erasure",
                    "instruction_id": "dsar-2026-0142"
                  }
                },
                "Filtered delete_all": {
                  "summary": "सितंबर 2026 में बनाए गए एक वर्कफ़्लो के प्रत्येक अस्वीकृत सत्र को हटाएं",
                  "value": {
                    "delete_all": true,
                    "filter_status": [
                      "Declined"
                    ],
                    "filter_workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                    "filter_date_from": "2026-09-01",
                    "filter_date_to": "2026-09-30"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "अनुरोध में अधिकतम 20 सत्र मेल खाए और प्रोसेस किए गए। प्रति मेल खाने वाले सत्र के लिए एक परिणाम; जो संख्याएँ किसी से मेल नहीं खाती हैं (अज्ञात या पहले ही हटाई जा चुकी हैं) उन्हें छोड़ दिया जाता है और वे दिखाई नहीं देती हैं। परिणाम हटाए जाने की पुष्टि करता है, सिवाय इसके कि जब `face_retention_outcome` `failed_retryable` हो: वह सत्र हटाया नहीं गया था और उसका पुनः प्रयास किया जाना चाहिए।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "session_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "हटाया गया सत्र।"
                          },
                          "session_number": {
                            "type": "integer",
                            "nullable": true,
                            "description": "हटाए गए सत्र की संख्या।"
                          },
                          "face_retention_outcome": {
                            "type": "string",
                            "enum": [
                              "retained_with_user",
                              "deleted",
                              "none",
                              "ineligible_no_vendor_user",
                              "failed_retryable"
                            ],
                            "description": "सत्र के फ़ेस बायोमेट्रिक डेटा के साथ क्या हुआ। `deleted`: सत्र के साथ फ़ेस एम्बेडिंग हटा दी गई थी (डिफ़ॉल्ट)। `retained_with_user`: सत्र हटा दिया गया है और एक छवि-मुक्त बायोमेट्रिक टेम्पलेट उपयोगकर्ता से जुड़ा रहता है; `biometric_template_uuid` देखें। `none`: सत्र में कोई फ़ेस एम्बेडिंग नहीं थी (उदाहरण के लिए लाइवनेस सेल्फ़ी के बिना केवल-दस्तावेज़ KYC सत्र; KYB सत्र इस endpoint द्वारा कभी नहीं चुने जाते हैं)। `ineligible_no_vendor_user`: प्रतिधारण का अनुरोध किया गया था लेकिन सत्र में कोई लिंक किया गया उपयोगकर्ता नहीं है, इसलिए एम्बेडिंग सत्र के साथ हटा दी गई थी। `failed_retryable` (केवल बैच endpoint): जिस समूह के साथ यह सत्र हटाया गया था उसे हटाया नहीं जा सका (एक स्टोरेज सेवा, एक बायोमेट्रिक स्टोर, या एक निगरानी प्रदाता अनुपलब्ध था); यह सत्र अभी भी बना हुआ है, इसके लिए अनुरोध पुनः दोहराएं।"
                          },
                          "biometric_template_uuid": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "जब `face_retention_outcome`, `retained_with_user` हो, तब प्रतिधारित बायोमेट्रिक टेम्पलेट का Id; अन्यथा `null`। इसे `/v3/biometric-templates/{template_uuid}/` के माध्यम से प्रबंधित करें।"
                          },
                          "biometric_template_expires_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "प्रतिधारित बायोमेट्रिक टेम्पलेट कब हटाया जाता है, जब `face_retention_outcome`, `retained_with_user` हो; कोई टेम्पलेट प्रतिधारित न होने पर `null`।"
                          },
                          "deleted_child_verifications": {
                            "type": "integer",
                            "description": "इस endpoint पर हमेशा `0`, जो केवल KYC सत्रों को हटाता है। `DELETE /v3/session/{sessionId}/delete/` के साथ व्यवसाय सत्यापन (KYB) सत्र को हटाने पर इसके द्वारा बनाए गए उन सत्यापनों की रिपोर्ट मिलती है जिन्हें इसके साथ हटाया गया था।"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Mixed outcomes": {
                    "value": {
                      "results": [
                        {
                          "session_id": "4c5c7f3a-3b1d-4b7e-9c39-2b4f7e6a1d02",
                          "session_number": 1001,
                          "face_retention_outcome": "deleted",
                          "biometric_template_uuid": null,
                          "biometric_template_expires_at": null,
                          "deleted_child_verifications": 0
                        },
                        {
                          "session_id": "b8e1d2c3-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
                          "session_number": 1002,
                          "face_retention_outcome": "retained_with_user",
                          "biometric_template_uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                          "biometric_template_expires_at": "2027-10-09T10:15:00Z",
                          "deleted_child_verifications": 0
                        },
                        {
                          "session_id": "7a1e9c2d-5f4b-4c3a-8e2d-1b0a9f8e7d6c",
                          "session_number": 1003,
                          "face_retention_outcome": "ineligible_no_vendor_user",
                          "biometric_template_uuid": null,
                          "biometric_template_expires_at": null,
                          "deleted_child_verifications": 0
                        },
                        {
                          "session_id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
                          "session_number": 1004,
                          "face_retention_outcome": "failed_retryable",
                          "biometric_template_uuid": null,
                          "biometric_template_expires_at": null,
                          "deleted_child_verifications": 0
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "202": {
            "description": "20 से अधिक सत्र मेल खाए। उन्हें बैकग्राउंड में हटा दिया जाता है; `GET /v3/sessions/delete/{job_id}/` को तब तक पोल करें जब तक `status` `COMPLETED` या `FAILED` न हो जाए।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDeletionJob"
                },
                "examples": {
                  "Job accepted": {
                    "value": {
                      "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
                      "status": "PENDING",
                      "total": 250,
                      "processed": 0,
                      "outcomes": {
                        "deleted": 0,
                        "none": 0,
                        "retained_with_user": 0,
                        "ineligible_no_vendor_user": 0,
                        "failed_retryable": 0,
                        "already_deleted": 0
                      },
                      "deleted_child_verifications": 0,
                      "error": null,
                      "created_at": "2026-10-09T10:15:00Z",
                      "completed_at": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — कुछ भी हटाया नहीं गया था। त्रुटि मान फ़ील्ड नाम के आधार पर कुंजीबद्ध संदेश स्ट्रिंग्स के ऐरे हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session_numbers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": {
                    "description": "अन्य कुंजियाँ: एक `filter_*` कुंजी जो List Sessions फ़िल्टर नहीं है (`\"Unknown filter.\"`), या एक `filter_*` कुंजी जिसका मान पढ़ा नहीं जा सकता है (उस `filter_*` कुंजी के आधार पर, संदेशों के एक array के साथ)।"
                  }
                },
                "examples": {
                  "Missing selector": {
                    "summary": "न तो session_numbers और न ही delete_all प्रदान किया गया",
                    "value": {
                      "session_numbers": [
                        "This field is required unless delete_all is true."
                      ]
                    }
                  },
                  "Empty list": {
                    "summary": "session_numbers एक खाली ऐरे है",
                    "value": {
                      "session_numbers": [
                        "This list may not be empty."
                      ]
                    }
                  },
                  "Non-numeric entry": {
                    "summary": "session_numbers में एक गैर-अंकीय स्ट्रिंग शामिल है",
                    "value": {
                      "session_numbers": [
                        "All session_numbers must be numeric."
                      ]
                    }
                  },
                  "Privacy erasure cannot retain": {
                    "summary": "deletion_instruction privacy_erasure के साथ retain_face_embeddings true जुड़ा हुआ है",
                    "value": {
                      "retain_face_embeddings": [
                        "Privacy erasure cannot retain biometric templates."
                      ]
                    }
                  },
                  "No finite retention duration": {
                    "summary": "अनुरोध या एप्लिकेशन पर face_retention_days के बिना प्रतिधारण का अनुरोध किया गया",
                    "value": {
                      "detail": "A finite biometric-template retention duration is required."
                    }
                  },
                  "Unknown filter": {
                    "summary": "एक filter_* कुंजी जो List Sessions में नहीं है",
                    "value": {
                      "filter_reviewer": "Unknown filter."
                    }
                  },
                  "Unreadable filter value": {
                    "summary": "एक फ़िल्टर मान जिसे पढ़ा नहीं जा सकता",
                    "value": {
                      "filter_date_from": [
                        "Enter a valid date."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी मौजूद नहीं है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी अमान्य है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "साझा राइट रेट लिमिट पार हो गई (प्रति API कुंजी प्रति मिनट 300 POST/PATCH/DELETE अनुरोध)। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "लेखन बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "एक चयनित सत्र अंतिम रूप दी गई नियामक रिपोर्ट का हिस्सा है। कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InFiledReportError"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/sessions/delete/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"session_numbers\": [\"1001\", \"1002\", \"1003\"]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.batch_delete(\n    session_numbers=[\"1001\", \"1002\", \"1003\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.batchDelete({\n  session_numbers: [\"1001\", \"1002\", \"1003\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.BatchDelete(ctx, didit.SessionsBatchDeleteParams{\n\tSessionNumbers: didit.Some([]string{\"1001\", \"1002\", \"1003\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SessionsBatchDeleteParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().batchDelete(SessionsBatchDeleteParams.builder()\n        .sessionNumbers(List.of(\"1001\", \"1002\", \"1003\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->batchDelete([\n    'session_numbers' => ['1001', '1002', '1003'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.batch_delete(session_numbers: [\"1001\", \"1002\", \"1003\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.BatchDeleteAsync(new SessionsBatchDeleteParams\n{\n    SessionNumbers = new string[] { \"1001\", \"1002\", \"1003\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/sessions/delete/{job_id}/": {
      "get": {
        "summary": "सत्रों के सामूहिक विलोपन का कार्य प्राप्त करें",
        "description": "बल्क सत्र विलोपन की प्रगति जिसे `POST /v3/sessions/delete/` ने `202` के साथ उत्तर दिया था (`session_numbers` द्वारा या `delete_all` के साथ चुने गए 20 से अधिक मिलान वाले सत्र)। जब `status` `PENDING` या `PROCESSING` हो, तो हर कुछ सेकंड में पोल करें; जब यह `COMPLETED` या `FAILED` हो जाए तो रुकें।\n\nजॉब यह रिपोर्ट करता है कि प्रत्येक परिणाम में कितने सत्र समाप्त हुए और इसने कितनों को संसाधित किया है, यह कभी नहीं बताता कि इसने किन सत्रों को हटाया है। एक `FAILED` जॉब `error` में कारण बताती है; जिन सत्रों तक यह नहीं पहुंची थी वे अभी भी बने हुए हैं, इसलिए उन्हें हटाने के लिए विलोपन अनुरोध को दोहराएं।\n\n**प्रमाणीकरण:** `x-api-key` हेडर में API कुंजी। एक जॉब केवल उसी एप्लिकेशन को दिखाई देती है जिसने इसे बनाया है; कोई अन्य `job_id` `404` लौटाता है। अनुपलब्ध या अमान्य क्रेडेंशियल्स `403` लौटाते हैं; यह API कभी भी `401` नहीं लौटाती है।",
        "operationId": "get_session_deletion_job",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "retrieve_deletion_job",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "`POST /v3/sessions/delete/` से `202` के साथ लौटाया गया `job_id`।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl 'https://verification.didit.me/v3/sessions/delete/JOB_ID/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.retrieve_deletion_job(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.retrieveDeletionJob(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RetrieveDeletionJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().retrieveDeletionJob(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->retrieveDeletionJob('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.retrieve_deletion_job(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.RetrieveDeletionJobAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionDeletionJob"
                },
                "examples": {
                  "Processing": {
                    "value": {
                      "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
                      "status": "PROCESSING",
                      "total": 250,
                      "processed": 100,
                      "outcomes": {
                        "deleted": 82,
                        "none": 18,
                        "retained_with_user": 0,
                        "ineligible_no_vendor_user": 0,
                        "failed_retryable": 0,
                        "already_deleted": 0
                      },
                      "deleted_child_verifications": 0,
                      "error": null,
                      "created_at": "2026-10-09T10:15:00Z",
                      "completed_at": null
                    }
                  },
                  "Completed": {
                    "value": {
                      "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
                      "status": "COMPLETED",
                      "total": 250,
                      "processed": 250,
                      "outcomes": {
                        "deleted": 204,
                        "none": 44,
                        "retained_with_user": 0,
                        "ineligible_no_vendor_user": 0,
                        "failed_retryable": 0,
                        "already_deleted": 2
                      },
                      "deleted_child_verifications": 0,
                      "error": null,
                      "created_at": "2026-10-09T10:15:00Z",
                      "completed_at": "2026-10-09T10:16:40Z"
                    }
                  },
                  "Failed": {
                    "value": {
                      "job_id": "5b8f2c1e-7d3a-4f6b-9e2c-1a0d8f7e6c5b",
                      "status": "FAILED",
                      "total": 250,
                      "processed": 100,
                      "outcomes": {
                        "deleted": 82,
                        "none": 18,
                        "retained_with_user": 0,
                        "ineligible_no_vendor_user": 0,
                        "failed_retryable": 0,
                        "already_deleted": 0
                      },
                      "deleted_child_verifications": 0,
                      "error": "The deletion stopped before it finished. The sessions it had not reached are still in place; repeat the request to delete them.",
                      "created_at": "2026-10-09T10:15:00Z",
                      "completed_at": "2026-10-09T10:15:52Z"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी मौजूद नहीं है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी अमान्य है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "कॉल करने वाले एप्लिकेशन के लिए इस `job_id` वाला कोई विलोपन जॉब मौजूद नहीं है। जॉब केवल उसी एप्लिकेशन को दिखाई देते हैं जिसने उन्हें बनाया है।"
          }
        }
      }
    },
    "/v3/sessions/{session_id}/reviews/": {
      "get": {
        "summary": "सत्र समीक्षाएं और गतिविधि लॉग सूचीबद्ध करें",
        "description": "उपयोगकर्ता सत्यापन (KYC) सत्र के लिए ऑडिट ट्रेल / गतिविधि फ़ीड लौटाएं, नवीनतम पहले, एक पेजिनेटेड एनवेलप में (`count` / `next` / `previous` / `results`, डिफ़ॉल्ट रूप से प्रति पेज 50 प्रविष्टियां)।\n\nफ़ीड प्रविष्टियां सत्र के साथ इंटरैक्ट करने वाले प्रत्येक कर्ता द्वारा लिखी जाती हैं: `PATCH /v3/session/{session_id}/update-status/` के माध्यम से लिए गए मैन्युअल निर्णय (जो `previous_status` → `new_status` रिकॉर्ड करता है), Console समीक्षक गतिविधि (`@email` मेंशन वाले कमेंट्स, KYC/POA डेटा संपादन, फ़ाइल अपलोड/हटाना, टैग परिवर्तन, विवरण-पेज दृश्य), सतत AML निगरानी मिलान, और इसी पाथ पर `POST` के माध्यम से जोड़े गए नोट्स। इस फ़ीड को पढ़ना Didit Console सत्र दृश्य में **Activity** पैनल के API-पक्ष के समकक्ष है।\n\nयहाँ केवल उपयोगकर्ता सत्यापन (KYC) सत्रों को ही संबोधित किया जा सकता है; व्यवसाय सत्यापन (KYB) सत्र ID `404` लौटाते हैं।",
        "operationId": "list_session_reviews",
        "x-didit-sdk": {
          "resource": "sessions.reviews",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) सत्र का UUID। यह API कुंजी के समान एप्लिकेशन से संबंधित होना चाहिए — क्रॉस-एप्लिकेशन UUID, हटाए गए सत्र और व्यवसाय सत्यापन (KYB) सत्र ID सभी `404` लौटाते हैं।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "पेज का आकार। डिफ़ॉल्ट `50` है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "example": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "(क्रमबद्ध) फ़ीड की शुरुआत से छोड़ी जाने वाली प्रविष्टियों की संख्या। डिफ़ॉल्ट `0` है। रिस्पॉन्स में `next` / `previous` URL फ़ीड को देखने के लिए सही मान ले जाते हैं।",
            "schema": {
              "type": "integer",
              "default": 0,
              "example": 0
            }
          },
          {
            "name": "ordering",
            "in": "query",
            "required": false,
            "description": "सॉर्ट क्रम। फ़ीड डिफ़ॉल्ट रूप से सबसे नए पहले (`-created_at`) पर सेट होता है; इसे सबसे पुराने पहले पढ़ने के लिए `created_at` पास करें। अज्ञात मानों को चुपचाप अनदेखा कर दिया जाता है (डिफ़ॉल्ट क्रम का उपयोग किया जाता है); अन्य सीरियलाइज़र फ़ील्ड नाम भी स्वीकार किए जाते हैं।",
            "schema": {
              "type": "string",
              "default": "-created_at",
              "example": "created_at"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड गतिविधि फ़ीड, डिफ़ॉल्ट रूप से नवीनतम पहले। `count` प्रविष्टियों की कुल संख्या है; `next` / `previous` तैयार पेज URL हैं (सिरों पर `null`)। खाली `results` के साथ `0` का `count` दर्शाता है कि अभी तक कोई गतिविधि रिकॉर्ड नहीं की गई है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "इस सत्र के लिए फ़ीड प्रविष्टियों की कुल संख्या (सभी पेजों पर)।",
                      "example": 3
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का URL, या अंतिम पेज पर `null`।",
                      "example": null
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का URL, या पहले पेज पर `null`।",
                      "example": null
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReviewItem"
                      },
                      "description": "इस पेज के लिए फ़ीड प्रविष्टियाँ।"
                    }
                  }
                },
                "examples": {
                  "DecisionTrail": {
                    "summary": "मैन्युअल स्वीकृति और API द्वारा जोड़े गए नोट्स",
                    "value": {
                      "count": 3,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "de0561bc-5583-4409-9171-1a31a4c8a5f4",
                          "activity_type": "STATUS_UPDATED",
                          "actor_display": "API Client",
                          "actor_email": null,
                          "actor_type": "API_KEY",
                          "new_status": "Approved",
                          "previous_status": "In Review",
                          "comment": "Document re-checked manually; address matches.",
                          "mentioned_emails": [],
                          "previous_value": {
                            "status": "In Review"
                          },
                          "new_value": {
                            "status": "Approved"
                          },
                          "changed_fields": [
                            "status"
                          ],
                          "metadata": null,
                          "created_at": "2026-06-12T00:19:31.918735Z"
                        },
                        {
                          "uuid": "35370f58-5098-44ee-8a06-8c9af80b2455",
                          "activity_type": "STATUS_UPDATED",
                          "actor_display": "Unknown",
                          "actor_email": null,
                          "actor_type": "CONSOLE_USER",
                          "new_status": null,
                          "previous_status": null,
                          "comment": "Note without status.",
                          "mentioned_emails": [],
                          "previous_value": null,
                          "new_value": null,
                          "changed_fields": [],
                          "metadata": null,
                          "created_at": "2026-06-12T00:18:44.504157Z"
                        },
                        {
                          "uuid": "00338f82-f1c5-4f57-8614-c49bb258af1a",
                          "activity_type": "STATUS_UPDATED",
                          "actor_display": "Unknown",
                          "actor_email": null,
                          "actor_type": "CONSOLE_USER",
                          "new_status": "In Review",
                          "previous_status": null,
                          "comment": "Flagging for manual document re-check.",
                          "mentioned_emails": [],
                          "previous_value": null,
                          "new_value": null,
                          "changed_fields": [],
                          "metadata": null,
                          "created_at": "2026-06-12T00:18:44.466537Z"
                        }
                      ]
                    }
                  },
                  "PaginatedFirstPage": {
                    "summary": "limit=2 वाला पहला पृष्ठ — next में फ़ॉलो-अप URL होता है",
                    "value": {
                      "count": 4,
                      "next": "https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/?limit=2&offset=2",
                      "previous": null,
                      "results": [
                        {
                          "uuid": "de0561bc-5583-4409-9171-1a31a4c8a5f4",
                          "activity_type": "STATUS_UPDATED",
                          "actor_display": "API Client",
                          "actor_email": null,
                          "actor_type": "API_KEY",
                          "new_status": "Approved",
                          "previous_status": "In Review",
                          "comment": "Document re-checked manually; address matches.",
                          "mentioned_emails": [],
                          "previous_value": {
                            "status": "In Review"
                          },
                          "new_value": {
                            "status": "Approved"
                          },
                          "changed_fields": [
                            "status"
                          ],
                          "metadata": null,
                          "created_at": "2026-06-12T00:19:31.918735Z"
                        },
                        {
                          "uuid": "bd4e6227-bdd2-42b2-a726-1d12f785a457",
                          "activity_type": "STATUS_UPDATED",
                          "actor_display": "Unknown",
                          "actor_email": null,
                          "actor_type": "CONSOLE_USER",
                          "new_status": null,
                          "previous_status": null,
                          "comment": null,
                          "mentioned_emails": [],
                          "previous_value": null,
                          "new_value": null,
                          "changed_fields": [],
                          "metadata": null,
                          "created_at": "2026-06-12T00:18:44.540238Z"
                        }
                      ]
                    }
                  },
                  "Empty": {
                    "summary": "सत्र जिसमें अभी तक कोई गतिविधि दर्ज नहीं की गई है",
                    "value": {
                      "count": 0,
                      "next": null,
                      "previous": null,
                      "results": []
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` अनुपलब्ध, विकृत, समय-सीमा समाप्त या निरस्त है। सत्र लुकअप से पहले प्रमाणीकरण की जाँच की जाती है, इसलिए सत्र UUID मौजूद न होने पर भी अनुपलब्ध कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "You do not have permission to perform this action."
                    }
                  }
                },
                "examples": {
                  "InvalidKey": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key हेडर",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस UUID वाला कोई उपयोगकर्ता सत्यापन (KYC) सत्र आपके एप्लिकेशन को दिखाई नहीं दे रहा है: UUID मौजूद नहीं है, सत्र हटा दिया गया था, या यह किसी भिन्न एप्लिकेशन से संबंधित है। व्यवसाय सत्यापन (KYB) सत्र ID भी यहाँ `404` लौटाती हैं — समीक्षा फ़ीड केवल KYC सत्रों के लिए ही पता योग्य है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "Session not found."
                    }
                  }
                },
                "examples": {
                  "NotFound": {
                    "summary": "अज्ञात, हटाया गया, या क्रॉस-एप्लिकेशन सत्र UUID",
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें। [रेट लिमिटिंग](/hi/integration/rate-limiting) देखें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -s 'https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.sessions.reviews.list(\n    \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.sessions.reviews.list(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.Reviews.ListAutoPaging(ctx, \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", didit.SessionsReviewsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.sessions().reviews().list(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->sessions->reviews->list('8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.reviews.list(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Sessions.Reviews.ListAsync(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "सत्र के ऑडिट ट्रेल में एक समीक्षा नोट जोड़ें",
        "description": "उपयोगकर्ता सत्यापन (KYC) सत्र के समीक्षा / गतिविधि फ़ीड में एक नोट जोड़ें। **यह endpoint केवल एक प्रविष्टि रिकॉर्ड करता है — यह कभी भी सत्र को नहीं बदलता है।** सत्र का `status` अपरिवर्तित रहता है, कोई स्थिति-परिवर्तन सत्यापन नहीं चलता है, और कोई webhook ट्रिगर नहीं होता है। किसी सत्र को वास्तव में स्वीकृत, अस्वीकृत या पुनः खोलने के लिए (जो इस फ़ीड में पूर्ण-एट्रिब्यूशन वाली `STATUS_UPDATED` प्रविष्टि भी लिखता है), इसके बजाय `PATCH /v3/session/{session_id}/update-status/` का उपयोग करें।\n\nदोनों बॉडी फ़ील्ड वैकल्पिक हैं और एक खाली JSON ऑब्जेक्ट स्वीकार किया जाता है। `new_status` को प्रविष्टि पर केवल एक लेबल के रूप में संग्रहीत किया जाता है और यह सत्र की दस स्थिति मानों में से किसी को भी स्वीकार करता है (केस-संवेदनशील)। `comment` के अंदर `@email` मेंशन केवल सादे पाठ के रूप में संग्रहीत होते हैं — वे इस endpoint पर कोई सूचना ट्रिगर नहीं करते हैं, और प्रविष्टि का `mentioned_emails` खाली रहता है।\n\nएट्रिब्यूशन पर नोट: यहाँ बनाई गई प्रविष्टियों में कोई कर्ता (actor) जानकारी नहीं होती है। फ़ीड में वे `actor_display: \"Unknown\"`, `actor_type: \"CONSOLE_USER\"`, और `activity_type: \"STATUS_UPDATED\"` (स्टोरेज डिफ़ॉल्ट) दिखाते हैं, और `201` बॉडी का `user` फ़ील्ड `\"Unknown\"` होता है।",
        "operationId": "create_session_review",
        "x-didit-sdk": {
          "resource": "sessions.reviews",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "Content-Type",
            "in": "header",
            "required": false,
            "description": "JSON बॉडी भेजते समय `application/json` पर सेट करें।",
            "schema": {
              "type": "string",
              "example": "application/json"
            }
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) सत्र का UUID। यह API कुंजी के समान एप्लिकेशन से संबंधित होना चाहिए — क्रॉस-एप्लिकेशन UUID, हटाए गए सत्र और व्यवसाय सत्यापन (KYB) सत्र ID सभी `404` लौटाते हैं।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "new_status": {
                    "type": "string",
                    "nullable": true,
                    "enum": [
                      "Not Started",
                      "In Progress",
                      "Approved",
                      "Declined",
                      "In Review",
                      "Expired",
                      "Abandoned",
                      "Kyc Expired",
                      "Resubmitted",
                      "Awaiting User"
                    ],
                    "description": "प्रविष्टि पर रिकॉर्ड करने के लिए वैकल्पिक स्थिति लेबल। सत्र स्थिति का कोई भी मान स्वीकार करता है, केस-संवेदी (`\"approved\"` को `400` के साथ अस्वीकार कर दिया जाता है)। यहाँ स्थिति रिकॉर्ड करने से सत्र की वास्तविक स्थिति **नहीं** बदलती है — इसके लिए update-status endpoint का उपयोग करें।",
                    "example": "In Review"
                  },
                  "comment": {
                    "type": "string",
                    "nullable": true,
                    "description": "वैकल्पिक फ़्री-टेक्स्ट नोट (कोई बाध्यकारी लंबाई सीमा नहीं)। जैसा है वैसा ही संग्रहीत; इस endpoint पर `@email` मेंशन संसाधित नहीं होते हैं।",
                    "example": "Flagging for manual document re-check."
                  }
                }
              },
              "examples": {
                "NoteWithStatusLabel": {
                  "summary": "स्थिति लेबल वाला नोट (सत्र स्थिति अपरिवर्तित)",
                  "value": {
                    "new_status": "In Review",
                    "comment": "Flagging for manual document re-check."
                  }
                },
                "CommentOnly": {
                  "summary": "बिना स्थिति लेबल वाला सादा नोट",
                  "value": {
                    "comment": "Customer emailed an updated utility bill; awaiting upload."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "सत्र के ऑडिट लॉग पर दर्ज की गई प्रविष्टि। सत्र स्वयं अपरिवर्तित रहता है — इसकी `status` अपना पिछला मान बनाए रखती है और कोई webhook नहीं भेजा जाता है। नई प्रविष्टि `GET …/reviews/` के शीर्ष पर भी दिखाई देती है (`actor_display: \"Unknown\"` के साथ)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "user": {
                      "type": "string",
                      "description": "एंट्री के लेखक का डिस्प्ले नाम। इस endpoint के माध्यम से बनाई गई प्रविष्टियों के लिए हमेशा `\"Unknown\"`, क्योंकि यह कोई कर्ता एट्रिब्यूशन रिकॉर्ड नहीं करता है।",
                      "example": "Unknown"
                    },
                    "new_status": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "Not Started",
                        "In Progress",
                        "Approved",
                        "Declined",
                        "In Review",
                        "Expired",
                        "Abandoned",
                        "Kyc Expired",
                        "Resubmitted",
                        "Awaiting User"
                      ],
                      "description": "प्रविष्टि पर दर्ज स्थिति लेबल, या कोई नहीं भेजे जाने पर `null`। सत्र की वास्तविक स्थिति प्रभावित नहीं होती है।",
                      "example": "In Review"
                    },
                    "comment": {
                      "type": "string",
                      "nullable": true,
                      "description": "एंट्री पर रिकॉर्ड किया गया नोट, या यदि कोई नहीं भेजा गया था तो `null`।",
                      "example": "Flagging for manual document re-check."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "जब प्रविष्टि लिखी गई थी, ISO 8601 UTC।",
                      "example": "2026-06-12T00:18:44.466537Z"
                    }
                  }
                },
                "examples": {
                  "NoteWithStatusLabel": {
                    "summary": "स्थिति लेबल वाला नोट",
                    "value": {
                      "user": "Unknown",
                      "new_status": "In Review",
                      "comment": "Flagging for manual document re-check.",
                      "created_at": "2026-06-12T00:18:44.466537Z"
                    }
                  },
                  "CommentOnly": {
                    "summary": "सादा नोट",
                    "value": {
                      "user": "Unknown",
                      "new_status": null,
                      "comment": "Note without status.",
                      "created_at": "2026-06-12T00:18:44.504157Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि, संदेशों के प्रति-फ़ील्ड मैप के रूप में लौटाई जाती है। सामान्य कारण एक `new_status` मान है जो दस अनुमत स्थितियों में से एक नहीं है — यह जांच केस-संवेदनशील (case-sensitive) है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "new_status": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "\"approved\" is not a valid choice."
                      ]
                    }
                  }
                },
                "examples": {
                  "InvalidStatusChoice": {
                    "summary": "लोअरकेस / अज्ञात स्थिति मान",
                    "value": {
                      "new_status": [
                        "\"approved\" is not a valid choice."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` अनुपलब्ध, विकृत, समय-सीमा समाप्त या निरस्त है। सत्र लुकअप से पहले प्रमाणीकरण की जाँच की जाती है, इसलिए सत्र UUID मौजूद न होने पर भी अनुपलब्ध कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "You do not have permission to perform this action."
                    }
                  }
                },
                "examples": {
                  "InvalidKey": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key हेडर",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस UUID वाला कोई उपयोगकर्ता सत्यापन (KYC) सत्र आपके एप्लिकेशन को दिखाई नहीं दे रहा है: UUID मौजूद नहीं है, सत्र हटा दिया गया था, या यह किसी भिन्न एप्लिकेशन से संबंधित है। व्यवसाय सत्यापन (KYB) सत्र ID भी यहाँ `404` लौटाती हैं — समीक्षा फ़ीड केवल KYC सत्रों के लिए ही पता योग्य है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "example": "Session not found."
                    }
                  }
                },
                "examples": {
                  "NotFound": {
                    "summary": "अज्ञात, हटाया गया, या क्रॉस-एप्लिकेशन सत्र UUID",
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें। [रेट लिमिटिंग](/hi/integration/rate-limiting) देखें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "# Records an audit-trail note only -- the session's status does NOT change.\ncurl -s -X POST https://verification.didit.me/v3/sessions/8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d/reviews/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"new_status\": \"In Review\",\n    \"comment\": \"Flagging for manual document re-check.\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.reviews.create(\n    \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\",\n    new_status=\"In Review\",\n    comment=\"Flagging for manual document re-check.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.reviews.create(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", {\n  new_status: \"In Review\",\n  comment: \"Flagging for manual document re-check.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Reviews.Create(ctx, \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", didit.SessionsReviewsCreateParams{\n\tNewStatus: didit.Some(didit.SessionsReviewsCreateParamsNewStatus(\"In Review\")),\n\tComment:   didit.String(\"Flagging for manual document re-check.\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsReviewsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().reviews().create(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", SessionsReviewsCreateParams.builder()\n        .newStatus(SessionsReviewsCreateParams.NewStatus.of(\"In Review\"))\n        .comment(\"Flagging for manual document re-check.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->reviews->create('8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d', [\n    'new_status' => 'In Review',\n    'comment' => 'Flagging for manual document re-check.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.reviews.create(\n  \"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\",\n  new_status: \"In Review\",\n  comment: \"Flagging for manual document re-check.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Reviews.CreateAsync(\"8c2f3a14-7e9b-4d23-9e83-3f7d5e8a1c6d\", new SessionsReviewsCreateParams\n{\n    NewStatus = new SessionsReviewsCreateParamsNewStatus(\"In Review\"),\n    Comment = \"Flagging for manual document re-check.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/billing/balance/": {
      "get": {
        "summary": "क्रेडिट बैलेंस प्राप्त करें",
        "description": "USD में वर्तमान प्री-पेड क्रेडिट बैलेंस (संगठन-व्यापी) और ऑटो-रिफिल कॉन्फ़िगरेशन प्राप्त करें। राशियाँ दशमलव स्ट्रिंग हैं — दशमलव लाइब्रेरी के साथ पार्स करें।",
        "operationId": "get_billing_balance",
        "x-didit-sdk": {
          "resource": "billing",
          "method": "retrieve_balance",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Billing"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/billing/balance/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.billing.retrieve_balance()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.billing.retrieveBalance();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Billing.RetrieveBalance(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.billing().retrieveBalance();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->billing->retrieveBalance();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.billing.retrieve_balance\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Billing.RetrieveBalanceAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वर्तमान क्रेडिट बैलेंस और संगठन का ऑटो-रीफ़िल कॉन्फ़िगरेशन।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "balance",
                    "auto_refill_enabled"
                  ],
                  "properties": {
                    "balance": {
                      "type": "string",
                      "description": "USD में वर्तमान प्रीपेड क्रेडिट बैलेंस, एक फ़िक्स्ड-पॉइंट दशमलव स्ट्रिंग के रूप में। सत्यापनों के लिए बिल बनने पर घटता है और टॉप अप सेटल होने पर बढ़ता है।"
                    },
                    "auto_refill_enabled": {
                      "type": "boolean",
                      "description": "जब `true` होता है, तो बैलेंस द्वारा `auto_refill_threshold` पार करने पर Didit क्रेडिट जोड़ने के लिए सहेजे गए भुगतान माध्यम से स्वचालित रूप से शुल्क लेगा। कंसोल → बिलिंग से कॉन्फ़िगर किया जाता है।"
                    },
                    "auto_refill_amount": {
                      "type": "string",
                      "nullable": true,
                      "description": "प्रत्येक ऑटो-रीफ़िल पर अंकित मूल्य पर चार्ज की जाने वाली और बैलेंस में जोड़ी जाने वाली USD राशि। Console → Billing में \\$50 से \\$20,000 तक सेट की जाती है। ऑटो-रीफ़िल अक्षम या सेट न किए जाने पर `null`।"
                    },
                    "auto_refill_threshold": {
                      "type": "string",
                      "nullable": true,
                      "description": "USD में ट्रिगर थ्रेशोल्ड। जब `balance` इस मान से नीचे गिरता है तो ऑटो-रीफ़िल सक्रिय हो जाता है। ऑटो-रीफ़िल अक्षम या सेट न होने पर `null`।"
                    }
                  }
                },
                "examples": {
                  "Healthy balance with auto-refill": {
                    "value": {
                      "balance": "1234.5600",
                      "auto_refill_enabled": true,
                      "auto_refill_amount": "500.00",
                      "auto_refill_threshold": "100.00"
                    }
                  },
                  "Low balance, manual top-up only": {
                    "value": {
                      "balance": "12.0000",
                      "auto_refill_enabled": false,
                      "auto_refill_amount": null,
                      "auto_refill_threshold": null
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस संगठन के लिए बिलिंग डेटा नहीं पढ़ सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/billing/top-up/": {
      "post": {
        "summary": "क्रेडिट टॉप अप करें",
        "description": "होस्ट किए गए Stripe Checkout सत्र के माध्यम से क्रेडिट जोड़ें (प्रति टॉप-अप **\\$50 से \\$20,000**)। टॉप-अप Free, Growth और Scale प्लान पर उपलब्ध हैं, बिना किसी छूट या बोनस के अंकित मूल्य पर जोड़े जाते हैं, और 12 महीने तक चलते हैं; Enterprise वार्षिक अनुबंध टॉप अप नहीं कर सकते। ग्राहक को लौटाए गए `checkout_session_url` पर रीडायरेक्ट करें।",
        "operationId": "billing_top_up",
        "x-didit-sdk": {
          "resource": "billing",
          "method": "top_up",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Billing"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "amount_in_dollars"
                ],
                "properties": {
                  "amount_in_dollars": {
                    "type": "number",
                    "minimum": 50,
                    "maximum": 20000,
                    "description": "चार्ज की जाने वाली राशि, USD में। **50 से 20,000 के बीच होनी चाहिए।** बैलेंस को बिना किसी छूट या बोनस के समान राशि प्राप्त होती है। ग्राहक के बिलिंग पते के आधार पर चेकआउट पर कर स्वचालित रूप से जोड़ा जाता है।"
                  },
                  "success_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "सफल भुगतान के बाद होस्टेड चेकआउट ग्राहक को जिस URL पर रीडायरेक्ट करता है। वर्तमान में यह डिफ़ॉल्ट रूप से `https://console.didit.me` होता है। एक कार्यशील URL स्पष्ट रूप से पास करें; डिफ़ॉल्ट होस्ट अनुपलब्ध है। यदि आप चाहते हैं कि होस्टेड चेकआउट सत्र ID को प्रतिस्थापित करे, तो शाब्दिक प्लेसहोल्डर `{CHECKOUT_SESSION_ID}` जोड़ें।"
                  },
                  "cancel_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "चेकआउट विंडो को रद्द या बंद करने पर होस्टेड चेकआउट ग्राहक को जिस URL पर रीडायरेक्ट करता है। वर्तमान में यह डिफ़ॉल्ट रूप से `https://console.didit.me` होता है। एक कार्यशील URL स्पष्ट रूप से पास करें; डिफ़ॉल्ट होस्ट अनुपलब्ध है।"
                  }
                }
              },
              "examples": {
                "Minimum top-up": {
                  "value": {
                    "amount_in_dollars": 50
                  }
                },
                "Custom amount with redirects": {
                  "value": {
                    "amount_in_dollars": 500,
                    "success_url": "https://yourapp.com/billing/top-up/success",
                    "cancel_url": "https://yourapp.com/billing/top-up/cancel"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/billing/top-up/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"amount_in_dollars\": 500,\n    \"success_url\": \"https://yourapp.com/billing/success\",\n    \"cancel_url\": \"https://yourapp.com/billing/cancel\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.billing.top_up(\n    amount_in_dollars=50.0,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.billing.topUp({\n  amount_in_dollars: 50.0,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Billing.TopUp(ctx, didit.BillingTopUpParams{\n\tAmountInDollars: 50.0,\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BillingTopUpParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.billing().topUp(BillingTopUpParams.builder()\n        .amountInDollars(50.0)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->billing->topUp([\n    'amount_in_dollars' => 50.0,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.billing.top_up(amount_in_dollars: 50.0)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Billing.TopUpAsync(new BillingTopUpParams\n{\n    AmountInDollars = 50.0,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "होस्टेड चेकआउट सत्र बनाया गया। भुगतान पूरा करने के लिए उपयोगकर्ता को `checkout_session_url` पर रीडायरेक्ट करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "checkout_session_id",
                    "checkout_session_url"
                  ],
                  "properties": {
                    "checkout_session_id": {
                      "type": "string",
                      "description": "होस्टेड चेकआउट सत्र पहचानकर्ता (उदा. `cs_test_a1B2c3...`)। सर्वर-साइड मिलान के लिए उपयोगी।"
                    },
                    "checkout_session_url": {
                      "type": "string",
                      "format": "uri",
                      "description": "एकल-उपयोग होस्टेड भुगतान पेज URL। भुगतान पूरा करने के लिए ग्राहक को यहाँ रीडायरेक्ट करें।"
                    }
                  }
                },
                "examples": {
                  "Created": {
                    "value": {
                      "checkout_session_id": "cs_test_a1B2c3D4e5F6g7H8i9J0",
                      "checkout_session_url": "https://checkout.example.com/c/pay/cs_test_a1B2c3D4e5F6g7H8i9J0"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य payload: राशि गायब है, संख्या नहीं है, \\$50 के न्यूनतम से कम या \\$20,000 के अधिकतम से अधिक है, या संगठन Enterprise वार्षिक अनुबंध पर है। त्रुटि body एक JSON ऐरे है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing amount": {
                    "value": [
                      "amount_in_dollars is required."
                    ]
                  },
                  "Not a number": {
                    "value": [
                      "amount_in_dollars must be a number."
                    ]
                  },
                  "Below minimum": {
                    "value": [
                      "Amount must be at least $50."
                    ]
                  },
                  "Above maximum": {
                    "value": [
                      "Amount must be at most $20,000."
                    ]
                  },
                  "Annual plan": {
                    "value": [
                      "You have an annual plan. Contact your account manager to top up."
                    ]
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कुंजी इस संगठन के लिए टॉप-अप सत्र नहीं बना सकती। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/": {
      "get": {
        "summary": "webhook गंतव्य सूचीबद्ध करें",
        "description": "सभी webhook गंतव्य सूचीबद्ध करें (अनपेजिनेटेड ऐरे, सबसे पुराने पहले)। प्रत्येक आइटम में गंतव्य का कॉन्फ़िगरेशन, पिछले 30 दिनों (`metrics_window_days`) के लिए उसके डिलीवरी मेट्रिक्स (प्रति दिन एक `daily_points` प्रविष्टि के साथ), और उसकी स्थिति (`health_status`, `failing_streak`, `failing_since`, `last_success_at`) शामिल होती है। सूची में कोई `summary` ऑब्जेक्ट नहीं होता है और इसमें हस्ताक्षर सीक्रेट कभी शामिल नहीं होता है: प्रत्येक आइटम केवल `secret_last4` दिखाता है। `secret_shared_key` पढ़ने के लिए एक एकल गंतव्य (`GET /v3/webhook/destinations/{destination_uuid}/`) प्राप्त करें।",
        "operationId": "list_webhook_destinations",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/destinations/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.list()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.list();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.List(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().list();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->list();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.webhooks.destinations.list.each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.ListAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "webhook गंतव्यों की सूची (पेजिनेशन रहित, सबसे पुराने पहले)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string",
                        "format": "uuid",
                        "description": "स्थिर गंतव्य पहचानकर्ता; अपडेट/डिलीट के लिए `{destination_uuid}` के रूप में उपयोग करें।"
                      },
                      "label": {
                        "type": "string",
                        "description": "Console में दिखाया गया मानव-पठनीय नाम।"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri",
                        "description": "गंतव्य URL जो webhook payload के साथ `POST` अनुरोध प्राप्त करता है।"
                      },
                      "enabled": {
                        "type": "boolean",
                        "description": "`false` होने पर, Didit इस गंतव्य पर डिलीवरी को बिना किसी सूचना के छोड़ देता है।"
                      },
                      "webhook_version": {
                        "type": "string",
                        "enum": [
                          "v1",
                          "v2",
                          "v3"
                        ],
                        "description": "इस गंतव्य पर भेजा गया payload स्कीमा संस्करण। `v3` वर्तमान/अनुशंसित फ़ॉर्मेट है।"
                      },
                      "subscribed_events": {
                        "$ref": "#/components/schemas/WebhookSubscribedEvents"
                      },
                      "subscribed_events_count": {
                        "type": "integer",
                        "description": "`subscribed_events` की कैश्ड लंबाई, UI रेंडरिंग के लिए उपयोगी।"
                      },
                      "deliveries_count": {
                        "type": "integer",
                        "description": "पिछले 30 दिनों में इस गंतव्य पर किए गए डिलीवरी प्रयास (पुनः प्रयास शामिल)।"
                      },
                      "failed_deliveries_count": {
                        "type": "integer",
                        "description": "पिछले 30 दिनों में डिलीवरी प्रयास जिन पर गंतव्य ने HTTP 400 या उससे अधिक के साथ उत्तर दिया, या उत्तर नहीं दिया (टाइमआउट, अस्वीकृत कनेक्शन या ब्लॉक किया गया पता)।"
                      },
                      "average_response_time_ms": {
                        "type": "integer",
                        "nullable": true,
                        "description": "पिछले 30 दिनों में मिलीसेकंड में औसत रिस्पॉन्स समय, जिसे निकटतम पूर्णांक तक राउंड किया गया है। उस विंडो में कोई डिलीवरी न होने पर `null`।"
                      },
                      "error_rate_percentage": {
                        "type": "integer",
                        "description": "पिछले 30 दिनों में `round(failed_deliveries_count / deliveries_count * 100)`; जब कोई डिलीवरी न हो तो `0`।"
                      },
                      "last_delivery_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "सबसे हाल के डिलीवरी प्रयास का टाइमस्टैम्प (सफलता या विफलता)। कभी डिलीवर न होने पर `null`।"
                      },
                      "metrics_window_days": {
                        "type": "integer",
                        "description": "दिनों में उस विंडो की अवधि जिसे `deliveries_count`, `failed_deliveries_count`, `average_response_time_ms`, `error_rate_percentage` और `daily_points` कवर करते हैं। हमेशा `30`।"
                      },
                      "health_status": {
                        "type": "string",
                        "enum": [
                          "healthy",
                          "degraded",
                          "failing"
                        ],
                        "description": "डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें `failing_streak`)। `degraded`: failing नहीं है, लेकिन पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400 या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया हो।"
                      },
                      "failing_streak": {
                        "type": "integer",
                        "description": "पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के बाद से किसी भी इवेंट के विफल न होने पर `0`।"
                      },
                      "failing_since": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया था। `null` जब `failing_streak` `0` हो।"
                      },
                      "last_success_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null` यदि उसने उस अवधि में उत्तर नहीं दिया है।"
                      },
                      "environment": {
                        "type": "string",
                        "enum": [
                          "live",
                          "sandbox"
                        ],
                        "description": "उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व है।"
                      },
                      "daily_points": {
                        "type": "array",
                        "description": "पिछले 30 दिनों के प्रति UTC दिन एक प्रविष्टि, सबसे पुरानी पहले, जिसमें बिना किसी डिलीवरी वाले दिन भी शामिल हैं। पुनः प्रयास सहित प्रत्येक प्रयास की गणना करता है।",
                        "items": {
                          "type": "object",
                          "properties": {
                            "date": {
                              "type": "string",
                              "format": "date",
                              "description": "UTC दिन।"
                            },
                            "total_deliveries": {
                              "type": "integer",
                              "description": "उस दिन किए गए डिलीवरी प्रयास।"
                            },
                            "failed_deliveries": {
                              "type": "integer",
                              "description": "उस दिन किए गए ऐसे प्रयास जिनका उत्तर HTTP 400 या उससे अधिक के साथ दिया गया था, या जिनका बिल्कुल भी उत्तर नहीं दिया गया था।"
                            }
                          }
                        }
                      },
                      "secret_last4": {
                        "type": "string",
                        "description": "गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के लिए पर्याप्त नहीं है।"
                      },
                      "created_by_email": {
                        "type": "string",
                        "nullable": true,
                        "description": "उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                      },
                      "created_by_name": {
                        "type": "string",
                        "nullable": true,
                        "description": "Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    }
                  }
                },
                "examples": {
                  "Two destinations": {
                    "value": [
                      {
                        "uuid": "11111111-2222-3333-4444-555555555555",
                        "label": "Production session webhooks",
                        "url": "https://yourapp.com/webhooks/didit",
                        "enabled": true,
                        "webhook_version": "v3",
                        "subscribed_events": [
                          "status.updated",
                          "data.updated"
                        ],
                        "subscribed_events_count": 2,
                        "deliveries_count": 12453,
                        "failed_deliveries_count": 14,
                        "average_response_time_ms": 187,
                        "error_rate_percentage": 0,
                        "last_delivery_at": "2026-05-17T09:21:18Z",
                        "metrics_window_days": 30,
                        "health_status": "healthy",
                        "failing_streak": 0,
                        "failing_since": null,
                        "last_success_at": "2026-05-17T09:21:18Z",
                        "environment": "live",
                        "daily_points": [
                          {
                            "date": "2026-04-18",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-19",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-20",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-21",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-22",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-23",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-24",
                            "total_deliveries": 415,
                            "failed_deliveries": 9
                          },
                          {
                            "date": "2026-04-25",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-26",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-27",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-28",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-29",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-30",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-01",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-02",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-03",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-04",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-05",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-06",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-07",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-08",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-09",
                            "total_deliveries": 415,
                            "failed_deliveries": 5
                          },
                          {
                            "date": "2026-05-10",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-11",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-12",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-13",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-14",
                            "total_deliveries": 415,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-15",
                            "total_deliveries": 416,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-16",
                            "total_deliveries": 416,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-17",
                            "total_deliveries": 416,
                            "failed_deliveries": 0
                          }
                        ],
                        "secret_last4": "0xnQ",
                        "created_by_email": null,
                        "created_by_name": null,
                        "created_at": "2026-01-04T08:00:00Z",
                        "updated_at": "2026-04-22T14:09:11Z"
                      },
                      {
                        "uuid": "22222222-3333-4444-5555-666666666666",
                        "label": "Staging mirror",
                        "url": "https://staging.yourapp.com/webhooks/didit",
                        "enabled": false,
                        "webhook_version": "v3",
                        "subscribed_events": [
                          "status.updated"
                        ],
                        "subscribed_events_count": 1,
                        "deliveries_count": 0,
                        "failed_deliveries_count": 0,
                        "average_response_time_ms": null,
                        "error_rate_percentage": 0,
                        "last_delivery_at": null,
                        "metrics_window_days": 30,
                        "health_status": "healthy",
                        "failing_streak": 0,
                        "failing_since": null,
                        "last_success_at": null,
                        "environment": "live",
                        "daily_points": [
                          {
                            "date": "2026-04-18",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-19",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-20",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-21",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-22",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-23",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-24",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-25",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-26",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-27",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-28",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-29",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-04-30",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-01",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-02",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-03",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-04",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-05",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-06",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-07",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-08",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-09",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-10",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-11",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-12",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-13",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-14",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-15",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-16",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          },
                          {
                            "date": "2026-05-17",
                            "total_deliveries": 0,
                            "failed_deliveries": 0
                          }
                        ],
                        "secret_last4": "k9Qe",
                        "created_by_email": "reviewer@example.com",
                        "created_by_name": "Example Reviewer",
                        "created_at": "2026-03-12T10:15:02Z",
                        "updated_at": "2026-03-12T10:15:02Z"
                      }
                    ]
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "webhook गंतव्य बनाएं",
        "description": "एक webhook गंतव्य बनाएँ। रिस्पॉन्स में स्वतः जनरेट किया गया `secret_shared_key` HMAC साइनिंग सीक्रेट शामिल होता है (बाद में `GET /v3/webhook/destinations/{destination_uuid}/` के माध्यम से भी पढ़ने योग्य)। हमेशा कम से कम एक इवेंट के साथ `subscribed_events` भेजें (कोई वाइल्डकार्ड नहीं): एक स्पष्ट खाली सूची 400 के साथ अस्वीकृत कर दी जाती है, और फ़ील्ड को छोड़ने से ऐसा गंतव्य बनता है जो किसी भी इवेंट के लिए सब्सक्राइब नहीं होता और जिसे कभी कोई webhook प्राप्त नहीं होता। `(application, url)` जोड़ी एप्लिकेशन के गंतव्यों के बीच अद्वितीय होनी चाहिए।",
        "operationId": "create_webhook_destination",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/webhook/destinations/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"label\": \"Production session webhooks\",\n    \"url\": \"https://yourapp.com/webhooks/didit\",\n    \"webhook_version\": \"v3\",\n    \"subscribed_events\": [\"status.updated\", \"data.updated\"]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.create(\n    label=\"Production session webhooks\",\n    url=\"https://yourapp.com/webhooks/didit\",\n    webhook_version=\"v3\",\n    subscribed_events=[\"status.updated\", \"data.updated\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.create({\n  label: \"Production session webhooks\",\n  url: \"https://yourapp.com/webhooks/didit\",\n  webhook_version: \"v3\",\n  subscribed_events: [\"status.updated\", \"data.updated\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.Create(ctx, didit.WebhooksDestinationsCreateParams{\n\tLabel:            \"Production session webhooks\",\n\tURL:              \"https://yourapp.com/webhooks/didit\",\n\tWebhookVersion:   didit.Some(didit.WebhooksDestinationsCreateParamsWebhookVersion(\"v3\")),\n\tSubscribedEvents: didit.Some([]didit.WebhookEvent{didit.WebhookEvent(\"status.updated\"), didit.WebhookEvent(\"data.updated\")}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.WebhookEvent;\nimport me.didit.types.WebhooksDestinationsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().create(WebhooksDestinationsCreateParams.builder()\n        .label(\"Production session webhooks\")\n        .url(\"https://yourapp.com/webhooks/didit\")\n        .webhookVersion(WebhooksDestinationsCreateParams.WebhookVersion.of(\"v3\"))\n        .subscribedEvents(List.of(WebhookEvent.of(\"status.updated\"), WebhookEvent.of(\"data.updated\")))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->create([\n    'label' => 'Production session webhooks',\n    'url' => 'https://yourapp.com/webhooks/didit',\n    'webhook_version' => 'v3',\n    'subscribed_events' => ['status.updated', 'data.updated'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.create(\n  label: \"Production session webhooks\",\n  url: \"https://yourapp.com/webhooks/didit\",\n  webhook_version: \"v3\",\n  subscribed_events: [\"status.updated\", \"data.updated\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.CreateAsync(new WebhooksDestinationsCreateParams\n{\n    Label = \"Production session webhooks\",\n    Url = \"https://yourapp.com/webhooks/didit\",\n    WebhookVersion = new WebhooksDestinationsCreateParamsWebhookVersion(\"v3\"),\n    SubscribedEvents = new WebhookEvent[] { \"status.updated\", \"data.updated\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "label",
                  "url"
                ],
                "properties": {
                  "label": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "Console → Webhooks में प्रदर्शित मानव-पठनीय नाम। आपके पास कई गंतव्य होने पर उन्हें अलग करने में मदद करता है (उदा. \"Prod\", \"Staging mirror\")।"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "HTTPS URL जो `POST` अनुरोध प्राप्त करेगा। एप्लिकेशन के गंतव्यों के बीच अद्वितीय होना चाहिए। एक स्थिर, सुरक्षित endpoint का उपयोग करें: Didit बैकऑफ़ शेड्यूल पर विफल डिलीवरी का पुनः प्रयास करता है।",
                    "maxLength": 2000
                  },
                  "enabled": {
                    "type": "boolean",
                    "default": true,
                    "description": "`false` होने पर, गंतव्य सहेजा जाता है लेकिन Didit इस पर कोई webhook पुश नहीं करेगा। उन स्टेजिंग कॉन्फ़िगरेशन के लिए उपयोगी जिन्हें आप रोक कर रखना चाहते हैं।"
                  },
                  "webhook_version": {
                    "type": "string",
                    "enum": [
                      "v1",
                      "v2",
                      "v3"
                    ],
                    "description": "Payload स्कीमा संस्करण जो Didit भेजेगा। `v3` वर्तमान/अनुशंसित फ़ॉर्मेट है; पुराने संस्करण लेगसी इंटीग्रेशन के साथ बैकवर्ड कम्पैटिबिलिटी के लिए रखे गए हैं।"
                  },
                  "subscribed_events": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/WebhookSubscribedEvents"
                      }
                    ],
                    "description": "डिलीवर करने के लिए इवेंट्स। प्रभावी रूप से आवश्यक: एक स्पष्ट `[]` को 400 के साथ अस्वीकार कर दिया जाता है, और फ़ील्ड को छोड़ने पर बिना किसी सब्सक्रिप्शन वाला गंतव्य बनता है जिसे कुछ भी प्राप्त नहीं होता है।"
                  }
                }
              },
              "examples": {
                "session_updates": {
                  "summary": "सत्र स्थिति और डेटा अपडेट",
                  "value": {
                    "label": "Production session webhooks",
                    "url": "https://yourapp.com/webhooks/didit",
                    "webhook_version": "v3",
                    "subscribed_events": [
                      "status.updated",
                      "data.updated"
                    ]
                  }
                },
                "transaction_updates": {
                  "summary": "लेन-देन निगरानी अपडेट",
                  "value": {
                    "label": "Transaction monitoring webhooks",
                    "url": "https://yourapp.com/webhooks/didit-transactions",
                    "webhook_version": "v3",
                    "subscribed_events": [
                      "transaction.created",
                      "transaction.status.updated"
                    ]
                  }
                },
                "entity_updates": {
                  "summary": "उपयोगकर्ता और व्यवसाय इकाई अपडेट",
                  "value": {
                    "label": "Entity lifecycle webhooks",
                    "url": "https://yourapp.com/webhooks/didit-entities",
                    "webhook_version": "v3",
                    "subscribed_events": [
                      "user.status.updated",
                      "user.data.updated",
                      "business.status.updated",
                      "business.data.updated",
                      "activity.created"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "गंतव्य बनाया गया। `secret_shared_key` HMAC हस्ताक्षर सीक्रेट है — इसे अभी सहेजें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "स्थिर गंतव्य पहचानकर्ता। बाद के कॉलों में `{destination_uuid}` के रूप में उपयोग करें।"
                    },
                    "label": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "webhook_version": {
                      "type": "string",
                      "enum": [
                        "v1",
                        "v2",
                        "v3"
                      ]
                    },
                    "secret_shared_key": {
                      "type": "string",
                      "description": "इस गंतव्य से संबद्ध स्वतः-जेनरेट किया गया HMAC साइनिंग सीक्रेट (43-वर्ण का URL-सुरक्षित token)। इनकमिंग webhooks पर हस्ताक्षर हेडर सत्यापित करने के लिए इसका उपयोग करें। API कुंजी कॉलर्स को हमेशा पूरा लौटाया जाता है; कंसोल उपयोगकर्ताओं को `read:webhooks` अनुमति की आवश्यकता होती है, अन्यथा वे एक खाली स्ट्रिंग देखते हैं।"
                    },
                    "secret_last4": {
                      "type": "string",
                      "description": "गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के लिए पर्याप्त नहीं है।"
                    },
                    "previous_secret_expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Business Console में गंतव्य के साइनिंग सीक्रेट को रोटेट किए जाने के बाद 24 घंटों के लिए सेट होता है। इस समय तक, गंतव्य पर प्रत्येक डिलीवरी में बदले गए सीक्रेट के साथ बनाए गए `X-Signature-Previous`, `X-Signature-V2-Previous` और `X-Signature-Simple-Previous` भी शामिल होते हैं ([हस्ताक्षर सत्यापन](/hi/integration/webhooks#हस्ताक्षर-सत्यापन) देखें)। पिछले 24 घंटों में कोई रोटेशन न होने पर `null`।"
                    },
                    "subscribed_events": {
                      "$ref": "#/components/schemas/WebhookSubscribedEvents"
                    },
                    "created_by_email": {
                      "type": "string",
                      "nullable": true,
                      "description": "उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_by_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "health_status": {
                      "type": "string",
                      "enum": [
                        "healthy",
                        "degraded",
                        "failing"
                      ],
                      "description": "डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें `failing_streak`)। `degraded`: failing नहीं है, लेकिन पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400 या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया हो।"
                    },
                    "failing_streak": {
                      "type": "integer",
                      "description": "पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के बाद से किसी भी इवेंट के विफल न होने पर `0`।"
                    },
                    "failing_since": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया था। `null` जब `failing_streak` `0` हो।"
                    },
                    "last_success_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null` यदि उसने उस अवधि में उत्तर नहीं दिया है।"
                    },
                    "environment": {
                      "type": "string",
                      "enum": [
                        "live",
                        "sandbox"
                      ],
                      "description": "उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व है।"
                    },
                    "summary": {
                      "type": "object",
                      "description": "पिछले `metrics_window_days` (30) दिनों के लिए डिलीवरी मेट्रिक्स। `last_delivery_at` सबसे हालिया प्रयास है, चाहे वह कभी भी किया गया हो।",
                      "properties": {
                        "total_deliveries": {
                          "type": "integer"
                        },
                        "failed_deliveries": {
                          "type": "integer"
                        },
                        "error_rate_percentage": {
                          "type": "integer"
                        },
                        "min_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "avg_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "max_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "last_delivery_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "metrics_window_days": {
                          "type": "integer",
                          "description": "दिनों में उस विंडो की अवधि जिसे अन्य सारांश मेट्रिक्स कवर करते हैं। हमेशा `30`।"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Created": {
                    "value": {
                      "uuid": "11111111-2222-3333-4444-555555555555",
                      "label": "Production session webhooks",
                      "url": "https://yourapp.com/webhooks/didit",
                      "enabled": true,
                      "webhook_version": "v3",
                      "secret_shared_key": "tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ",
                      "secret_last4": "0xnQ",
                      "previous_secret_expires_at": null,
                      "subscribed_events": [
                        "status.updated",
                        "data.updated"
                      ],
                      "created_by_email": null,
                      "created_by_name": null,
                      "created_at": "2026-05-17T10:00:00Z",
                      "updated_at": "2026-05-17T10:00:00Z",
                      "health_status": "healthy",
                      "failing_streak": 0,
                      "failing_since": null,
                      "last_success_at": null,
                      "environment": "live",
                      "summary": {
                        "total_deliveries": 0,
                        "failed_deliveries": 0,
                        "error_rate_percentage": 0,
                        "min_response_time_ms": null,
                        "avg_response_time_ms": null,
                        "max_response_time_ms": null,
                        "last_delivery_at": null,
                        "metrics_window_days": 30
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा — आमतौर पर एक डुप्लिकेट URL, अनुपलब्ध/अमान्य `subscribed_events`, या अज्ञात इवेंट नाम।",
            "content": {
              "application/json": {
                "examples": {
                  "Duplicate URL": {
                    "value": {
                      "url": [
                        "This webhook destination already exists for the application."
                      ]
                    }
                  },
                  "Empty events list": {
                    "value": {
                      "subscribed_events": [
                        "At least one subscribed event is required."
                      ]
                    }
                  },
                  "Unknown event": {
                    "value": {
                      "subscribed_events": [
                        "Unsupported webhook events: foo.bar"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/{destination_uuid}/": {
      "get": {
        "summary": "webhook गंतव्य प्राप्त करें",
        "description": "एक webhook गंतव्य को उसके `secret_shared_key` साइनिंग सीक्रेट, उसकी स्थिति (`health_status`, `failing_streak`, `failing_since`, `last_success_at`) और पिछले 30 दिनों के लिए डिलीवरी `summary` के साथ प्राप्त करें। API-कुंजी कॉलर्स को हमेशा पूरा सीक्रेट प्राप्त होता है; बिना `read:webhooks` वाले कंसोल उपयोगकर्ताओं को एक खाली स्ट्रिंग दिखाई देती है।",
        "operationId": "get_webhook_destination",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "गंतव्य का UUID (बनाने या सूचीबद्ध करने से लौटाया गया `uuid`)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "Webhook गंतव्य विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "label": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "webhook_version": {
                      "type": "string",
                      "enum": [
                        "v1",
                        "v2",
                        "v3"
                      ]
                    },
                    "secret_shared_key": {
                      "type": "string",
                      "description": "HMAC साइनिंग सीक्रेट (43-वर्णों वाला URL-सुरक्षित token)। API-कुंजी कॉल करने वालों को हमेशा पूरा लौटाया जाता है; कंसोल उपयोगकर्ताओं को `read:webhooks` की आवश्यकता होती है, अन्यथा एक खाली स्ट्रिंग।"
                    },
                    "secret_last4": {
                      "type": "string",
                      "description": "गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के लिए पर्याप्त नहीं है।"
                    },
                    "previous_secret_expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Business Console में गंतव्य के साइनिंग सीक्रेट को रोटेट किए जाने के बाद 24 घंटों के लिए सेट होता है। इस समय तक, गंतव्य पर प्रत्येक डिलीवरी में बदले गए सीक्रेट के साथ बनाए गए `X-Signature-Previous`, `X-Signature-V2-Previous` और `X-Signature-Simple-Previous` भी शामिल होते हैं ([हस्ताक्षर सत्यापन](/hi/integration/webhooks#हस्ताक्षर-सत्यापन) देखें)। पिछले 24 घंटों में कोई रोटेशन न होने पर `null`।"
                    },
                    "subscribed_events": {
                      "$ref": "#/components/schemas/WebhookSubscribedEvents"
                    },
                    "created_by_email": {
                      "type": "string",
                      "nullable": true,
                      "description": "उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_by_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "health_status": {
                      "type": "string",
                      "enum": [
                        "healthy",
                        "degraded",
                        "failing"
                      ],
                      "description": "डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें `failing_streak`)। `degraded`: failing नहीं है, लेकिन पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400 या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया हो।"
                    },
                    "failing_streak": {
                      "type": "integer",
                      "description": "पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के बाद से किसी भी इवेंट के विफल न होने पर `0`।"
                    },
                    "failing_since": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया था। `null` जब `failing_streak` `0` हो।"
                    },
                    "last_success_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null` यदि उसने उस अवधि में उत्तर नहीं दिया है।"
                    },
                    "environment": {
                      "type": "string",
                      "enum": [
                        "live",
                        "sandbox"
                      ],
                      "description": "उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व है।"
                    },
                    "summary": {
                      "type": "object",
                      "description": "पिछले `metrics_window_days` (30) दिनों के लिए डिलीवरी मेट्रिक्स। `last_delivery_at` सबसे हालिया प्रयास है, चाहे वह कभी भी किया गया हो।",
                      "properties": {
                        "total_deliveries": {
                          "type": "integer"
                        },
                        "failed_deliveries": {
                          "type": "integer"
                        },
                        "error_rate_percentage": {
                          "type": "integer"
                        },
                        "min_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "avg_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "max_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "last_delivery_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "metrics_window_days": {
                          "type": "integer",
                          "description": "दिनों में उस विंडो की अवधि जिसे अन्य सारांश मेट्रिक्स कवर करते हैं। हमेशा `30`।"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Healthy destination": {
                    "value": {
                      "uuid": "11111111-2222-3333-4444-555555555555",
                      "label": "Production session webhooks",
                      "url": "https://yourapp.com/webhooks/didit",
                      "enabled": true,
                      "webhook_version": "v3",
                      "secret_shared_key": "tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ",
                      "secret_last4": "0xnQ",
                      "previous_secret_expires_at": null,
                      "subscribed_events": [
                        "status.updated",
                        "data.updated"
                      ],
                      "created_by_email": null,
                      "created_by_name": null,
                      "created_at": "2026-01-04T08:00:00Z",
                      "updated_at": "2026-04-22T14:09:11Z",
                      "health_status": "healthy",
                      "failing_streak": 0,
                      "failing_since": null,
                      "last_success_at": "2026-05-17T09:21:18Z",
                      "environment": "live",
                      "summary": {
                        "total_deliveries": 12453,
                        "failed_deliveries": 14,
                        "error_rate_percentage": 0,
                        "min_response_time_ms": 41,
                        "avg_response_time_ms": 187,
                        "max_response_time_ms": 2103,
                        "last_delivery_at": "2026-05-17T09:21:18Z",
                        "metrics_window_days": 30
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस UUID वाला कोई गंतव्य मौजूद नहीं है, या यह किसी भिन्न एप्लिकेशन से संबंधित है, या इसे हटा दिया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "webhook गंतव्य अपडेट करें",
        "description": "एक webhook गंतव्य अपडेट करें। **`subscribed_events` को पूरी तरह बदल दिया जाता है, मर्ज नहीं किया जाता**: पहले प्राप्त करें, जोड़ें, फिर से भेजें। सीक्रेट को रोटेट नहीं किया जाता है। बॉडी में `uuid` को अनदेखा किया जाता है: पाथ गंतव्य का नाम बताता है।",
        "operationId": "update_webhook_destination",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "अपडेट किए जाने वाले गंतव्य का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string",
                    "description": "नया मानव-पठनीय नाम।"
                  },
                  "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "नया लक्ष्य URL। एप्लिकेशन के भीतर अद्वितीय होना चाहिए।"
                  },
                  "enabled": {
                    "type": "boolean",
                    "description": "इस गंतव्य को हटाए बिना इस पर डिलीवरी रोकने के लिए `false` पर सेट करें।"
                  },
                  "webhook_version": {
                    "type": "string",
                    "enum": [
                      "v1",
                      "v2",
                      "v3"
                    ],
                    "description": "भविष्य की डिलीवरी के लिए नया payload स्कीमा संस्करण।"
                  },
                  "subscribed_events": {
                    "$ref": "#/components/schemas/WebhookSubscribedEvents"
                  }
                }
              },
              "examples": {
                "Pause destination": {
                  "value": {
                    "enabled": false
                  }
                },
                "Add transaction events": {
                  "value": {
                    "subscribed_events": [
                      "status.updated",
                      "data.updated",
                      "transaction.created",
                      "transaction.status.updated"
                    ]
                  }
                },
                "Move target URL": {
                  "value": {
                    "label": "Production session webhooks v2",
                    "url": "https://api.yourapp.com/webhooks/didit/v2"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"subscribed_events\": [\n      \"status.updated\",\n      \"data.updated\",\n      \"transaction.created\"\n    ]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    enabled=False,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.update(\"11111111-2222-3333-4444-555555555555\", {\n  enabled: false,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsUpdateParams{\n\tEnabled: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.WebhooksDestinationsUpdateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().update(\"11111111-2222-3333-4444-555555555555\", WebhooksDestinationsUpdateParams.builder()\n        .enabled(false)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->update('11111111-2222-3333-4444-555555555555', [\n    'enabled' => false,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  enabled: false\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new WebhooksDestinationsUpdateParams\n{\n    Enabled = false,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया webhook गंतव्य। बॉडी का स्वरूप `GET /v3/webhook/destinations/{destination_uuid}/` के समान है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "label": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "webhook_version": {
                      "type": "string",
                      "enum": [
                        "v1",
                        "v2",
                        "v3"
                      ]
                    },
                    "secret_shared_key": {
                      "type": "string"
                    },
                    "secret_last4": {
                      "type": "string",
                      "description": "गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के लिए पर्याप्त नहीं है।"
                    },
                    "previous_secret_expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "Business Console में गंतव्य के साइनिंग सीक्रेट को रोटेट किए जाने के बाद 24 घंटों के लिए सेट होता है। इस समय तक, गंतव्य पर प्रत्येक डिलीवरी में बदले गए सीक्रेट के साथ बनाए गए `X-Signature-Previous`, `X-Signature-V2-Previous` और `X-Signature-Simple-Previous` भी शामिल होते हैं ([हस्ताक्षर सत्यापन](/hi/integration/webhooks#हस्ताक्षर-सत्यापन) देखें)। पिछले 24 घंटों में कोई रोटेशन न होने पर `null`।"
                    },
                    "subscribed_events": {
                      "$ref": "#/components/schemas/WebhookSubscribedEvents"
                    },
                    "created_by_email": {
                      "type": "string",
                      "nullable": true,
                      "description": "उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_by_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया। API कुंजी से बनाए गए गंतव्य के लिए `null`।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "health_status": {
                      "type": "string",
                      "enum": [
                        "healthy",
                        "degraded",
                        "failing"
                      ],
                      "description": "डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें `failing_streak`)। `degraded`: failing नहीं है, लेकिन पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400 या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया हो।"
                    },
                    "failing_streak": {
                      "type": "integer",
                      "description": "पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के बाद से किसी भी इवेंट के विफल न होने पर `0`।"
                    },
                    "failing_since": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया था। `null` जब `failing_streak` `0` हो।"
                    },
                    "last_success_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null` यदि उसने उस अवधि में उत्तर नहीं दिया है।"
                    },
                    "environment": {
                      "type": "string",
                      "enum": [
                        "live",
                        "sandbox"
                      ],
                      "description": "उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व है।"
                    },
                    "summary": {
                      "type": "object",
                      "properties": {
                        "total_deliveries": {
                          "type": "integer"
                        },
                        "failed_deliveries": {
                          "type": "integer"
                        },
                        "error_rate_percentage": {
                          "type": "integer"
                        },
                        "min_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "avg_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "max_response_time_ms": {
                          "type": "integer",
                          "nullable": true
                        },
                        "last_delivery_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "metrics_window_days": {
                          "type": "integer",
                          "description": "दिनों में उस विंडो की अवधि जिसे अन्य सारांश मेट्रिक्स कवर करते हैं। हमेशा `30`।"
                        }
                      },
                      "description": "पिछले `metrics_window_days` (30) दिनों के लिए डिलीवरी मेट्रिक्स। `last_delivery_at` सबसे हालिया प्रयास है, चाहे वह कभी भी किया गया हो।"
                    }
                  }
                },
                "examples": {
                  "Paused": {
                    "value": {
                      "uuid": "11111111-2222-3333-4444-555555555555",
                      "label": "Production session webhooks",
                      "url": "https://yourapp.com/webhooks/didit",
                      "enabled": false,
                      "webhook_version": "v3",
                      "secret_shared_key": "tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ",
                      "secret_last4": "0xnQ",
                      "previous_secret_expires_at": null,
                      "subscribed_events": [
                        "status.updated",
                        "data.updated"
                      ],
                      "created_by_email": null,
                      "created_by_name": null,
                      "created_at": "2026-01-04T08:00:00Z",
                      "updated_at": "2026-05-17T11:02:55Z",
                      "health_status": "healthy",
                      "failing_streak": 0,
                      "failing_since": null,
                      "last_success_at": "2026-05-17T09:21:18Z",
                      "environment": "live",
                      "summary": {
                        "total_deliveries": 12453,
                        "failed_deliveries": 14,
                        "error_rate_percentage": 0,
                        "min_response_time_ms": 41,
                        "avg_response_time_ms": 187,
                        "max_response_time_ms": 2103,
                        "last_delivery_at": "2026-05-17T09:21:18Z",
                        "metrics_window_days": 30
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल (डुप्लिकेट URL, खाली/अज्ञात इवेंट्स सूची, विकृत बॉडी)।",
            "content": {
              "application/json": {
                "examples": {
                  "Duplicate URL": {
                    "value": {
                      "url": [
                        "This webhook destination already exists for the application."
                      ]
                    }
                  },
                  "Empty events": {
                    "value": {
                      "subscribed_events": [
                        "At least one subscribed event is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस UUID वाला गंतव्य मौजूद नहीं है (या हटा दिया गया है, या किसी अन्य एप्लिकेशन से संबंधित है)।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "webhook गंतव्य हटाएं",
        "description": "किसी webhook गंतव्य, उसके हस्ताक्षर सीक्रेट और उसके संपूर्ण डिलीवरी लॉग को स्थायी रूप से हटाएँ। इसे पूर्ववत नहीं किया जा सकता। गंतव्य के URL पर कोई नया webhook नहीं भेजा जाता है; उन्हीं इवेंट्स की सदस्यता लेने वाले अन्य गंतव्य उन्हें प्राप्त करते रहते हैं। इसके बाद गंतव्य अब `GET /v3/webhook/destinations/` में दिखाई नहीं देता है, और `/v3/webhook/destinations/{destination_uuid}/` के अंतर्गत प्रत्येक रूट, जिसमें उसकी डिलीवरी, डिलीवरी का विवरण और उसका पुनः प्रेषण शामिल है, 404 लौटाता है। एप्लिकेशन का लीगेसी `webhook_url` सबसे पुराने शेष सक्षम गंतव्य के URL पर सेट किया जाता है, या कोई सक्षम गंतव्य न बचने पर साफ़ कर दिया जाता है। DELETE को पुनः कॉल करने पर 404 मिलता है।",
        "operationId": "delete_webhook_destination",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "हटाए जाने वाले गंतव्य का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.webhooks.destinations.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.webhooks.destinations.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Webhooks.Destinations.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.webhooks().destinations().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->webhooks->destinations->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.webhooks.destinations.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Webhooks.Destinations.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ],
        "responses": {
          "204": {
            "description": "गंतव्य, हस्ताक्षर सीक्रेट और डिलीवरी लॉग स्थायी रूप से हटा दिए गए। कोई रिस्पॉन्स बॉडी नहीं।"
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन के लिए इस UUID वाला कोई गंतव्य मौजूद नहीं है (पहले ही हटा दिया गया है या कभी मौजूद नहीं था)।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/wallet-screening/": {
      "post": {
        "summary": "वॉलेट पते को स्क्रीन करें",
        "description": "लेन-देन बनाए बिना किसी एकल क्रिप्टो वॉलेट/पते के लिए ऑन-डिमांड AML स्क्रीनिंग चलाएं। यह आपके एप्लिकेशन के कॉन्फ़िगर किए गए ब्लॉकचेन एनालिटिक्स प्रदाता को रिज़ॉल्व करता है, पते की सिंक्रोनस रूप से स्क्रीनिंग करता है, और सामान्यीकृत जोखिम परिणाम लौटाता है। LIGHTNING केवल Marketplace के माध्यम से जोड़े गए Elliptic या Chainalysis BYOK कनेक्शन के साथ उपलब्ध है। लेन-देन तालिका में कुछ भी नहीं लिखा जाता है। प्रति सफल स्क्रीनिंग AML निगरानी के एक उपयोग का बिल लिया जाता है (सैंडबॉक्स एप्लिकेशन्स से बिल नहीं लिया जाता है)।",
        "operationId": "screenWallet",
        "x-didit-sdk": {
          "resource": "wallet_screening",
          "method": "screen",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "wallet_address"
                ],
                "properties": {
                  "wallet_address": {
                    "type": "string",
                    "description": "स्क्रीन करने के लिए क्रिप्टो पता या नेटवर्क पहचानकर्ता। चयनित नेटवर्क से मेल खाना चाहिए (उदाहरण के लिए, EVM चेन के लिए `0x`-उपसर्ग वाला 40-हेक्स-वर्णों का पता)। उपनाम: `address`।",
                    "example": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a"
                  },
                  "blockchain": {
                    "type": "string",
                    "description": "वैकल्पिक नेटवर्क पहचानकर्ता। जब छोड़ा जाता है, तो नेटवर्क पते के प्रारूप से पढ़ा जाता है: `bc1`, `1` और `3` पते Bitcoin (BTC) हैं, `T` पते Tron (TRX) हैं और base58 सार्वजनिक कुंजियाँ Solana (SOL) हैं। एक `0x` पता प्रत्येक EVM नेटवर्क पर मान्य है, इसलिए इसके लिए `blockchain` को छोड़ने पर `candidate_chains` में संभावित नेटवर्क के साथ 422 उत्तर मिलता है। प्रबंधित स्क्रीनिंग BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE (Base), OP (Optimism), ARB (Arbitrum One), AVAX (Avalanche C-Chain), ADA (Cardano), XLM (Stellar) और HBAR (Hedera) का समर्थन करती है। USDT और USDC लीगेसी Ethereum उपनाम हैं, न कि बहु-नेटवर्क खोजें। कनेक्टेड-प्रदाता कवरेज भिन्न हो सकता है। LIGHTNING के लिए समर्थित कनेक्टेड प्रदाता की आवश्यकता होती है। CELO (Celo), MODE (Mode) और PLUME (Plume) को एक कनेक्टेड TRM Labs खाते के माध्यम से स्क्रीन किया जाता है; प्रबंधित स्क्रीनिंग उनके लिए 400 उत्तर देती है। उपनाम: `currency`।",
                    "enum": [
                      "BTC",
                      "LIGHTNING",
                      "ETH",
                      "LTC",
                      "XRP",
                      "BCH",
                      "DOGE",
                      "TRX",
                      "SOL",
                      "MATIC",
                      "BNB",
                      "USDT",
                      "USDC",
                      "BASE",
                      "OP",
                      "ARB",
                      "AVAX",
                      "ADA",
                      "XLM",
                      "HBAR",
                      "CELO",
                      "MODE",
                      "PLUME"
                    ],
                    "example": "ETH"
                  },
                  "direction": {
                    "type": "string",
                    "description": "वैकल्पिक। क्या पते को इनबाउंड (डिपॉज़िट) या आउटबाउंड (निकासी) प्रतिपक्ष के रूप में स्क्रीन किया जा रहा है। `inbound`, `outbound`, `deposit`, या `withdrawal` स्वीकार करता है। छोड़े जाने पर डिफ़ॉल्ट रूप से एक तटस्थ प्री-ट्रांसफ़र स्क्रीन होती है। इसे केवल संदर्भ के रूप में प्रदाता को पास किया जाता है; यह लौटाए गए `risk_score`, `severity`, या `source_of_funds`/`destination_of_funds` विवरणों को नहीं बदलता है, जो `direction` की परवाह किए बिना हमेशा दोनों लौटाए जाते हैं। इसलिए `direction` को बदलने या छोड़ने पर किसी पते की पुनः स्क्रीनिंग की आवश्यकता नहीं होती है।",
                    "enum": [
                      "inbound",
                      "outbound",
                      "deposit",
                      "withdrawal"
                    ]
                  }
                }
              },
              "example": {
                "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                "blockchain": "ETH"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/wallet-screening/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"wallet_address\": \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n    \"blockchain\": \"ETH\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.wallet_screening.screen(\n    wallet_address=\"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n    blockchain=\"ETH\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.walletScreening.screen({\n  wallet_address: \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n  blockchain: \"ETH\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.WalletScreening.Screen(ctx, didit.WalletScreeningScreenParams{\n\tWalletAddress: \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n\tBlockchain:    didit.Some(didit.WalletScreeningScreenParamsBlockchain(\"ETH\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.WalletScreeningScreenParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.walletScreening().screen(WalletScreeningScreenParams.builder()\n        .walletAddress(\"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\")\n        .blockchain(WalletScreeningScreenParams.Blockchain.of(\"ETH\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->walletScreening->screen([\n    'wallet_address' => '0x94f1b9b64e2932f6a2db338f616844400cd58e8a',\n    'blockchain' => 'ETH',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.wallet_screening.screen(\n  wallet_address: \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n  blockchain: \"ETH\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.WalletScreening.ScreenAsync(new WalletScreeningScreenParams\n{\n    WalletAddress = \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n    Blockchain = new WalletScreeningScreenParamsBlockchain(\"ETH\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सामान्यीकृत वॉलेट स्क्रीनिंग परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletScreeningResult"
                },
                "example": {
                  "provider": "merklescience",
                  "screening_type": "WALLET_SCREENING",
                  "risk_score": 95,
                  "severity": "CRITICAL",
                  "status": "SCREENED",
                  "summary": "Merkle Science risk: Critical (5/5). SANCTIONS HIT. Dominant risk: sanctioned. Driven by: the address is attributed to Sanctions / OFAC (Example Sanctions)",
                  "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                  "transaction_hash": null,
                  "blockchain": "ETH",
                  "block_timestamp": null,
                  "total_value_usd": null,
                  "fee_usd": null,
                  "sender_rows": [],
                  "receiver_rows": [],
                  "transaction_flows": [],
                  "transaction_flows_status": null,
                  "transaction_flows_error": null,
                  "source_of_funds": [
                    {
                      "category": "sanctioned",
                      "percentage": 100.0,
                      "amount_usd": 9813695.0,
                      "entity_name": "Example Sanctions",
                      "entity_type": "Sanctions",
                      "entity_subtype": "OFAC",
                      "hops": null,
                      "description": "Sanctions / OFAC",
                      "is_direct": true,
                      "exposure_direction": "incoming",
                      "exposure_type": "direct",
                      "provider_entity_id": "118885",
                      "provider_entity_type_id": "30",
                      "provider_entity_subtype_id": "125",
                      "country": "",
                      "raw_amount": null,
                      "raw_currency": null
                    }
                  ],
                  "destination_of_funds": [
                    {
                      "category": "defi",
                      "percentage": 84.824453,
                      "amount_usd": 7783414.38,
                      "entity_name": "Example DeFi 7",
                      "entity_type": "DeFi",
                      "entity_subtype": "Bridges",
                      "hops": null,
                      "description": "DeFi / Bridges",
                      "is_direct": false,
                      "exposure_direction": "outgoing",
                      "exposure_type": "indirect",
                      "provider_entity_id": "118459",
                      "provider_entity_type_id": "33",
                      "provider_entity_subtype_id": "143",
                      "country": "",
                      "raw_amount": null,
                      "raw_currency": null
                    },
                    {
                      "category": "defi",
                      "percentage": 15.175547,
                      "amount_usd": 1392494.37,
                      "entity_name": "Example DeFi 2",
                      "entity_type": "DeFi",
                      "entity_subtype": "Yield Aggregator",
                      "hops": null,
                      "description": "DeFi / Yield Aggregator",
                      "is_direct": false,
                      "exposure_direction": "outgoing",
                      "exposure_type": "indirect",
                      "provider_entity_id": "90192",
                      "provider_entity_type_id": "33",
                      "provider_entity_subtype_id": "142",
                      "country": "",
                      "raw_amount": null,
                      "raw_currency": null
                    }
                  ],
                  "counterparty_connections": [
                    {
                      "entity_name": "Example Sanctions",
                      "entity_type": "Sanctions",
                      "entity_subtype": "OFAC",
                      "risk_level": "critical",
                      "categories": [
                        "sanctioned"
                      ],
                      "received_usd": null,
                      "sent_usd": null,
                      "received_hops": null,
                      "sent_hops": null,
                      "percentage": 0.0,
                      "is_direct": true,
                      "country": null,
                      "provider_entity_id": null
                    },
                    {
                      "entity_name": "Example Sanctions",
                      "entity_type": "Sanctions",
                      "entity_subtype": "OFAC",
                      "risk_level": "critical",
                      "categories": [
                        "sanctioned"
                      ],
                      "received_usd": null,
                      "sent_usd": null,
                      "received_hops": null,
                      "sent_hops": null,
                      "percentage": 0.0,
                      "is_direct": true,
                      "country": null,
                      "provider_entity_id": null
                    }
                  ],
                  "network_nodes": [],
                  "network_edges": [],
                  "sanctions_hit": true,
                  "pep_counterparty": null,
                  "dominant_risk_category": "sanctioned",
                  "risk_factors": [
                    {
                      "source": "attribution",
                      "category": "sanctioned",
                      "label": "Sanctions / OFAC",
                      "entity_name": "Example Sanctions",
                      "direction": "attribution",
                      "exposure_type": "attribution",
                      "amount_usd": null,
                      "percentage": 0.0,
                      "is_high_risk": true,
                      "description": "the address is attributed to Sanctions / OFAC (Example Sanctions)"
                    },
                    {
                      "source": "exposure",
                      "category": "sanctioned",
                      "label": "Sanctions / OFAC",
                      "entity_name": "Example Sanctions",
                      "direction": "incoming",
                      "exposure_type": "direct",
                      "amount_usd": 9813695.0,
                      "percentage": 51.679304,
                      "is_high_risk": true,
                      "description": "51.6793% direct incoming exposure to Sanctions / OFAC (Example Sanctions)"
                    },
                    {
                      "source": "exposure",
                      "category": "defi",
                      "label": "DeFi / Bridges",
                      "entity_name": "Example DeFi 7",
                      "direction": "outgoing",
                      "exposure_type": "indirect",
                      "amount_usd": 7783414.38,
                      "percentage": 40.987766,
                      "is_high_risk": false,
                      "description": "40.9878% indirect outgoing exposure to DeFi / Bridges (Example DeFi 7)"
                    },
                    {
                      "source": "exposure",
                      "category": "defi",
                      "label": "DeFi / Yield Aggregator",
                      "entity_name": "Example DeFi 2",
                      "direction": "outgoing",
                      "exposure_type": "indirect",
                      "amount_usd": 1392494.37,
                      "percentage": 7.33293,
                      "is_high_risk": false,
                      "description": "7.33293% indirect outgoing exposure to DeFi / Yield Aggregator (Example DeFi 2)"
                    }
                  ],
                  "raw_response": {
                    "...": "provider-specific details"
                  },
                  "report_signature": "<hmac-sha256 over the result, scoped to your application>"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — विकृत पता, गायब `wallet_address`, असमर्थित `blockchain`, ऐसे पते के लिए `blockchain` छोड़ा गया जिसका प्रारूप किसी नेटवर्क का नाम नहीं देता है, या Elliptic या Chainalysis BYOK Marketplace कनेक्शन के बिना LIGHTNING।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य `x-api-key`।"
          },
          "409": {
            "description": "एप्लिकेशन के लिए कोई AML प्रदाता कॉन्फ़िगर नहीं किया गया है, या कॉन्फ़िगर किया गया प्रदाता अभी वॉलेट स्क्रीनिंग का समर्थन नहीं करता है। पहले लेन-देन निगरानी कॉन्फ़िगर करें।"
          },
          "422": {
            "description": "`0x` पते के लिए `blockchain` छोड़ा गया, जिसे प्रत्येक EVM नेटवर्क साझा करता है। कुछ भी स्क्रीन या बिल नहीं किया गया है; `candidate_chains` में से किसी एक पर `blockchain` सेट करके पुनः भेजें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "blockchain": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "A 0x address is valid on every EVM chain. Send blockchain as one of: ETH, BNB, MATIC, BASE, ARB, OP, CELO, MODE, PLUME."
                      ]
                    },
                    "candidate_chains": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ETH",
                        "BNB",
                        "MATIC",
                        "BASE",
                        "ARB",
                        "OP",
                        "CELO",
                        "MODE",
                        "PLUME"
                      ]
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "AML प्रदाता स्क्रीनिंग पूरी नहीं कर सका। बाद में पुनः प्रयास करें।"
          }
        }
      }
    },
    "/v3/wallet-screening/pdf/": {
      "post": {
        "summary": "वॉलेट स्क्रीनिंग परिणाम को PDF के रूप में रेंडर करें",
        "description": "`POST /v3/wallet-screening/` का स्टेटलेस साथी: उस endpoint द्वारा लौटाए गए सटीक JSON body को — इसमें जोड़े गए `report_signature` सहित — पुनः पोस्ट करें और उसी परिणाम की Didit-ब्रांडेड PDF प्राप्त करें। किसी भी प्रदाता को कॉल नहीं किया जाता है और न ही किसी चीज़ का बिल लिया जाता है और न ही कुछ स्थायी रूप से संग्रहीत किया जाता है; यह केवल उस परिणाम को फिर से रेंडर करता है जिसे Didit पहले ही तैयार कर चुका है। हस्ताक्षर PDF को एक अपरिवर्तित परिणाम से जोड़ता है: दोबारा पोस्ट करने से पहले `risk_score`, `severity`, `sanctions_hit`, या किसी अन्य हस्ताक्षरित फ़ील्ड को संपादित करने पर `400` के साथ विफल हो जाता है।",
        "operationId": "screenWalletPdf",
        "x-didit-sdk": {
          "resource": "wallet_screening",
          "method": "screen_pdf",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "description": "`POST /v3/wallet-screening/` द्वारा लौटाया गया अपरिवर्तित JSON ऑब्जेक्ट, जिसमें `report_signature` शामिल है।",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WalletScreeningResult"
                  }
                ],
                "required": [
                  "report_signature"
                ],
                "description": "`POST /v3/wallet-screening/` रिस्पॉन्स के समान आकार — `report_signature` सहित, उस रिस्पॉन्स बॉडी को ठीक वैसे ही वापस पास करें।"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "# $RESULT is the saved JSON body from POST /v3/wallet-screening/\ncurl -X POST 'https://verification.didit.me/v3/wallet-screening/pdf/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d \"$RESULT\" \\\n  -o wallet_screening_report.pdf"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.wallet_screening.screen_pdf(\n    provider=\"your-provider\",\n    screening_type=\"WALLET_SCREENING\",\n    risk_score=1,\n    severity=\"UNKNOWN\",\n    status=\"SCREENED\",\n    summary=\"your-summary\",\n    wallet_address=\"your-wallet-address\",\n    blockchain=\"your-blockchain\",\n    source_of_funds=[{}],\n    destination_of_funds=[{}],\n    counterparty_connections=[{}],\n    sanctions_hit=True,\n    dominant_risk_category=\"your-dominant-risk-category\",\n    report_signature=\"your-report-signature\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.walletScreening.screenPdf({\n  provider: \"your-provider\",\n  screening_type: \"WALLET_SCREENING\",\n  risk_score: 1,\n  severity: \"UNKNOWN\",\n  status: \"SCREENED\",\n  summary: \"your-summary\",\n  wallet_address: \"your-wallet-address\",\n  blockchain: \"your-blockchain\",\n  source_of_funds: [{}],\n  destination_of_funds: [{}],\n  counterparty_connections: [{}],\n  sanctions_hit: true,\n  dominant_risk_category: \"your-dominant-risk-category\",\n  report_signature: \"your-report-signature\",\n});\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.WalletScreening.ScreenPDF(ctx, didit.WalletScreeningResultParam{\n\tProvider:                \"your-provider\",\n\tScreeningType:           \"WALLET_SCREENING\",\n\tRiskScore:               1,\n\tSeverity:                \"UNKNOWN\",\n\tStatus:                  \"SCREENED\",\n\tSummary:                 \"your-summary\",\n\tWalletAddress:           \"your-wallet-address\",\n\tBlockchain:              \"your-blockchain\",\n\tSourceOfFunds:           []didit.WalletScreeningResultParamSourceOfFunds{{}},\n\tDestinationOfFunds:      []didit.WalletScreeningResultParamDestinationOfFunds{{}},\n\tCounterpartyConnections: []didit.WalletScreeningResultParamCounterpartyConnections{{}},\n\tSanctionsHit:            true,\n\tDominantRiskCategory:    didit.String(\"your-dominant-risk-category\"),\n\tReportSignature:         \"your-report-signature\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.WalletScreeningResult;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.walletScreening().screenPdf(WalletScreeningResult.builder()\n        .provider(\"your-provider\")\n        .screeningType(WalletScreeningResult.ScreeningType.of(\"WALLET_SCREENING\"))\n        .riskScore(1L)\n        .severity(WalletScreeningResult.Severity.of(\"UNKNOWN\"))\n        .status(WalletScreeningResult.Status.of(\"SCREENED\"))\n        .summary(\"your-summary\")\n        .walletAddress(\"your-wallet-address\")\n        .blockchain(\"your-blockchain\")\n        .sourceOfFunds(List.of(WalletScreeningResult.SourceOfFunds.builder()\n                .build()))\n        .destinationOfFunds(List.of(WalletScreeningResult.DestinationOfFunds.builder()\n                .build()))\n        .counterpartyConnections(List.of(WalletScreeningResult.CounterpartyConnections.builder()\n                .build()))\n        .sanctionsHit(true)\n        .dominantRiskCategory(\"your-dominant-risk-category\")\n        .reportSignature(\"your-report-signature\")\n        .build())\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->walletScreening->screenPdf([\n    'provider' => 'your-provider',\n    'screening_type' => 'WALLET_SCREENING',\n    'risk_score' => 1,\n    'severity' => 'UNKNOWN',\n    'status' => 'SCREENED',\n    'summary' => 'your-summary',\n    'wallet_address' => 'your-wallet-address',\n    'blockchain' => 'your-blockchain',\n    'source_of_funds' => [[]],\n    'destination_of_funds' => [[]],\n    'counterparty_connections' => [[]],\n    'sanctions_hit' => true,\n    'dominant_risk_category' => 'your-dominant-risk-category',\n    'report_signature' => 'your-report-signature',\n]);\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.wallet_screening.screen_pdf(\n  provider: \"your-provider\",\n  screening_type: \"WALLET_SCREENING\",\n  risk_score: 1,\n  severity: \"UNKNOWN\",\n  status: \"SCREENED\",\n  summary: \"your-summary\",\n  wallet_address: \"your-wallet-address\",\n  blockchain: \"your-blockchain\",\n  source_of_funds: [{}],\n  destination_of_funds: [{}],\n  counterparty_connections: [{}],\n  sanctions_hit: true,\n  dominant_risk_category: \"your-dominant-risk-category\",\n  report_signature: \"your-report-signature\"\n)\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.WalletScreening.ScreenPdfAsync(new WalletScreeningResult\n{\n    Provider = \"your-provider\",\n    ScreeningType = \"WALLET_SCREENING\",\n    RiskScore = 1,\n    Severity = \"UNKNOWN\",\n    Status = \"SCREENED\",\n    Summary = \"your-summary\",\n    WalletAddress = \"your-wallet-address\",\n    Blockchain = \"your-blockchain\",\n    SourceOfFunds = new WalletScreeningResultSourceOfFunds[] { new() },\n    DestinationOfFunds = new WalletScreeningResultDestinationOfFunds[] { new() },\n    CounterpartyConnections = new WalletScreeningResultCounterpartyConnections[] { new() },\n    SanctionsHit = true,\n    DominantRiskCategory = \"your-dominant-risk-category\",\n    ReportSignature = \"your-report-signature\",\n});\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ],
        "responses": {
          "200": {
            "description": "रेंडर किया गया PDF दस्तावेज़, सीधे बाइनरी `application/pdf` के रूप में लौटाया गया — कोई JSON रैपर नहीं है।",
            "headers": {
              "Content-Disposition": {
                "description": "`attachment; filename=wallet_screening_{address}.pdf`, पुनः पोस्ट किए गए परिणाम में `wallet_address` (या `transaction_hash`) से व्युत्पन्न।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=wallet_screening_0x28c6c06298d514db0899.pdf"
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "बॉडी वॉलेट स्क्रीनिंग परिणाम आकार से मेल खाने वाला JSON ऑब्जेक्ट नहीं है, या `report_signature` गायब है या रीपोस्ट किए गए फ़ील्ड से मेल नहीं खाता है (रीपोस्ट से पहले संपादित या छोटा किया गया)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "Not an object": {
                    "value": {
                      "non_field_errors": [
                        "Expected a JSON object matching a wallet-screening result."
                      ]
                    }
                  },
                  "Missing or invalid signature": {
                    "value": {
                      "report_signature": [
                        "This wallet-screening result is missing or fails its report signature - repost the exact JSON returned by the wallet-screening endpoint, unmodified."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य `x-api-key`।"
          }
        }
      }
    },
    "/v3/transactions/": {
      "get": {
        "summary": "लेन-देन सूचीबद्ध करें",
        "description": "निगरानी किए गए लेन-देन की पेजिनेटेड सूची, नवीनतम पहले (`txn_date` desc)। `count` 100 पर सीमित है; वास्तविक पंक्ति संख्या के लिए `total_transactions` का उपयोग करें। यह endpoint फ़िल्टरिंग या खोज पैरामीटर का समर्थन नहीं करता है।",
        "operationId": "listTransactions",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "पेज का आकार। छोड़े जाने पर डिफ़ॉल्ट 50 होता है। कोई अनिवार्य अधिकतम सीमा नहीं है, लेकिन लेटेंसी के लिए पेजों को छोटा रखें।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "लौटाए जाने वाले पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट। पिछले पृष्ठ से `next` URL का अनुसरण करना बेहतर है।"
          },
          {
            "name": "travel_rule_status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "केवल वे लेन-देन लौटाएं जिनका Travel Rule ट्रांसफर इस सटीक स्थिति में है (उदाहरण के लिए `ON_HOLD` या `AWAITING_COUNTERPARTY`)। `count` इस फ़िल्टर का पालन करता है; `total_transactions` अभी भी एप्लिकेशन में प्रत्येक लेन-देन की गणना करता है।"
          },
          {
            "name": "assignee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग किया गया; लेन-देन तब मेल खाता है जब वह किसी भी मान से मेल खाता है। `unassigned` वह है जो अभी तक किसी के पास नहीं है, `rules` वह है जो नियमों ने समीक्षक के बिना स्वयं तय किया है, और एक सदस्य ईमेल उसे सौंपे गए समीक्षक से मेल खाता है। `me` साइन-इन किया हुआ Console समीक्षक है, इसलिए `me` भेजने वाली API कुंजी को `400` मिलता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.transactions.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.transactions.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.ListAutoPaging(ctx, didit.TransactionsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.transactions().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->transactions->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Transactions.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "लेन-देन सारांशों की पेजिनेटेड सूची, नवीनतम पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मेल खाने वाले लेन-देन की कैप्ड संख्या (100 तक सटीक, उसके बाद कैप्ड)। पेजिनेट करते समय वास्तविक संख्या के लिए `total_transactions` का उपयोग करें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "total_transactions": {
                      "type": "integer",
                      "description": "एप्लिकेशन के लिए (गैर-हटाए गए) लेन-देन की सटीक कुल संख्या। पेजिनेटेड रिस्पॉन्स में मौजूद।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid",
                            "description": "स्थिर Didit लेन-देन पहचानकर्ता। विवरण/नोट्स/संबंधित कॉलों में `{transaction_id}` के रूप में उपयोग करें।"
                          },
                          "transaction_number": {
                            "type": "integer",
                            "description": "कंसोल में दिखाया गया एप्लिकेशन-स्कोप क्रमिक लेन-देन नंबर (उदा. `4123`)।"
                          },
                          "txn_id": {
                            "type": "string",
                            "description": "क्रिएट कॉल से ग्राहक द्वारा प्रदान किया गया पहचानकर्ता (अधिकतम 128 वर्ण)। प्रति एप्लिकेशन अद्वितीय।"
                          },
                          "transaction_type": {
                            "type": "string",
                            "description": "संग्रहीत शीर्ष-स्तरीय श्रेणी: `finance`, `kyc`, `travelRule`, `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`, `gamblingBonusChange`, `auditTrailEvent`। ध्यान दें कि कई शब्दों वाले मान camelCase में वापस दिए जाते हैं, भले ही उन्हें snake_case में सबमिट किया गया हो।"
                          },
                          "action_type": {
                            "type": "string",
                            "description": "श्रेणी के भीतर उप-प्रकार (जैसे `deposit`, `withdrawal`, `transfer`)।"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "APPROVED",
                              "IN_REVIEW",
                              "DECLINED",
                              "AWAITING_USER"
                            ],
                            "description": "वर्तमान निगरानी निर्णय।"
                          },
                          "direction": {
                            "type": "string",
                            "enum": [
                              "INBOUND",
                              "OUTBOUND"
                            ],
                            "description": "विषय (subject) के सापेक्ष दिशा। सबमिट किए गए केस की परवाह किए बिना अपरकेस में संग्रहीत किया जाता है।"
                          },
                          "amount": {
                            "type": "string",
                            "description": "अनुगामी शून्यों को हटाकर दशमलव स्ट्रिंग के रूप में लेन-देन राशि (उदा. `\"1500\"`, `\"0.5\"`, `\"0.123456789012345678\"`)। 18 दशमलव स्थानों तक।"
                          },
                          "currency": {
                            "type": "string",
                            "description": "`amount` का मुद्रा कोड। कोई भी ISO 4217 वर्णमाला कोड स्वीकार किया जाता है (उदा. `EUR`, `USD`, `NGN`), साथ ही क्रिप्टो एसेट सिंबल (उदा. `BTC`) भी। वर्तमान में प्रचलन में मौजूद कोड को प्राथमिकता दें। प्रत्येक स्वीकृत कोड के लिए विनिमय दर उपलब्ध नहीं होती है: जब कोड के लिए कोई दर उपलब्ध नहीं होती (उदाहरण के लिए ISO अकाउंटिंग यूनिट `XSU`, या कोई क्रिप्टो सिंबल जिसका मूल्य Didit निर्धारित नहीं करता), तो स्वचालित रूपांतरण विफल हो जाता है और `preferred_currency_amount` तब तक null वापस किया जाता है जब तक कि अनुरोध में पहले से रूपांतरित `amount_in_default_currency` प्रदान न किया गया हो।"
                          },
                          "preferred_currency_amount": {
                            "type": "string",
                            "nullable": true,
                            "description": "`amount` को एप्लिकेशन की पसंदीदा मुद्रा में परिवर्तित किया गया, जब उपलब्ध हो।"
                          },
                          "preferred_currency_code": {
                            "type": "string",
                            "nullable": true,
                            "description": "`preferred_currency_amount` के लिए उपयोग किया जाने वाला पसंदीदा मुद्रा कोड - एप्लिकेशन की आधार मुद्रा, कोई भी वर्तमान में प्रचलन में मौजूद ISO 4217 कोड। बिना किसी उपलब्ध विनिमय दर वाला कोड `preferred_currency_amount` को नल छोड़ देता है, जब तक कि अनुरोध में पहले से रूपांतरित `amount_in_default_currency` की आपूर्ति न की गई हो।"
                          },
                          "payment_details": {
                            "type": "string",
                            "nullable": true,
                            "description": "सबमिशन से प्राप्त मुक्त-पाठ भुगतान संदर्भ या मेमो।"
                          },
                          "score": {
                            "type": "integer",
                            "description": "जोखिम स्कोर (आमतौर पर 0–100)। अधिक = अधिक जोखिम भरा।"
                          },
                          "severity": {
                            "type": "string",
                            "nullable": true,
                            "enum": [
                              "UNKNOWN",
                              "LOW",
                              "MEDIUM",
                              "HIGH",
                              "CRITICAL"
                            ],
                            "description": "नियमों/प्रदाताओं द्वारा निर्धारित श्रेणीबद्ध जोखिम गंभीरता (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`)। जब तक कोई इसे सेट नहीं करता तब तक `null`।"
                          },
                          "subject_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "`APPLICANT` पक्ष का पूरा नाम।"
                          },
                          "subject_vendor_data": {
                            "type": "string",
                            "nullable": true,
                            "description": "आवेदक के लिए आपका आंतरिक उपयोगकर्ता/व्यवसाय पहचानकर्ता।"
                          },
                          "subject_country": {
                            "type": "string",
                            "nullable": true,
                            "description": "आवेदक का देश कोड, सबमिट किए गए `address.country` से (आमतौर पर ISO 3166-1 alpha-3)।"
                          },
                          "counterparty_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "`COUNTERPARTY` पक्ष का पूरा नाम, यदि कोई हो।"
                          },
                          "counterparty_vendor_data": {
                            "type": "string",
                            "nullable": true,
                            "description": "प्रतिपक्ष के लिए आपका आंतरिक पहचानकर्ता।"
                          },
                          "counterparty_country": {
                            "type": "string",
                            "nullable": true,
                            "description": "प्रतिपक्ष का देश कोड, सबमिट किए गए `address.country` से।"
                          },
                          "tags": {
                            "type": "array",
                            "description": "लेन-देन से जुड़े टैग (मैन्युअल रूप से या नियमों द्वारा)।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "uuid": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "color": {
                                  "type": "string"
                                },
                                "description": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "source": {
                                  "type": "string",
                                  "enum": [
                                    "didit",
                                    "custom"
                                  ],
                                  "description": "क्या टैग Didit प्रीसेट है या कस्टम टैग।"
                                }
                              }
                            }
                          },
                          "txn_date": {
                            "type": "string",
                            "format": "date-time",
                            "description": "लेन-देन कब हुआ (निर्माण के समय `transaction_at` से)।"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time",
                            "description": "Didit ने सबमिशन को कब रिकॉर्ड किया।"
                          },
                          "decision_reason_code": {
                            "type": "string",
                            "nullable": true,
                            "description": "वर्तमान `status` का मशीन-पठनीय कारण (उदा. `WALLET_HIGH_RISK`)।"
                          },
                          "decision_reason_label": {
                            "type": "string",
                            "nullable": true,
                            "description": "`decision_reason_code` के लिए मानव-पठनीय लेबल।"
                          },
                          "assigned_to_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "इस लेन-देन के लिए असाइन किए गए Console समीक्षक का डिस्प्ले नाम।"
                          },
                          "travel_rule_status": {
                            "type": "string",
                            "nullable": true,
                            "description": "लेन-देन के Travel Rule ट्रांसफर का स्टेटस (उदाहरण के लिए `COMPLETED`), या इसमें कोई न होने पर `null`।"
                          },
                          "travel_rule": {
                            "nullable": true,
                            "allOf": [
                              {
                                "$ref": "#/components/schemas/TransactionTravelRule"
                              }
                            ],
                            "description": "लेन-देन का Travel Rule ट्रांसफर, वही ब्लॉक जो `GET /v3/transactions/{transaction_id}/` पर `travel_rule` है, या जब लेन-देन में कोई नहीं है तो `null`।"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Single transaction": {
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "total_transactions": 1,
                      "results": [
                        {
                          "uuid": "abcdef12-3456-4890-abcd-ef1234567890",
                          "transaction_number": 4123,
                          "txn_id": "your-txn-2026-05-17-001",
                          "transaction_type": "finance",
                          "action_type": "withdrawal",
                          "status": "IN_REVIEW",
                          "direction": "OUTBOUND",
                          "amount": "1500",
                          "currency": "EUR",
                          "preferred_currency_amount": "1620.45",
                          "preferred_currency_code": "USD",
                          "payment_details": "Withdrawal to crypto wallet",
                          "txn_date": "2026-05-17T08:42:00Z",
                          "created_at": "2026-05-17T08:42:11Z",
                          "score": 78,
                          "severity": "HIGH",
                          "decision_reason_code": "WALLET_HIGH_RISK",
                          "decision_reason_label": "Destination wallet flagged as high risk",
                          "tags": [
                            {
                              "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                              "name": "Manual review",
                              "color": "#F59E0B",
                              "description": null,
                              "source": "custom"
                            }
                          ],
                          "subject_name": "Maria Garcia",
                          "subject_vendor_data": "user-12345",
                          "counterparty_name": null,
                          "counterparty_vendor_data": null,
                          "counterparty_country": null,
                          "subject_country": null,
                          "assigned_to_name": "Alex Reviewer",
                          "travel_rule_status": null,
                          "travel_rule": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए लेन-देन को सूचीबद्ध नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "लेन-देन बनाएं",
        "description": "सिंक्रोनस AML/जोखिम निगरानी के लिए लेन-देन सबमिट करें। लेन-देन `APPROVED` बनाया जाता है, फिर आपके नियम (और लागू होने पर क्रिप्टो स्क्रीनिंग) इनलाइन चलते हैं और लौटाए गए `status` को `IN_REVIEW` या `DECLINED` में बदल सकते हैं। **`transaction_id` आपकी आइडेम्पोटेंसी कुंजी है** (अधिकतम 128 वर्ण, प्रति ऐप अद्वितीय); इसका पुन: उपयोग करने पर 400 प्राप्त होता है। लाइव एप्लिकेशन के लिए सफलता पर एक `transaction.created` webhook भेजा जाता है। सैंडबॉक्स एप्लिकेशन बिल नहीं किए जाते हैं और `transaction.created` या `transaction.status.updated` webhook उत्सर्जित नहीं करते हैं। सैंडबॉक्स Travel Rule एक्सचेंज `environment: sandbox` के साथ `travel_rule.status.updated` webhook उत्सर्जित करते हैं। किसी भी प्रतिपक्ष से संपर्क करने से पहले एक Travel Rule ट्रांसफर संग्रहीत और वापस किया जाता है: `travel_rule.status` का मान `AWAITING_COUNTERPARTY` (या आपके थ्रेशोल्ड से नीचे `NOT_APPLICABLE`, घोषित स्व-होस्टेड वॉलेट के लिए `UNCONFIRMED_OWNERSHIP`, जब दूसरा वॉलेट आपका अपना सत्यापित वॉलेट हो तो `COMPLETED`) आता है और `travel_rule.protocol` null होता है। इसके बाद Didit रेल चुनता है और एक्सचेंज भेजता है, और ट्रांसफर का प्रत्येक बाद का स्थिति परिवर्तन, जिसमें प्रतिपक्ष तक कोई रेल न पहुंचने पर `COUNTERPARTY_VASP_NOT_FOUND` शामिल है, एक `travel_rule.status.updated` webhook के रूप में आता है। रेल या स्थिति बदलने पर आपके नियम फिर से चलते हैं।",
        "operationId": "createTransaction",
        "tags": [
          "Transactions"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/transactions/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"transaction_id\": \"your-txn-2026-05-17-001\",\n    \"transaction_category\": \"finance\",\n    \"transaction_details\": {\n      \"direction\": \"outbound\",\n      \"amount\": 1500,\n      \"currency\": \"EUR\",\n      \"action_type\": \"withdrawal\"\n    },\n    \"subject\": {\n      \"entity_type\": \"individual\",\n      \"vendor_data\": \"user-12345\",\n      \"full_name\": \"Maria Garcia\"\n    }\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.create(\n    transaction_id=\"your-txn-2026-05-17-001\",\n    transaction_category=\"finance\",\n    transaction_details={\n        \"direction\": \"outbound\",\n        \"amount\": 1500.0,\n        \"currency\": \"EUR\",\n        \"action_type\": \"withdrawal\",\n    },\n    subject={\n        \"entity_type\": \"individual\",\n        \"vendor_data\": \"user-12345\",\n        \"full_name\": \"Maria Garcia\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.create({\n  transaction_id: \"your-txn-2026-05-17-001\",\n  transaction_category: \"finance\",\n  transaction_details: {\n    direction: \"outbound\",\n    amount: 1500.0,\n    currency: \"EUR\",\n    action_type: \"withdrawal\",\n  },\n  subject: {\n    entity_type: \"individual\",\n    vendor_data: \"user-12345\",\n    full_name: \"Maria Garcia\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Create(ctx, didit.TransactionsCreateParams{\n\tTransactionID:       \"your-txn-2026-05-17-001\",\n\tTransactionCategory: \"finance\",\n\tTransactionDetails: didit.TransactionsCreateParamsTransactionDetails{\n\t\tDirection:  \"outbound\",\n\t\tAmount:     1500.0,\n\t\tCurrency:   \"EUR\",\n\t\tActionType: didit.String(\"withdrawal\"),\n\t},\n\tSubject: didit.TransactionsCreateParamsSubject{\n\t\tEntityType: didit.String(\"individual\"),\n\t\tVendorData: \"user-12345\",\n\t\tFullName:   \"Maria Garcia\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TransactionsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().create(TransactionsCreateParams.builder()\n        .transactionId(\"your-txn-2026-05-17-001\")\n        .transactionCategory(TransactionsCreateParams.TransactionCategory.of(\"finance\"))\n        .transactionDetails(TransactionsCreateParams.TransactionDetails.builder()\n                .direction(TransactionsCreateParams.TransactionDetails.Direction.of(\"outbound\"))\n                .amount(1500.0)\n                .currency(\"EUR\")\n                .actionType(\"withdrawal\")\n                .build())\n        .subject(TransactionsCreateParams.Subject.builder()\n                .entityType(\"individual\")\n                .vendorData(\"user-12345\")\n                .fullName(\"Maria Garcia\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->create([\n    'transaction_id' => 'your-txn-2026-05-17-001',\n    'transaction_category' => 'finance',\n    'transaction_details' => [\n        'direction' => 'outbound',\n        'amount' => 1500.0,\n        'currency' => 'EUR',\n        'action_type' => 'withdrawal',\n    ],\n    'subject' => [\n        'entity_type' => 'individual',\n        'vendor_data' => 'user-12345',\n        'full_name' => 'Maria Garcia',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.create(\n  transaction_id: \"your-txn-2026-05-17-001\",\n  transaction_category: \"finance\",\n  transaction_details: {\n    direction: \"outbound\",\n    amount: 1500.0,\n    currency: \"EUR\",\n    action_type: \"withdrawal\",\n  },\n  subject: {\n    entity_type: \"individual\",\n    vendor_data: \"user-12345\",\n    full_name: \"Maria Garcia\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.CreateAsync(new TransactionsCreateParams\n{\n    TransactionId = \"your-txn-2026-05-17-001\",\n    TransactionCategory = \"finance\",\n    TransactionDetails = new()\n    {\n        Direction = \"outbound\",\n        Amount = 1500.0,\n        Currency = \"EUR\",\n        ActionType = \"withdrawal\",\n    },\n    Subject = new()\n    {\n        EntityType = \"individual\",\n        VendorData = \"user-12345\",\n        FullName = \"Maria Garcia\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "transaction_id": {
                    "type": "string",
                    "description": "इस लेन-देन के लिए आपका विशिष्ट पहचानकर्ता (अधिकतम 128 वर्ण)।",
                    "example": "your-txn-2026-05-17-001"
                  },
                  "transaction_at": {
                    "type": "string",
                    "format": "date-time",
                    "description": "लेन-देन कब हुआ। छोड़े जाने पर डिफ़ॉल्ट रूप से वर्तमान समय।"
                  },
                  "time_zone": {
                    "type": "string",
                    "description": "IANA समय क्षेत्र पहचानकर्ता, उदाहरण के लिए `Europe/Madrid`।"
                  },
                  "transaction_category": {
                    "type": "string",
                    "description": "लेन-देन की श्रेणी। CamelCase उपनाम (`travelRule`, `userPlatformEvent`, `gamblingBet`, …) भी स्वीकार किए जाते हैं; बहु-शब्द श्रेणियों के लिए संग्रहीत/इको किया गया मान camelCase होता है।",
                    "example": "finance",
                    "enum": [
                      "finance",
                      "kyc",
                      "travel_rule",
                      "user_event",
                      "audit_trail_event",
                      "gambling_bet",
                      "gambling_limit_change",
                      "gambling_bonus_change",
                      "travelRule"
                    ]
                  },
                  "transaction_details": {
                    "type": "object",
                    "description": "लेन-देन के मुख्य वित्तीय विवरण।",
                    "required": [
                      "direction",
                      "amount",
                      "currency"
                    ],
                    "properties": {
                      "direction": {
                        "type": "string",
                        "description": "विषय (subject) के सापेक्ष लेन-देन की दिशा। केस-इनसेंसिटिव; उपनाम (alias) के रूप में `in`/`out` स्वीकार किए जाते हैं। अपरकेस में वापस लौटाया जाता है (`INBOUND`/`OUTBOUND`)।",
                        "example": "outbound",
                        "enum": [
                          "inbound",
                          "outbound",
                          "in",
                          "out"
                        ]
                      },
                      "amount": {
                        "type": "number",
                        "description": "लेन-देन राशि (18 दशमलव स्थानों तक)। सटीक परिशुद्धता महत्वपूर्ण होने पर इसे दशमलव स्ट्रिंग (उदा. `\"0.123456789012345678\"`) के रूप में भेजें: JSON संख्या को पहले बाइनरी फ़्लोट के रूप में पार्स किया जाता है, इसलिए राशि संग्रहीत होने से पहले लगभग 15 महत्वपूर्ण अंकों से अधिक के अंकों को राउंड किया जाता है। शून्य या उससे अधिक होना चाहिए: दिशा चिह्न निर्धारित करती है, और नकारात्मक राशि `400` लौटाती है।",
                        "example": 1500
                      },
                      "currency": {
                        "type": "string",
                        "description": "मुद्रा कोड। कोई भी ISO 4217 वर्णमाला कोड स्वीकार किया जाता है (उदा. `EUR`, `USD`, `NGN`), साथ ही क्रिप्टो एसेट सिंबल (उदा. `BTC`) भी। वर्तमान में प्रचलन में मौजूद कोड को प्राथमिकता दें। प्रत्येक स्वीकृत कोड के लिए विनिमय दर उपलब्ध नहीं होती है: जब कोड के लिए कोई दर उपलब्ध नहीं होती (उदाहरण के लिए ISO अकाउंटिंग यूनिट `XSU`, या कोई क्रिप्टो सिंबल जिसका मूल्य Didit निर्धारित नहीं करता), तो स्वचालित रूपांतरण विफल हो जाता है और `preferred_currency_amount` तब तक null वापस किया जाता है जब तक कि अनुरोध में पहले से रूपांतरित `amount_in_default_currency` प्रदान न किया गया हो।",
                        "example": "EUR"
                      },
                      "currency_kind": {
                        "type": "string",
                        "description": "क्या मुद्रा `fiat` है या `crypto`।"
                      },
                      "amount_in_default_currency": {
                        "type": "number",
                        "nullable": true,
                        "description": "डिफ़ॉल्ट मुद्रा में पूर्व-रूपांतरित राशि। यदि छोड़ दिया जाता है, तो स्वचालित FX रूपांतरण का प्रयास किया जाता है। शून्य या उससे अधिक होनी चाहिए।"
                      },
                      "default_currency": {
                        "type": "string",
                        "description": "कन्वर्ट की गई राशि के लिए डिफ़ॉल्ट मुद्रा कोड। वर्तमान में प्रचलन में मौजूद कोई भी ISO 4217 कोड।"
                      },
                      "payment_details": {
                        "type": "string",
                        "nullable": true,
                        "description": "मुक्त-पाठ भुगतान संदर्भ या मेमो।"
                      },
                      "payment_reference_id": {
                        "type": "string",
                        "nullable": true,
                        "description": "बाहरी भुगतान प्रणाली संदर्भ। क्रिप्टो AML लेन-देन-हैश स्क्रीनिंग के लिए, ब्लॉकचेन लेन-देन हैश भेजें और संबंधित पते के साथ `subject.payment_method.account_id` भी प्रदान करें।"
                      },
                      "action_type": {
                        "type": "string",
                        "nullable": true,
                        "description": "लेन-देन का उप-प्रकार, जैसे `deposit`, `withdrawal`, `transfer`।"
                      },
                      "crypto_params": {
                        "type": "object",
                        "description": "क्रिप्टो नेटवर्क चयन, मुद्रा (एसेट सिंबल) से अलग। कस्टम टोकन सिंबल रिकॉर्ड करने से उसके कॉन्ट्रैक्ट के लिए लेन-देन-हैश कवरेज की गारंटी नहीं मिलती है।",
                        "properties": {
                          "crypto_chain": {
                            "type": "string",
                            "description": "स्क्रीनिंग के लिए उपयोग किया गया वास्तविक नेटवर्क। प्रबंधित स्क्रीनिंग BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE (Base), OP (Optimism), ARB (Arbitrum One), AVAX (Avalanche C-Chain), ADA (Cardano), XLM (Stellar) और HBAR (Hedera) का समर्थन करती है। सामान्य नेटवर्क नाम भी स्वीकार किए जाते हैं, उदाहरण के लिए MATIC के लिए POLYGON या POL, BNB के लिए BSC और TRX के लिए TRON। मल्टी-नेटवर्क टोकन के लिए हमेशा इसे निर्दिष्ट करें। जब 0x लेन-देन हैश के साथ भेजे गए USDT, USDC या ETH के लिए यह गायब होता है, तो Didit हैश को Ethereum, BNB Chain, Polygon, Base, Arbitrum और Optimism पर खोजता है और जिस नेटवर्क पर यह मिलता है उस पर इसकी स्क्रीनिंग करता है; यदि किसी भी नेटवर्क पर यह नहीं मिलता है, तो लेन-देन की स्क्रीनिंग नहीं की जाती है और custom_values.aml_screening_status FAILED हो जाता है तथा कारण custom_values.aml_screening_error में होता है। जब वॉलेट द्वारा स्क्रीन किए गए USDT या USDC (कोई लेन-देन हैश नहीं) के लिए यह गायब होता है, तो Tron पते की Tron पर स्क्रीनिंग की जाती है, Solana पते की Solana पर, और 0x पते की उन छह नेटवर्कों में से पहले नेटवर्क पर जहाँ इसने लेन-देन भेजा है या टोकन रखता है, या जब यह उनमें से किसी पर भी सक्रिय नहीं है तो Ethereum पर स्क्रीनिंग की जाती है। कनेक्टेड प्रदाता कवरेज भिन्न होती है; LIGHTNING के लिए एक समर्थित कनेक्टेड प्रदाता की आवश्यकता होती है।",
                            "example": "BASE"
                          }
                        }
                      }
                    }
                  },
                  "subject": {
                    "type": "object",
                    "description": "लेन-देन का विषय (आवेदक)।",
                    "required": [
                      "vendor_data",
                      "full_name"
                    ],
                    "properties": {
                      "entity_type": {
                        "type": "string",
                        "description": "इकाई प्रकार: `individual` या `company`।"
                      },
                      "vendor_data": {
                        "type": "string",
                        "description": "आपका आंतरिक उपयोगकर्ता/व्यवसाय पहचानकर्ता।",
                        "example": "user-12345"
                      },
                      "full_name": {
                        "type": "string",
                        "description": "विषय का पूरा नाम।",
                        "example": "Maria Garcia"
                      },
                      "first_name": {
                        "type": "string",
                        "description": "विषय का पहला नाम।"
                      },
                      "last_name": {
                        "type": "string",
                        "description": "विषय का अंतिम नाम।"
                      },
                      "date_of_birth": {
                        "type": "string",
                        "format": "date",
                        "description": "जन्म तिथि (YYYY-MM-DD)।"
                      },
                      "address": {
                        "type": "object",
                        "description": "पता ऑब्जेक्ट।",
                        "properties": {
                          "country": {
                            "type": "string",
                            "description": "देश कोड (ISO 3166-1 alpha-3 अनुशंसित)। पक्ष के `country_code` में कॉपी किया गया।"
                          },
                          "town": {
                            "type": "string"
                          },
                          "state": {
                            "type": "string"
                          },
                          "street": {
                            "type": "string"
                          },
                          "post_code": {
                            "type": "string"
                          }
                        }
                      },
                      "institution_details": {
                        "type": "object",
                        "description": "संस्था विवरण (संस्थागत विषयों के लिए)।",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          },
                          "address": {
                            "type": "object"
                          }
                        }
                      },
                      "device_context": {
                        "type": "object",
                        "description": "लेन-देन के समय कैप्चर किया गया डिवाइस संदर्भ। browser_family और platform को स्पष्ट टॉप-लेवल कुंजियों के रूप में भेजा जाना चाहिए — वे user_agent से प्राप्त नहीं होते हैं। camelCase उपनाम device भी अनुरोध पर स्वीकार किया जाता है।",
                        "properties": {
                          "fingerprint": {
                            "type": "string",
                            "description": "विशिष्ट डिवाइस फ़िंगरप्रिंट।"
                          },
                          "persistent_device_id": {
                            "type": "string",
                            "description": "स्थिर क्रॉस-सत्र डिवाइस पहचानकर्ता (v2 फ़िंगरप्रिंट स्कीमा)।"
                          },
                          "user_agent": {
                            "type": "string",
                            "description": "ब्राउज़र या ऐप का user agent स्ट्रिंग। CamelCase उपनाम: userAgent।"
                          },
                          "browser_family": {
                            "type": "string",
                            "description": "ब्राउज़र फ़ैमिली (उदा. Chrome, Firefox, Safari)। इसे स्पष्ट रूप से भेजा जाना चाहिए — यह user_agent से प्राप्त नहीं होता है। CamelCase उपनाम: browserFamily।"
                          },
                          "browser_version": {
                            "type": "string",
                            "description": "ब्राउज़र वर्ज़न स्ट्रिंग। इसे स्पष्ट रूप से भेजा जाना चाहिए। CamelCase उपनाम: browserVersion।"
                          },
                          "platform": {
                            "type": "string",
                            "description": "प्लेटफ़ॉर्म पहचानकर्ता (web, ios, android, macos, windows, linux)। इसे स्पष्ट रूप से भेजा जाना चाहिए — यह user_agent से प्राप्त नहीं होता है।"
                          },
                          "os_family": {
                            "type": "string",
                            "description": "ऑपरेटिंग सिस्टम फ़ैमिली (उदा. iOS, Android, Windows)। CamelCase उपनाम: osFamily।"
                          },
                          "os_version": {
                            "type": "string",
                            "description": "ऑपरेटिंग सिस्टम संस्करण स्ट्रिंग। CamelCase उपनाम: osVersion।"
                          },
                          "accept_language": {
                            "type": "string",
                            "description": "Accept-Language हेडर मान। CamelCase उपनाम: acceptLang।"
                          },
                          "session_id": {
                            "type": "string",
                            "description": "उपयोगकर्ता के वर्तमान सत्र का सत्र पहचानकर्ता। मेटाडेटा में संग्रहीत। CamelCase उपनाम: sessionId।"
                          },
                          "session_age_ms": {
                            "type": "number",
                            "description": "लेन-देन के समय उपयोगकर्ता सत्र की आयु मिलीसेकंड में। CamelCase उपनाम: sessionAgeMs।"
                          },
                          "network_context": {
                            "type": "object",
                            "description": "IP पते और जियो-लोकेशन के साथ नेटवर्क संदर्भ। एक शीर्ष-स्तरीय ipInfo ब्लॉक भी इस ऑब्जेक्ट में शामिल किया गया है।",
                            "properties": {
                              "ip_address": {
                                "type": "string",
                                "description": "क्लाइंट का IP पता। CamelCase उपनाम: ip।"
                              },
                              "ip_country_code": {
                                "type": "string",
                                "description": "IP का जियो-रिज़ॉल्व्ड देश (ISO 3166-1 alpha-3)। CamelCase उपनाम: countryCode3।"
                              },
                              "latitude": {
                                "type": "number",
                                "description": "IP का भौगोलिक अक्षांश। CamelCase उपनाम: lat।"
                              },
                              "longitude": {
                                "type": "number",
                                "description": "IP का भौगोलिक देशांतर। CamelCase उपनाम: lon।"
                              }
                            }
                          }
                        }
                      },
                      "payment_method": {
                        "type": "object",
                        "description": "सब्जेक्ट द्वारा उपयोग की गई भुगतान विधि।",
                        "properties": {
                          "method_type": {
                            "type": "string",
                            "description": "भुगतान विधि का प्रकार: `bank_card`, `bank_account`, `crypto_wallet`, `ewallet`, `unhosted_wallet`, `other`।"
                          },
                          "account_id": {
                            "type": "string",
                            "description": "खाता पहचानकर्ता (उदा. IBAN, वॉलेट पता)। क्रिप्टो स्क्रीनिंग के लिए, इसमें इस प्रतिभागी का वॉलेट पता होना चाहिए। इनबाउंड लेन-देन-हैश स्क्रीनिंग के लिए विषय पर सेवा/ग्राहक जमा पता आवश्यक है। आउटबाउंड स्क्रीनिंग प्रतिपक्ष पर गंतव्य वॉलेट का उपयोग करती है। bitcoin या Lightning पर क्रिप्टो ट्रांसफर पर यह Lightning भुगतान अनुरोध (BOLT11 इनवॉइस, BOLT12 ऑफ़र, LNURL) या Lightning Address हो सकता है: Didit इसके द्वारा नामित प्राप्तकर्ता को खाते के रूप में संग्रहीत करता है (किसी का नाम न होने पर \"\") और Travel Rule ट्रांसफर के `chain_details.lightning` पर अनुरोध में जो विवरण है उसे संग्रहीत करता है। संग्रहीत होने के बाद अधिकतम 255 वर्ण। bitcoin या Lightning पर क्रिप्टो ट्रांसफर पर यह Lightning भुगतान अनुरोध (BOLT11 इनवॉइस, BOLT12 ऑफ़र, LNURL) या Lightning Address हो सकता है: Didit इसके द्वारा नामित प्राप्तकर्ता को खाते के रूप में संग्रहीत करता है (किसी का नाम न होने पर \"\") और Travel Rule ट्रांसफर के `chain_details.lightning` पर अनुरोध में जो विवरण है उसे संग्रहीत करता है। संग्रहीत होने के बाद अधिकतम 255 वर्ण।"
                          },
                          "memo": {
                            "type": "string",
                            "maxLength": 256,
                            "description": "मेमो नेटवर्क (XRP, XLM, EOS, ATOM, HBAR) पर वॉलेट का हिस्सा बनने वाला डेस्टिनेशन टैग या मेमो। एक साझा एक्सचेंज पते पर प्रत्येक मेमो अपनी स्वयं की भुगतान विधि है। XRP: एक डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (एक JSON संख्या स्वीकार की जाती है)। XLM: 28 बाइट्स तक का एक टेक्स्ट मेमो, एक 64-बिट id या हेक्स में 32-बाइट का हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट में कोई मेमो नहीं होता: वहाँ मेमो देने पर `400` मिलता है। उपनाम: `destinationTag` या `destination_tag`।"
                          },
                          "issuing_country": {
                            "type": "string",
                            "description": "जारीकर्ता का ISO 3166-1 alpha-3 देश कोड।"
                          }
                        }
                      }
                    }
                  },
                  "counterparty": {
                    "type": "object",
                    "description": "लेन-देन का प्रतिपक्ष (वैकल्पिक)।",
                    "properties": {
                      "entity_type": {
                        "type": "string",
                        "description": "इकाई प्रकार: `individual` या `company`।"
                      },
                      "vendor_data": {
                        "type": "string",
                        "description": "प्रतिपक्ष के लिए आपका आंतरिक पहचानकर्ता।"
                      },
                      "full_name": {
                        "type": "string",
                        "description": "प्रतिपक्ष का पूरा नाम।"
                      },
                      "first_name": {
                        "type": "string"
                      },
                      "last_name": {
                        "type": "string"
                      },
                      "date_of_birth": {
                        "type": "string",
                        "format": "date"
                      },
                      "address": {
                        "type": "object",
                        "description": "`country` (ISO 3166-1 alpha-3) के साथ पता ऑब्जेक्ट।"
                      },
                      "institution_details": {
                        "type": "object"
                      },
                      "device_context": {
                        "type": "object",
                        "description": "प्रतिपक्ष के लिए डिवाइस संदर्भ। browser_family और platform को स्पष्ट टॉप-लेवल कुंजियों के रूप में भेजा जाना चाहिए — वे user_agent से प्राप्त नहीं होते हैं।",
                        "properties": {
                          "fingerprint": {
                            "type": "string",
                            "description": "विशिष्ट डिवाइस फ़िंगरप्रिंट।"
                          },
                          "persistent_device_id": {
                            "type": "string",
                            "description": "स्थिर क्रॉस-सत्र डिवाइस पहचानकर्ता (v2 फ़िंगरप्रिंट स्कीमा)।"
                          },
                          "user_agent": {
                            "type": "string",
                            "description": "ब्राउज़र या ऐप का user agent स्ट्रिंग। CamelCase उपनाम: userAgent।"
                          },
                          "browser_family": {
                            "type": "string",
                            "description": "ब्राउज़र फ़ैमिली (उदा. Chrome, Firefox, Safari)। इसे स्पष्ट रूप से भेजा जाना चाहिए — यह user_agent से प्राप्त नहीं होता है। CamelCase उपनाम: browserFamily।"
                          },
                          "browser_version": {
                            "type": "string",
                            "description": "ब्राउज़र वर्ज़न स्ट्रिंग। इसे स्पष्ट रूप से भेजा जाना चाहिए। CamelCase उपनाम: browserVersion।"
                          },
                          "platform": {
                            "type": "string",
                            "description": "प्लेटफ़ॉर्म पहचानकर्ता (web, ios, android, macos, windows, linux)। इसे स्पष्ट रूप से भेजा जाना चाहिए — यह user_agent से प्राप्त नहीं होता है।"
                          },
                          "os_family": {
                            "type": "string",
                            "description": "ऑपरेटिंग सिस्टम फ़ैमिली (उदा. iOS, Android, Windows)। CamelCase उपनाम: osFamily।"
                          },
                          "os_version": {
                            "type": "string",
                            "description": "ऑपरेटिंग सिस्टम संस्करण स्ट्रिंग। CamelCase उपनाम: osVersion।"
                          },
                          "accept_language": {
                            "type": "string",
                            "description": "Accept-Language हेडर मान। CamelCase उपनाम: acceptLang।"
                          },
                          "session_id": {
                            "type": "string",
                            "description": "प्रतिपक्ष सत्र के लिए सत्र पहचानकर्ता। मेटाडेटा में संग्रहीत। CamelCase उपनाम: sessionId।"
                          },
                          "session_age_ms": {
                            "type": "number",
                            "description": "लेन-देन के समय उपयोगकर्ता सत्र की आयु मिलीसेकंड में। CamelCase उपनाम: sessionAgeMs।"
                          },
                          "network_context": {
                            "type": "object",
                            "description": "IP पते और जियो-लोकेशन के साथ नेटवर्क संदर्भ। एक शीर्ष-स्तरीय ipInfo ब्लॉक भी इस ऑब्जेक्ट में शामिल किया गया है।",
                            "properties": {
                              "ip_address": {
                                "type": "string",
                                "description": "क्लाइंट का IP पता। CamelCase उपनाम: ip।"
                              },
                              "ip_country_code": {
                                "type": "string",
                                "description": "IP का जियो-रिज़ॉल्व्ड देश (ISO 3166-1 alpha-3)। CamelCase उपनाम: countryCode3।"
                              },
                              "latitude": {
                                "type": "number",
                                "description": "IP का भौगोलिक अक्षांश। CamelCase उपनाम: lat।"
                              },
                              "longitude": {
                                "type": "number",
                                "description": "IP का भौगोलिक देशांतर। CamelCase उपनाम: lon।"
                              }
                            }
                          }
                        }
                      },
                      "payment_method": {
                        "type": "object",
                        "description": "प्रतिपक्ष द्वारा उपयोग की गई भुगतान विधि। travelRule लेन-देन पर, `method_type: \"unhosted_wallet\"` प्रतिपक्ष वॉलेट को स्व-होस्टेड घोषित करता है: ट्रांसफर प्रतिपक्ष-VASP रूटिंग को छोड़ देता है, सीधे `UNCONFIRMED_OWNERSHIP` में बनाया जाता है, और (जब `auto_wallet_verification` सक्षम हो) एक वॉलेट-स्वामित्व विजेट सत्र ऑटो-मिंट किया जाता है और लेन-देन के `action_required` ब्लॉक में वापस लौटाया जाता है।",
                        "properties": {
                          "method_type": {
                            "type": "string",
                            "description": "भुगतान विधि का प्रकार: `bank_card`, `bank_account`, `crypto_wallet`, `ewallet`, `unhosted_wallet`, `other`। Travel Rule के लिए स्व-होस्टेड वॉलेट घोषित करने के लिए `unhosted_wallet` का उपयोग करें।"
                          },
                          "account_id": {
                            "type": "string",
                            "description": "खाता पहचानकर्ता (उदा. IBAN या वॉलेट पता)। bitcoin या Lightning पर क्रिप्टो ट्रांसफर पर यह Lightning भुगतान अनुरोध (BOLT11 इनवॉइस, BOLT12 ऑफ़र, LNURL) या Lightning Address हो सकता है: Didit इसके द्वारा नामित प्राप्तकर्ता को खाते के रूप में संग्रहीत करता है (किसी का नाम न होने पर \"\") और Travel Rule ट्रांसफर के `chain_details.lightning` पर अनुरोध में जो विवरण है उसे संग्रहीत करता है। संग्रहीत होने के बाद अधिकतम 255 वर्ण। bitcoin या Lightning पर क्रिप्टो ट्रांसफर पर यह Lightning भुगतान अनुरोध (BOLT11 इनवॉइस, BOLT12 ऑफ़र, LNURL) या Lightning Address हो सकता है: Didit इसके द्वारा नामित प्राप्तकर्ता को खाते के रूप में संग्रहीत करता है (किसी का नाम न होने पर \"\") और Travel Rule ट्रांसफर के `chain_details.lightning` पर अनुरोध में जो विवरण है उसे संग्रहीत करता है। संग्रहीत होने के बाद अधिकतम 255 वर्ण।"
                          },
                          "memo": {
                            "type": "string",
                            "maxLength": 256,
                            "description": "मेमो नेटवर्क (XRP, XLM, EOS, ATOM, HBAR) पर वॉलेट का हिस्सा बनने वाला डेस्टिनेशन टैग या मेमो। एक साझा एक्सचेंज पते पर प्रत्येक मेमो अपनी स्वयं की भुगतान विधि है। XRP: एक डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (एक JSON संख्या स्वीकार की जाती है)। XLM: 28 बाइट्स तक का एक टेक्स्ट मेमो, एक 64-बिट id या हेक्स में 32-बाइट का हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट में कोई मेमो नहीं होता: वहाँ मेमो देने पर `400` मिलता है। उपनाम: `destinationTag` या `destination_tag`।"
                          },
                          "issuing_country": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "custom_properties": {
                    "type": "object",
                    "description": "लेन-देन से जुड़े मनमाने की-वैल्यू पेयर। प्रत्येक कुंजी को नियम शर्तों में फ़ील्ड पथ `custom_values.<key>` के साथ संदर्भित किया जा सकता है।",
                    "additionalProperties": true,
                    "example": {
                      "merchant_id": "test",
                      "bank_name": "test_2"
                    }
                  },
                  "travel_rule_details": {
                    "type": "object",
                    "description": "Travel Rule डेटा। जब Travel Rule सक्षम हो और transaction_category travel_rule हो, तो Didit स्वयं एक्सचेंज चलाता है: यह status, protocol, required और obligations_count को अनदेखा करता है, और originator_data, beneficiary_data और metadata का उपयोग करता है। अन्यथा Didit इन मानों को एक निष्क्रिय Travel Rule रिकॉर्ड के रूप में संग्रहीत करता है। जब Travel Rule चालू हो, तो आपके थ्रेशोल्ड पर या उससे अधिक का आउटबाउंड ट्रांसफ़र उस व्यवस्था की आवश्यकतानुसार डेटा ले जाना चाहिए (EU TFR या FATF Recommendation 16), जिसकी जाँच आपके द्वारा भेजे गए पक्षों पर की जाती है: एक अनुपलब्ध फ़ील्ड `travel_rule_details.originator_data` या `travel_rule_details.beneficiary_data` के तहत 400 रिस्पॉन्स देती है, उदाहरण के लिए \"EU TFR के लिए प्रेषक का नाम आवश्यक है।\"",
                    "required": [
                      "status"
                    ],
                    "properties": {
                      "status": {
                        "type": "string",
                        "description": "जब भी आप travel_rule_details भेजते हैं, तब आवश्यक है। Travel Rule ट्रांसफर स्टेटस में से एक (उदाहरण के लिए AWAITING_COUNTERPARTY, COMPLETED, NOT_APPLICABLE); लोअरकेस और camelCase स्पेलिंग तथा लेगसी मान UNKNOWN, COMPLIANT, PENDING_ACTION, PENDING_COUNTERPARTY, FAILED और EXEMPT भी स्वीकार किए जाते हैं और मैप किए जाते हैं। कोई भी अन्य मान 400 लौटाता है।"
                      },
                      "protocol": {
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "obligations_count": {
                        "type": "integer"
                      },
                      "originator_data": {
                        "type": "object",
                        "description": "प्रेषक पक्ष, फ़्लैट फ़ील्ड्स या एक IVMS 101 व्यक्ति के रूप में। स्वीकृत KYC सत्यापन वाले आपके उपयोगकर्ता के लिए, Didit सत्यापन द्वारा रखे गए फ़ील्ड्स को सत्यापित मानों से बदल देता है (`metadata.originator_provenance` देखें)। यह एक ऑब्जेक्ट होना चाहिए: इसके अलावा कुछ भी होने पर `400` मिलता है। मेमो नेटवर्क पर एक `memo` कुंजी प्रेषक वॉलेट के मेमो या टैग को नाम देती है।"
                      },
                      "beneficiary_data": {
                        "type": "object",
                        "description": "लाभार्थी पक्ष, फ़्लैट फ़ील्ड या एक IVMS 101 व्यक्ति के रूप में। यह एक ऑब्जेक्ट होना चाहिए: इसके अलावा कुछ भी होने पर `400` मिलता है। ट्रांसफ़र को रूट करने के लिए, Didit `wallet_address` (खाली होने पर `counterparty.payment_method.account_id` से भरा जाता है), `chain` (`transaction_details.crypto_params.crypto_chain` से या `currency` से भरा जाता है जब वह समर्थित चेन का नाम देता है), `name` (फ़ॉलबैक के रूप में `counterparty.full_name`), `travel_address`, `counterparty_vasp_name`, `counterparty_vasp_lei` और `counterparty_vasp_email` को पढ़ता है। मेमो नेटवर्क पर `memo` लाभार्थी वॉलेट के मेमो या टैग का नाम देता है; `wallet_address` और `memo` प्रतिपक्ष के भुगतान विधि पर वरीयता लेते हैं।"
                      },
                      "metadata": {
                        "type": "object"
                      },
                      "utxo": {
                        "allOf": [
                          {
                            "$ref": "#/components/schemas/TravelRuleUtxo"
                          }
                        ],
                        "description": "वैकल्पिक, केवल UTXO चेन्स (BTC, LTC, BCH, DOGE)। लेन-देन के इनपुट और आउटपुट, जिनसे Didit प्रेषक वॉलेट और लाभार्थी आउटपुट का अनुमान लगाता है जब आप उन्हें घोषित नहीं करते हैं।"
                      },
                      "originator": {
                        "type": "object",
                        "description": "एक IVMS 101 प्रेषक ब्लॉक: `originatorPersons` (एक `naturalPerson` या `legalPerson`; एक लीगल पर्सन पार्टी को कंपनी बनाता है) और `accountNumber` (वॉलेट पते)। `originator_data` के लिए उपयोग किया जाता है जब वह ऑब्जेक्ट खाली होता है। विकृत ब्लॉक के पाथ के आधार पर 400 रिस्पॉन्स दिया जाता है, उदाहरण के लिए `originator.originatorPersons`।"
                      },
                      "beneficiary": {
                        "type": "object",
                        "description": "एक IVMS 101 लाभार्थी ब्लॉक: `beneficiaryPersons` (एक `naturalPerson` या `legalPerson`; एक लीगल पर्सन पार्टी को कंपनी बनाता है) और `accountNumber` (वॉलेट पते)। `beneficiary_data` के लिए तब उपयोग किया जाता है जब वह ऑब्जेक्ट खाली हो। एक विकृत ब्लॉक अपने पाथ के आधार पर 400 रिस्पॉन्स देता है, उदाहरण के लिए `beneficiary.beneficiaryPersons`।"
                      },
                      "ivms101": {
                        "type": "object",
                        "description": "एक IVMS 101 ऑब्जेक्ट में रैप किए गए `originator` और `beneficiary` ब्लॉक (`IVMS101` भी स्वीकृत है)। शीर्ष-स्तरीय ब्लॉक रैपर वाले ब्लॉकों पर प्राथमिकता लेते हैं।"
                      }
                    }
                  },
                  "network_snapshot": {
                    "type": "object",
                    "description": "पहले से परिकलित नेटवर्क ग्राफ़ स्नैपशॉट।",
                    "properties": {
                      "nodes": {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      "edges": {
                        "type": "array",
                        "items": {
                          "type": "object"
                        }
                      },
                      "metrics": {
                        "type": "object"
                      }
                    }
                  },
                  "include_crypto_screening": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "क्रिप्टो ब्लॉकचेन एनालिटिक्स स्क्रीनिंग के लिए प्रति-लेन-देन ओवरराइड। जब `true` होता है, तो एप्लिकेशन डिफ़ॉल्ट की परवाह किए बिना क्रिप्टो स्क्रीनिंग की जाती है। जब `false` होता है, तो एप्लिकेशन सेटिंग्स में सक्षम होने पर भी क्रिप्टो स्क्रीनिंग छोड़ दी जाती है। न दिए जाने या `null` होने पर, Console में कॉन्फ़िगर किए गए एप्लिकेशन-स्तरीय डिफ़ॉल्ट का उपयोग किया जाता है। क्रिप्टो स्क्रीनिंग के लिए `transaction_details.direction`, `currency_kind: \"crypto\"`, एक चेन/करेंसी, और दिशा द्वारा चयनित पते की आवश्यकता होती है: इनबाउंड प्री-ट्रांसफ़र स्क्रीनिंग `counterparty.payment_method.account_id` का उपयोग करती है, इनबाउंड लेन-देन-हैश स्क्रीनिंग `subject.payment_method.account_id` का उपयोग करती है, और आउटबाउंड स्क्रीनिंग `counterparty.payment_method.account_id` का उपयोग करती है। जब `transaction_details.payment_reference_id` में ब्लॉकचेन लेन-देन हैश शामिल होता है, तो Didit लेन-देन स्क्रीनिंग करता है और उपलब्ध होने पर लेन-देन सारांश संवर्धन लौटाता है।"
                  }
                },
                "required": [
                  "transaction_id",
                  "transaction_category",
                  "transaction_details",
                  "subject"
                ]
              },
              "examples": {
                "Minimal fiat withdrawal": {
                  "summary": "फ़िएट आउटबाउंड ट्रांसफ़र के लिए न्यूनतम स्वीकार्य payload",
                  "value": {
                    "transaction_id": "your-txn-2026-05-17-001",
                    "transaction_category": "finance",
                    "transaction_details": {
                      "direction": "outbound",
                      "amount": 1500,
                      "currency": "EUR",
                      "action_type": "withdrawal"
                    },
                    "subject": {
                      "entity_type": "individual",
                      "vendor_data": "user-12345",
                      "full_name": "Maria Garcia"
                    }
                  }
                },
                "Crypto outbound with screening": {
                  "summary": "अनहोस्टेड वॉलेट में आउटबाउंड क्रिप्टो निकासी, ऑप्ट-इन स्क्रीनिंग",
                  "value": {
                    "transaction_id": "your-txn-2026-05-17-002",
                    "transaction_category": "finance",
                    "include_crypto_screening": true,
                    "transaction_details": {
                      "direction": "outbound",
                      "amount": 0.5,
                      "currency": "BTC",
                      "currency_kind": "crypto",
                      "amount_in_default_currency": 32500,
                      "default_currency": "USD",
                      "action_type": "withdrawal"
                    },
                    "subject": {
                      "entity_type": "individual",
                      "vendor_data": "user-12345",
                      "full_name": "Maria Garcia",
                      "payment_method": {
                        "method_type": "crypto_wallet",
                        "account_id": "bc1qexampleexchangewalletaddressxyz",
                        "issuing_country": "ESP"
                      }
                    },
                    "counterparty": {
                      "entity_type": "individual",
                      "payment_method": {
                        "method_type": "unhosted_wallet",
                        "account_id": "bc1qexampleexternalwalletaddressabc"
                      }
                    }
                  }
                },
                "Travel Rule transfer": {
                  "summary": "Travel Rule प्रेषक/लाभार्थी डेटा के साथ आउटबाउंड क्रिप्टो ट्रांसफर",
                  "value": {
                    "transaction_id": "your-txn-2026-05-17-003",
                    "transaction_category": "travel_rule",
                    "transaction_details": {
                      "direction": "outbound",
                      "amount": 25000,
                      "currency": "USDT",
                      "currency_kind": "crypto",
                      "action_type": "transfer"
                    },
                    "subject": {
                      "entity_type": "individual",
                      "vendor_data": "user-12345",
                      "full_name": "Maria Garcia",
                      "date_of_birth": "1992-03-14",
                      "address": {
                        "country": "ESP",
                        "town": "Madrid",
                        "street": "Calle Mayor 1",
                        "post_code": "28013"
                      }
                    },
                    "counterparty": {
                      "entity_type": "individual",
                      "full_name": "John Beneficiary",
                      "institution_details": {
                        "name": "Beneficiary VASP, Inc.",
                        "code": "BVASP-US"
                      }
                    },
                    "travel_rule_details": {
                      "status": "AWAITING_COUNTERPARTY",
                      "protocol": "IVMS101",
                      "required": true,
                      "originator_data": {
                        "name": "Maria Garcia"
                      },
                      "beneficiary_data": {
                        "name": "John Beneficiary"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "लेन-देन सबमिट किया गया और निगरानी की गई। मुख्य भाग पूरा लेन-देन विवरण है (`GET /v3/transactions/{transaction_id}/` के समान स्वरूप), जो पहले से लागू किए गए किसी भी नियम के परिणामों को दर्शाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDetail"
                },
                "examples": {
                  "Approved with no rule hits": {
                    "value": {
                      "uuid": "abcdef12-3456-4890-abcd-ef1234567890",
                      "environment": "live",
                      "transaction_number": 4123,
                      "txn_id": "your-txn-2026-05-17-001",
                      "txn_date": "2026-05-17T08:42:00Z",
                      "zone_id": "Europe/Madrid",
                      "transaction_type": "finance",
                      "action_type": "withdrawal",
                      "direction": "OUTBOUND",
                      "status": "APPROVED",
                      "source": "LIVE",
                      "amount": "1500",
                      "currency": "EUR",
                      "currency_type": "fiat",
                      "amount_in_default_currency": "1620.45",
                      "default_currency_code": "USD",
                      "preferred_currency_amount": "1620.45",
                      "preferred_currency_code": "USD",
                      "payment_details": "Withdrawal to crypto wallet",
                      "payment_txn_id": null,
                      "score": 0,
                      "severity": null,
                      "decision_reason_code": null,
                      "decision_reason_label": null,
                      "vendor_data": "user-12345",
                      "metadata": {
                        "subject": {
                          "entity_type": "individual",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "address": {},
                          "institution_details": {},
                          "device_context": {}
                        },
                        "counterparty": {}
                      },
                      "props": {},
                      "tags": [],
                      "parties": [
                        {
                          "uuid": "b1111111-2222-4333-8444-555555555555",
                          "role": "APPLICANT",
                          "entity_type": "individual",
                          "kind": "USER",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "first_name": null,
                          "last_name": null,
                          "country_code": null,
                          "dob": null,
                          "address": {},
                          "institution_info": {},
                          "device": {},
                          "external_party_snapshot": null
                        }
                      ],
                      "payment_methods": [],
                      "documents": [],
                      "activities": [
                        {
                          "uuid": "d4e5f6a7-8901-4bcd-9ef0-123456789abc",
                          "activity_type": "TRANSACTION_CREATED",
                          "source": "TRANSACTION",
                          "status": "APPROVED",
                          "title": "withdrawal",
                          "description": "Transaction recorded.",
                          "metadata": {},
                          "occurred_at": "2026-05-17T08:42:11Z"
                        }
                      ],
                      "alerts": [],
                      "rule_runs": [],
                      "provider_results": [],
                      "travel_rule": null,
                      "network_snapshot": null,
                      "remediation": null,
                      "action_required": null,
                      "cost_breakdown": null
                    }
                  },
                  "Flagged for review": {
                    "value": {
                      "uuid": "abcdef12-3456-4890-abcd-ef1234567891",
                      "environment": "live",
                      "transaction_number": 4124,
                      "txn_id": "your-txn-2026-05-17-002",
                      "txn_date": "2026-05-17T08:42:00Z",
                      "zone_id": "Europe/Madrid",
                      "transaction_type": "finance",
                      "action_type": "withdrawal",
                      "direction": "OUTBOUND",
                      "status": "IN_REVIEW",
                      "source": "LIVE",
                      "amount": "0.5",
                      "currency": "BTC",
                      "currency_type": "crypto",
                      "amount_in_default_currency": "32500",
                      "default_currency_code": "USD",
                      "preferred_currency_amount": "32500",
                      "preferred_currency_code": "USD",
                      "payment_details": "Withdrawal to crypto wallet",
                      "payment_txn_id": null,
                      "score": 78,
                      "severity": "HIGH",
                      "decision_reason_code": "WALLET_HIGH_RISK",
                      "decision_reason_label": "Destination wallet flagged as high risk",
                      "vendor_data": "user-12345",
                      "metadata": {
                        "subject": {
                          "entity_type": "individual",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "address": {},
                          "institution_details": {},
                          "device_context": {}
                        },
                        "counterparty": {}
                      },
                      "props": {
                        "order_id": "ord-9988"
                      },
                      "tags": [],
                      "parties": [
                        {
                          "uuid": "b1111111-2222-4333-8444-555555555555",
                          "role": "APPLICANT",
                          "entity_type": "individual",
                          "kind": "USER",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "first_name": null,
                          "last_name": null,
                          "country_code": null,
                          "dob": null,
                          "address": {},
                          "institution_info": {},
                          "device": {},
                          "external_party_snapshot": null
                        }
                      ],
                      "payment_methods": [],
                      "documents": [],
                      "activities": [],
                      "alerts": [
                        {
                          "uuid": "a7b8c9d0-1234-4abc-9def-567890abcdef",
                          "title": "Destination wallet flagged as high risk",
                          "description": "Provider risk score exceeded the configured threshold.",
                          "severity": "HIGH",
                          "status": "OPEN",
                          "source": "RULE",
                          "metadata": {},
                          "created_at": "2026-05-17T08:42:12Z",
                          "due_at": null
                        }
                      ],
                      "rule_runs": [
                        {
                          "uuid": "e5f6a7b8-9012-4cde-af01-23456789abcd",
                          "rule": "f6a7b8c9-0123-4def-b012-3456789abcde",
                          "rule_title": "High-risk wallet screening",
                          "rule_description": null,
                          "rule_category": "crypto",
                          "matched": true,
                          "is_test": false,
                          "mode": "ACTIVE",
                          "severity": "HIGH",
                          "score_delta": 78,
                          "status_target": "IN_REVIEW",
                          "action_summary": "score +78; change_status:IN_REVIEW",
                          "metadata": {},
                          "created_at": "2026-05-17T08:42:12Z"
                        }
                      ],
                      "provider_results": [],
                      "travel_rule": null,
                      "network_snapshot": null,
                      "remediation": null,
                      "action_required": null,
                      "cost_breakdown": null
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा (आवश्यक फ़ील्ड अनुपलब्ध, डुप्लिकेट `transaction_id`, अज्ञात enum मान, अमान्य मुद्रा, आदि)।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing required field": {
                    "value": {
                      "transaction_details": {
                        "amount": [
                          "This field is required."
                        ]
                      }
                    }
                  },
                  "Duplicate transaction_id": {
                    "value": {
                      "transaction_id": [
                        "A transaction with this transaction_id already exists."
                      ]
                    }
                  },
                  "Invalid category": {
                    "value": {
                      "non_field_errors": [
                        "Unsupported transaction category."
                      ]
                    }
                  },
                  "Missing subject identity": {
                    "value": {
                      "subject": [
                        "subject.vendor_data and subject.full_name are required."
                      ]
                    }
                  },
                  "Blocklisted participant": {
                    "value": {
                      "vendor_data": [
                        "The individual 'user-12345' is in the blocklist and cannot participate in transactions."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए लेन-देन सबमिट नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "समान `transaction_id` वाले किसी अन्य अनुरोध ने इस लेन-देन को तब बनाया जब इसे संसाधित किया जा रहा था, इसलिए दो एक साथ सबमिशन में से केवल एक ही सफल होता है। पुन: सबमिट करने के बजाय मौजूदा लेन-देन को पढ़ें।",
            "content": {
              "application/json": {
                "examples": {
                  "Concurrent duplicate": {
                    "value": {
                      "detail": "A transaction with this transaction_id already exists."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: लेन-देन निर्माण और इवेंट इनजेशन (`POST /v3/transactions/`, `POST /v3/events/`, `POST /v3/events/batch/`) प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं, जो अन्य सभी राइट अनुरोधों द्वारा साझा किए जाने वाले 300 से अलग है। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड, जिन्हें ऊपर की ओर पूर्णांकित किया गया है ताकि पुनः प्रयास अगली विंडो में हो।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Ingestion rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "create",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/transactions/{transaction_id}/": {
      "get": {
        "summary": "लेन-देन प्राप्त करें",
        "description": "एक लेन-देन के लिए संपूर्ण निगरानी रिकॉर्ड प्राप्त करें: पक्ष, स्कोर/गंभीरता, नियमों का निष्पादन, अलर्ट, Travel Rule परिणाम, सुधारात्मक कार्रवाई सत्र।",
        "operationId": "getTransaction",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "Didit-स्थायी लेन-देन UUID (create / list से लौटाया गया `uuid`, आपका `txn_id` **नहीं**)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "abcdef12-3456-7890-abcd-ef1234567890"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.retrieve(\n    \"abcdef12-3456-7890-abcd-ef1234567890\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.retrieve(\"abcdef12-3456-7890-abcd-ef1234567890\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Retrieve(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().retrieve(\"abcdef12-3456-7890-abcd-ef1234567890\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->retrieve('abcdef12-3456-7890-abcd-ef1234567890');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.retrieve(\"abcdef12-3456-7890-abcd-ef1234567890\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.RetrieveAsync(\"abcdef12-3456-7890-abcd-ef1234567890\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "पूर्ण लेन-देन विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDetail"
                },
                "examples": {
                  "In review with an alert": {
                    "value": {
                      "uuid": "abcdef12-3456-4890-abcd-ef1234567890",
                      "environment": "live",
                      "transaction_number": 4123,
                      "txn_id": "your-txn-2026-05-17-001",
                      "txn_date": "2026-05-17T08:42:00Z",
                      "zone_id": "Europe/Madrid",
                      "transaction_type": "finance",
                      "action_type": "withdrawal",
                      "direction": "OUTBOUND",
                      "status": "IN_REVIEW",
                      "source": "LIVE",
                      "amount": "1500",
                      "currency": "EUR",
                      "currency_type": "fiat",
                      "amount_in_default_currency": "1620.45",
                      "default_currency_code": "USD",
                      "preferred_currency_amount": "1620.45",
                      "preferred_currency_code": "USD",
                      "payment_details": "Withdrawal to crypto wallet",
                      "payment_txn_id": null,
                      "score": 78,
                      "severity": "HIGH",
                      "decision_reason_code": "WALLET_HIGH_RISK",
                      "decision_reason_label": "Destination wallet flagged as high risk",
                      "vendor_data": "user-12345",
                      "metadata": {
                        "subject": {
                          "entity_type": "individual",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "address": {},
                          "institution_details": {},
                          "device_context": {}
                        },
                        "counterparty": {}
                      },
                      "props": {
                        "order_id": "ord-9988"
                      },
                      "tags": [],
                      "parties": [
                        {
                          "uuid": "b1111111-2222-4333-8444-555555555555",
                          "role": "APPLICANT",
                          "entity_type": "individual",
                          "kind": "USER",
                          "vendor_data": "user-12345",
                          "full_name": "Maria Garcia",
                          "first_name": null,
                          "last_name": null,
                          "country_code": null,
                          "dob": null,
                          "address": {},
                          "institution_info": {},
                          "device": {},
                          "external_party_snapshot": null
                        }
                      ],
                      "payment_methods": [],
                      "documents": [],
                      "activities": [],
                      "alerts": [
                        {
                          "uuid": "a7b8c9d0-1234-4abc-9def-567890abcdef",
                          "title": "Destination wallet flagged as high risk",
                          "description": "Provider risk score exceeded the configured threshold.",
                          "severity": "HIGH",
                          "status": "OPEN",
                          "source": "RULE",
                          "metadata": {},
                          "created_at": "2026-05-17T08:42:12Z",
                          "due_at": null
                        }
                      ],
                      "rule_runs": [],
                      "provider_results": [],
                      "travel_rule": null,
                      "network_snapshot": null,
                      "remediation": null,
                      "action_required": null,
                      "cost_breakdown": null
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लेन-देन को नहीं पढ़ सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन के लिए इस UUID वाला कोई लेन-देन मौजूद नहीं है (हटा दिया गया, कभी बनाया नहीं गया, किसी अन्य एप्लिकेशन से संबंधित है, या पाथ सेगमेंट एक मान्य UUID नहीं है)।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/transactions/sdk-token/": {
      "post": {
        "summary": "SDK लेन-देन token मिंट करें",
        "description": "एक अल्पकालिक स्कोप्ड token मिंट करें जिसे आपका ऐप Didit SDKs को पास करता है ताकि वे `POST /v1/transactions/` के माध्यम से अंतिम उपयोगकर्ता के डिवाइस से सीधे लेन-देन सबमिट कर सकें। token एक `vendor_data` (आपकी उपयोगकर्ता आईडी) से बंधा होता है: इसके साथ सबमिट किए गए प्रत्येक लेन-देन की विषय पहचान उस बाइंडिंग से सर्वर-साइड लागू की जाती है, ताकि छेड़छाड़ किया गया क्लाइंट किसी अन्य उपयोगकर्ता की ओर से सबमिट न कर सके। अपने बैकएंड से token मिंट करें - ऐप में कभी भी API कुंजी स्वयं शिप न करें। camelCase उपनाम (`vendorData`, `ttlSeconds`, `maxUses`) भी स्वीकार किए जाते हैं।",
        "operationId": "createTransactionSdkToken",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "create_sdk_token",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "vendor_data": {
                    "type": "string",
                    "description": "उस अंतिम उपयोगकर्ता के लिए आपका आंतरिक पहचानकर्ता जिसके लिए यह token स्कोप किया गया है। token के साथ सबमिट किए गए प्रत्येक लेन-देन की विषय पहचान के रूप में लागू किया जाता है।",
                    "example": "user-042"
                  },
                  "ttl_seconds": {
                    "type": "integer",
                    "default": 900,
                    "maximum": 86400,
                    "description": "token का लाइफ़टाइम, सेकंड में। डिफ़ॉल्ट रूप से 900 (15 मिनट); अधिकतम 86400 (24 घंटे)।"
                  },
                  "max_uses": {
                    "type": "integer",
                    "nullable": true,
                    "description": "इस token के साथ अनुमत सफल सबमिशन की अधिकतम संख्या। TTL के भीतर असीमित उपयोग के लिए छोड़ दें या null रखें।"
                  }
                },
                "required": [
                  "vendor_data"
                ]
              },
              "example": {
                "vendor_data": "user-042",
                "ttl_seconds": 900,
                "max_uses": 3
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/transactions/sdk-token/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"vendor_data\": \"user-042\", \"ttl_seconds\": 900, \"max_uses\": 3}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.create_sdk_token(\n    vendor_data=\"user-042\",\n    ttl_seconds=900,\n    max_uses=3,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.createSdkToken({\n  vendor_data: \"user-042\",\n  ttl_seconds: 900,\n  max_uses: 3,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.CreateSDKToken(ctx, didit.TransactionsCreateSDKTokenParams{\n\tVendorData: \"user-042\",\n\tTTLSeconds: didit.Int(900),\n\tMaxUses:    didit.Int(3),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TransactionsCreateSdkTokenParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().createSdkToken(TransactionsCreateSdkTokenParams.builder()\n        .vendorData(\"user-042\")\n        .ttlSeconds(900L)\n        .maxUses(3L)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->createSdkToken([\n    'vendor_data' => 'user-042',\n    'ttl_seconds' => 900,\n    'max_uses' => 3,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.create_sdk_token(\n  vendor_data: \"user-042\",\n  ttl_seconds: 900,\n  max_uses: 3\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.CreateSdkTokenAsync(new TransactionsCreateSdkTokenParams\n{\n    VendorData = \"user-042\",\n    TtlSeconds = 900,\n    MaxUses = 3,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "मिंट किया गया token। अपने ऐप को `sdk_token` सौंपें; यह `expires_at` तक `X-Transaction-Token` हेडर के माध्यम से डिवाइस-फ़ेसिंग `/v1/transactions/` endpoints को प्रमाणित करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sdk_token": {
                      "type": "string",
                      "description": "SDK को पास करने के लिए स्कोप्ड transaction token।"
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "जब token स्वीकार किया जाना बंद हो जाता है।"
                    }
                  }
                },
                "example": {
                  "sdk_token": "q7Zt...urlsafe",
                  "expires_at": "2026-07-07T12:15:00Z"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा: अनुपलब्ध `vendor_data`, या अनुमत सीमा से बाहर `ttl_seconds`।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing vendor_data": {
                    "value": {
                      "vendor_data": [
                        "This field is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid API Key": {
                    "value": {
                      "detail": "Invalid API Key."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/": {
      "post": {
        "summary": "SDK से एक लेन-देन सबमिट करें",
        "description": "डिवाइस-फ़ेसिंग endpoint जिसे अंतिम उपयोगकर्ता के डिवाइस से सीधे लेन-देन सबमिट करने के लिए Didit SDKs कॉल करते हैं। प्रमाणीकरण API कुंजी के बजाय `X-Transaction-Token` हेडर में भेजा गया `POST /v3/transactions/sdk-token/` का स्कोप्ड token है, और endpoint CORS-सक्षम है ताकि ब्राउज़र इसे क्रॉस-ओरिजिन कॉल कर सकें। payload नीचे दिखाए गए camelCase वायर एलियास का उपयोग करता है (SDK `submitTransaction` विधियां इसे आपके लिए बनाती हैं)। तीन सर्वर-साइड गारंटी: एप्लिकेशन हमेशा token से लिया जाता है; विषय की पहचान (`externalUserId`) हमेशा token के `vendor_data` से लागू की जाती है, इसलिए स्पूफ़ किए गए payload मानों को अनदेखा कर दिया जाता है; और डिवाइस इंटेलिजेंस (SDK डिवाइस फ़िंगरप्रिंट और सर्वर-व्युत्पन्न IP और user agent) स्वचालित रूप से विषय से जुड़ जाता है।",
        "operationId": "submitTransactionFromSdk",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "submit_from_device",
          "auth": "device_token",
          "server": false
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "TransactionTokenAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "txnId": {
                    "type": "string",
                    "description": "इस लेन-देन के लिए आपका विशिष्ट पहचानकर्ता (`transaction_id` पर मैप करता है, अधिकतम 128 वर्ण)।",
                    "example": "wd-2026-07-07-0042"
                  },
                  "txnDate": {
                    "type": "string",
                    "format": "date-time",
                    "description": "लेन-देन कब हुआ (`transaction_at` पर मैप होता है)। छोड़े जाने पर डिफ़ॉल्ट रूप से वर्तमान समय।"
                  },
                  "zoneId": {
                    "type": "string",
                    "description": "IANA समय क्षेत्र पहचानकर्ता (`time_zone` पर मैप करता है), उदाहरण के लिए `Europe/Madrid`।"
                  },
                  "type": {
                    "type": "string",
                    "description": "लेन-देन श्रेणी (`transaction_category` पर मैप होती है), उदा. `finance`, `kyc`, `travelRule`, `userPlatformEvent`, `gamblingBet`।",
                    "example": "travelRule"
                  },
                  "info": {
                    "type": "object",
                    "description": "लेन-देन के मुख्य वित्तीय विवरण (`transaction_details` पर मैप होते हैं)।",
                    "required": [
                      "direction",
                      "amount",
                      "currency"
                    ],
                    "properties": {
                      "direction": {
                        "type": "string",
                        "description": "विषय (subject) के सापेक्ष दिशा। केस-इनसेंसिटिव; उपनाम (alias) के रूप में `in`/`out` स्वीकार किए जाते हैं। अपरकेस में वापस लौटाया जाता है (`INBOUND`/`OUTBOUND`)।",
                        "example": "out"
                      },
                      "amount": {
                        "type": "number",
                        "description": "लेन-देन राशि (18 दशमलव स्थानों तक)। दशमलव स्ट्रिंग भी स्वीकार की जाती है और लगभग 15 से अधिक महत्वपूर्ण अंकों को बनाए रखने का यही एकमात्र तरीका है: JSON संख्या को पहले बाइनरी फ़्लोट के रूप में पार्स किया जाता है, इसलिए `0.123456789012345678` को `0.12345678901234568` के रूप में संग्रहीत किया जाता है।",
                        "example": 0.25
                      },
                      "currency": {
                        "type": "string",
                        "description": "मुद्रा कोड। कोई भी ISO 4217 वर्णमाला कोड स्वीकार किया जाता है (उदा. `EUR`, `USD`, `NGN`), साथ ही क्रिप्टो एसेट सिंबल (उदा. `BTC`) भी। वर्तमान में प्रचलन में मौजूद कोड को प्राथमिकता दें। प्रत्येक स्वीकृत कोड के लिए विनिमय दर उपलब्ध नहीं होती है: जब कोड के लिए कोई दर उपलब्ध नहीं होती (उदाहरण के लिए ISO अकाउंटिंग यूनिट `XSU`, या कोई क्रिप्टो सिंबल जिसका मूल्य Didit निर्धारित नहीं करता), तो स्वचालित रूपांतरण विफल हो जाता है और `preferred_currency_amount` तब तक null वापस किया जाता है जब तक कि अनुरोध में पहले से रूपांतरित `amountInDefaultCurrency` प्रदान न किया गया हो।",
                        "example": "ETH"
                      },
                      "currencyType": {
                        "type": "string",
                        "description": "क्या मुद्रा `fiat` है या `crypto` (`currency_kind` से मैप होती है)।"
                      },
                      "amountInDefaultCurrency": {
                        "type": "number",
                        "nullable": true,
                        "description": "डिफ़ॉल्ट मुद्रा में पूर्व-रूपांतरित राशि (`amount_in_default_currency` पर मैप होती है)। यदि छोड़ दिया जाता है, तो स्वचालित FX रूपांतरण का प्रयास किया जाता है।"
                      },
                      "defaultCurrencyCode": {
                        "type": "string",
                        "description": "कन्वर्ट की गई राशि के लिए डिफ़ॉल्ट मुद्रा कोड (`default_currency` पर मैप होता है)। वर्तमान में प्रचलन में मौजूद कोई भी ISO 4217 कोड।"
                      },
                      "paymentDetails": {
                        "type": "string",
                        "nullable": true,
                        "description": "मुक्त-पाठ भुगतान संदर्भ या मेमो (`payment_details` पर मैप होता है)।"
                      },
                      "paymentTxnId": {
                        "type": "string",
                        "nullable": true,
                        "description": "बाहरी भुगतान संदर्भ (`payment_reference_id` पर मैप होता है); क्रिप्टो लेन-देन के लिए ऑन-चेन लेन-देन हैश।"
                      },
                      "type": {
                        "type": "string",
                        "nullable": true,
                        "description": "लेन-देन का उप-प्रकार (`action_type` पर मैप होता है), जैसे `deposit`, `withdrawal`, `transfer`।"
                      },
                      "cryptoParams": {
                        "type": "object",
                        "description": "क्रिप्टो-विशिष्ट पैरामीटर, उदा. `{\"crypto_chain\": \"ETH\"}`।"
                      }
                    }
                  },
                  "subject": {
                    "type": "object",
                    "description": "लेन-देन का विषय (आवेदक)। `externalUserId` को यहाँ अनदेखा कर दिया गया है: विषय की पहचान हमेशा token के `vendor_data` से लागू की जाती है।",
                    "required": [
                      "fullName"
                    ],
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "इकाई प्रकार (`entity_type` पर मैप होता है): `individual` (डिफ़ॉल्ट) या `company`।"
                      },
                      "externalUserId": {
                        "type": "string",
                        "description": "विषय पर अनदेखा किया गया - token के `vendor_data` से सर्वर-साइड लागू किया गया।"
                      },
                      "fullName": {
                        "type": "string",
                        "example": "Jane Doe"
                      },
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "dob": {
                        "type": "string",
                        "format": "date",
                        "description": "जन्म तिथि (YYYY-MM-DD; `date_of_birth` पर मैप होती है)।"
                      },
                      "address": {
                        "type": "object",
                        "description": "`country` (ISO 3166-1 alpha-3), `town`, `state`, `street`, `post_code` के साथ पता ऑब्जेक्ट।"
                      },
                      "institutionInfo": {
                        "type": "object",
                        "description": "संस्थागत प्रतिभागियों के लिए संस्था विवरण (`institution_details` से मैप होता है)।"
                      },
                      "device": {
                        "type": "object",
                        "description": "वैकल्पिक स्पष्ट डिवाइस संदर्भ। स्वचालित रूप से कैप्चर किए गए डिवाइस इंटेलिजेंस के साथ मर्ज किया गया; टकराव होने पर सर्वर-व्युत्पन्न फ़ील्ड प्राथमिकता लेते हैं।"
                      },
                      "paymentMethod": {
                        "type": "object",
                        "description": "सब्जेक्ट द्वारा उपयोग की गई भुगतान विधि (`payment_method` पर मैप होती है)।",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "भुगतान विधि का प्रकार (`method_type` पर मैप होता है), उदा. `bank_card`, `bank_account`, `crypto_wallet`, `ewallet`, `unhosted_wallet`, `other`।"
                          },
                          "accountId": {
                            "type": "string",
                            "description": "खाता पहचानकर्ता (`account_id` पर मैप करता है): IBAN, कार्ड फ़िंगरप्रिंट, या वॉलेट पता।"
                          },
                          "issuingCountry": {
                            "type": "string",
                            "description": "जारीकर्ता का ISO 3166-1 alpha-3 देश कोड (`issuing_country` पर मैप होता है)।"
                          }
                        }
                      }
                    }
                  },
                  "counterparty": {
                    "type": "object",
                    "description": "लेन-देन का प्रतिपक्ष (वैकल्पिक)। `subject` जैसा ही स्वरूप; `externalUserId` यहाँ सार्थक है।",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "इकाई प्रकार (`entity_type` पर मैप होता है): `individual` या `company`।"
                      },
                      "externalUserId": {
                        "type": "string",
                        "description": "प्रतिपक्ष के लिए आपका आंतरिक पहचानकर्ता (`vendor_data` पर मैप होता है)।"
                      },
                      "fullName": {
                        "type": "string"
                      },
                      "firstName": {
                        "type": "string"
                      },
                      "lastName": {
                        "type": "string"
                      },
                      "dob": {
                        "type": "string",
                        "format": "date"
                      },
                      "address": {
                        "type": "object"
                      },
                      "institutionInfo": {
                        "type": "object"
                      },
                      "device": {
                        "type": "object"
                      },
                      "paymentMethod": {
                        "type": "object",
                        "description": "प्रतिपक्ष द्वारा उपयोग की गई भुगतान विधि (`payment_method` पर मैप होती है)। travelRule लेन-देन पर, `type: \"unhosted_wallet\"` प्रतिपक्ष वॉलेट को स्व-होस्टेड घोषित करता है: ट्रांसफर प्रतिपक्ष-VASP रूटिंग को छोड़ देता है, सीधे `UNCONFIRMED_OWNERSHIP` में बनाया जाता है, और (जब `auto_wallet_verification` सक्षम हो) एक वॉलेट-स्वामित्व विजेट सत्र ऑटो-मिंट किया जाता है और `action_required` में वापस लौटाया जाता है ताकि SDK इसे लॉन्च कर सके।",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "भुगतान विधि का प्रकार (`method_type` पर मैप होता है), उदा. `bank_card`, `bank_account`, `crypto_wallet`, `ewallet`, `unhosted_wallet`, `other`। Travel Rule के लिए स्व-होस्टेड वॉलेट घोषित करने के लिए `unhosted_wallet` का उपयोग करें।"
                          },
                          "accountId": {
                            "type": "string",
                            "description": "खाता पहचानकर्ता (`account_id` पर मैप करता है): IBAN, कार्ड फ़िंगरप्रिंट, या वॉलेट पता।"
                          },
                          "issuingCountry": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  },
                  "props": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "कस्टम कुंजी-मान जोड़े (`custom_properties` पर मैप होते हैं)। प्रत्येक कुंजी को नियम शर्तों में `custom_values.<key>` के रूप में संदर्भित किया जा सकता है।"
                  },
                  "travelRule": {
                    "type": "object",
                    "description": "Travel Rule विवरण (`travel_rule_details` पर मैप होता है)। जब एप्लिकेशन के लिए Travel Rule सक्षम होता है, तो Didit आपके द्वारा भेजे गए किसी भी `status` को अनदेखा करता है और एक्सचेंज को स्वयं संचालित करता है।",
                    "required": [
                      "status"
                    ],
                    "properties": {
                      "status": {
                        "type": "string"
                      },
                      "protocol": {
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      },
                      "obligationsCount": {
                        "type": "integer"
                      },
                      "originatorData": {
                        "type": "object"
                      },
                      "beneficiaryData": {
                        "type": "object"
                      },
                      "metadata": {
                        "type": "object"
                      }
                    }
                  },
                  "includeCryptoScreening": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "क्रिप्टो ब्लॉकचेन एनालिटिक्स स्क्रीनिंग के लिए प्रति-लेन-देन ओवरराइड (`include_crypto_screening` से मैप होता है)।"
                  },
                  "fingerprint_v2": {
                    "type": "object",
                    "description": "`didit-fp-v2` डिवाइस फ़िंगरप्रिंट payload। SDKs द्वारा स्वचालित रूप से इंजेक्ट किया जाता है; केवल सीधे वायर API को कॉल करते समय प्रासंगिक।"
                  }
                },
                "required": [
                  "txnId",
                  "type",
                  "info",
                  "subject"
                ]
              },
              "example": {
                "txnId": "wd-2026-07-07-0042",
                "type": "travelRule",
                "info": {
                  "direction": "out",
                  "amount": "0.25",
                  "currency": "ETH",
                  "currencyType": "crypto",
                  "cryptoParams": {
                    "crypto_chain": "ETH"
                  }
                },
                "subject": {
                  "fullName": "Jane Doe"
                },
                "counterparty": {
                  "fullName": "Ana Diaz",
                  "paymentMethod": {
                    "type": "unhosted_wallet",
                    "accountId": "0xBeneficiaryWallet01"
                  }
                },
                "travelRule": {
                  "status": "AWAITING_COUNTERPARTY",
                  "beneficiaryData": {
                    "wallet_address": "0xBeneficiaryWallet01",
                    "name": "Ana Diaz"
                  }
                },
                "includeCryptoScreening": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v1/transactions/ \\\n  -H 'X-Transaction-Token: SDK_TOKEN' -H 'Content-Type: application/json' \\\n  -d '{\"txnId\": \"wd-2026-07-07-0042\", \"type\": \"travelRule\", \"info\": {\"direction\": \"out\", \"amount\": \"0.25\", \"currency\": \"ETH\", \"currencyType\": \"crypto\"}, \"subject\": {\"fullName\": \"Jane Doe\"}, \"counterparty\": {\"fullName\": \"Ana Diaz\", \"paymentMethod\": {\"type\": \"unhosted_wallet\", \"accountId\": \"0xBeneficiaryWallet01\"}}, \"travelRule\": {\"status\": \"AWAITING_COUNTERPARTY\", \"beneficiaryData\": {\"wallet_address\": \"0xBeneficiaryWallet01\", \"name\": \"Ana Diaz\"}}, \"includeCryptoScreening\": true}'"
          },
          {
            "lang": "javascript",
            "label": "Web SDK",
            "source": "import { DiditSdk } from '@didit-protocol/sdk-web';\n\nconst result = await DiditSdk.shared.submitTransaction({\n  transactionToken: sdkToken,\n  transaction: {\n    txnId: 'wd-2026-07-07-0042',\n    category: 'travelRule',\n    details: { direction: 'out', amount: '0.25', currency: 'ETH', currencyType: 'crypto' },\n    subject: { fullName: 'Jane Doe' },\n    counterparty: { fullName: 'Ana Diaz', paymentMethod: { type: 'unhosted_wallet', accountId: '0xBeneficiaryWallet01' } },\n    travelRule: { status: 'AWAITING_COUNTERPARTY', beneficiaryData: { wallet_address: '0xBeneficiaryWallet01', name: 'Ana Diaz' } },\n    includeCryptoScreening: true\n  },\n  onActionCompleted: (refreshed) => console.log(refreshed.status)\n});"
          }
        ],
        "responses": {
          "201": {
            "description": "लेन-देन सबमिट किया गया और निगरानी की गई। `GET /v3/transactions/{transaction_id}/` के समान विवरण स्वरूप, जिसमें `action_required` ब्लॉक भी शामिल है जब अंतिम उपयोगकर्ता को फ़ॉलो-अप कार्रवाई पूरी करनी होती है (SDK डिफ़ॉल्ट रूप से इसे स्वचालित रूप से लॉन्च करते हैं)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDetail"
                },
                "examples": {
                  "Wallet ownership required": {
                    "value": {
                      "uuid": "22222222-3333-4444-5555-666666666666",
                      "txn_id": "wd-2026-07-07-0042",
                      "transaction_type": "travelRule",
                      "direction": "OUTBOUND",
                      "status": "APPROVED",
                      "amount": "0.25",
                      "currency": "ETH",
                      "travel_rule": {
                        "uuid": "33333333-4444-5555-6666-777777777777",
                        "status": "UNCONFIRMED_OWNERSHIP",
                        "required": true
                      },
                      "action_required": {
                        "type": "wallet_ownership",
                        "url": "https://verify.didit.me/wallet-ownership/3s9x...urlsafe",
                        "widget_session_id": "77777777-8888-9999-aaaa-bbbbbbbbbbbb",
                        "expires_at": "2026-07-07T13:00:00Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा (आवश्यक फ़ील्ड अनुपलब्ध, डुप्लिकेट `txnId`, अज्ञात श्रेणी)।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing fields": {
                    "value": {
                      "transaction_details": {
                        "currency": [
                          "This field is required."
                        ]
                      }
                    }
                  },
                  "Duplicate txnId": {
                    "value": {
                      "transaction_id": [
                        "A transaction with this transaction_id already exists."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "लेन-देन token अस्वीकार कर दिया गया था: अनुपलब्ध, अज्ञात, निरस्त, इसके `max_uses` से अधिक, या समय-सीमा समाप्त। समय-सीमा समाप्त token के रिस्पॉन्स के विवरण में हमेशा `expired` शब्द शामिल होता है, जिससे SDK `expired_token` और `invalid_token` त्रुटियों के बीच अंतर करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "Invalid transaction token."
                    }
                  },
                  "Expired token": {
                    "value": {
                      "detail": "Transaction token expired."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "समान `txnId` वाले किसी अन्य अनुरोध ने इस लेन-देन को तब बनाया जब इसे संसाधित किया जा रहा था, इसलिए दो एक साथ सबमिशन में से केवल एक ही सफल होता है। पुन: सबमिट करने के बजाय मौजूदा लेन-देन को पढ़ें।",
            "content": {
              "application/json": {
                "examples": {
                  "Concurrent duplicate": {
                    "value": {
                      "detail": "A transaction with this transaction_id already exists."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v1/transactions/{transaction_id}/": {
      "get": {
        "summary": "SDK से लेन-देन प्राप्त करें",
        "description": "डिवाइस-फ़ेसिंग रीड endpoint, जिसे सबमिट करने के लिए उपयोग किए गए उसी `X-Transaction-Token` से प्रमाणित किया जाता है। स्वतः-लॉन्च किए गए कार्रवाई फ़्लो के पूरा होने या उसकी विंडो बंद होने के बाद SDKs इसे पोल करते हैं, ताकि अंतिम स्थिति कभी भी किसी एकल सूचना पर निर्भर न रहे। सबमिट रिस्पॉन्स के समान ही लेन-देन विवरण लौटाता है, जिसमें वर्तमान `action_required` ब्लॉक शामिल है (कार्रवाई हल होने के बाद `null`)।",
        "operationId": "getTransactionFromSdk",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "retrieve_from_device",
          "auth": "device_token",
          "server": false
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "Didit-स्थायी लेन-देन UUID (सबमिट रिस्पॉन्स से प्राप्त `uuid`, आपका `txnId` **नहीं**)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "22222222-3333-4444-5555-666666666666"
          }
        ],
        "security": [
          {
            "TransactionTokenAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v1/transactions/22222222-3333-4444-5555-666666666666/' \\\n  -H 'X-Transaction-Token: SDK_TOKEN'"
          }
        ],
        "responses": {
          "200": {
            "description": "पूर्ण लेन-देन विवरण, जिसमें `action_required` शामिल है (लंबित कार्रवाई हल होने के बाद `null`)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionDetail"
                }
              }
            }
          },
          "401": {
            "description": "लेन-देन token अस्वीकार कर दिया गया था: अनुपलब्ध, अज्ञात, निरस्त, इसके `max_uses` से अधिक, या समय-सीमा समाप्त।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired token": {
                    "value": {
                      "detail": "Transaction token expired."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "token के एप्लिकेशन के लिए इस UUID वाला कोई लेन-देन मौजूद नहीं है, या पाथ सेगमेंट एक मान्य UUID नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/businesses/": {
      "get": {
        "summary": "व्यवसाय सूचीबद्ध करें",
        "description": "समान `vendor_data` (फ़्री-फ़ॉर्म स्ट्रिंग, UUID नहीं) साझा करने वाले KYB सत्रों से Didit द्वारा एकत्रित [व्यवसायों](/entities/businesses) के साथ-साथ API के माध्यम से बनाए गए व्यवसायों को सूचीबद्ध करें। पेजिनेटेड, `last_session_at` desc द्वारा क्रमित। यह endpoint फ़िल्टरिंग या खोज पैरामीटर का समर्थन नहीं करता है — पेज प्राप्त करें और क्लाइंट-साइड फ़िल्टर करें।",
        "operationId": "list_businesses",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "पेज का आकार। छोड़े जाने पर डिफ़ॉल्ट 50 होता है। कोई अनिवार्य अधिकतम सीमा नहीं है, लेकिन लेटेंसी के लिए पेजों को छोटा रखें।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "लौटाए जाने वाले पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट। इसे मैन्युअल रूप से गणना करने की तुलना में पिछले पृष्ठ से `next` URL का अनुसरण करना बेहतर है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/businesses/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.businesses.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.businesses.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Businesses.ListAutoPaging(ctx, didit.BusinessesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.businesses().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->businesses->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.businesses.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Businesses.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "स्थिति, सत्र गणना और सुविधा ब्रेकडाउन के साथ व्यवसायों की पेजिनेटेड सूची।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मिलान वाली पंक्तियों की संख्या — 100 तक सटीक, परफ़ॉर्मेंस के लिए उससे अधिक होने पर 100 पर सीमित। अंतिम पेज का पता लगाने के लिए इसका उपयोग न करें; इसके बजाय `next` के `null` होने पर निर्भर रहें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BusinessListItem"
                      }
                    }
                  }
                },
                "examples": {
                  "Example": {
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
                          "vendor_data": "company-123",
                          "display_name": null,
                          "legal_name": "Acme Trading Ltd",
                          "registration_number": "12345678",
                          "country_code": "GB",
                          "effective_name": "Acme Trading Ltd",
                          "status": "ACTIVE",
                          "session_count": 2,
                          "approved_count": 1,
                          "declined_count": 0,
                          "in_review_count": 1,
                          "features": {
                            "KYB": "Approved"
                          },
                          "features_list": [
                            {
                              "feature": "KYB",
                              "status": "Approved"
                            }
                          ],
                          "last_session_at": "2026-03-15T10:30:00Z",
                          "last_activity_at": "2026-03-15T10:30:00Z",
                          "first_session_at": "2026-01-10T08:00:00Z",
                          "tags": [
                            {
                              "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                              "name": "VIP",
                              "color": "#2567FF"
                            }
                          ],
                          "created_at": "2026-01-10T08:00:00Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए व्यवसायों को सूचीबद्ध नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/customization/": {
      "get": {
        "summary": "ब्रांडिंग कस्टमाइज़ेशन प्राप्त करें",
        "description": "API कुंजी से निर्धारित एप्लिकेशन के लिए व्हाइट लेबल ब्रांडिंग लौटाता है: रंग, फ़ॉन्ट, बॉर्डर रेडीआई, लोगो URL और UI/UX विकल्प। कस्टम डोमेन और व्हाइट लेबल ईमेल सेटिंग्स केवल Business Console में प्रबंधित की जाती हैं और इस रिस्पॉन्स का हिस्सा नहीं हैं।",
        "operationId": "get_customization",
        "x-didit-sdk": {
          "resource": "customization",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Customization"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/customization/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.customization.retrieve()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.customization.retrieve();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Customization.Retrieve(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.customization().retrieve();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->customization->retrieve();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.customization.retrieve\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Customization.RetrieveAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "एप्लिकेशन के लिए वर्तमान ब्रांडिंग कस्टमाइज़ेशन।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrandingCustomization"
                },
                "examples": {
                  "Default branding": {
                    "value": {
                      "color_primary": "#000000",
                      "color_secondary": "#9DA1A1",
                      "color_background": "#FFFFFF",
                      "color_panel": "#2567FF",
                      "color_panel_10": "#1A1A1A",
                      "color_on_panel_1": "#9DA1A1",
                      "color_on_panel_2": "#F4F4F6",
                      "color_on_background": "#000000",
                      "color_button_1": "#2567FF",
                      "color_button_2": "#F8F8F8",
                      "color_button_text_1": "#FFFFFF",
                      "color_button_text_2": "#000000",
                      "color_pill_text": "#111827",
                      "border_radius_panel": 10,
                      "border_radius_buttons": 12,
                      "font_family": "Inter",
                      "font_weight": "regular",
                      "font_url": "https://fonts.googleapis.com/css2?family=Inter",
                      "logo_square": null,
                      "logo_rectangular": null,
                      "logo_rectangular_dark": null,
                      "favicon": null,
                      "app_public_name": "Acme Verify",
                      "privacy_policy_url": "https://acme.com/privacy",
                      "skip_welcome_screen": false,
                      "disable_login_with_didit": false,
                      "hide_progress_bar": false,
                      "callback_seconds": 3
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "ब्रांडिंग कस्टमाइज़ेशन अपडेट करें",
        "description": "एप्लिकेशन की व्हाइट लेबल ब्रांडिंग का आंशिक अपडेट। रंग, फ़ॉन्ट, रेडियस और UI विकल्प बदलने के लिए `application/json` भेजें, या लोगो इमेज अपलोड करने के लिए `multipart/form-data` भेजें। केवल आपके द्वारा शामिल किए गए फ़ील्ड ही बदले जाते हैं। इस endpoint के माध्यम से कस्टम डोमेन और व्हाइट लेबल ईमेल सेट नहीं किए जा सकते — उनके लिए Business Console का उपयोग करें।",
        "operationId": "update_customization",
        "x-didit-sdk": {
          "resource": "customization",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Customization"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrandingCustomizationUpdate"
              },
              "examples": {
                "Update colors and font": {
                  "summary": "ब्रांडिंग रंग और फ़ॉन्ट बदलें",
                  "value": {
                    "color_primary": "#123456",
                    "color_button_1": "#2567FF",
                    "font_family": "AR One Sans",
                    "border_radius_buttons": 16
                  }
                },
                "Update UI options": {
                  "summary": "सार्वजनिक नाम और फ़्लो विकल्प बदलें",
                  "value": {
                    "app_public_name": "Acme Verify",
                    "privacy_policy_url": "https://acme.com/privacy",
                    "skip_welcome_screen": true,
                    "hide_progress_bar": true,
                    "callback_seconds": 5
                  }
                },
                "Remove a logo": {
                  "summary": "वर्तमान आयताकार लोगो हटाएं",
                  "value": {
                    "delete_logo_rectangular": true
                  }
                },
                "Remove the dark-mode logo": {
                  "summary": "वर्तमान डार्क-मोड लोगो हटाएं",
                  "value": {
                    "delete_logo_rectangular_dark": true
                  }
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "description": "केवल लोगो इमेज अपलोड करने के लिए multipart/form-data का उपयोग करें। ऊपर दिए गए ब्रांडिंग फ़ील्ड भी उसी अनुरोध में फ़ॉर्म फ़ील्ड के रूप में भेजे जा सकते हैं।",
                "properties": {
                  "image_square": {
                    "type": "string",
                    "format": "binary",
                    "description": "चौकोर लोगो (1:1 पहलू अनुपात)। PNG, JPG या WebP, लंबी भुजा पर कम से कम 512 px, अधिकतम **1 MB**।"
                  },
                  "image_rectangular": {
                    "type": "string",
                    "format": "binary",
                    "description": "आयताकार लोगो (2:1 पहलू अनुपात)। PNG, JPG या WebP, लंबी भुजा पर कम से कम 512 px, अधिकतम **1 MB**।"
                  },
                  "image_rectangular_dark": {
                    "type": "string",
                    "format": "binary",
                    "description": "डार्क मोड के लिए आयताकार लोगो (2:1 पहलू अनुपात), जो डार्क बैकग्राउंड पर दिखाया जाता है। PNG, JPG या WebP, लंबी भुजा पर कम से कम 512 px, अधिकतम **1 MB**। `logo_rectangular_dark` के रूप में लौटाया जाता है।"
                  },
                  "image_favicon": {
                    "type": "string",
                    "format": "binary",
                    "description": "फ़ेविकॉन छवि। अधिकतम **500 KB**।"
                  }
                }
              },
              "example": {
                "image_rectangular": "(binary PNG logo, 2:1)",
                "image_rectangular_dark": "(binary PNG logo for dark mode, 2:1)",
                "image_favicon": "(binary favicon)"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/customization/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"color_primary\": \"#123456\", \"font_family\": \"AR One Sans\"}'"
          },
          {
            "lang": "curl",
            "label": "curl (logo upload)",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/customization/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'image_rectangular=@logo.png' \\\n  -F 'image_rectangular_dark=@logo-dark.png' \\\n  -F 'image_favicon=@favicon.ico'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.customization.update(\n    image_rectangular=open(\"image_rectangular.jpg\", \"rb\"),\n    image_rectangular_dark=open(\"image_rectangular_dark.jpg\", \"rb\"),\n    image_favicon=open(\"image_favicon.jpg\", \"rb\"),\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.customization.update({\n  image_rectangular: await fileFromPath(\"image_rectangular.jpg\"),\n  image_rectangular_dark: await fileFromPath(\"image_rectangular_dark.jpg\"),\n  image_favicon: await fileFromPath(\"image_favicon.jpg\"),\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Customization.Update(ctx, didit.CustomizationUpdateParams{\n\tImageRectangular:     didit.Some(didit.FileFromPath(\"image_rectangular.jpg\")),\n\tImageRectangularDark: didit.Some(didit.FileFromPath(\"image_rectangular_dark.jpg\")),\n\tImageFavicon:         didit.Some(didit.FileFromPath(\"image_favicon.jpg\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.CustomizationUpdateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.customization().update(CustomizationUpdateParams.builder()\n        .imageRectangular(Path.of(\"image_rectangular.jpg\"))\n        .imageRectangularDark(Path.of(\"image_rectangular_dark.jpg\"))\n        .imageFavicon(Path.of(\"image_favicon.jpg\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->customization->update([\n    'image_rectangular' => File::fromPath('image_rectangular.jpg'),\n    'image_rectangular_dark' => File::fromPath('image_rectangular_dark.jpg'),\n    'image_favicon' => File::fromPath('image_favicon.jpg'),\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.customization.update(\n  image_rectangular: Pathname(\"image_rectangular.jpg\"),\n  image_rectangular_dark: Pathname(\"image_rectangular_dark.jpg\"),\n  image_favicon: Pathname(\"image_favicon.jpg\")\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Customization.UpdateAsync(new CustomizationUpdateParams\n{\n    ImageRectangular = FileUpload.FromPath(\"image_rectangular.jpg\"),\n    ImageRectangularDark = FileUpload.FromPath(\"image_rectangular_dark.jpg\"),\n    ImageFavicon = FileUpload.FromPath(\"image_favicon.jpg\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "ब्रांडिंग अपडेट की गई। संपूर्ण ब्रांडिंग ऑब्जेक्ट वापस किया जाता है (सभी फ़ील्ड, केवल वे नहीं जिन्हें आपने बदला है)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrandingCustomization"
                },
                "examples": {
                  "Updated": {
                    "value": {
                      "color_primary": "#123456",
                      "color_secondary": "#9DA1A1",
                      "color_background": "#FFFFFF",
                      "color_panel": "#2567FF",
                      "color_panel_10": "#1A1A1A",
                      "color_on_panel_1": "#9DA1A1",
                      "color_on_panel_2": "#F4F4F6",
                      "color_on_background": "#000000",
                      "color_button_1": "#2567FF",
                      "color_button_2": "#F8F8F8",
                      "color_button_text_1": "#FFFFFF",
                      "color_button_text_2": "#000000",
                      "color_pill_text": "#111827",
                      "border_radius_panel": 10,
                      "border_radius_buttons": 16,
                      "font_family": "AR One Sans",
                      "font_weight": "400",
                      "font_url": "https://fonts.googleapis.com/css2?family=AR+One+Sans",
                      "logo_square": null,
                      "logo_rectangular": "https://cdn.didit.me/white_label/logo_rectangular/...",
                      "logo_rectangular_dark": null,
                      "favicon": null,
                      "app_public_name": "Acme Verify",
                      "privacy_policy_url": "https://acme.com/privacy",
                      "skip_welcome_screen": true,
                      "disable_login_with_didit": false,
                      "hide_progress_bar": false,
                      "callback_seconds": 3
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body। उदाहरण के लिए: एक विकृत हेक्स रंग, एक अज्ञात फ़ॉन्ट फ़ैमिली या वेट, केवल Business Console का फ़ील्ड (`domain`, `from_email`, `verify_domain`, `force_remove_domain`, `verify_email_domain`, `force_remove_email_domain`, और उनके केवल-पढ़ने योग्य साथी), या एक ऐसा लोगो अपलोड जो PNG, JPG या WebP छवि नहीं है, अपनी लंबी भुजा पर 512 px से कम है, 1 MB से अधिक है, या उसका पहलू अनुपात (aspect ratio) गलत है। कस्टम डोमेन कॉन्फ़िगर होने पर `disable_login_with_didit` को `false` सेट करने पर भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Bad color": {
                    "value": {
                      "color_primary": [
                        "Invalid color format. Use '#RRGGBB' or '#RRGGBBAA' format."
                      ]
                    }
                  },
                  "Bad logo": {
                    "value": {
                      "image_rectangular": [
                        "Image aspect ratio must be 2:1. Got 1024x1024 image dimensions"
                      ]
                    }
                  },
                  "Unsupported logo format": {
                    "summary": "PNG, JPG या WebP छवि नहीं है (उदाहरण के लिए एक SVG)",
                    "value": {
                      "image_rectangular_dark": [
                        "Upload a PNG, JPG or WebP image."
                      ]
                    }
                  },
                  "Logo too small": {
                    "summary": "लंबी तरफ़ 512 px से कम",
                    "value": {
                      "image_rectangular": [
                        "Image must be at least 512 px on its long side. Got 400x200 image dimensions"
                      ]
                    }
                  },
                  "Logo too large": {
                    "summary": "1 MB से अधिक",
                    "value": {
                      "image_square": [
                        "File size should not exceed 1 MB"
                      ]
                    }
                  },
                  "Console-only field": {
                    "value": {
                      "domain": [
                        "Manage this field in the Business Console."
                      ]
                    }
                  },
                  "Bad font weight": {
                    "value": {
                      "font_weight": [
                        "Font weight 950 is not available for Inter. Available weights are: 100, 200, 300, 400, 500, 600, 700, 800, 900"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid token": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। घातीय बैकऑफ़ के साथ पुनः प्रयास करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/businesses/{vendor_data}/": {
      "get": {
        "summary": "व्यवसाय प्राप्त करें",
        "description": "`vendor_data` (सटीक मिलान) द्वारा एक [व्यवसाय](/entities/businesses) प्राप्त करें। सूची दृश्य में `metadata` और `updated_at` जोड़ता है। हटाए गए व्यवसाय 404 लौटाते हैं।",
        "operationId": "get_business",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "व्यवसाय के लिए आपका विशिष्ट पहचानकर्ता — एक मुक्त-रूप स्ट्रिंग (UUID नहीं), ठीक वैसे ही मिलान किया गया जैसा भेजा गया था।",
            "example": "company-123"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/businesses/company-123/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.retrieve(\n    \"company-123\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.retrieve(\"company-123\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Retrieve(ctx, \"company-123\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().retrieve(\"company-123\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->retrieve('company-123');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.retrieve(\"company-123\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.RetrieveAsync(\"company-123\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "मेटाडेटा और एकत्रित सत्र डेटा सहित पूर्ण व्यवसाय विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDetailItem"
                },
                "examples": {
                  "Active business": {
                    "value": {
                      "didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
                      "vendor_data": "company-123",
                      "display_name": null,
                      "legal_name": "Acme Trading Ltd",
                      "registration_number": "12345678",
                      "country_code": "GB",
                      "effective_name": "Acme Trading Ltd",
                      "status": "ACTIVE",
                      "session_count": 2,
                      "approved_count": 1,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "features": {
                        "KYB": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "KYB",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2026-03-15T10:30:00Z",
                      "last_activity_at": "2026-03-15T10:30:00Z",
                      "first_session_at": "2026-01-10T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "name": "VIP",
                          "color": "#2567FF"
                        }
                      ],
                      "created_at": "2026-01-10T08:00:00Z",
                      "metadata": {
                        "industry": "fintech"
                      },
                      "updated_at": "2026-03-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के व्यवसायों को नहीं पढ़ सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई (हटाया न गया) व्यवसाय मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "व्यवसाय अपडेट करें",
        "description": "व्यवसाय का आंशिक अपडेट: `display_name`, `legal_name`, `registration_number`, `country_code`, `status`, `metadata`। `metadata` पूरी तरह से बदल जाता है। `status` को `BLOCKED` पर सेट करने से `vendor_data` सिस्टम ब्लॉकलिस्ट में जुड़ जाता है; `BLOCKED` से हटाने पर वह प्रविष्टि हट जाती है। प्रत्येक संपादन कंपनी की गतिविधि में रिकॉर्ड किया जाता है: वैकल्पिक `reason` के साथ स्टेटस परिवर्तन, और प्रोफ़ाइल अपडेट के रूप में `display_name`, `legal_name`, `registration_number`, `country_code` या `metadata` में परिवर्तन।",
        "operationId": "update_business",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "व्यवसाय के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप स्ट्रिंग, UUID नहीं)।",
            "example": "company-123"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "आंशिक-अपडेट बॉडी। केवल वे फ़ील्ड प्रदान करें जिन्हें आप बदलना चाहते हैं।",
                "properties": {
                  "display_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "कंसोल में दिखाया जाने वाला मैत्रीपूर्ण डिस्प्ले नाम (UI डिस्प्ले के लिए `legal_name` पर वरीयता लेता है)।"
                  },
                  "legal_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "रजिस्ट्री या मैन्युअल प्रविष्टि से आधिकारिक कानूनी नाम।"
                  },
                  "registration_number": {
                    "type": "string",
                    "nullable": true,
                    "description": "कंपनी पंजीकरण या निगमन संख्या।"
                  },
                  "country_code": {
                    "type": "string",
                    "nullable": true,
                    "description": "निगमन का देश (ISO 3166-1 alpha-2, उदा. `GB`, `US`)।"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE",
                      "FLAGGED",
                      "BLOCKED"
                    ],
                    "description": "व्यवसाय जीवनचक्र स्थिति। `BLOCKED` सेट करने पर सिस्टम ब्लॉकलिस्ट में `vendor_data` स्वचालित रूप से जुड़ जाता है; `BLOCKED` से हटाने पर वह ब्लॉकलिस्ट प्रविष्टि हट जाती है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "व्यवसाय से जुड़ा आपका मनमाना JSON ऑब्जेक्ट। अपडेट करने पर मौजूदा मेटाडेटा को **पूरी तरह से बदल देता है** — यदि आप केवल कुंजियाँ जोड़ना चाहते हैं तो क्लाइंट-साइड मर्ज करें।"
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 1000,
                    "description": "स्थिति क्यों बदली। Business Console में कंपनी की **Activity** की स्थिति-परिवर्तन प्रविष्टि पर रिकॉर्ड किया जाता है, केवल तभी जब स्थिति वास्तव में बदलती है। Webhooks इसे शामिल नहीं करते हैं।"
                  }
                }
              },
              "examples": {
                "Update name": {
                  "summary": "प्रदर्शित नाम अपडेट करें",
                  "value": {
                    "display_name": "Acme Corp"
                  }
                },
                "Flag for review": {
                  "summary": "स्थिति बदलें",
                  "value": {
                    "status": "FLAGGED"
                  }
                },
                "Add metadata": {
                  "summary": "मेटाडेटा JSON बदलें",
                  "value": {
                    "metadata": {
                      "industry": "fintech",
                      "risk_level": "low"
                    }
                  }
                },
                "Fix registry data": {
                  "summary": "निकाले गए फ़ील्ड सही करें",
                  "value": {
                    "legal_name": "Acme Trading International Ltd",
                    "registration_number": "12345678",
                    "country_code": "GB"
                  }
                },
                "Flag with reason": {
                  "summary": "व्यवसाय को फ़्लैग करें और कारण रिकॉर्ड करें",
                  "value": {
                    "status": "FLAGGED",
                    "reason": "Ownership structure under review"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/businesses/company-123/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"display_name\": \"Acme Corp\", \"status\": \"FLAGGED\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.update(\n    \"company-123\",\n    display_name=\"Acme Corp\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.update(\"company-123\", {\n  display_name: \"Acme Corp\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Update(ctx, \"company-123\", didit.BusinessesUpdateParams{\n\tDisplayName: didit.String(\"Acme Corp\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BusinessesUpdateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().update(\"company-123\", BusinessesUpdateParams.builder()\n        .displayName(\"Acme Corp\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->update('company-123', [\n    'display_name' => 'Acme Corp',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.update(\n  \"company-123\",\n  display_name: \"Acme Corp\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.UpdateAsync(\"company-123\", new BusinessesUpdateParams\n{\n    DisplayName = \"Acme Corp\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "व्यवसाय अपडेट किया गया। पूरा अपडेट किया गया व्यवसाय रिकॉर्ड लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDetailItem"
                },
                "examples": {
                  "Updated": {
                    "value": {
                      "didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
                      "vendor_data": "company-123",
                      "display_name": "Acme Corp",
                      "legal_name": "Acme Trading Ltd",
                      "registration_number": "12345678",
                      "country_code": "GB",
                      "effective_name": "Acme Corp",
                      "status": "FLAGGED",
                      "session_count": 2,
                      "approved_count": 1,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "features": {
                        "KYB": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "KYB",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2026-03-15T10:30:00Z",
                      "last_activity_at": "2026-03-15T10:30:00Z",
                      "first_session_at": "2026-01-10T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "name": "VIP",
                          "color": "#2567FF"
                        }
                      ],
                      "created_at": "2026-01-10T08:00:00Z",
                      "metadata": {
                        "industry": "fintech",
                        "risk_level": "low"
                      },
                      "updated_at": "2026-03-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body: आमतौर पर एक अज्ञात `status`, विकृत `metadata` या 1000 वर्णों से अधिक का `reason`।",
            "content": {
              "application/json": {
                "examples": {
                  "Bad status": {
                    "value": {
                      "status": [
                        "Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"
                      ]
                    }
                  },
                  "Bad metadata": {
                    "value": {
                      "metadata": [
                        "Metadata must be a JSON object."
                      ]
                    }
                  },
                  "Reason too long": {
                    "value": {
                      "reason": [
                        "Ensure this field has no more than 1000 characters."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए व्यवसायों को अपडेट नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई (हटाया न गया) व्यवसाय मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/businesses/{vendor_data}/update-status/": {
      "patch": {
        "summary": "व्यवसाय स्थिति अपडेट करें",
        "description": "केवल किसी व्यवसाय की लाइफ़साइकिल `status` बदलें: `ACTIVE`, `FLAGGED` या `BLOCKED` (सत्र स्थितियाँ नहीं)। `BLOCKED` करने पर `vendor_data` सिस्टम ब्लॉकलिस्ट में जुड़ जाता है; `BLOCKED` से हटाने पर वह प्रविष्टि हट जाती है। प्रत्येक परिवर्तन कंपनी की गतिविधि में वैकल्पिक `reason` के साथ दर्ज किया जाता है। वर्तमान स्थिति भेजने से कुछ भी नहीं बदलता और कोई `reason` रिकॉर्ड नहीं होता है। `business.status.updated` webhook में `reason` नहीं होता है।",
        "operationId": "update_business_status",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "update_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "व्यवसाय के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप स्ट्रिंग, UUID नहीं)।",
            "example": "company-123"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EntityStatusUpdateRequest"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "reason": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000,
                        "description": "स्थिति क्यों बदली। Business Console में कंपनी की **Activity** की स्थिति-परिवर्तन प्रविष्टि पर रिकॉर्ड किया जाता है, केवल तभी जब स्थिति वास्तव में बदलती है। Webhooks इसे शामिल नहीं करते हैं।"
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Flag": {
                  "summary": "समीक्षा के लिए व्यवसाय को फ़्लैग करें",
                  "value": {
                    "status": "FLAGGED"
                  }
                },
                "Block": {
                  "summary": "व्यवसाय को ब्लॉक करें (सिस्टम ब्लॉकलिस्ट में जोड़ता है)",
                  "value": {
                    "status": "BLOCKED"
                  }
                },
                "Reactivate": {
                  "summary": "व्यवसाय को पुनः सक्रिय करें",
                  "value": {
                    "status": "ACTIVE"
                  }
                },
                "Block with reason": {
                  "summary": "व्यवसाय को ब्लॉक करें और कारण दर्ज करें",
                  "value": {
                    "status": "BLOCKED",
                    "reason": "Registry shows the company dissolved"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/businesses/company-123/update-status/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"status\": \"BLOCKED\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.update_status(\n    \"company-123\",\n    status=\"FLAGGED\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.updateStatus(\"company-123\", {\n  status: \"FLAGGED\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.UpdateStatus(ctx, \"company-123\", didit.BusinessesUpdateStatusParams{\n\tStatus: \"FLAGGED\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BusinessesUpdateStatusParams;\nimport me.didit.types.EntityStatusUpdateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().updateStatus(\"company-123\", BusinessesUpdateStatusParams.builder()\n        .status(EntityStatusUpdateRequest.Status.of(\"FLAGGED\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->updateStatus('company-123', [\n    'status' => 'FLAGGED',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.update_status(\n  \"company-123\",\n  status: \"FLAGGED\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.UpdateStatusAsync(\"company-123\", new BusinessesUpdateStatusParams\n{\n    Status = \"FLAGGED\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "व्यवसाय की स्थिति अपडेट की गई। पूरा व्यवसाय रिकॉर्ड लौटाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDetailItem"
                },
                "examples": {
                  "Blocked": {
                    "value": {
                      "didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
                      "vendor_data": "company-123",
                      "display_name": null,
                      "legal_name": "Acme Trading Ltd",
                      "registration_number": "12345678",
                      "country_code": "GB",
                      "effective_name": "Acme Trading Ltd",
                      "status": "BLOCKED",
                      "session_count": 2,
                      "approved_count": 1,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "features": {
                        "KYB": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "KYB",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2026-03-15T10:30:00Z",
                      "last_activity_at": "2026-03-15T10:30:00Z",
                      "first_session_at": "2026-01-10T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "name": "VIP",
                          "color": "#2567FF"
                        }
                      ],
                      "created_at": "2026-01-10T08:00:00Z",
                      "metadata": {
                        "industry": "fintech"
                      },
                      "updated_at": "2026-03-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अनुपलब्ध या अमान्य `status`, या 1000 वर्णों से अधिक का `reason`।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing status": {
                    "value": {
                      "status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Bad status": {
                    "value": {
                      "status": [
                        "Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"
                      ]
                    }
                  },
                  "Reason too long": {
                    "value": {
                      "reason": [
                        "Ensure this field has no more than 1000 characters."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए व्यवसायों को अपडेट नहीं कर सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई (हटाया न गया) व्यवसाय मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/businesses/delete/": {
      "post": {
        "summary": "व्यवसायों को बैच में हटाएं",
        "description": "व्यवसायों को **स्थायी रूप से हटाएं** — इसे पहले जैसा नहीं किया जा सकता। ब्लॉक करने के लिए `BLOCKED` के साथ [व्यवसाय स्थिति अपडेट करें](#patch-/v3/businesses/-vendor_data-/update-status/) को प्राथमिकता दें।\n\n**दाखिल नियामक रिपोर्टें:** यदि चयनित डेटा किसी अंतिम रूप दी गई नियामक रिपोर्ट में है, तो पूरा अनुरोध `409` के साथ अस्वीकार कर दिया जाता है और कुछ भी हटाया नहीं जाता है। बॉडी `code: in_filed_report` का उपयोग करती है और प्रत्येक रिपोर्ट का नाम `uuid`, `report_number`, `report_type` और `case_uuid` के साथ निर्दिष्ट करती है। रिपोर्टों को हटाएं, फिर अनुरोध दोहराएं।",
        "operationId": "batch_delete_businesses",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "batch_delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "`vendor_data_list`, `didit_internal_id_list`, या `delete_all: true` प्रदान करें। जब कई भेजे जाते हैं तो प्राथमिकता: `delete_all` > `vendor_data_list` > `didit_internal_id_list` (केवल उच्चतम-प्राथमिकता वाले चयनकर्ता का उपयोग किया जाता है)।",
                "properties": {
                  "vendor_data_list": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "हटाने के लिए आपके अपने पहचानकर्ता, ठीक वैसे ही मिलान किए जाते हैं जैसे भेजे गए थे।"
                  },
                  "didit_internal_id_list": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "हटाने के लिए Didit के आंतरिक UUIDs (`didit_internal_id`)।"
                  },
                  "delete_all": {
                    "type": "boolean",
                    "default": false,
                    "description": "यदि `true` है, तो एप्लिकेशन में प्रत्येक व्यवसाय को हटा देता है। सूची चयनकर्ताओं के साथ संयोजित नहीं किया जा सकता है।"
                  }
                }
              },
              "examples": {
                "Specific businesses": {
                  "summary": "vendor_data द्वारा हटाएं",
                  "value": {
                    "vendor_data_list": [
                      "company-123",
                      "company-456"
                    ]
                  }
                },
                "Specific internal IDs": {
                  "summary": "didit_internal_id द्वारा हटाएं",
                  "value": {
                    "didit_internal_id_list": [
                      "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                      "b2c3d4e5-f6a7-8901-bcde-f12345678901"
                    ]
                  }
                },
                "All businesses": {
                  "summary": "इस एप्लिकेशन में प्रत्येक व्यवसाय को मिटा दें",
                  "value": {
                    "delete_all": true
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/businesses/delete/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vendor_data_list\": [\"company-123\", \"company-456\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.batch_delete(\n    vendor_data_list=[\"company-123\", \"company-456\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.batchDelete({\n  vendor_data_list: [\"company-123\", \"company-456\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.BatchDelete(ctx, didit.BusinessesBatchDeleteParams{\n\tVendorDataList: didit.Some([]string{\"company-123\", \"company-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.BusinessesBatchDeleteParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().batchDelete(BusinessesBatchDeleteParams.builder()\n        .vendorDataList(List.of(\"company-123\", \"company-456\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->batchDelete([\n    'vendor_data_list' => ['company-123', 'company-456'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.batch_delete(vendor_data_list: [\"company-123\", \"company-456\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.BatchDeleteAsync(new BusinessesBatchDeleteParams\n{\n    VendorDataList = new string[] { \"company-123\", \"company-456\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "व्यवसाय हटा दिए गए। वास्तव में हटाई गई पंक्तियों की संख्या लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "deleted": {
                      "type": "integer",
                      "description": "हटाए गए व्यवसायों की संख्या (उन vendor_data मानों को छोड़ता है जो किसी चीज़ से मेल नहीं खाते थे)।"
                    }
                  }
                },
                "examples": {
                  "Deleted some": {
                    "value": {
                      "deleted": 2
                    }
                  },
                  "Nothing matched": {
                    "value": {
                      "deleted": 0
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "कोई चयनकर्ता प्रदान नहीं किया गया (`vendor_data_list`, `didit_internal_id_list`, और `delete_all` सभी अनुपस्थित या खाली हैं)। एरर बॉडी एक JSON ऐरे है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing selector": {
                    "value": [
                      "Provide vendor_data_list, didit_internal_id_list, or set delete_all=true."
                    ]
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य या निरस्त API कुंजी, या यह कुंजी इस एप्लिकेशन के लिए व्यवसायों को हटा नहीं सकती है। अनुपलब्ध कुंजी पर `403` मिलता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "कुछ भी हटाया नहीं गया है। `code` इसका कारण बताता है: `in_filed_report` तब जब चयन में किसी अंतिम विनियामक रिपोर्ट में शामिल कंपनी हो, `subject_deletion_in_progress` तब जब कोई अन्य अनुरोध अभी भी चयनित कंपनियों में से किसी एक को हटा रहा हो। उस निष्कासन के समाप्त होने के बाद अनुरोध को दोहराएं।",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/InFiledReportError"
                    },
                    {
                      "$ref": "#/components/schemas/SubjectDeletionInProgressError"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/users/aml-monitoring/": {
      "post": {
        "summary": "उपयोगकर्ताओं के लिए सतत AML निगरानी सक्षम या अक्षम करें",
        "description": "चयनित उपयोगकर्ताओं के लिए सतत AML निगरानी को चालू या बंद करता है, वही सेमांटिक्स के साथ जो Business Console में हैं। प्रति उपयोगकर्ता ठीक एक मॉनिटर की गई AML स्क्रीनिंग रखी जाती है, ताकि कई बार सत्यापित होने वाले प्रोफ़ाइल की निगरानी और बिलिंग एक ही बार हो; अक्षम करने पर प्रोफ़ाइल की सभी स्क्रीनिंग में निगरानी बंद हो जाती है। बिना किसी AML स्क्रीनिंग वाले उपयोगकर्ताओं की स्क्रीनिंग पहले की जाती है (नियमित AML स्क्रीनिंग के रूप में बिल की जाती है) जब उनके पास आवश्यक पूरा नाम, जन्म तिथि और देश होता है; अन्यथा उन्हें `skipped_no_identity_data` के रूप में रिपोर्ट किया जाता है।\n\nबिना कुछ लिखे केवल संख्या और लागत का पूर्वावलोकन करने के लिए `estimate_only: true` सेट करें। 20 या उससे कम प्रोफ़ाइल के चयन इनलाइन हल होते हैं और पूर्ण किए गए कार्य के साथ `200` लौटाते हैं; बड़े चयन `202` लौटाते हैं और बैकग्राउंड में चलते हैं - लौटाए गए `job_id` के साथ [Get AML monitoring job](#get-/v3/aml-monitoring/jobs/-job_id-/) को पोल करें। जब संगठन बैलेंस अनुमान को कवर नहीं करता है, तो सक्षम करने से `403` के साथ इनकार कर दिया जाता है। कुछ भी मेल न खाने वाले पहचानकर्ताओं को `unmatched` में सूचीबद्ध किया जाता है और वे अनुरोध को कभी विफल नहीं करते हैं: कुछ भी मेल न खाने वाला चयन एक खाली कार्य (`total` 0) के रूप में पूरा होता है, वही परिपाटी जो बैच डिलीट endpoint की है।",
        "operationId": "toggle_users_aml_monitoring",
        "x-didit-sdk": {
          "resource": "users",
          "method": "set_aml_monitoring",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "AML Ongoing Monitoring"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "is_enabled"
                ],
                "description": "`vendor_data_list`, `didit_internal_id_list`, या दोनों के साथ उपयोगकर्ताओं का चयन करें (दोनों सूचियाँ OR की जाती हैं)। दोनों सूचियों को मिलाकर प्रति अनुरोध अधिकतम 1000 पहचानकर्ता।",
                "properties": {
                  "is_enabled": {
                    "type": "boolean",
                    "description": "निगरानी सक्षम करने के लिए true, इसे अक्षम करने के लिए false।"
                  },
                  "estimate_only": {
                    "type": "boolean",
                    "default": false,
                    "description": "true होने पर, लागत अनुमान लौटाता है और कोई राइट ऑपरेशन नहीं करता है - कोई स्क्रीनिंग नहीं, कोई बिलिंग नहीं, कोई जॉब नहीं।"
                  },
                  "vendor_data_list": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "टॉगल करने के लिए उपयोगकर्ताओं के आपके अपने पहचानकर्ता, ठीक वैसे ही मिलान किए जाते हैं जैसे भेजे गए थे।"
                  },
                  "didit_internal_id_list": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "टॉगल करने के लिए उपयोगकर्ताओं की Didit आंतरिक ids - create, get और list endpoints द्वारा लौटाई गई `didit_internal_id`।"
                  }
                }
              },
              "examples": {
                "Estimate first": {
                  "summary": "बिना लिखे लागत का पूर्वावलोकन करें",
                  "value": {
                    "is_enabled": true,
                    "estimate_only": true,
                    "vendor_data_list": [
                      "user-123",
                      "user-456"
                    ]
                  }
                },
                "Enable": {
                  "summary": "दो उपयोगकर्ताओं के लिए निगरानी सक्षम करें",
                  "value": {
                    "is_enabled": true,
                    "vendor_data_list": [
                      "user-123",
                      "user-456"
                    ]
                  }
                },
                "Disable": {
                  "summary": "Didit आंतरिक id द्वारा निगरानी अक्षम करें",
                  "value": {
                    "is_enabled": false,
                    "didit_internal_id_list": [
                      "3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/users/aml-monitoring/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"is_enabled\": true, \"vendor_data_list\": [\"user-123\", \"user-456\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.set_aml_monitoring(\n    is_enabled=True,\n    estimate_only=True,\n    vendor_data_list=[\"user-123\", \"user-456\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.setAmlMonitoring({\n  is_enabled: true,\n  estimate_only: true,\n  vendor_data_list: [\"user-123\", \"user-456\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.SetAMLMonitoring(ctx, didit.UsersSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"user-123\", \"user-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.UsersSetAmlMonitoringParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().setAmlMonitoring(UsersSetAmlMonitoringParams.builder()\n        .isEnabled(true)\n        .estimateOnly(true)\n        .vendorDataList(List.of(\"user-123\", \"user-456\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->setAmlMonitoring([\n    'is_enabled' => true,\n    'estimate_only' => true,\n    'vendor_data_list' => ['user-123', 'user-456'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.set_aml_monitoring(\n  is_enabled: true,\n  estimate_only: true,\n  vendor_data_list: [\"user-123\", \"user-456\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.SetAmlMonitoringAsync(new UsersSetAmlMonitoringParams\n{\n    IsEnabled = true,\n    EstimateOnly = true,\n    VendorDataList = new string[] { \"user-123\", \"user-456\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अनुमान (जब `estimate_only` सत्य हो) या इनलाइन प्रोसेस किए गए चयन के लिए पूर्ण किया गया कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AMLMonitoringToggleResult"
                }
              }
            }
          },
          "202": {
            "description": "बड़े चयन बैकग्राउंड में चलते हैं। `job_id` के साथ जॉब endpoint को पोल करें; जैसे-जैसे प्रोफाइल प्रोसेस होते हैं, `results` भरता जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AMLMonitoringJob"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: `is_enabled` गायब है, कोई चयनकर्ता नहीं है, या दोनों सूचियों में मिलाकर 1000 से अधिक पहचानकर्ता हैं।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "इस चयन के लिए निगरानी सक्षम करने के लिए अपर्याप्त बैलेंस। रिस्पॉन्स में `estimate` शामिल होता है ताकि आप सही राशि का टॉप अप कर सकें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "estimate": {
                      "type": "object",
                      "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कुछ भी लिखा नहीं जाता है)।",
                      "properties": {
                        "users_total": {
                          "type": "integer",
                          "description": "चयन द्वारा मिलान की गई प्रोफ़ाइल।"
                        },
                        "already_enabled": {
                          "type": "integer",
                          "description": "पहले से मॉनिटर की जा रही प्रोफ़ाइल (सक्षम करते समय कुछ करने की आवश्यकता नहीं है; अक्षम करने पर इन्हें ही बंद किया जाता है)।"
                        },
                        "with_existing_aml": {
                          "type": "integer",
                          "description": "वे प्रोफ़ाइल जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदल दिया जाएगा (कोई नई स्क्रीनिंग नहीं)।"
                        },
                        "needing_screening": {
                          "type": "integer",
                          "description": "बिना किसी AML स्क्रीनिंग वाली प्रोफ़ाइल जिनकी पहले स्क्रीनिंग की जाएगी (नियमित AML स्क्रीनिंग के रूप में बिल किया जाएगा)।"
                        },
                        "skipped_no_identity_data": {
                          "type": "integer",
                          "description": "वे प्रोफ़ाइल जिनकी स्क्रीनिंग नहीं की जा सकती क्योंकि पहचान डेटा मौजूद नहीं है।"
                        },
                        "skipped_blocked": {
                          "type": "integer",
                          "description": "ब्लॉक किए गए उपयोगकर्ता जिन्हें छोड़ दिया जाएगा (व्यवसायों के लिए हमेशा 0)।"
                        },
                        "estimated_screening_cost_usd": {
                          "type": "number",
                          "example": 0.2,
                          "description": "नई स्क्रीनिंग की एकमुश्त लागत।"
                        },
                        "estimated_annual_monitoring_cost_usd": {
                          "type": "number",
                          "example": 0.07,
                          "description": "उन प्रोफ़ाइलों की वार्षिक निगरानी लागत जिनकी निगरानी शुरू की जाएगी।"
                        },
                        "balance_sufficient": {
                          "type": "boolean",
                          "description": "क्या संगठन का बैलेंस स्क्रीनिंग और निगरानी के पहले वर्ष को कवर करता है।"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/businesses/aml-monitoring/": {
      "post": {
        "summary": "व्यवसायों के लिए सतत AML निगरानी सक्षम या अक्षम करें",
        "description": "चयनित व्यवसायों के लिए सतत AML निगरानी को चालू या बंद करता है, वही सेमांटिक्स के साथ जो Business Console में हैं। प्रति व्यवसाय ठीक एक मॉनिटर की गई AML स्क्रीनिंग रखी जाती है, ताकि कई बार सत्यापित होने वाले प्रोफ़ाइल की निगरानी और बिलिंग एक ही बार हो; अक्षम करने पर प्रोफ़ाइल की सभी स्क्रीनिंग में निगरानी बंद हो जाती है। बिना किसी AML स्क्रीनिंग वाले व्यवसायों की स्क्रीनिंग पहले की जाती है (नियमित AML स्क्रीनिंग के रूप में बिल की जाती है) जब उनके पास आवश्यक कानूनी या डिस्प्ले नाम होता है; अन्यथा उन्हें `skipped_no_identity_data` के रूप में रिपोर्ट किया जाता है।\n\nबिना कुछ लिखे केवल संख्या और लागत का पूर्वावलोकन करने के लिए `estimate_only: true` सेट करें। 20 या उससे कम प्रोफ़ाइल के चयन इनलाइन हल होते हैं और पूर्ण किए गए कार्य के साथ `200` लौटाते हैं; बड़े चयन `202` लौटाते हैं और बैकग्राउंड में चलते हैं - लौटाए गए `job_id` के साथ [Get AML monitoring job](#get-/v3/aml-monitoring/jobs/-job_id-/) को पोल करें। जब संगठन बैलेंस अनुमान को कवर नहीं करता है, तो सक्षम करने से `403` के साथ इनकार कर दिया जाता है। कुछ भी मेल न खाने वाले पहचानकर्ताओं को `unmatched` में सूचीबद्ध किया जाता है और वे अनुरोध को कभी विफल नहीं करते हैं: कुछ भी मेल न खाने वाला चयन एक खाली कार्य (`total` 0) के रूप में पूरा होता है, वही परिपाटी जो बैच डिलीट endpoint की है।",
        "operationId": "toggle_businesses_aml_monitoring",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "set_aml_monitoring",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "AML Ongoing Monitoring"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "is_enabled"
                ],
                "description": "`vendor_data_list`, `didit_internal_id_list`, या दोनों के साथ व्यवसायों का चयन करें (दोनों सूचियाँ OR की जाती हैं)। दोनों सूचियों को मिलाकर प्रति अनुरोध अधिकतम 1000 पहचानकर्ता।",
                "properties": {
                  "is_enabled": {
                    "type": "boolean",
                    "description": "निगरानी सक्षम करने के लिए true, इसे अक्षम करने के लिए false।"
                  },
                  "estimate_only": {
                    "type": "boolean",
                    "default": false,
                    "description": "true होने पर, लागत अनुमान लौटाता है और कोई राइट ऑपरेशन नहीं करता है - कोई स्क्रीनिंग नहीं, कोई बिलिंग नहीं, कोई जॉब नहीं।"
                  },
                  "vendor_data_list": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "टॉगल करने के लिए व्यवसायों के आपके अपने पहचानकर्ता, ठीक वैसे ही मिलान किए जाते हैं जैसे भेजे गए थे।"
                  },
                  "didit_internal_id_list": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "description": "टॉगल करने के लिए व्यवसायों की Didit आंतरिक ids - create, get और list endpoints द्वारा लौटाई गई `didit_internal_id`।"
                  }
                }
              },
              "examples": {
                "Estimate first": {
                  "summary": "बिना लिखे लागत का पूर्वावलोकन करें",
                  "value": {
                    "is_enabled": true,
                    "estimate_only": true,
                    "vendor_data_list": [
                      "company-123",
                      "company-456"
                    ]
                  }
                },
                "Enable": {
                  "summary": "दो व्यवसायों के लिए निगरानी सक्षम करें",
                  "value": {
                    "is_enabled": true,
                    "vendor_data_list": [
                      "company-123",
                      "company-456"
                    ]
                  }
                },
                "Disable": {
                  "summary": "Didit आंतरिक id द्वारा निगरानी अक्षम करें",
                  "value": {
                    "is_enabled": false,
                    "didit_internal_id_list": [
                      "3f1c0d3e-8f0a-4c2e-9a3d-9b1f5f4a2c11"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/businesses/aml-monitoring/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"is_enabled\": true, \"vendor_data_list\": [\"company-123\", \"company-456\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.set_aml_monitoring(\n    is_enabled=True,\n    estimate_only=True,\n    vendor_data_list=[\"company-123\", \"company-456\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.setAmlMonitoring({\n  is_enabled: true,\n  estimate_only: true,\n  vendor_data_list: [\"company-123\", \"company-456\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.SetAMLMonitoring(ctx, didit.BusinessesSetAMLMonitoringParams{\n\tIsEnabled:      true,\n\tEstimateOnly:   didit.Bool(true),\n\tVendorDataList: didit.Some([]string{\"company-123\", \"company-456\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.BusinessesSetAmlMonitoringParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().setAmlMonitoring(BusinessesSetAmlMonitoringParams.builder()\n        .isEnabled(true)\n        .estimateOnly(true)\n        .vendorDataList(List.of(\"company-123\", \"company-456\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->setAmlMonitoring([\n    'is_enabled' => true,\n    'estimate_only' => true,\n    'vendor_data_list' => ['company-123', 'company-456'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.set_aml_monitoring(\n  is_enabled: true,\n  estimate_only: true,\n  vendor_data_list: [\"company-123\", \"company-456\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.SetAmlMonitoringAsync(new BusinessesSetAmlMonitoringParams\n{\n    IsEnabled = true,\n    EstimateOnly = true,\n    VendorDataList = new string[] { \"company-123\", \"company-456\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अनुमान (जब `estimate_only` सत्य हो) या इनलाइन प्रोसेस किए गए चयन के लिए पूर्ण किया गया कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AMLMonitoringToggleResult"
                }
              }
            }
          },
          "202": {
            "description": "बड़े चयन बैकग्राउंड में चलते हैं। `job_id` के साथ जॉब endpoint को पोल करें; जैसे-जैसे प्रोफाइल प्रोसेस होते हैं, `results` भरता जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AMLMonitoringJob"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: `is_enabled` गायब है, कोई चयनकर्ता नहीं है, या दोनों सूचियों में मिलाकर 1000 से अधिक पहचानकर्ता हैं।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "इस चयन के लिए निगरानी सक्षम करने के लिए अपर्याप्त बैलेंस। रिस्पॉन्स में `estimate` शामिल होता है ताकि आप सही राशि का टॉप अप कर सकें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    },
                    "estimate": {
                      "type": "object",
                      "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कुछ भी लिखा नहीं जाता है)।",
                      "properties": {
                        "users_total": {
                          "type": "integer",
                          "description": "चयन द्वारा मिलान की गई प्रोफ़ाइल।"
                        },
                        "already_enabled": {
                          "type": "integer",
                          "description": "पहले से मॉनिटर की जा रही प्रोफ़ाइल (सक्षम करते समय कुछ करने की आवश्यकता नहीं है; अक्षम करने पर इन्हें ही बंद किया जाता है)।"
                        },
                        "with_existing_aml": {
                          "type": "integer",
                          "description": "वे प्रोफ़ाइल जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदल दिया जाएगा (कोई नई स्क्रीनिंग नहीं)।"
                        },
                        "needing_screening": {
                          "type": "integer",
                          "description": "बिना किसी AML स्क्रीनिंग वाली प्रोफ़ाइल जिनकी पहले स्क्रीनिंग की जाएगी (नियमित AML स्क्रीनिंग के रूप में बिल किया जाएगा)।"
                        },
                        "skipped_no_identity_data": {
                          "type": "integer",
                          "description": "वे प्रोफ़ाइल जिनकी स्क्रीनिंग नहीं की जा सकती क्योंकि पहचान डेटा मौजूद नहीं है।"
                        },
                        "skipped_blocked": {
                          "type": "integer",
                          "description": "ब्लॉक किए गए उपयोगकर्ता जिन्हें छोड़ दिया जाएगा (व्यवसायों के लिए हमेशा 0)।"
                        },
                        "estimated_screening_cost_usd": {
                          "type": "number",
                          "example": 0.2,
                          "description": "नई स्क्रीनिंग की एकमुश्त लागत।"
                        },
                        "estimated_annual_monitoring_cost_usd": {
                          "type": "number",
                          "example": 0.07,
                          "description": "उन प्रोफ़ाइलों की वार्षिक निगरानी लागत जिनकी निगरानी शुरू की जाएगी।"
                        },
                        "balance_sufficient": {
                          "type": "boolean",
                          "description": "क्या संगठन का बैलेंस स्क्रीनिंग और निगरानी के पहले वर्ष को कवर करता है।"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/aml-monitoring/jobs/{job_id}/": {
      "get": {
        "summary": "AML सतत निगरानी कार्य प्राप्त करें",
        "description": "`POST /v3/users/aml-monitoring/` या `POST /v3/businesses/aml-monitoring/` से शुरू किए गए मॉनिटरिंग टॉगल जॉब का स्टेटस, परिणाम काउंटर और प्रति-रिकॉर्ड परिणाम। जब तक `status` `PENDING` या `PROCESSING` है, तब तक हर कुछ सेकंड में पोल करें; इसके `COMPLETED` होने पर `results` पूरा हो जाता है।",
        "operationId": "get_aml_monitoring_job",
        "x-didit-sdk": {
          "resource": "aml_monitoring",
          "method": "retrieve_job",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "AML Ongoing Monitoring"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "टॉगल endpoint द्वारा लौटाया गया `job_id`।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl 'https://verification.didit.me/v3/aml-monitoring/jobs/JOB_ID/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.aml_monitoring.retrieve_job(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.amlMonitoring.retrieveJob(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.AMLMonitoring.RetrieveJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.amlMonitoring().retrieveJob(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->amlMonitoring->retrieveJob('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.aml_monitoring.retrieve_job(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.AmlMonitoring.RetrieveJobAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "job_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "PENDING",
                        "PROCESSING",
                        "COMPLETED",
                        "FAILED"
                      ]
                    },
                    "is_enabled": {
                      "type": "boolean",
                      "description": "जब जॉब निगरानी सक्षम करता है तो true, जब यह इसे अक्षम करता है तो false।"
                    },
                    "target_type": {
                      "type": "string",
                      "enum": [
                        "user",
                        "business"
                      ],
                      "description": "जॉब किस प्रोफ़ाइल फ़ैमिली को टॉगल करता है।"
                    },
                    "total": {
                      "type": "integer",
                      "description": "वे प्रोफ़ाइल जिन्हें जॉब संसाधित करता है।"
                    },
                    "processed": {
                      "type": "integer",
                      "description": "अब तक संसाधित की गई प्रोफ़ाइल।"
                    },
                    "outcomes": {
                      "type": "object",
                      "description": "प्रति-रिकॉर्ड परिणाम काउंटर। प्रत्येक चयनित प्रोफ़ाइल का परिणाम ठीक एक काउंटर में दर्ज होता है; कुछ भी चुपचाप छोड़ा नहीं जाता है।",
                      "properties": {
                        "enabled": {
                          "type": "integer",
                          "description": "मौजूदा AML स्क्रीनिंग पर निगरानी सक्षम कर दी गई।"
                        },
                        "screened_and_enabled": {
                          "type": "integer",
                          "description": "एक नई AML स्क्रीनिंग बनाई गई (बिल की गई) और उस पर निगरानी सक्षम की गई।"
                        },
                        "already_enabled": {
                          "type": "integer",
                          "description": "निगरानी पहले से ही सक्रिय थी; कुछ भी नहीं बदला और कोई बिलिंग नहीं की गई।"
                        },
                        "disabled": {
                          "type": "integer",
                          "description": "प्रोफ़ाइल की प्रत्येक AML स्क्रीनिंग में निगरानी बंद कर दी गई।"
                        },
                        "skipped_no_identity_data": {
                          "type": "integer",
                          "description": "छोड़ा गया: प्रोफ़ाइल में स्क्रीनिंग के लिए आवश्यक पूरा नाम, जन्म तिथि और देश (उपयोगकर्ता) या नाम (व्यवसाय) का अभाव है।"
                        },
                        "skipped_blocked": {
                          "type": "integer",
                          "description": "छोड़ा गया: उपयोगकर्ता ब्लॉक है।"
                        },
                        "skipped_sandbox": {
                          "type": "integer",
                          "description": "छोड़ा गया: सैंडबॉक्स एप्लिकेशन, कोई स्क्रीनिंग नहीं बनाई जाती है।"
                        },
                        "failed_provider": {
                          "type": "integer",
                          "description": "स्क्रीनिंग पूरी नहीं की जा सकी; बाद में पुनः प्रयास करें।"
                        },
                        "failed_insufficient_balance": {
                          "type": "integer",
                          "description": "कार्य चलने के दौरान बैलेंस समाप्त हो गया।"
                        }
                      }
                    },
                    "results": {
                      "type": "array",
                      "description": "प्रसंस्करण क्रम में, संसाधित की गई प्रति प्रोफ़ाइल एक प्रविष्टि। जॉब चलने के दौरान बढ़ती है; स्थिति COMPLETED होने पर पूर्ण होती है। API के माध्यम से शुरू की गई जॉब्स के लिए रिकॉर्ड किया गया; Business Console से शुरू की गई जॉब केवल काउंटर्स रिपोर्ट करती है।",
                      "items": {
                        "type": "object",
                        "properties": {
                          "didit_internal_id": {
                            "type": "string",
                            "format": "uuid",
                            "description": "प्रोफ़ाइल की Didit आंतरिक id।"
                          },
                          "vendor_data": {
                            "type": "string",
                            "nullable": true,
                            "description": "प्रोफ़ाइल के लिए आपका अपना पहचानकर्ता।"
                          },
                          "outcome": {
                            "type": "string",
                            "enum": [
                              "enabled",
                              "screened_and_enabled",
                              "already_enabled",
                              "disabled",
                              "skipped_no_identity_data",
                              "skipped_blocked",
                              "skipped_sandbox",
                              "failed_provider",
                              "failed_insufficient_balance"
                            ]
                          }
                        }
                      }
                    },
                    "error": {
                      "type": "string",
                      "nullable": true,
                      "description": "स्थिति FAILED होने पर सामान्य विफलता संदेश; विस्तृत कारण प्लेटफ़ॉर्म-साइड पर रखा जाता है।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "completed_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए ऐसा कोई जॉब नहीं है।"
          }
        }
      }
    },
    "/v3/users/{vendor_data}/update-status/": {
      "patch": {
        "summary": "उपयोगकर्ता स्थिति अपडेट करें",
        "description": "केवल किसी उपयोगकर्ता की लाइफ़साइकिल `status` बदलें: `ACTIVE`, `FLAGGED` या `BLOCKED` (सत्र स्थितियाँ नहीं)। `BLOCKED` करने पर `vendor_data` सिस्टम ब्लॉकलिस्ट में जुड़ जाता है; `BLOCKED` से हटाने पर वह प्रविष्टि हट जाती है। प्रत्येक परिवर्तन उपयोगकर्ता पर `STATUS_CHANGED` गतिविधि के रूप में दर्ज किया जाता है, जिसमें वैकल्पिक `reason` उसका `comment` होता है। वर्तमान स्थिति भेजने से कुछ भी नहीं बदलता और कोई `reason` रिकॉर्ड नहीं होता है। `user.status.updated` webhook में `reason` नहीं होता है।",
        "operationId": "update_user_status",
        "x-didit-sdk": {
          "resource": "users",
          "method": "update_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EntityStatusUpdateRequest"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "reason": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 1000,
                        "description": "स्थिति क्यों बदली। उपयोगकर्ता की गतिविधि की स्थिति-परिवर्तन प्रविष्टि (`comments[].comment`, और Business Console में **Activity**) पर रिकॉर्ड किया जाता है, केवल तभी जब स्थिति वास्तव में बदलती है। Webhooks इसे शामिल नहीं करते हैं।"
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Activate": {
                  "summary": "उपयोगकर्ता को पुनः सक्रिय करें",
                  "value": {
                    "status": "ACTIVE"
                  }
                },
                "Flag": {
                  "summary": "समीक्षा के लिए उपयोगकर्ता को फ़्लैग करें",
                  "value": {
                    "status": "FLAGGED"
                  }
                },
                "Block": {
                  "summary": "उपयोगकर्ता को ब्लॉक करें (सिस्टम ब्लॉकलिस्ट में जोड़ता है)",
                  "value": {
                    "status": "BLOCKED"
                  }
                },
                "Block with reason": {
                  "summary": "उपयोगकर्ता को ब्लॉक करें और कारण दर्ज करें",
                  "value": {
                    "status": "BLOCKED",
                    "reason": "Chargeback fraud pattern confirmed"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/users/user-abc-123/update-status/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"status\": \"BLOCKED\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.update_status(\n    \"user-123\",\n    status=\"ACTIVE\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.updateStatus(\"user-123\", {\n  status: \"ACTIVE\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.UpdateStatus(ctx, \"user-123\", didit.UsersUpdateStatusParams{\n\tStatus: \"ACTIVE\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.EntityStatusUpdateRequest;\nimport me.didit.types.UsersUpdateStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().updateStatus(\"user-123\", UsersUpdateStatusParams.builder()\n        .status(EntityStatusUpdateRequest.Status.of(\"ACTIVE\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->updateStatus('user-123', [\n    'status' => 'ACTIVE',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.update_status(\n  \"user-123\",\n  status: \"ACTIVE\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.UpdateStatusAsync(\"user-123\", new UsersUpdateStatusParams\n{\n    Status = \"ACTIVE\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "उपयोगकर्ता स्थिति अपडेट की गई। पूरा उपयोगकर्ता रिकॉर्ड लौटाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetailItem"
                },
                "examples": {
                  "Blocked": {
                    "value": {
                      "didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
                      "vendor_data": "user-abc-123",
                      "display_name": null,
                      "full_name": "John Michael Doe",
                      "date_of_birth": "1990-05-15",
                      "effective_name": "John Michael Doe",
                      "status": "BLOCKED",
                      "metadata": {
                        "tier": "premium",
                        "source": "website"
                      },
                      "portrait_image_url": "https://<media-host>/...",
                      "session_count": 3,
                      "approved_count": 2,
                      "declined_count": 0,
                      "in_review_count": 1,
                      "issuing_states": [
                        "USA"
                      ],
                      "approved_emails": [
                        "john@example.com"
                      ],
                      "approved_phones": [
                        "+14155551234"
                      ],
                      "features": {
                        "ID_VERIFICATION": "Approved",
                        "LIVENESS": "Approved",
                        "FACE_MATCH": "Approved",
                        "AML": "Approved"
                      },
                      "features_list": [
                        {
                          "feature": "ID_VERIFICATION",
                          "status": "Approved"
                        },
                        {
                          "feature": "LIVENESS",
                          "status": "Approved"
                        },
                        {
                          "feature": "FACE_MATCH",
                          "status": "Approved"
                        },
                        {
                          "feature": "AML",
                          "status": "Approved"
                        }
                      ],
                      "last_session_at": "2025-06-15T10:30:00Z",
                      "last_activity_at": "2025-06-15T10:30:00Z",
                      "first_session_at": "2025-06-01T08:00:00Z",
                      "tags": [
                        {
                          "uuid": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
                          "tag": {
                            "uuid": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b",
                            "name": "VIP",
                            "color": "#2567FF",
                            "description": null,
                            "source": "custom",
                            "created_at": "2025-05-01T09:00:00Z",
                            "updated_at": "2025-05-01T09:00:00Z"
                          },
                          "added_by_email": "analyst@acme.com",
                          "added_by_name": "Jane Analyst",
                          "created_at": "2025-06-02T11:00:00Z"
                        }
                      ],
                      "comments": [
                        {
                          "uuid": "c1111111-2222-4333-8444-555555555555",
                          "comment_type": "STATUS_CHANGED",
                          "comment": "Chargeback fraud pattern confirmed",
                          "actor_email": null,
                          "actor_name": null,
                          "previous_status": "ACTIVE",
                          "new_status": "BLOCKED",
                          "previous_value": null,
                          "new_value": null,
                          "changed_fields": [],
                          "metadata": null,
                          "mentioned_emails": [],
                          "created_at": "2025-06-15T10:30:00Z"
                        }
                      ],
                      "created_at": "2025-06-01T08:00:00Z",
                      "updated_at": "2025-06-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अनुपलब्ध या अमान्य `status`, या 1000 वर्णों से अधिक का `reason`।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing status": {
                    "value": {
                      "status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Bad status": {
                    "value": {
                      "status": [
                        "Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"
                      ]
                    }
                  },
                  "Reason too long": {
                    "value": {
                      "reason": [
                        "Ensure this field has no more than 1000 characters."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कुंजी इस एप्लिकेशन के लिए उपयोगकर्ताओं को अपडेट नहीं कर सकती। कुंजी अनुपलब्ध होने पर `403` रिटर्न होता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` रिटर्न होता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए दिए गए `vendor_data` वाला कोई (हटाया न गया) उपयोगकर्ता मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/businesses/create/": {
      "post": {
        "summary": "व्यवसाय बनाएं",
        "description": "बिना KYB सत्र के पहले से एक [व्यवसाय](/entities/businesses) बनाएं। सभी फ़ील्ड वैकल्पिक हैं, लेकिन आपको हमेशा `vendor_data` भेजना चाहिए — इसके बिना रिकॉर्ड को सत्रों या लेन-देन से लिंक नहीं किया जा सकता है। प्रदान किए जाने पर, गैर-हटाए गए व्यवसायों के बीच `vendor_data` अद्वितीय होना चाहिए (सटीक मिलान; टकराव होने पर 400 वापस आता है)। आइडेम्पोटेंट नहीं है।",
        "operationId": "create_business",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Businesses"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "vendor_data": {
                    "type": "string",
                    "nullable": true,
                    "description": "इस व्यवसाय के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप स्ट्रिंग, UUID नहीं)। वैकल्पिक लेकिन दृढ़ता से अनुशंसित। प्रदान किए जाने पर, एप्लिकेशन के लिए गैर-हटाए गए व्यवसायों के बीच विशिष्ट होना चाहिए; ठीक वैसे ही मिलान किया जाता है जैसा भेजा गया था।"
                  },
                  "display_name": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 255,
                    "description": "कंसोल में दिखाया जाने वाला मैत्रीपूर्ण डिस्प्ले नाम (UI डिस्प्ले के लिए `legal_name` पर वरीयता लेता है)।"
                  },
                  "legal_name": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 255,
                    "description": "कंपनी का आधिकारिक कानूनी नाम।"
                  },
                  "registration_number": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 100,
                    "description": "कंपनी पंजीकरण या निगमन संख्या।"
                  },
                  "country_code": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 10,
                    "description": "निगमन का देश (ISO 3166-1 alpha-2, उदा. `GB`, `US`)।"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE",
                      "FLAGGED",
                      "BLOCKED"
                    ],
                    "default": "ACTIVE",
                    "description": "प्रारंभिक जीवनचक्र स्थिति। डिफ़ॉल्ट रूप से `ACTIVE` है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "व्यवसाय से जुड़ा आपका मनमाना JSON ऑब्जेक्ट। डिफ़ॉल्ट रूप से `{}` होता है।"
                  }
                }
              },
              "examples": {
                "Basic": {
                  "summary": "अनुशंसित न्यूनतम",
                  "value": {
                    "vendor_data": "company-456",
                    "legal_name": "New Corp Ltd",
                    "country_code": "US"
                  }
                },
                "Full": {
                  "summary": "सभी फ़ील्ड",
                  "value": {
                    "vendor_data": "company-789",
                    "display_name": "New Corp",
                    "legal_name": "New Corp International Ltd",
                    "registration_number": "98765432",
                    "country_code": "DE",
                    "status": "ACTIVE",
                    "metadata": {
                      "industry": "fintech",
                      "tier": "enterprise"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/businesses/create/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vendor_data\": \"company-456\", \"legal_name\": \"New Corp Ltd\", \"country_code\": \"US\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.businesses.create(\n    vendor_data=\"company-456\",\n    legal_name=\"New Corp Ltd\",\n    country_code=\"US\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.businesses.create({\n  vendor_data: \"company-456\",\n  legal_name: \"New Corp Ltd\",\n  country_code: \"US\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.Create(ctx, didit.BusinessesCreateParams{\n\tVendorData:  didit.String(\"company-456\"),\n\tLegalName:   didit.String(\"New Corp Ltd\"),\n\tCountryCode: didit.String(\"US\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BusinessesCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.businesses().create(BusinessesCreateParams.builder()\n        .vendorData(\"company-456\")\n        .legalName(\"New Corp Ltd\")\n        .countryCode(\"US\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->businesses->create([\n    'vendor_data' => 'company-456',\n    'legal_name' => 'New Corp Ltd',\n    'country_code' => 'US',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.businesses.create(\n  vendor_data: \"company-456\",\n  legal_name: \"New Corp Ltd\",\n  country_code: \"US\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.CreateAsync(new BusinessesCreateParams\n{\n    VendorData = \"company-456\",\n    LegalName = \"New Corp Ltd\",\n    CountryCode = \"US\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "व्यवसाय बनाया गया। पूरा व्यवसाय रिकॉर्ड लौटाया गया (Get Business के समान प्रारूप)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDetailItem"
                },
                "examples": {
                  "Created": {
                    "value": {
                      "didit_internal_id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
                      "vendor_data": "company-456",
                      "display_name": null,
                      "legal_name": "New Corp Ltd",
                      "registration_number": null,
                      "country_code": "US",
                      "effective_name": "New Corp Ltd",
                      "status": "ACTIVE",
                      "session_count": 0,
                      "approved_count": 0,
                      "declined_count": 0,
                      "in_review_count": 0,
                      "features": {},
                      "features_list": [],
                      "last_session_at": null,
                      "last_activity_at": "2026-03-15T10:30:00Z",
                      "first_session_at": null,
                      "tags": [],
                      "created_at": "2026-03-15T10:30:00Z",
                      "metadata": {},
                      "updated_at": "2026-03-15T10:30:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body — आमतौर पर एक डुप्लिकेट `vendor_data`, एक अज्ञात `status`, या विकृत `metadata`।",
            "content": {
              "application/json": {
                "examples": {
                  "Duplicate": {
                    "value": {
                      "vendor_data": [
                        "A business with this vendor_data already exists."
                      ]
                    }
                  },
                  "Bad status": {
                    "value": {
                      "status": [
                        "Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"
                      ]
                    }
                  },
                  "Bad metadata": {
                    "value": {
                      "metadata": [
                        "Metadata must be a JSON object."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कुंजी इस एप्लिकेशन के लिए व्यवसाय नहीं बना सकती। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/users/create/": {
      "post": {
        "summary": "उपयोगकर्ता बनाएं",
        "description": "सत्यापन सत्र से पहले या उसके बिना, `vendor_data` द्वारा एक [उपयोगकर्ता](/entities/users) बनाएँ। `vendor_data` एप्लिकेशन के उपयोगकर्ताओं के बीच अद्वितीय होना चाहिए (डुप्लिकेट होने पर `400` मिलता है)। आइडेम्पोटेंट नहीं है。\n\n**संपर्क विवरण:** `email` और `phone_number` को `metadata.contact` में संग्रहीत किया जाता है, और `country` को `metadata.address` में। जब आप `full_name` के बिना `first_name` या `last_name` भेजते हैं, तो Didit उन्हें `full_name` में जोड़ देता है।\n\n**सत्यापन लिंक:** `send_verification_link: true` के साथ, Didit उस व्यक्ति के लिए `workflow_id` पर एक सत्यापन सत्र भी बनाता है और उन्हें `email` पर लिंक ईमेल करता है। यह सत्र [Create Session](/hi/sessions-api/create-session) की तरह ही वही चेक चलाता है, जैसे कि ब्लॉकलिस्ट और आपका क्रेडिट बैलेंस। व्यक्ति और सत्र एक साथ बनाए जाते हैं या बिल्कुल नहीं: यदि कोई भी चेक विफल होता है, तो कुछ भी नहीं लिखा जाता है और कोई ईमेल नहीं भेजा जाता है। रिस्पॉन्स का `verification_link` सत्र का वर्णन करता है, और जब आप लिंक का अनुरोध नहीं करते हैं तो यह `null` होता है।\n\n**API कुंजी एक्सेस:** एक स्कोप्ड API कुंजी के लिए `users` राइट अनुमति की आवश्यकता होती है। `send_verification_link: true` के साथ इसे `sessions` राइट की भी आवश्यकता होती है, अन्यथा कुछ भी लिखे जाने से पहले कॉल `403` लौटाती है। पूर्ण-पहुँच वाली कुंजियाँ अप्रभावित रहती हैं। [API कुंजियाँ](/hi/console/api-keys) देखें।",
        "operationId": "create_user",
        "x-didit-sdk": {
          "resource": "users",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Users"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "vendor_data"
                ],
                "properties": {
                  "vendor_data": {
                    "type": "string",
                    "description": "इस उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता (मुक्त-रूप स्ट्रिंग, UUID नहीं)। एप्लिकेशन के उपयोगकर्ताओं के बीच विशिष्ट होना चाहिए; ठीक वैसे ही मिलान किया जाता है जैसा भेजा गया था।"
                  },
                  "full_name": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 512,
                    "description": "उपयोगकर्ता का पूरा कानूनी नाम।"
                  },
                  "display_name": {
                    "type": "string",
                    "nullable": true,
                    "description": "कंसोल में दिखाया जाने वाला मैत्रीपूर्ण डिस्प्ले नाम (UI डिस्प्ले के लिए `full_name` पर वरीयता लेता है)।",
                    "maxLength": 255
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "`YYYY-MM-DD` प्रारूप में जन्म तिथि।"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "ACTIVE",
                      "FLAGGED",
                      "BLOCKED"
                    ],
                    "default": "ACTIVE",
                    "description": "प्रारंभिक जीवनचक्र स्थिति। डिफ़ॉल्ट रूप से `ACTIVE` है।"
                  },
                  "metadata": {
                    "type": "object",
                    "nullable": true,
                    "description": "उपयोगकर्ता से जुड़ा आपका मनमाना JSON ऑब्जेक्ट। डिफ़ॉल्ट रूप से `{}` होता है।"
                  },
                  "approved_emails": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस उपयोगकर्ता के लिए पूर्व-विश्वसनीय ईमेल पते, उदा. `[\"john@example.com\"]`।"
                  },
                  "approved_phones": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "इस उपयोगकर्ता के लिए पूर्व-विश्वसनीय फ़ोन नंबर, उदा. `[\"+14155551234\"]`।"
                  },
                  "issuing_states": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "पहले से रिकॉर्ड किए गए जारीकर्ता देश (ISO 3166-1 alpha-3), उदा. `[\"USA\"]`।"
                  },
                  "first_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "पहला नाम। जब `full_name` नहीं भेजा जाता है, तो Didit `first_name` और `last_name` को स्पेस के साथ जोड़कर `full_name` बना देता है। एक अलग फ़ील्ड के रूप में नहीं लौटाया जाता है।"
                  },
                  "last_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "कुलनाम। `full_name` न भेजे जाने पर `first_name` के साथ जोड़कर `full_name` बनाया जाता है। एक अलग फ़ील्ड के रूप में वापस नहीं किया जाता है।"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "संपर्क ईमेल, जो `metadata.contact.email` में संग्रहीत होता है (यह आपके द्वारा `metadata.contact` के भीतर भेजे गए `email` को बदल देता है)। `send_verification_link` के `true` होने पर आवश्यक: सत्यापन लिंक इसी पते पर भेजा जाता है। यदि `metadata.contact` एक JSON ऑब्जेक्ट नहीं है, तो कॉल इस फ़ील्ड के लिए `400` लौटाता है।"
                  },
                  "phone_number": {
                    "type": "string",
                    "maxLength": 32,
                    "description": "संपर्क फ़ोन नंबर, जो `metadata.contact.phone_number` में संग्रहीत है। यदि `metadata.contact` एक JSON ऑब्जेक्ट नहीं है, तो कॉल इस फ़ील्ड पर `400` रिस्पॉन्स देती है।"
                  },
                  "country": {
                    "type": "string",
                    "maxLength": 3,
                    "description": "ISO 3166 कोड के रूप में देश, alpha-2 या alpha-3 (`ES` या `ESP`)। `metadata.address.country` में बड़े अक्षरों में संग्रहीत। यदि `metadata.address` एक JSON ऑब्जेक्ट नहीं है, तो कॉल इस फ़ील्ड पर `400` उत्तर देता है।"
                  },
                  "send_verification_link": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` हो, तो Didit `workflow_id` पर व्यक्ति के लिए एक सत्यापन सत्र बनाता है और उन्हें `email` पर लिंक ईमेल करता है। इसके लिए `email` और `workflow_id` आवश्यक हैं। एक स्कोप्ड API कुंजी को `sessions` लिखने की अनुमति की भी आवश्यकता होती है।"
                  },
                  "workflow_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "सत्यापन सत्र का वर्कफ़्लो। जब `send_verification_link` `true` हो तो आवश्यक है। इसे किसी व्यक्ति को सत्यापित करना चाहिए: व्यवसाय सत्यापन (KYB) वर्कफ़्लो अस्वीकार कर दिया जाता है। अन्यथा अनदेखा किया जाता है।"
                  },
                  "language": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "[समर्थित भाषा](/hi/integration/supported-languages) कोड के रूप में सत्यापन ईमेल की भाषा। छोड़े जाने पर अंग्रेज़ी। जब `send_verification_link` का मान `true` न हो तो इसे अनदेखा कर दिया जाता है।"
                  }
                }
              },
              "examples": {
                "Basic": {
                  "summary": "बुनियादी जानकारी के साथ बनाएं",
                  "value": {
                    "vendor_data": "user-abc-123",
                    "full_name": "John Doe"
                  }
                },
                "Full": {
                  "summary": "सभी फ़ील्ड",
                  "value": {
                    "vendor_data": "user-abc-456",
                    "full_name": "Jane Smith",
                    "display_name": "Jane S.",
                    "date_of_birth": "1990-05-15",
                    "status": "ACTIVE",
                    "metadata": {
                      "tier": "premium",
                      "source": "api"
                    },
                    "approved_emails": [
                      "jane@example.com"
                    ]
                  }
                },
                "Contact details": {
                  "summary": "नाम, ईमेल, फ़ोन और देश",
                  "value": {
                    "vendor_data": "user-abc-789",
                    "first_name": "Julia",
                    "last_name": "Martin",
                    "email": "julia.martin@example.com",
                    "phone_number": "+34600000000",
                    "country": "ES"
                  }
                },
                "With verification link": {
                  "summary": "व्यक्ति बनाएं और उन्हें एक सत्यापन लिंक ईमेल करें",
                  "value": {
                    "vendor_data": "user-abc-789",
                    "first_name": "Julia",
                    "last_name": "Martin",
                    "email": "julia.martin@example.com",
                    "send_verification_link": true,
                    "workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                    "language": "es"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/users/create/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vendor_data\": \"user-abc-123\", \"full_name\": \"John Doe\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.users.create(\n    vendor_data=\"user-abc-123\",\n    full_name=\"John Doe\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.users.create({\n  vendor_data: \"user-abc-123\",\n  full_name: \"John Doe\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Create(ctx, didit.UsersCreateParams{\n\tVendorData: \"user-abc-123\",\n\tFullName:   didit.String(\"John Doe\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.UsersCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.users().create(UsersCreateParams.builder()\n        .vendorData(\"user-abc-123\")\n        .fullName(\"John Doe\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->users->create([\n    'vendor_data' => 'user-abc-123',\n    'full_name' => 'John Doe',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.users.create(\n  vendor_data: \"user-abc-123\",\n  full_name: \"John Doe\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Users.CreateAsync(new UsersCreateParams\n{\n    VendorData = \"user-abc-123\",\n    FullName = \"John Doe\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "उपयोगकर्ता बनाया गया। पूरा उपयोगकर्ता रिकॉर्ड (Get User के समान प्रारूप), साथ ही `verification_link`: सत्यापन सत्र जिसे Didit ने तब ईमेल किया था जब `send_verification_link` `true` था, अन्यथा `null`।",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/UserDetailItem"
                    },
                    {
                      "type": "object",
                      "required": [
                        "verification_link"
                      ],
                      "properties": {
                        "verification_link": {
                          "type": "object",
                          "nullable": true,
                          "description": "Didit द्वारा बनाया गया और व्यक्ति को ईमेल किया गया सत्यापन सत्र। हमेशा मौजूद रहता है: `null` जब `send_verification_link` `true` नहीं था।",
                          "required": [
                            "session_id",
                            "session_number",
                            "status",
                            "url",
                            "workflow_id",
                            "email"
                          ],
                          "properties": {
                            "session_id": {
                              "type": "string",
                              "format": "uuid",
                              "description": "सत्यापन सत्र की ID।"
                            },
                            "session_number": {
                              "type": "integer",
                              "description": "आपके एप्लिकेशन के अंदर सत्र की अनुक्रमिक संख्या।"
                            },
                            "status": {
                              "type": "string",
                              "description": "सत्र की स्थिति, अभी-अभी बनाए गए सत्र के लिए `Not Started`।"
                            },
                            "url": {
                              "type": "string",
                              "format": "uri",
                              "description": "Didit द्वारा व्यक्ति को ईमेल किया गया सत्यापन लिंक।"
                            },
                            "workflow_id": {
                              "type": "string",
                              "format": "uuid",
                              "nullable": true,
                              "description": "सत्र द्वारा चलाया जाने वाला वर्कफ़्लो।"
                            },
                            "email": {
                              "type": "string",
                              "format": "email",
                              "description": "वह पता जिस पर लिंक भेजा गया था।"
                            }
                          }
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "Created": {
                    "value": {
                      "didit_internal_id": "f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418",
                      "vendor_data": "user-abc-123",
                      "display_name": null,
                      "full_name": "John Doe",
                      "date_of_birth": null,
                      "effective_name": "John Doe",
                      "status": "ACTIVE",
                      "metadata": {},
                      "portrait_image_url": null,
                      "session_count": 0,
                      "approved_count": 0,
                      "declined_count": 0,
                      "in_review_count": 0,
                      "issuing_states": [],
                      "approved_emails": [],
                      "approved_phones": [],
                      "features": {},
                      "features_list": [],
                      "last_session_at": null,
                      "last_activity_at": "2025-06-15T10:30:00Z",
                      "first_session_at": null,
                      "tags": [],
                      "comments": [],
                      "created_at": "2025-06-15T10:30:00Z",
                      "updated_at": "2025-06-15T10:30:00Z",
                      "verification_link": null
                    }
                  },
                  "Created with verification link": {
                    "value": {
                      "didit_internal_id": "9b2f6c1e-3d4a-4e5f-8a7b-1c2d3e4f5a6b",
                      "vendor_data": "user-abc-789",
                      "display_name": null,
                      "full_name": "Julia Martin",
                      "date_of_birth": null,
                      "effective_name": "Julia Martin",
                      "status": "ACTIVE",
                      "metadata": {
                        "contact": {
                          "email": "julia.martin@example.com"
                        }
                      },
                      "portrait_image_url": null,
                      "session_count": 1,
                      "approved_count": 0,
                      "declined_count": 0,
                      "in_review_count": 0,
                      "issuing_states": [],
                      "approved_emails": [],
                      "approved_phones": [],
                      "features": {},
                      "features_list": [],
                      "last_session_at": "2025-06-15T10:30:00Z",
                      "last_activity_at": "2025-06-15T10:30:00Z",
                      "first_session_at": "2025-06-15T10:30:00Z",
                      "tags": [],
                      "comments": [],
                      "created_at": "2025-06-15T10:30:00Z",
                      "updated_at": "2025-06-15T10:30:00Z",
                      "verification_link": {
                        "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
                        "session_number": 43762,
                        "status": "Not Started",
                        "url": "https://verify.didit.me/en/session/3FaJ9wLqX2Mz",
                        "workflow_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                        "email": "julia.martin@example.com"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "फ़ील्ड के आधार पर अमान्य body: आमतौर पर एक डुप्लिकेट `vendor_data`, एक अनुपलब्ध आवश्यक फ़ील्ड या एक विकृत मान। `send_verification_link: true` के साथ, एक अनुपलब्ध `email` या `workflow_id`, एक अज्ञात या व्यवसाय सत्यापन (KYB) वर्कफ़्लो, एक असमर्थित `language` (कुंजी `contact_details.email_lang`), एक ब्लॉकलिस्टेड `vendor_data`, या सत्र शुरू करने के लिए बहुत कम क्रेडिट भी शामिल हैं। कुछ भी नहीं लिखा गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Duplicate": {
                    "value": {
                      "vendor_data": [
                        "A user with this vendor_data already exists."
                      ]
                    }
                  },
                  "Missing vendor_data": {
                    "value": {
                      "vendor_data": [
                        "This field is required."
                      ]
                    }
                  },
                  "Bad metadata": {
                    "value": {
                      "metadata": [
                        "Metadata must be a JSON object."
                      ]
                    }
                  },
                  "Bad status": {
                    "value": {
                      "status": [
                        "Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"
                      ]
                    }
                  },
                  "Bad country": {
                    "value": {
                      "country": [
                        "Use an ISO 3166 country code, like ES or ESP."
                      ]
                    }
                  },
                  "Contact not an object": {
                    "value": {
                      "email": [
                        "metadata.contact must be a JSON object to store this value."
                      ]
                    }
                  },
                  "Address not an object": {
                    "value": {
                      "country": [
                        "metadata.address must be a JSON object to store this value."
                      ]
                    }
                  },
                  "Link without email or workflow": {
                    "value": {
                      "email": [
                        "An email address is required to send a verification link."
                      ],
                      "workflow_id": [
                        "Pick the workflow to send a verification link for."
                      ]
                    }
                  },
                  "Unknown workflow": {
                    "value": {
                      "workflow_id": [
                        "Invalid workflow_id."
                      ]
                    }
                  },
                  "Business workflow": {
                    "value": {
                      "workflow_id": [
                        "This workflow verifies a business. Pick a workflow that verifies a person to send them a verification link."
                      ]
                    }
                  },
                  "Blocklisted vendor_data": {
                    "value": {
                      "vendor_data": "This user or business has been blocked and cannot create new verification sessions."
                    }
                  },
                  "Insufficient credits": {
                    "value": {
                      "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "कोई क्रेडेंशियल प्रदान नहीं किए गए। `x-api-key` हेडर (या `Authorization: Bearer` token) के बिना `/v3/users/*` पाथ पर आने वाले अनुरोधों को API तक पहुँचने से पहले प्रमाणीकरण मिडलवेयर द्वारा अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing credentials": {
                    "value": {
                      "detail": "You must be authenticated with a valid access token to access this endpoint."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अमान्य या निरस्त की गई API कुंजी, या कुंजी इस एप्लिकेशन के लिए उपयोगकर्ताओं को नहीं बना सकती है। एक स्कोप्ड API कुंजी को `users` राइट की आवश्यकता होती है, और जब `send_verification_link` `true` हो तो `sessions` राइट की भी आवश्यकता होती है; कुछ भी नहीं लिखा गया है। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त की गई या समाप्त हो चुकी कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "No sessions write": {
                    "summary": "स्कोप्ड कुंजी sessions राइट के बिना सत्यापन लिंक का अनुरोध करती है",
                    "value": {
                      "detail": "This API key has no write access to sessions."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और `Retry-After` में बताए गए अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/": {
      "post": {
        "summary": "उपयोगकर्ता का चेहरा अपलोड करें",
        "description": "किसी मौजूदा User प्रोफ़ाइल में एक विश्वसनीय इंपोर्ट की गई चेहरे की छवि संलग्न करें। `vendor_data` द्वारा किसी User को बनाने या प्राप्त करने और उसके `didit_internal_id` को पढ़ने के बाद इसका उपयोग करें। अपलोड किया गया चेहरा User प्रोफ़ाइल पर संग्रहीत किया जाता है और डुप्लिकेट पहचान तथा चेहरा खोज के लिए अनुक्रमित किया जाता है। इसे चेहरा ब्लॉकलिस्ट में नहीं जोड़ा जाता है।",
        "operationId": "upload_user_face",
        "x-didit-sdk": {
          "resource": "users",
          "method": "upload_face",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID जिसके स्वामित्व में एप्लिकेशन है।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID जिसके पास उपयोगकर्ता प्रोफ़ाइल का स्वामित्व है।"
          },
          {
            "name": "didit_internal_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Didit का आंतरिक उपयोगकर्ता UUID, जिसे `GET /v3/users/{vendor_data}/` और `POST /v3/users/create/` द्वारा `didit_internal_id` के रूप में लौटाया जाता है।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image"
                ],
                "properties": {
                  "image": {
                    "type": "string",
                    "format": "byte",
                    "description": "रॉ base64-एन्कोडेड JPG या PNG चेहरे की छवि। `data:image/...;base64,` प्रीफ़िक्स शामिल न करें। अधिकतम डिकोड किया गया आकार: 2 MB।"
                  },
                  "comment": {
                    "type": "string",
                    "description": "अपलोड किए गए चेहरे के लिए वैकल्पिक ऑपरेटर-दृश्यमान नोट।",
                    "default": ""
                  }
                }
              },
              "examples": {
                "Imported face": {
                  "summary": "पिछले प्रदाता से इंपोर्ट किया गया चेहरा संलग्न करें",
                  "value": {
                    "image": "/9j/4AAQSkZJRgABAQEA...",
                    "comment": "Imported from previous KYC provider"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/vendor-users/by-id/f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418/faces/upload/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"image\": \"/9j/4AAQSkZJRgABAQEA...\", \"comment\": \"Imported from previous KYC provider\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.users.upload_face(\n    \"11111111-2222-3333-4444-555555555555\",\n    image=\"/9j/4AAQSkZJRgABAQEA...\",\n    comment=\"Imported from previous KYC provider\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.users.uploadFace(\"11111111-2222-3333-4444-555555555555\", {\n  image: \"/9j/4AAQSkZJRgABAQEA...\",\n  comment: \"Imported from previous KYC provider\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Users.UploadFace(ctx, \"11111111-2222-3333-4444-555555555555\", didit.UsersUploadFaceParams{\n\tImage:   \"/9j/4AAQSkZJRgABAQEA...\",\n\tComment: didit.String(\"Imported from previous KYC provider\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.UsersUploadFaceParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.users().uploadFace(\"11111111-2222-3333-4444-555555555555\", UsersUploadFaceParams.builder()\n        .image(\"/9j/4AAQSkZJRgABAQEA...\")\n        .comment(\"Imported from previous KYC provider\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->users->uploadFace('11111111-2222-3333-4444-555555555555', [\n    'image' => '/9j/4AAQSkZJRgABAQEA...',\n    'comment' => 'Imported from previous KYC provider',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.users.upload_face(\n  \"11111111-2222-3333-4444-555555555555\",\n  image: \"/9j/4AAQSkZJRgABAQEA...\",\n  comment: \"Imported from previous KYC provider\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Users.UploadFaceAsync(\"11111111-2222-3333-4444-555555555555\", new UsersUploadFaceParams\n{\n    Image = \"/9j/4AAQSkZJRgABAQEA...\",\n    Comment = \"Imported from previous KYC provider\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "चेहरा अपलोड किया गया और उपयोगकर्ता प्रोफ़ाइल से संलग्न किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "uuid",
                    "image_url",
                    "comment",
                    "uploaded_by",
                    "created_at"
                  ],
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "अपलोड किए गए उपयोगकर्ता फ़ेस रिकॉर्ड का UUID।"
                    },
                    "image_url": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अपलोड की गई चेहरे की छवि के लिए हस्ताक्षरित URL।"
                    },
                    "comment": {
                      "type": "string",
                      "nullable": true,
                      "description": "चेहरा अपलोड करते समय दी गई टिप्पणी।"
                    },
                    "uploaded_by": {
                      "type": "string",
                      "nullable": true,
                      "description": "उपलब्ध होने पर अपलोडर का ईमेल या कर्ता पहचानकर्ता।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "अपलोड टाइमस्टैम्प।"
                    }
                  }
                },
                "examples": {
                  "Uploaded": {
                    "value": {
                      "uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                      "image_url": "https://signed-url.example/face.jpg",
                      "comment": "Imported from previous KYC provider",
                      "uploaded_by": "api",
                      "created_at": "2026-05-18T12:00:00Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य अनुरोध body या छवि। सामान्य कारण: अमान्य base64, अमान्य छवि, कोई पता लगाने योग्य चेहरा नहीं, 2 MB से अधिक की छवि, गायब एम्बेडिंग, या उपयोगकर्ता के पास पहले से ही 5 अपलोड किए गए चेहरे हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "No face": {
                    "value": {
                      "image": "No face detected in the image. Please upload a clear photo with a visible face."
                    }
                  },
                  "Too many faces": {
                    "value": {
                      "detail": "Maximum of 5 faces per user reached."
                    }
                  },
                  "Too large": {
                    "value": {
                      "image": "Image exceeds maximum size of 2 MB."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing key": {
                    "value": {
                      "detail": "Authentication credentials were not provided."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मान्य है लेकिन इस एप्लिकेशन के लिए उपयोगकर्ता प्रोफ़ाइल नहीं लिख सकता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में उस `didit_internal_id` के लिए कोई उपयोगकर्ता मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "Request was throttled. Expected available in 30 seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/update-data/": {
      "patch": {
        "summary": "सत्यापन सत्र पर पहचान दस्तावेज़ से निकाले गए KYC डेटा को अपडेट करें",
        "description": "सत्यापन समाप्त होने के बाद उपयोगकर्ता के पहचान दस्तावेज़ से निकाले गए (OCR / NFC) पहचान फ़ील्ड को सही करें — जैसे ग़लत पढ़े गए नाम, तिथियां, दस्तावेज़ संख्याएं आदि। विशिष्ट कॉलर आपके अपने बैक ऑफिस से काम करने वाले अनुपालन विश्लेषक या एक स्वचालित रिकॉन्सिलिएशन जॉब होते हैं। body में प्रत्येक फ़ील्ड वैकल्पिक है: केवल आपके द्वारा भेजी गई keys ही लिखी जाती हैं, बाकी सब कुछ अछूता छोड़ दिया जाता है (`PATCH` सिमेंटिक्स)।\n\nसत्र आपकी एप्लिकेशन से संबंधित होना चाहिए और `Approved`, `Declined`, `In Review`, या `Kyc Expired` स्थिति में होना चाहिए। किसी अन्य स्थिति में सत्र (उदा. अभी भी `In Progress`) `404` के साथ `\"No Session matches the given query.\"` लौटाते हैं — जो किसी अज्ञात या हटाए गए `sessionId` के लिए लौटाए जाने वाले `\"Not found.\"` से भिन्न है। सत्र में एक पहचान सत्यापन (KYC) रिकॉर्ड भी होना चाहिए: ऐसे सत्र जिनके वर्कफ़्लो में कभी पहचान सत्यापन चरण नहीं चला, वे `404` (`\"The session does not have a KYC.\"`) लौटाते हैं। कई पहचान सत्यापन चरणों वाले ग्राफ़ वर्कफ़्लो के लिए, `node_id` (क्वेरी पैरामीटर या body फ़ील्ड) के साथ किसी विशिष्ट चरण को लक्षित करें; छोड़े जाने पर, नवीनतम KYC रिकॉर्ड को पैच किया जाता है।\n\nप्रत्येक कॉल पर दो व्युत्पन्न फ़ील्ड की पुनर्गणना की जाती है: `full_name` (`first_name` + `last_name` से) और `issuing_state_name` (`issuing_state` से)। यदि फ़्री-टेक्स्ट `address` बदलता है, तो सर्वर इसे फिर से जियोकोड भी कर सकता है और `parsed_address` को रीफ़्रेश कर सकता है (सैंडबॉक्स सत्रों के लिए छोड़ दिया जाता है)। `extra_fields` और `parsed_address` को बदलने के बजाय key-दर-key मर्ज किया जाता है — `null`-से-डिलीट सिमेंटिक्स के लिए प्रति-फ़ील्ड विवरण देखें।\n\nकम से कम एक मान्य फ़ील्ड सबमिट करने पर `data.updated` [webhook](/hi/integration/webhooks) (ट्रिगर `manual_review`) सक्रिय होता है — भले ही सबमिट किए गए मान संग्रहीत मानों के बराबर हों। जब मान वास्तव में बदलते हैं, तो पिछले और नए मानों के साथ बदले गए फ़ील्ड को रिकॉर्ड करने वाली एक `KYC_DATA_UPDATED` गतिविधि प्रविष्टि सत्र के `reviews` में जोड़ दी जाती है, जो [Get Decision](#get-/v3/session/-sessionId-/decision/) और कंसोल गतिविधि टाइमलाइन में दिखाई देती है। सत्र की स्थिति और निर्णय का पुनर्मूल्यांकन **नहीं** किया जाता है — परिणाम बदलने के लिए [Update Status](#patch-/v3/session/-sessionId-/update-status/) का उपयोग करें। एक खाली JSON body (`{}`) स्वीकार किया जाता है और webhook को सक्रिय किए बिना केवल वर्तमान KYC डेटा लौटाता है।\n\nएक API कुंजी या कंसोल उपयोगकर्ता token स्वीकार करता है; दोनों ही मामलों में क्रेडेंशियल के पास `write:sessions` अनुमति होनी चाहिए। प्रमाणीकरण और अनुमति विफलताएं दोनों `403` लौटाती हैं — यह API कभी भी `401` रिस्पॉन्स नहीं देता है। ध्यान दें कि सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए अज्ञात `sessionId` क्रेडेंशियल गायब होने पर भी `404` लौटाता है। इस endpoint में प्रति API कुंजी प्रति मिनट 10 अनुरोधों की एक समर्पित रेट लिमिट है (अमान्य अनुरोध भी गिने जाते हैं); प्रति मिनट 300 अनुरोधों का साझा राइट बजट भी लागू होता है।",
        "operationId": "patch_v3_session_update_data",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_data",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) सत्र का UUID जिसका निकाला गया दस्तावेज़ डेटा आप सही कर रहे हैं। व्यवसाय (KYB) सत्र ID यहाँ मान्य नहीं हैं — कंपनी डेटा के लिए [Update KYB Company Data](#patch-/v3/session/-sessionId-/kyb/-companyUuid-/update-data/) का उपयोग करें।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "वर्कफ़्लो ग्राफ़ नोड जिसका KYC रिकॉर्ड पैच करना है, कई पहचान सत्यापन चरणों वाले ग्राफ़ वर्कफ़्लो के लिए (इसे `node_id` बॉडी फ़ील्ड के रूप में भी स्वीकार किया जाता है)। छोड़े जाने पर, सत्र के सबसे हालिया KYC रिकॉर्ड को पैच किया जाता है। यदि दिए गए नोड के लिए कोई KYC मौजूद नहीं है, तो कॉल `404` लौटाती है (`\"The session does not have a KYC for node '<node_id>'.\"`)।",
            "schema": {
              "type": "string",
              "example": "feature_ocr"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "सभी फ़ील्ड वैकल्पिक हैं — केवल वही भेजें जिसे आप बदलना चाहते हैं।",
                "properties": {
                  "document_type": {
                    "type": "string",
                    "description": "दस्तावेज़ प्रकार कोड। enum में सूचीबद्ध संक्षिप्त कोड स्वीकार करता है, साथ ही सत्यापन से पहले सर्वर-साइड नॉर्मलाइज़ किए गए छह पूर्ण-रूप उपनाम: `Passport` → `P`, `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`, `Health Insurance Card` → `HIC`, `Tax Card` → `TC`। कोई भी अन्य मान (कैपिटल में `PASSPORT` सहित) `400` लौटाता है।",
                    "enum": [
                      "P",
                      "DL",
                      "ID",
                      "RP",
                      "SSC",
                      "HIC",
                      "WP",
                      "TC",
                      "VISA",
                      "PSC",
                      "BC",
                      "OTHER"
                    ],
                    "nullable": true,
                    "example": "P"
                  },
                  "document_subtype": {
                    "type": "string",
                    "maxLength": 128,
                    "nullable": true,
                    "description": "दस्तावेज़ रजिस्ट्री से दस्तावेज़ उपप्रकार, जिसमें क्षेत्र उपसर्ग शामिल है जब रजिस्ट्री क्षेत्रीय प्रकारों में अंतर करती है।"
                  },
                  "document_number": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "पहचान पत्र पर मुद्रित दस्तावेज़ संख्या।",
                    "example": "PAB123456"
                  },
                  "personal_number": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "व्यक्तिगत / राष्ट्रीय पहचान संख्या जहाँ दस्तावेज़ में दी गई हो (उदा. पासपोर्ट पर स्पैनिश DNI)।",
                    "example": "99999999R"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "`YYYY-MM-DD` में जन्म तिथि। कोई अन्य प्रारूप `400` लौटाता है।",
                    "example": "1980-01-01"
                  },
                  "date_of_issue": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "`YYYY-MM-DD` में दस्तावेज़ जारी करने की तिथि।"
                  },
                  "expiration_date": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "`YYYY-MM-DD` में दस्तावेज़ की समाप्ति तिथि।"
                  },
                  "issuing_state": {
                    "type": "string",
                    "nullable": true,
                    "description": "ISO 3166-1 alpha-3 कोड के रूप में जारीकर्ता देश। केस-इनसेंसिटिव (`esp` को `ESP` के रूप में संग्रहीत किया जाता है); [Get Decision](#get-/v3/session/-sessionId-/decision/) में दिखाया गया मानव-पठनीय `issuing_state_name` इस मान से पुनर्गणना किया जाता है। अमान्य कोड `400` लौटाते हैं।",
                    "example": "ESP"
                  },
                  "first_name": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "पहला नाम। संग्रहीत `full_name` की इस endpoint को किए गए प्रत्येक कॉल पर `first_name + ' ' + last_name` के रूप में पुनर्गणना की जाती है।",
                    "example": "Carmen"
                  },
                  "last_name": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "कुलनाम। पुनर्गणित `full_name` को भी फ़ीड करता है।",
                    "example": "Espanola Espanola"
                  },
                  "gender": {
                    "type": "string",
                    "enum": [
                      "M",
                      "F",
                      "U"
                    ],
                    "nullable": true,
                    "description": "दस्तावेज़ पर मुद्रित लिंग: `M` (पुरुष), `F` (महिला), या `U` (अज्ञात)। कोई अन्य मान — जिसमें `X` भी शामिल है — `400` लौटाता है।"
                  },
                  "address": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "दस्तावेज़ पर मुद्रित फ़्री-टेक्स्ट पता। जब यह मान बदलता है (केवल गैर-सैंडबॉक्स सत्र) और संरचित पता अभी भी अनुपलब्ध या अधूरा है, तो सर्वर रिस्पॉन्स देने से पहले इसे सिंक्रोनस रूप से फिर से जियोकोड करता है — 200 बॉडी पहले से ही रीफ़्रेश किए गए `parsed_address` को दर्शाती है। पुनः जियोकोड के लिए KYC रिकॉर्ड पर `issuing_state` का मौजूद होना भी आवश्यक है।"
                  },
                  "place_of_birth": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "दस्तावेज़ पर मुद्रित जन्म स्थान।"
                  },
                  "nationality": {
                    "type": "string",
                    "maxLength": 32,
                    "nullable": true,
                    "description": "दस्तावेज़ पर मुद्रित राष्ट्रीयता। 32 वर्णों तक का मुक्त टेक्स्ट — आमतौर पर एक ISO 3166-1 alpha-3 कोड (उदा. `ESP`), लेकिन इसे ऐसे कोड के रूप में मान्य नहीं किया जाता है।"
                  },
                  "marital_status": {
                    "type": "string",
                    "enum": [
                      "SINGLE",
                      "MARRIED",
                      "DIVORCED",
                      "WIDOWED",
                      "UNKNOWN"
                    ],
                    "description": "वैवाहिक स्थिति जहाँ दस्तावेज़ में यह मौजूद हो। कोई भी अन्य मान `400` लौटाता है।"
                  },
                  "extra_fields": {
                    "type": "object",
                    "additionalProperties": true,
                    "nullable": true,
                    "description": "दस्तावेज़-विशिष्ट अतिरिक्त फ़ील्ड (उदा. `blood_group`, `dl_categories`, `mrz_string`) के लिए प्रति-कुंजी ओवरराइड। कुंजियों को मौजूदा ओवरराइड मैप में मर्ज कर दिया जाता है: इसे सेट करने के लिए मान के साथ एक कुंजी भेजें, या मर्ज किए गए दृश्य से उस कुंजी को हटाने के लिए `null` / `\"\"` के साथ भेजें। पहले लागू किए गए सभी ओवरराइड्स को साफ़ करने के लिए पूरे फ़ील्ड को `null` के रूप में भेजें। यह एक JSON ऑब्जेक्ट होना चाहिए, अन्यथा `400` मिलता है। रिस्पॉन्स हमेशा मर्ज किया गया दृश्य लौटाता है (आपके ओवरराइड लागू होने के साथ OCR द्वारा निकाले गए मान)।"
                  },
                  "parsed_address": {
                    "type": "object",
                    "nullable": true,
                    "description": "संरचित पता। केवल ये नेस्टेड कुंजियाँ स्वीकार की जाती हैं: `address_type`, `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` — कोई भी अन्य कुंजी `400` लौटाती है। प्रति-कुंजी सेमेंटिक्स: कोई मान कुंजी को सेट करता है, `null` इसे हटा देता है। `formatted_address` सर्वर-साइड पर `street_1`, `street_2`, `city`, `region`, `postal_code`, और `country` को जोड़कर पुनः परिकलित किया जाता है और रिस्पॉन्स में लौटाया जाता है — आप इसे सीधे सेट नहीं कर सकते।",
                    "properties": {
                      "address_type": {
                        "type": "string",
                        "nullable": true,
                        "description": "फ़्री-फ़ॉर्म पता वर्गीकरण (उदा. `home`)।"
                      },
                      "city": {
                        "type": "string",
                        "nullable": true,
                        "example": "Madrid"
                      },
                      "region": {
                        "type": "string",
                        "nullable": true,
                        "description": "राज्य / प्रांत / स्वायत्त समुदाय।"
                      },
                      "street_1": {
                        "type": "string",
                        "nullable": true,
                        "example": "Avda de Madrid 34"
                      },
                      "street_2": {
                        "type": "string",
                        "nullable": true
                      },
                      "postal_code": {
                        "type": "string",
                        "nullable": true,
                        "example": "28013"
                      },
                      "country": {
                        "type": "string",
                        "nullable": true,
                        "description": "ISO 3166-1 alpha-2 देश कोड। लोअरकेस इनपुट को अपरकेस में सामान्यीकृत किया जाता है; alpha-3 कोड `400` के साथ अस्वीकार किए जाते हैं।",
                        "example": "ES"
                      }
                    }
                  }
                }
              },
              "examples": {
                "Correct name and DOB": {
                  "summary": "OCR द्वारा गलत पढ़े गए नाम, जन्म तिथि और संरचित पते को ठीक करें",
                  "value": {
                    "first_name": "Carmen",
                    "last_name": "Espanola Espanola",
                    "date_of_birth": "1980-01-01",
                    "issuing_state": "ESP",
                    "marital_status": "MARRIED",
                    "extra_fields": {
                      "blood_group": "O+"
                    },
                    "parsed_address": {
                      "street_1": "Avda de Madrid 34",
                      "city": "Madrid",
                      "postal_code": "28013",
                      "country": "ES"
                    }
                  }
                },
                "Remove an extra field": {
                  "summary": "एक अतिरिक्त-फ़ील्ड कुंजी हटाएं, शेष रखें",
                  "value": {
                    "extra_fields": {
                      "blood_group": null
                    }
                  }
                },
                "Long-form document type": {
                  "summary": "लंबे रूप वाले उपनाम को संक्षिप्त कोड (यहाँ P) में सामान्यीकृत किया जाता है",
                  "value": {
                    "document_type": "Passport"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "KYC डेटा अपडेट किया गया। **पूर्ण वर्तमान KYC रिकॉर्ड** लौटाता है (प्रत्येक अपडेट करने योग्य फ़ील्ड उसके संग्रहीत मान के साथ, साथ ही मर्ज किया गया `extra_fields` और वर्तमान `parsed_address`) — न केवल वे फ़ील्ड जो आपने सबमिट किए थे। `data.updated` webhook तब ट्रिगर होता है जब payload में कम से कम एक मान्य फ़ील्ड हो।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "document_type": {
                      "type": "string",
                      "description": "दस्तावेज़ प्रकार कोड। enum में सूचीबद्ध संक्षिप्त कोड स्वीकार करता है, साथ ही सत्यापन से पहले सर्वर-साइड नॉर्मलाइज़ किए गए छह पूर्ण-रूप उपनाम: `Passport` → `P`, `Identity Card` → `ID`, `Driver's License` → `DL`, `Residence Permit` → `RP`, `Health Insurance Card` → `HIC`, `Tax Card` → `TC`। कोई भी अन्य मान (कैपिटल में `PASSPORT` सहित) `400` लौटाता है।",
                      "enum": [
                        "P",
                        "DL",
                        "ID",
                        "RP",
                        "SSC",
                        "HIC",
                        "WP",
                        "TC",
                        "VISA",
                        "PSC",
                        "BC",
                        "OTHER"
                      ],
                      "nullable": true,
                      "example": "P"
                    },
                    "document_subtype": {
                      "type": "string",
                      "maxLength": 128,
                      "nullable": true,
                      "description": "दस्तावेज़ रजिस्ट्री से दस्तावेज़ उपप्रकार, जिसमें क्षेत्र उपसर्ग शामिल है जब रजिस्ट्री क्षेत्रीय प्रकारों में अंतर करती है।"
                    },
                    "document_number": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "पहचान पत्र पर मुद्रित दस्तावेज़ संख्या।",
                      "example": "PAB123456"
                    },
                    "personal_number": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "व्यक्तिगत / राष्ट्रीय पहचान संख्या जहाँ दस्तावेज़ में दी गई हो (उदा. पासपोर्ट पर स्पैनिश DNI)।",
                      "example": "99999999R"
                    },
                    "date_of_birth": {
                      "type": "string",
                      "format": "date",
                      "nullable": true,
                      "description": "`YYYY-MM-DD` में जन्म तिथि। कोई अन्य प्रारूप `400` लौटाता है।",
                      "example": "1980-01-01"
                    },
                    "date_of_issue": {
                      "type": "string",
                      "format": "date",
                      "nullable": true,
                      "description": "`YYYY-MM-DD` में दस्तावेज़ जारी करने की तिथि।"
                    },
                    "expiration_date": {
                      "type": "string",
                      "format": "date",
                      "nullable": true,
                      "description": "`YYYY-MM-DD` में दस्तावेज़ की समाप्ति तिथि।"
                    },
                    "issuing_state": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO 3166-1 alpha-3 कोड के रूप में जारीकर्ता देश। केस-इनसेंसिटिव (`esp` को `ESP` के रूप में संग्रहीत किया जाता है); [Get Decision](#get-/v3/session/-sessionId-/decision/) में दिखाया गया मानव-पठनीय `issuing_state_name` इस मान से पुनर्गणना किया जाता है। अमान्य कोड `400` लौटाते हैं।",
                      "example": "ESP"
                    },
                    "first_name": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "पहला नाम। संग्रहीत `full_name` की इस endpoint को किए गए प्रत्येक कॉल पर `first_name + ' ' + last_name` के रूप में पुनर्गणना की जाती है।",
                      "example": "Carmen"
                    },
                    "last_name": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "कुलनाम। पुनर्गणित `full_name` को भी फ़ीड करता है।",
                      "example": "Espanola Espanola"
                    },
                    "gender": {
                      "type": "string",
                      "enum": [
                        "M",
                        "F",
                        "U"
                      ],
                      "nullable": true,
                      "description": "दस्तावेज़ पर मुद्रित लिंग: `M` (पुरुष), `F` (महिला), या `U` (अज्ञात)। कोई अन्य मान — जिसमें `X` भी शामिल है — `400` लौटाता है।"
                    },
                    "address": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "दस्तावेज़ पर मुद्रित फ़्री-टेक्स्ट पता। जब यह मान बदलता है (केवल गैर-सैंडबॉक्स सत्र) और संरचित पता अभी भी अनुपलब्ध या अधूरा है, तो सर्वर उसी अनुरोध की पृष्ठभूमि में इसे फिर से जियोकोड करता है और जियोकोडर परिणाम के साथ `parsed_address` को अधिलेखित कर सकता है।"
                    },
                    "place_of_birth": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "दस्तावेज़ पर मुद्रित जन्म स्थान।"
                    },
                    "nationality": {
                      "type": "string",
                      "maxLength": 32,
                      "nullable": true,
                      "description": "दस्तावेज़ पर मुद्रित राष्ट्रीयता। 32 वर्णों तक का मुक्त टेक्स्ट — आमतौर पर एक ISO 3166-1 alpha-3 कोड (उदा. `ESP`), लेकिन इसे ऐसे कोड के रूप में मान्य नहीं किया जाता है।"
                    },
                    "marital_status": {
                      "type": "string",
                      "enum": [
                        "SINGLE",
                        "MARRIED",
                        "DIVORCED",
                        "WIDOWED",
                        "UNKNOWN"
                      ],
                      "description": "वैवाहिक स्थिति जहाँ दस्तावेज़ में यह मौजूद हो। कोई भी अन्य मान `400` लौटाता है।"
                    },
                    "extra_fields": {
                      "type": "object",
                      "additionalProperties": true,
                      "nullable": true,
                      "description": "दस्तावेज़ के अतिरिक्त फ़ील्ड्स का मर्ज किया गया व्यू: सभी ऑपरेटर ओवरराइड लागू होने के साथ OCR द्वारा निकाले गए मान। `null` ओवरराइड के माध्यम से हटाई गई कुंजियाँ इस मैप में अनुपस्थित होती हैं।"
                    },
                    "parsed_address": {
                      "type": "object",
                      "nullable": true,
                      "description": "वर्तमान संरचित पता (आंतरिक बहीखाता कुंजियों को हटाकर), या `null` जब कोई मौजूद न हो। सात संपादन योग्य कुंजियों के साथ पुनर्गणित `formatted_address` शामिल है।",
                      "properties": {
                        "address_type": {
                          "type": "string",
                          "nullable": true,
                          "description": "फ़्री-फ़ॉर्म पता वर्गीकरण (उदा. `home`)।"
                        },
                        "city": {
                          "type": "string",
                          "nullable": true,
                          "example": "Madrid"
                        },
                        "region": {
                          "type": "string",
                          "nullable": true,
                          "description": "राज्य / प्रांत / स्वायत्त समुदाय।"
                        },
                        "street_1": {
                          "type": "string",
                          "nullable": true,
                          "example": "Avda de Madrid 34"
                        },
                        "street_2": {
                          "type": "string",
                          "nullable": true
                        },
                        "postal_code": {
                          "type": "string",
                          "nullable": true,
                          "example": "28013"
                        },
                        "country": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO 3166-1 alpha-2 देश कोड। लोअरकेस इनपुट को अपरकेस में सामान्यीकृत किया जाता है; alpha-3 कोड `400` के साथ अस्वीकार किए जाते हैं।",
                          "example": "ES"
                        },
                        "formatted_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "संरचित पते का संयुक्त, मानव-पठनीय रूप। प्रत्येक `parsed_address` संपादन के बाद सर्वर-साइड पुनर्गणना की जाती है।",
                          "example": "Avda de Madrid 34, Madrid, 28013, ES"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Updated KYC": {
                    "summary": "सुधार के बाद पूर्ण KYC रिकॉर्ड",
                    "value": {
                      "document_type": "P",
                      "document_subtype": null,
                      "document_number": "PAB123456",
                      "personal_number": "99999999R",
                      "date_of_birth": "1980-01-01",
                      "date_of_issue": "2021-02-09",
                      "expiration_date": "2031-02-08",
                      "issuing_state": "ESP",
                      "first_name": "Carmen",
                      "last_name": "Espanola Espanola",
                      "gender": "F",
                      "address": "AVDA DE MADRID 34, MADRID, MADRID 28013",
                      "place_of_birth": "MADRID",
                      "nationality": "ESP",
                      "marital_status": "MARRIED",
                      "extra_fields": {
                        "mrz_string": "P<ESPESPANOLA<<CARMEN<<<<<",
                        "blood_group": "O+"
                      },
                      "parsed_address": {
                        "city": "Madrid",
                        "street_1": "Avda de Madrid 34",
                        "postal_code": "28013",
                        "country": "ES",
                        "formatted_address": "Avda de Madrid 34, Madrid, 28013, ES"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं; नेस्टेड `parsed_address` / `extra_fields` कुंजियों पर त्रुटियां एक ऑब्जेक्ट मान का उपयोग करती हैं: `{\"parsed_address\": {\"<key>\": \"<message>\"}}`।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid gender": {
                    "summary": "gender M, F, या U होना चाहिए",
                    "value": {
                      "gender": [
                        "\"X\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid document type": {
                    "summary": "शॉर्ट कोड या विस्तृत उपनाम नहीं है",
                    "value": {
                      "document_type": [
                        "\"PASSPORT\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid issuing state": {
                    "summary": "issuing_state ISO 3166-1 alpha-3 नहीं है",
                    "value": {
                      "issuing_state": [
                        "Invalid ISO 3166-1 alpha-3 country code for issuing_state."
                      ]
                    }
                  },
                  "Invalid marital status": {
                    "summary": "marital_status enum में नहीं है",
                    "value": {
                      "marital_status": [
                        "\"ENGAGED\" is not a valid choice."
                      ]
                    }
                  },
                  "Bad date format": {
                    "summary": "तारीखें YYYY-MM-DD प्रारूप में होनी चाहिए",
                    "value": {
                      "date_of_birth": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  },
                  "Unsupported parsed_address key": {
                    "summary": "केवल सात प्रलेखित कुंजियों की अनुमति है",
                    "value": {
                      "parsed_address": {
                        "zipcode": "Unsupported key. Allowed keys: address_type, city, region, street_1, street_2, postal_code, country"
                      }
                    }
                  },
                  "Invalid parsed_address country": {
                    "summary": "नेस्टेड देश alpha-2 होना चाहिए, alpha-3 नहीं",
                    "value": {
                      "parsed_address": {
                        "country": "Invalid ISO 3166-1 alpha-2 country code."
                      }
                    }
                  },
                  "extra_fields not an object": {
                    "summary": "extra_fields एक JSON ऑब्जेक्ट होना चाहिए",
                    "value": {
                      "extra_fields": [
                        "This field must be a JSON object."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "क्रेडेंशियल में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात सत्र, गैर-संपादन योग्य स्थिति में सत्र, या पैच करने के लिए कोई KYC रिकॉर्ड नहीं है। प्रत्येक केस का एक अलग `detail` संदेश होता है (उदाहरण देखें)। अज्ञात-सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown session": {
                    "summary": "आपके एप्लिकेशन में इस ID वाला कोई सत्र नहीं है (या इसे हटा दिया गया था)",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Wrong session state": {
                    "summary": "सत्र मौजूद है लेकिन Approved / Declined / In Review / Kyc Expired नहीं है",
                    "value": {
                      "detail": "No Session matches the given query."
                    }
                  },
                  "No KYC record": {
                    "summary": "वर्कफ़्लो ने कभी पहचान सत्यापन चरण नहीं चलाया",
                    "value": {
                      "detail": "The session does not have a KYC."
                    }
                  },
                  "No KYC for node": {
                    "summary": "node_id दिया गया है लेकिन इसके लिए कोई KYC मौजूद नहीं है",
                    "value": {
                      "detail": "The session does not have a KYC for node 'feature_missing'."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "समर्पित रेट लिमिट पार हो गई — प्रति API कुंजी प्रति मिनट 10 KYC डेटा अपडेट (अस्वीकृत अनुरोध बजट में गिने जाते हैं)। साझा 300/मिनट का राइट बजट भी अपने संदेश के साथ ट्रिगर हो सकता है। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर की जांच करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "KYC अपडेट बजट समाप्त हो गया",
                    "value": {
                      "detail": "Session KYC data update rate limit exceeded. You can make up to 10 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-data/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"first_name\": \"Carmen\",\n    \"last_name\": \"Espanola Espanola\",\n    \"date_of_birth\": \"1980-01-01\",\n    \"issuing_state\": \"ESP\",\n    \"parsed_address\": {\n      \"street_1\": \"Avda de Madrid 34\",\n      \"city\": \"Madrid\",\n      \"postal_code\": \"28013\",\n      \"country\": \"ES\"\n    }\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_data(\n    \"11111111-2222-3333-4444-555555555555\",\n    date_of_birth=\"1980-01-01\",\n    issuing_state=\"ESP\",\n    first_name=\"Carmen\",\n    last_name=\"Espanola Espanola\",\n    marital_status=\"MARRIED\",\n    extra_fields={\"blood_group\": \"O+\"},\n    parsed_address={\n        \"city\": \"Madrid\",\n        \"street_1\": \"Avda de Madrid 34\",\n        \"postal_code\": \"28013\",\n        \"country\": \"ES\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateData(\"11111111-2222-3333-4444-555555555555\", {\n  date_of_birth: \"1980-01-01\",\n  issuing_state: \"ESP\",\n  first_name: \"Carmen\",\n  last_name: \"Espanola Espanola\",\n  marital_status: \"MARRIED\",\n  extra_fields: { blood_group: \"O+\" },\n  parsed_address: {\n    city: \"Madrid\",\n    street_1: \"Avda de Madrid 34\",\n    postal_code: \"28013\",\n    country: \"ES\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateData(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateDataParams{\n\tDateOfBirth:   didit.String(\"1980-01-01\"),\n\tIssuingState:  didit.String(\"ESP\"),\n\tFirstName:     didit.String(\"Carmen\"),\n\tLastName:      didit.String(\"Espanola Espanola\"),\n\tMaritalStatus: didit.Some(didit.SessionsUpdateDataParamsMaritalStatus(\"MARRIED\")),\n\tExtraFields:   didit.Some(map[string]any{\"blood_group\": \"O+\"}),\n\tParsedAddress: didit.Some(didit.SessionsUpdateDataParamsParsedAddress{\n\t\tCity:       didit.String(\"Madrid\"),\n\t\tStreet1:    didit.String(\"Avda de Madrid 34\"),\n\t\tPostalCode: didit.String(\"28013\"),\n\t\tCountry:    didit.String(\"ES\"),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsUpdateDataParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateData(\"11111111-2222-3333-4444-555555555555\", SessionsUpdateDataParams.builder()\n        .dateOfBirth(LocalDate.parse(\"1980-01-01\"))\n        .issuingState(\"ESP\")\n        .firstName(\"Carmen\")\n        .lastName(\"Espanola Espanola\")\n        .maritalStatus(SessionsUpdateDataParams.MaritalStatus.of(\"MARRIED\"))\n        .extraFields(Map.of(\"blood_group\", \"O+\"))\n        .parsedAddress(SessionsUpdateDataParams.ParsedAddress.builder()\n                .city(\"Madrid\")\n                .street1(\"Avda de Madrid 34\")\n                .postalCode(\"28013\")\n                .country(\"ES\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateData('11111111-2222-3333-4444-555555555555', [\n    'date_of_birth' => '1980-01-01',\n    'issuing_state' => 'ESP',\n    'first_name' => 'Carmen',\n    'last_name' => 'Espanola Espanola',\n    'marital_status' => 'MARRIED',\n    'extra_fields' => ['blood_group' => 'O+'],\n    'parsed_address' => [\n        'city' => 'Madrid',\n        'street_1' => 'Avda de Madrid 34',\n        'postal_code' => '28013',\n        'country' => 'ES',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_data(\n  \"11111111-2222-3333-4444-555555555555\",\n  date_of_birth: \"1980-01-01\",\n  issuing_state: \"ESP\",\n  first_name: \"Carmen\",\n  last_name: \"Espanola Espanola\",\n  marital_status: \"MARRIED\",\n  extra_fields: { blood_group: \"O+\" },\n  parsed_address: {\n    city: \"Madrid\",\n    street_1: \"Avda de Madrid 34\",\n    postal_code: \"28013\",\n    country: \"ES\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateDataAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsUpdateDataParams\n{\n    DateOfBirth = \"1980-01-01\",\n    IssuingState = \"ESP\",\n    FirstName = \"Carmen\",\n    LastName = \"Espanola Espanola\",\n    MaritalStatus = new SessionsUpdateDataParamsMaritalStatus(\"MARRIED\"),\n    ExtraFields = new Dictionary<string, object> { [\"blood_group\"] = \"O+\" },\n    ParsedAddress = new SessionsUpdateDataParamsParsedAddress\n    {\n        City = \"Madrid\",\n        Street1 = \"Avda de Madrid 34\",\n        PostalCode = \"28013\",\n        Country = \"ES\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/features/{nodeId}/update-status/": {
      "patch": {
        "summary": "व्यक्तिगत सुविधा (चरण) स्थिति अपडेट करें",
        "description": "किसी सत्र के भीतर किसी एकल सत्यापन सुविधा (चरण) का स्टेटस सेट करें। वर्कफ़्लो ग्राफ़ के `nodeId` द्वारा उस सुविधा को लक्षित करें। बिना-ग्राफ़ वाले वर्कफ़्लो में, जिनके चरणों में कोई नोड नहीं होता है, `default` का उपयोग करें और यह बताने के लिए कि आपका आशय किस चरण से है, `feature_type` भी पास करें।\n\nयह उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्रों और प्रत्येक चरण प्रकार के लिए काम करता है: ID/OCR, Liveness, Face Match, NFC, AML, Proof of Address, Phone, Email, Database Validation, Questionnaire, और KYB रजिस्ट्री / दस्तावेज़ / प्रमुख व्यक्ति जाँचें। यह endpoint स्टैंडअलोन API सत्रों (`session_type = API`) के लिए उपलब्ध **नहीं** है।\n\n`new_status` का `Approved`, `Declined`, या `In Review` में से कोई एक होना आवश्यक है, और यह सुविधा के वर्तमान स्टेटस से भिन्न होना चाहिए।\n\n**ओवरराइड कब लागू होता है।** `defer_until_flow_finishes` के बिना (या `false` के साथ) ओवरराइड तुरंत लागू होता है, जैसा कि हमेशा होता था; जब व्यक्ति अभी भी फ़्लो में होता है, तो इसे `forced` के रूप में रिकॉर्ड किया जाता है। व्यक्ति के फ़्लो में रहते हुए (सत्र `Not Started`, `In Progress` या `Resubmitted` है और समाप्त नहीं हुआ है) `defer_until_flow_finishes: true` के साथ, ओवरराइड को `pending_until_flow_finishes` के रूप में संग्रहीत किया जाता है और फ़्लो समाप्त होने पर लागू होता है, जब फ़्लो अपने स्वयं के निर्णय पर पहुँच जाता है। उस सत्र पर जिसका फ़्लो पहले ही समाप्त हो चुका है, यह दोनों ही मामलों में तुरंत लागू होता है। इसके बजाय प्रतीक्षा कर रहा ओवरराइड तब रद्द हो जाता है जब व्यक्ति समाप्त करने से पहले अपने चरण को दोबारा करता है, जब उसी जाँच पर कोई नया ओवरराइड इसे प्रतिस्थापित कर देता है, जब सत्र फ़्लो को अधूरा छोड़ देता है (छोड़ा गया, समय-सीमा समाप्त, या फ़्लो के बीच में निर्णय लिया गया), या जब आप इसे `POST /v3/session/{sessionId}/features/overrides/{overrideId}/cancel/` से रद्द करते हैं। किसी सत्र के ओवरराइड्स को `GET /v3/session/{sessionId}/features/overrides/` से सूचीबद्ध करें।\n\n**सत्र पर प्रभाव।** जिस सत्र का निर्णय पहले से मौजूद है, वह उसे बनाए रखता है: केवल जाँच बदलती है। जब सत्र का अभी तक कोई निर्णय नहीं हुआ है और इसका वर्कफ़्लो ठीक इसी चरण की प्रतीक्षा कर रहा है, तो ओवरराइड लागू करने से चरण पूरा हो जाता है: वर्कफ़्लो आगे बढ़ता है, बाद के चरण चलते हैं, और एक स्टेटस नोड सत्र निर्णय सेट कर सकता है और `status.updated` ट्रिगर कर सकता है।\n\n**Webhooks और गतिविधि।** ओवरराइड लागू होने पर (तुरंत, या फ़्लो समाप्त होने पर) एक `data.updated` webhook ट्रिगर होता है, इसके प्रतीक्षा करने के दौरान या इसके रद्द होने पर कभी नहीं। प्रत्येक ओवरराइड को सत्र की गतिविधि में `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED` या `FEATURE_OVERRIDE_CANCELLED` के रूप में रिकॉर्ड किया जाता है, साथ ही यह भी दर्ज होता है कि इसे किसने किया था; अनुरोध की प्रविष्टि में आपकी `comment` शामिल होती है।\n\nअपनी API कुंजी (`x-api-key`) या `write:sessions` विशेषाधिकार वाले उपयोगकर्ता प्राधिकरण हेडर के साथ प्रमाणित करें; एक स्कोप्ड API कुंजी को निर्णयों के लिए राइट एक्सेस की आवश्यकता होती है।",
        "operationId": "patch_v3_session_update_feature_status",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_feature_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है — सेवा दोनों सत्र प्रकारों में ID को रिज़ॉल्व करती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "in": "path",
            "name": "nodeId",
            "required": true,
            "description": "अपडेट की जाने वाली सुविधा का वर्कफ़्लो ग्राफ़ नोड ID (उदाहरण के लिए `feature_ocr_1`)। गैर-ग्राफ़ (एकल-चरण) वर्कफ़्लो के लिए लिटरल मान `default` का उपयोग करें जहां सुविधा का कोई नोड ID नहीं है।",
            "schema": {
              "type": "string",
              "example": "feature_ocr_1"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "new_status"
                ],
                "properties": {
                  "new_status": {
                    "type": "string",
                    "description": "इस सुविधा के लिए लक्षित स्थिति। वर्तमान मान से भिन्न होनी चाहिए।",
                    "enum": [
                      "Approved",
                      "Declined",
                      "In Review"
                    ],
                    "example": "Approved"
                  },
                  "comment": {
                    "type": "string",
                    "description": "इस सुविधा परिवर्तन के लिए सत्र के समीक्षा ट्रेल पर रिकॉर्ड किया गया वैकल्पिक फ़्री-टेक्स्ट नोट।",
                    "example": "Document manually verified by compliance."
                  },
                  "feature_type": {
                    "type": "string",
                    "enum": [
                      "ID_VERIFICATION",
                      "OCR",
                      "OCR_BACK",
                      "NFC",
                      "LIVENESS",
                      "FACE",
                      "AGE_ESTIMATION",
                      "AGE_VERIFICATION",
                      "FACE_SEARCH",
                      "FACE_MATCH",
                      "IP_ANALYSIS",
                      "AML",
                      "PHONE",
                      "PHONE_VERIFICATION",
                      "EMAIL",
                      "EMAIL_VERIFICATION",
                      "POA",
                      "PROOF_OF_ADDRESS",
                      "DATABASE_VALIDATION",
                      "DATA_VALIDATION",
                      "QUESTIONNAIRE",
                      "DOCUMENT_AI",
                      "KYB_REGISTRY",
                      "KYB_DOCUMENTS",
                      "KYB_KEY_PEOPLE",
                      "BANK_VERIFICATION",
                      "GEOLOCATION"
                    ],
                    "description": "किस प्रकार के चरण को लक्षित करना है। गैर-ग्राफ़ वर्कफ़्लो (`nodeId` = `default`) पर आवश्यक है, जहाँ कोई भी चरण नोड साझा नहीं करता है; अन्यथा वैकल्पिक। एक अज्ञात मान `400` लौटाता है।",
                    "example": "LIVENESS"
                  },
                  "defer_until_flow_finishes": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब व्यक्ति अभी भी फ़्लो में है, तो ओवरराइड को तुरंत लागू करने के बजाय `pending_until_flow_finishes` के रूप में स्टोर करें और फ़्लो समाप्त होने पर लागू करें। छोड़े जाने पर या `false` होने पर, ओवरराइड तुरंत लागू होता है। ऐसे सत्र पर जिसका फ़्लो पहले ही समाप्त हो चुका है, यह दोनों ही मामलों में तुरंत लागू होता है।",
                    "example": false
                  }
                }
              },
              "examples": {
                "Apply Now": {
                  "summary": "ID चरण को तुरंत स्वीकृत करें",
                  "value": {
                    "new_status": "Approved",
                    "comment": "Document manually verified by compliance."
                  }
                },
                "Wait For The Flow": {
                  "summary": "व्यक्ति द्वारा फ़्लो पूरा करने के बाद लाइवनेस चरण स्वीकृत करें",
                  "value": {
                    "new_status": "Approved",
                    "comment": "Liveness retried with a reviewer present.",
                    "defer_until_flow_finishes": true
                  }
                },
                "Non-graph Workflow": {
                  "summary": "नोड्स के बिना किसी वर्कफ़्लो के लाइवनेस चरण को लक्षित करें (nodeId = default)",
                  "value": {
                    "new_status": "In Review",
                    "feature_type": "LIVENESS"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ओवरराइड रिकॉर्ड किया गया था। `new_status` चेक की संग्रहीत स्थिति है: ओवरराइड लागू होने के बाद अनुरोधित स्थिति, फ़्लो पूरा होने की प्रतीक्षा करते समय अपरिवर्तित स्थिति। `override` बताता है कि क्या हुआ।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "अपडेट किए गए चरण का वर्कफ़्लो नोड, या बिना नोड वाले चरण के लिए `null` (गैर-ग्राफ़ वर्कफ़्लो में `default` पाथ)।",
                      "example": "feature_ocr_1"
                    },
                    "feature_type": {
                      "type": "string",
                      "description": "अपडेट की गई सुविधा का मॉडल नाम (उदा. `KYC`, `Face`, `FaceMatch`, `AML`, `POA`)।",
                      "example": "KYC"
                    },
                    "new_status": {
                      "type": "string",
                      "description": "जाँच की संग्रहीत स्थिति: ओवरराइड लागू होने के बाद अनुरोध की गई स्थिति, जबकि ओवरराइड प्रवाह पूरा होने की प्रतीक्षा करता है तो अपरिवर्तित स्थिति।",
                      "example": "Approved"
                    },
                    "override": {
                      "$ref": "#/components/schemas/FeatureStatusOverride"
                    }
                  },
                  "required": [
                    "session_id",
                    "node_id",
                    "feature_type",
                    "new_status",
                    "override"
                  ]
                },
                "examples": {
                  "Applied": {
                    "summary": "ओवरराइड तुरंत लागू हो गया",
                    "value": {
                      "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "node_id": "feature_ocr_1",
                      "feature_type": "KYC",
                      "new_status": "Approved",
                      "override": {
                        "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "node_id": "feature_ocr_1",
                        "feature_type": "",
                        "feature_model": "KYC",
                        "previous_status": "In Review",
                        "new_status": "Approved",
                        "state": "applied",
                        "forced": false,
                        "reason": "Document manually verified by compliance.",
                        "requested_by": {
                          "email": "reviewer@example.com",
                          "name": "Alex Reviewer",
                          "type": "CONSOLE_USER"
                        },
                        "requested_at": "2026-10-13T09:15:00Z",
                        "applied_at": "2026-10-13T09:15:00Z",
                        "cancelled_at": null,
                        "cancel_reason": null
                      }
                    }
                  },
                  "Waiting For The Flow": {
                    "summary": "defer_until_flow_finishes जबकि व्यक्ति अभी भी फ़्लो में है",
                    "value": {
                      "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "node_id": "feature_liveness_1",
                      "feature_type": "Face",
                      "new_status": "Declined",
                      "override": {
                        "id": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
                        "node_id": "feature_liveness_1",
                        "feature_type": "",
                        "feature_model": "Face",
                        "previous_status": "Declined",
                        "new_status": "Approved",
                        "state": "pending_until_flow_finishes",
                        "forced": false,
                        "reason": "Liveness retried with a reviewer present.",
                        "requested_by": {
                          "email": "reviewer@example.com",
                          "name": "Alex Reviewer",
                          "type": "CONSOLE_USER"
                        },
                        "requested_at": "2026-10-13T09:15:00Z",
                        "applied_at": null,
                        "cancelled_at": null,
                        "cancel_reason": null
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। तब लौटाई जाती है जब `new_status` अमान्य हो या अपरिवर्तित हो, जब `feature_type` अज्ञात हो, या जब सत्र एक स्टैंडअलोन API सत्र हो।",
            "content": {
              "application/json": {
                "examples": {
                  "Same Status": {
                    "summary": "new_status वर्तमान स्थिति के बराबर है",
                    "value": {
                      "new_status": [
                        "The new status is the same as the current status."
                      ]
                    }
                  },
                  "API Session": {
                    "summary": "स्टैंडअलोन API सत्रों पर सुविधा स्थिति नहीं बदली जा सकती",
                    "value": [
                      "Cannot change feature status for API sessions."
                    ]
                  },
                  "Unknown feature_type": {
                    "summary": "feature_type एक ज्ञात चरण प्रकार नहीं है",
                    "value": {
                      "feature_type": [
                        "Unknown feature_type 'SELFIE'."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "API कुंजी में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "निर्णयों के लिए राइट एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र नहीं मिला, या इसमें दिए गए `nodeId` वाली कोई सुविधा नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Session Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Feature Not Found": {
                    "summary": "इस node_id के लिए कोई सुविधा नहीं है",
                    "value": {
                      "detail": "No feature found with node_id 'feature_ocr_1' in this session."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/features/feature_ocr_1/update-status/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"new_status\": \"Approved\",\n    \"comment\": \"Document manually verified by compliance.\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_feature_status(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"feature_ocr_1\",\n    new_status=\"Approved\",\n    comment=\"Document manually verified by compliance.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateFeatureStatus(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_ocr_1\",\n  {\n    new_status: \"Approved\",\n    comment: \"Document manually verified by compliance.\",\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateFeatureStatus(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_ocr_1\", didit.SessionsUpdateFeatureStatusParams{\n\tNewStatus: \"Approved\",\n\tComment:   didit.String(\"Document manually verified by compliance.\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateFeatureStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateFeatureStatus(\"11111111-2222-3333-4444-555555555555\", \"feature_ocr_1\", SessionsUpdateFeatureStatusParams.builder()\n        .newStatus(SessionsUpdateFeatureStatusParams.NewStatus.of(\"Approved\"))\n        .comment(\"Document manually verified by compliance.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateFeatureStatus('11111111-2222-3333-4444-555555555555', 'feature_ocr_1', [\n    'new_status' => 'Approved',\n    'comment' => 'Document manually verified by compliance.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_feature_status(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_ocr_1\",\n  new_status: \"Approved\",\n  comment: \"Document manually verified by compliance.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateFeatureStatusAsync(\"11111111-2222-3333-4444-555555555555\", \"feature_ocr_1\", new SessionsUpdateFeatureStatusParams\n{\n    NewStatus = \"Approved\",\n    Comment = \"Document manually verified by compliance.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/update-aml-hit-status/": {
      "patch": {
        "summary": "AML हिट समीक्षा स्थिति अपडेट करें",
        "description": "समग्र सत्र निर्णय को बदले बिना, AML स्क्रीनिंग द्वारा लौटाए गए **एकल AML हिट** (एक संभावित प्रतिबंध / PEP / वॉचलिस्ट / प्रतिकूल मीडिया मिलान) की समीक्षा स्थिति सेट करें। हिट को उसके `hit_id` (AML जांच के `hits` ऐरे में किसी प्रविष्टि की `id` — सत्र निर्णय देखें) द्वारा पहचानें। पुराने प्रारूप में लौटाया गया हिट id अभी भी स्वीकार किया जाता है; रिस्पॉन्स हमेशा हिट को उसकी वर्तमान `id` द्वारा संदर्भित करता है।\n\n`review_status` इनमें से एक होता है: `Unreviewed`, `Confirmed Match`, `False Positive`, या `Inconclusive`। समीक्षक के निर्णय सतत निगरानी अपडेट्स के दौरान सुरक्षित रहते हैं, इसलिए जिस हिट को आप `False Positive` चिह्नित करते हैं, वह प्रदाता द्वारा पुनः स्क्रीन किए जाने पर भी वैसा ही रहता है।\n\nएक सफल कॉल `data.updated` webhook को ट्रिगर करती है और सत्र के समीक्षा ट्रेल में (कर्ता एट्रिब्यूशन के साथ) एक गतिविधि प्रविष्टि जोड़ती है। कई AML जांच वाले ग्राफ़ वर्कफ़्लो के लिए, किसी विशिष्ट जांच को लक्षित करने के लिए `node_id` पास करें।\n\nअपनी API कुंजी (`x-api-key`) या उपयोगकर्ता ऑथराइजेशन हेडर के साथ प्रमाणीकृत करें — इनमें से जिस भी विधि का उपयोग किया जाए, उसमें `write:sessions` विशेषाधिकार होना चाहिए।",
        "operationId": "patch_v3_session_update_aml_hit_status",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_aml_hit_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है — सेवा दोनों सत्र प्रकारों में ID को रिज़ॉल्व करती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "in": "query",
            "name": "node_id",
            "required": false,
            "description": "वर्कफ़्लो ग्राफ़ नोड ID। केवल तभी आवश्यक जब सत्र में कई AML चेक हों (प्रति नोड एक); एकल-AML सत्रों के लिए इसे छोड़ दें।",
            "schema": {
              "type": "string",
              "example": "feature_aml_1"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "hit_id",
                  "review_status"
                ],
                "properties": {
                  "hit_id": {
                    "type": "string",
                    "description": "AML जांच के `hits` ऐरे (`hit_...`) में हिट का `id`। पूर्व प्रारूप में लौटाया गया हिट id अभी भी स्वीकार किया जाता है।",
                    "example": "hit_7c1e9a40b2d35f86e0a4c912"
                  },
                  "review_status": {
                    "type": "string",
                    "description": "हिट के लिए नई समीक्षा स्थिति।",
                    "enum": [
                      "Unreviewed",
                      "Confirmed Match",
                      "False Positive",
                      "Inconclusive"
                    ],
                    "example": "False Positive"
                  },
                  "node_id": {
                    "type": "string",
                    "description": "वैकल्पिक ग्राफ़ नोड ID। इसका उपयोग करें (यहाँ या क्वेरी पैरामीटर के रूप में) जब सत्र में एकाधिक AML जांचें हों।",
                    "example": "feature_aml_1"
                  }
                }
              },
              "example": {
                "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
                "review_status": "False Positive"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "हिट समीक्षा स्थिति अपडेट की गई।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message",
                    "hit_id",
                    "review_status"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "हमेशा `Hit status updated successfully`।"
                    },
                    "hit_id": {
                      "type": "string",
                      "description": "अपडेट किए गए हिट का `id`, जैसा कि सत्र निर्णय द्वारा लौटाया जाता है, तब भी जब अनुरोध ने पूर्व प्रारूप में किसी id द्वारा हिट को नामित किया हो।"
                    },
                    "review_status": {
                      "type": "string",
                      "enum": [
                        "Unreviewed",
                        "Confirmed Match",
                        "False Positive",
                        "Inconclusive"
                      ],
                      "description": "हिट पर अब संग्रहीत समीक्षा स्थिति।"
                    }
                  }
                },
                "example": {
                  "message": "Hit status updated successfully",
                  "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
                  "review_status": "False Positive"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — `hit_id` खाली है या `review_status` अनुमत मानों में से एक नहीं है।",
            "content": {
              "application/json": {
                "example": {
                  "review_status": [
                    "\"Maybe\" is not a valid choice."
                  ]
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "API कुंजी में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र नहीं मिला, सत्र में कोई AML जांच नहीं है (वैकल्पिक रूप से दिए गए `node_id` के लिए), या कोई हिट `hit_id` से मेल नहीं खाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "No AML Check": {
                    "summary": "सत्र में कोई AML जांच नहीं है",
                    "value": {
                      "detail": "The session does not have an AML check."
                    }
                  },
                  "Hit Not Found": {
                    "summary": "अज्ञात hit_id",
                    "value": {
                      "detail": "Hit with ID 'hit_9d2e7f41c0a8b3e65d1f0c47' not found in the AML check."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-hit-status/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"hit_id\": \"abc123\",\n    \"review_status\": \"False Positive\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_aml_hit_status(\n    \"11111111-2222-3333-4444-555555555555\",\n    hit_id=\"hit_7c1e9a40b2d35f86e0a4c912\",\n    review_status=\"False Positive\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateAmlHitStatus(\"11111111-2222-3333-4444-555555555555\", {\n  hit_id: \"hit_7c1e9a40b2d35f86e0a4c912\",\n  review_status: \"False Positive\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLHitStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLHitStatusParams{\n\tHitID:        \"hit_7c1e9a40b2d35f86e0a4c912\",\n\tReviewStatus: \"False Positive\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateAmlHitStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateAmlHitStatus(\"11111111-2222-3333-4444-555555555555\", SessionsUpdateAmlHitStatusParams.builder()\n        .hitId(\"hit_7c1e9a40b2d35f86e0a4c912\")\n        .reviewStatus(SessionsUpdateAmlHitStatusParams.ReviewStatus.of(\"False Positive\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateAmlHitStatus('11111111-2222-3333-4444-555555555555', [\n    'hit_id' => 'hit_7c1e9a40b2d35f86e0a4c912',\n    'review_status' => 'False Positive',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_aml_hit_status(\n  \"11111111-2222-3333-4444-555555555555\",\n  hit_id: \"hit_7c1e9a40b2d35f86e0a4c912\",\n  review_status: \"False Positive\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateAmlHitStatusAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsUpdateAmlHitStatusParams\n{\n    HitId = \"hit_7c1e9a40b2d35f86e0a4c912\",\n    ReviewStatus = \"False Positive\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/bulk-update-aml-hit-status/": {
      "patch": {
        "summary": "AML हिट समीक्षा स्थितियों को बल्क में अपडेट करें",
        "description": "एक ही कॉल में **एकाधिक AML हिट्स** की समीक्षा स्थिति अपडेट करें। `hit_updates` प्रदान करें, जो `{ hit_id, review_status }` युग्मों की एक सूची है। `review_status`, `Unreviewed`, `Confirmed Match`, `False Positive`, या `Inconclusive` में से एक है।\n\nअपडेट ऑल-ऑर-नथिंग है: यदि कोई भी `hit_id` AML जांच में नहीं मिलता है, तो अनुरोध `404` लौटाता है और कोई भी हिट नहीं बदला जाता है। एक सफल कॉल एक एकल `data.updated` webhook को ट्रिगर करती है और सभी परिवर्तनों को कवर करने वाली एक गतिविधि प्रविष्टि रिकॉर्ड करती है। एकाधिक AML जांच वाले ग्राफ़ वर्कफ़्लो के लिए, किसी विशिष्ट जांच को लक्षित करने के लिए `node_id` पास करें।\n\nअपनी API कुंजी (`x-api-key`) या उपयोगकर्ता प्राधिकरण हेडर के साथ प्रमाणित करें — इनमें से किसी एक में `write:sessions` विशेषाधिकार होना चाहिए।",
        "operationId": "patch_v3_session_bulk_update_aml_hit_status",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "bulk_update_aml_hit_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है — सेवा दोनों सत्र प्रकारों में ID को रिज़ॉल्व करती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "in": "query",
            "name": "node_id",
            "required": false,
            "description": "वर्कफ़्लो ग्राफ़ नोड ID। केवल तभी आवश्यक जब सत्र में कई AML चेक हों (प्रति नोड एक); एकल-AML सत्रों के लिए इसे छोड़ दें।",
            "schema": {
              "type": "string",
              "example": "feature_aml_1"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "hit_updates"
                ],
                "properties": {
                  "hit_updates": {
                    "type": "array",
                    "description": "हिट अपडेट की गैर-रिक्त सूची।",
                    "items": {
                      "type": "object",
                      "required": [
                        "hit_id",
                        "review_status"
                      ],
                      "properties": {
                        "hit_id": {
                          "type": "string",
                          "example": "hit_7c1e9a40b2d35f86e0a4c912",
                          "description": "AML जांच के `hits` ऐरे (`hit_...`) में हिट का `id`। पूर्व प्रारूप में लौटाया गया हिट id अभी भी स्वीकार किया जाता है।"
                        },
                        "review_status": {
                          "type": "string",
                          "enum": [
                            "Unreviewed",
                            "Confirmed Match",
                            "False Positive",
                            "Inconclusive"
                          ],
                          "example": "Confirmed Match"
                        }
                      }
                    }
                  },
                  "node_id": {
                    "type": "string",
                    "description": "वैकल्पिक ग्राफ़ नोड ID। इसका उपयोग करें (यहाँ या क्वेरी पैरामीटर के रूप में) जब सत्र में एकाधिक AML जांचें हों।",
                    "example": "feature_aml_1"
                  }
                }
              },
              "example": {
                "hit_updates": [
                  {
                    "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
                    "review_status": "Confirmed Match"
                  },
                  {
                    "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8",
                    "review_status": "False Positive"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "सभी हिट अपडेट किए गए।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message",
                    "updated_hits"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "`Updated {n} hit(s) successfully`, जहाँ `n` `hit_updates` में प्रविष्टियों की संख्या है।"
                    },
                    "updated_hits": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "`hit_updates` में प्रत्येक प्रविष्टि द्वारा नामित हिट का `id`, जैसा कि सत्र निर्णय द्वारा लौटाया जाता है, अनुरोध क्रम में, जिसमें वे हिट भी शामिल हैं जिनकी स्थिति नहीं बदली।"
                    }
                  }
                },
                "example": {
                  "message": "Updated 2 hit(s) successfully",
                  "updated_hits": [
                    "hit_7c1e9a40b2d35f86e0a4c912",
                    "hit_3b8f20d6a91c4e75f0b2d6a8"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — `hit_updates` खाली है, या किसी प्रविष्टि में `hit_id` / `review_status` गायब है या अमान्य मान है।",
            "content": {
              "application/json": {
                "example": {
                  "hit_updates": [
                    "hit_updates cannot be empty"
                  ]
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "API कुंजी में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र नहीं मिला, सत्र में कोई AML जांच नहीं है, या एक या अधिक `hit_id` मौजूद नहीं हैं (उस स्थिति में कोई हिट नहीं बदला जाता है)।",
            "content": {
              "application/json": {
                "example": {
                  "detail": "Hits not found: hit_9d2e7f41c0a8b3e65d1f0c47"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/bulk-update-aml-hit-status/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"hit_updates\": [\n      { \"hit_id\": \"abc123\", \"review_status\": \"Confirmed Match\" },\n      { \"hit_id\": \"def456\", \"review_status\": \"False Positive\" }\n    ]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.bulk_update_aml_hit_status(\n    \"11111111-2222-3333-4444-555555555555\",\n    hit_updates=[{\n        \"hit_id\": \"hit_7c1e9a40b2d35f86e0a4c912\",\n        \"review_status\": \"Confirmed Match\",\n    }, {\n        \"hit_id\": \"hit_3b8f20d6a91c4e75f0b2d6a8\",\n        \"review_status\": \"False Positive\",\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.bulkUpdateAmlHitStatus(\"11111111-2222-3333-4444-555555555555\", {\n  hit_updates: [{\n    hit_id: \"hit_7c1e9a40b2d35f86e0a4c912\",\n    review_status: \"Confirmed Match\",\n  }, {\n    hit_id: \"hit_3b8f20d6a91c4e75f0b2d6a8\",\n    review_status: \"False Positive\",\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.BulkUpdateAMLHitStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsBulkUpdateAMLHitStatusParams{\n\tHitUpdates: []didit.SessionsBulkUpdateAMLHitStatusParamsHitUpdates{{\n\t\tHitID:        \"hit_7c1e9a40b2d35f86e0a4c912\",\n\t\tReviewStatus: \"Confirmed Match\",\n\t}, {\n\t\tHitID:        \"hit_3b8f20d6a91c4e75f0b2d6a8\",\n\t\tReviewStatus: \"False Positive\",\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SessionsBulkUpdateAmlHitStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().bulkUpdateAmlHitStatus(\"11111111-2222-3333-4444-555555555555\", SessionsBulkUpdateAmlHitStatusParams.builder()\n        .hitUpdates(List.of(\n                SessionsBulkUpdateAmlHitStatusParams.HitUpdates.builder()\n                        .hitId(\"hit_7c1e9a40b2d35f86e0a4c912\")\n                        .reviewStatus(SessionsBulkUpdateAmlHitStatusParams.HitUpdates.ReviewStatus.of(\"Confirmed Match\"))\n                        .build(),\n                SessionsBulkUpdateAmlHitStatusParams.HitUpdates.builder()\n                        .hitId(\"hit_3b8f20d6a91c4e75f0b2d6a8\")\n                        .reviewStatus(SessionsBulkUpdateAmlHitStatusParams.HitUpdates.ReviewStatus.of(\"False Positive\"))\n                        .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->bulkUpdateAmlHitStatus('11111111-2222-3333-4444-555555555555', [\n    'hit_updates' => [[\n        'hit_id' => 'hit_7c1e9a40b2d35f86e0a4c912',\n        'review_status' => 'Confirmed Match',\n    ], [\n        'hit_id' => 'hit_3b8f20d6a91c4e75f0b2d6a8',\n        'review_status' => 'False Positive',\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.bulk_update_aml_hit_status(\n  \"11111111-2222-3333-4444-555555555555\",\n  hit_updates: [{\n    hit_id: \"hit_7c1e9a40b2d35f86e0a4c912\",\n    review_status: \"Confirmed Match\",\n  }, {\n    hit_id: \"hit_3b8f20d6a91c4e75f0b2d6a8\",\n    review_status: \"False Positive\",\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.BulkUpdateAmlHitStatusAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsBulkUpdateAmlHitStatusParams\n{\n    HitUpdates = new SessionsBulkUpdateAmlHitStatusParamsHitUpdates[]\n    {\n        new()\n        {\n            HitId = \"hit_7c1e9a40b2d35f86e0a4c912\",\n            ReviewStatus = \"Confirmed Match\",\n        },\n        new()\n        {\n            HitId = \"hit_3b8f20d6a91c4e75f0b2d6a8\",\n            ReviewStatus = \"False Positive\",\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/update-poa-data/": {
      "patch": {
        "summary": "सत्यापन सत्र पर POA दस्तावेज़ से निकाले गए पते का प्रमाण डेटा अपडेट करें",
        "description": "सत्यापन समाप्त होने के बाद उपयोगकर्ता के पते का प्रमाण दस्तावेज़ — यूटिलिटी बिल, बैंक स्टेटमेंट, या पते के अन्य साक्ष्य — से निकाले गए फ़ील्ड को सही करें: जारीकर्ता, तिथियाँ, मुद्रित नाम, स्वयं पता, और बैंकिंग विवरण। Body में प्रत्येक फ़ील्ड वैकल्पिक है: केवल आपके द्वारा भेजी गई keys ही लिखी जाती हैं, बाकी सब कुछ बिना बदलाव के छोड़ दिया जाता है (`PATCH` सिमेंटिक्स)।\n\nसत्र आपके एप्लिकेशन से संबंधित होना चाहिए और `Approved`, `Declined`, `In Review`, या `Kyc Expired` स्थिति में होना चाहिए। किसी भी अन्य स्थिति (जैसे अभी भी `In Progress`) वाले सत्र `\"No Session matches the given query.\"` के साथ `404` लौटाते हैं — जो किसी अज्ञात या हटाए गए `sessionId` के लिए लौटाए जाने वाले `\"Not found.\"` से भिन्न है। सत्र में एक POA रिकॉर्ड भी होना चाहिए: ऐसे सत्र जिनके वर्कफ़्लो ने कभी पते का प्रमाण चरण नहीं चलाया, वे `404` (`\"The session does not have a POA.\"` ) लौटाते हैं। एकाधिक POA चरणों वाले ग्राफ़ वर्कफ़्लो के लिए, `node_id` (क्वेरी पैरामीटर या body फ़ील्ड) के साथ किसी विशिष्ट चरण को लक्षित करें; छोड़े जाने पर, सबसे हालिया POA रिकॉर्ड को पैच किया जाता है।\n\n`extra_fields` को key-by-key मर्ज किया जाता है: नौ ज्ञात keys (`bank_iban`, `additional_names`, …) समर्पित POA कॉलम में लिखी जाती हैं, किसी भी अन्य key को कस्टम एक्स्ट्रा के रूप में रखा जाता है, और `null` / `\"\"` किसी key को हटा देता है। `poa_parsed_address` केवल प्रलेखित सात keys को ही स्वीकार करता है और प्रत्येक संपादन के बाद `formatted_address` / `poa_formatted_address` की पुनर्गणना करता है। यदि फ़्री-टेक्स्ट `poa_address` बदलता है, तो सर्वर इसे फिर से जियोकोड भी कर सकता है और संरचित पते को रीफ़्रेश कर सकता है (सैंडबॉक्स सत्रों के लिए इसे छोड़ दिया जाता है)।\n\nइस endpoint के KYC वेरिएंट के विपरीत, `data.updated` [webhook](/hi/integration/webhooks) (ट्रिगर `manual_review`) केवल तभी ट्रिगर होता है जब कम से कम एक संग्रहीत मान **वास्तव में बदला हो** — समान मान दोबारा भेजना एक साइलेंट no-op है। जब मान बदलते हैं, तो पिछले और नए मानों के साथ बदले गए फ़ील्ड को रिकॉर्ड करने वाली एक `POA_DATA_UPDATED` गतिविधि प्रविष्टि सत्र की `reviews` में जोड़ दी जाती है, जो [Get Decision](#get-/v3/session/-sessionId-/decision/) और कंसोल गतिविधि टाइमलाइन में दिखाई देती है। सत्र की स्थिति और निर्णय का **पुनर्मूल्यांकन नहीं** किया जाता है — परिणाम बदलने के लिए [Update Status](#patch-/v3/session/-sessionId-/update-status/) का उपयोग करें।\n\nयह एक API कुंजी या कंसोल उपयोगकर्ता token स्वीकार करता है; दोनों ही मामलों में क्रेडेंशियल के पास `write:sessions` अनुमति होनी चाहिए। प्रमाणीकरण और अनुमति दोनों की विफलताएं `403` लौटाती हैं — यह API कभी भी `401` के साथ उत्तर नहीं देती है। ध्यान दें कि क्रेडेंशियल जांच से पहले सत्र लुकअप चलता है, इसलिए अज्ञात `sessionId` क्रेडेंशियल गायब होने पर भी `404` लौटाता है। इस endpoint की प्रति API कुंजी 10 अनुरोध प्रति मिनट की समर्पित रेट लिमिट है (अमान्य अनुरोध भी गिने जाते हैं); प्रति मिनट 300 अनुरोधों का साझा राइट बजट भी लागू होता है।\n\nएक खाली JSON body `{}` एक no-op है: यह webhook को ट्रिगर किए बिना (`has_changes` false रहता है) वर्तमान POA रिकॉर्ड को दर्शाते हुए `200` लौटाता है।",
        "operationId": "patch_v3_session_update_poa_data",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_poa_data",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) सत्र का UUID जिसका संलग्न POA रिकॉर्ड आप सही कर रहे हैं।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "वर्कफ़्लो ग्राफ़ नोड जिसका POA रिकॉर्ड पैच करना है, पते के प्रमाण के कई चरणों वाले ग्राफ़ वर्कफ़्लो के लिए (इसे `node_id` बॉडी फ़ील्ड के रूप में भी स्वीकार किया जाता है)। छोड़े जाने पर, सत्र के सबसे हालिया POA रिकॉर्ड को पैच किया जाता है। यदि दिए गए नोड के लिए कोई POA मौजूद नहीं है, तो कॉल `404` लौटाती है (`\"The session does not have a POA for node '<node_id>'.\"`)।",
            "schema": {
              "type": "string",
              "example": "feature_poa"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "सभी फ़ील्ड वैकल्पिक हैं — केवल वही भेजें जिसे आप बदलना चाहते हैं।",
                "properties": {
                  "issuing_state": {
                    "type": "string",
                    "nullable": true,
                    "description": "POA दस्तावेज़ जारी करने वाला देश, ISO 3166-1 alpha-3। केस-असंवेदनशील (अपरकेस में सामान्यीकृत); अमान्य कोड `400` लौटाते हैं।",
                    "example": "ESP"
                  },
                  "document_type": {
                    "type": "string",
                    "enum": [
                      "UTILITY_BILL",
                      "BANK_STATEMENT",
                      "GOVERNMENT_ISSUED_DOCUMENT",
                      "OTHER_POA_DOCUMENT",
                      "UNKNOWN"
                    ],
                    "description": "POA दस्तावेज़ श्रेणी। मान अपरकेस हैं — `utility_bill` जैसे लोअरकेस वेरिएंट `400` लौटाते हैं।",
                    "example": "UTILITY_BILL"
                  },
                  "document_language": {
                    "type": "string",
                    "maxLength": 50,
                    "nullable": true,
                    "description": "दस्तावेज़ की भाषा, आमतौर पर एक ISO 639-1 कोड (उदा. `es`)। मुक्त पाठ — भाषा कोड के रूप में मान्य नहीं किया गया।",
                    "example": "es"
                  },
                  "issuer": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "दस्तावेज़ जारी करने वाला संगठन (उपयोगिता कंपनी, बैंक, सरकारी एजेंसी)।",
                    "example": "Energy Provider S.A."
                  },
                  "issue_date": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "`YYYY-MM-DD` में POA दस्तावेज़ जारी करने की तिथि। कोई भी अन्य प्रारूप `400` लौटाता है।",
                    "example": "2026-04-12"
                  },
                  "poa_address": {
                    "type": "string",
                    "nullable": true,
                    "description": "दस्तावेज़ पर मुद्रित फ़्री-टेक्स्ट पता। जब यह मान बदलता है (केवल गैर-सैंडबॉक्स सत्र) और संरचित पता अभी भी अनुपलब्ध या अधूरा है, तो सर्वर उसी अनुरोध की पृष्ठभूमि में इसे फिर से जियोकोड करता है और जियोकोडर परिणाम के साथ `poa_parsed_address` / `poa_formatted_address` को अधिलेखित कर सकता है। पुनः जियोकोड के लिए POA रिकॉर्ड पर `issuing_state` का मौजूद होना भी आवश्यक है।",
                    "example": "Avda de Madrid 34, 28013 Madrid"
                  },
                  "name_on_document": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "प्राप्तकर्ता का नाम जैसा कि दस्तावेज़ पर मुद्रित है।",
                    "example": "Carmen Espanola"
                  },
                  "extra_fields": {
                    "type": "object",
                    "additionalProperties": true,
                    "nullable": true,
                    "description": "दस्तावेज़-विशिष्ट अतिरिक्त विवरण, कुंजी-दर-कुंजी मर्ज किए गए। नौ कुंजियाँ समर्पित POA कॉलम पर मैप होती हैं: `bank_account_number`, `bank_iban`, `bank_sort_code`, `bank_routing_number`, `bank_swift_bic`, `bank_branch_name`, `bank_branch_address`, `document_phone_number`, और `additional_names` (स्ट्रिंग्स की सूची या `null` होना चाहिए, अन्यथा `400`)। किसी भी अन्य कुंजी को कस्टम अतिरिक्त फ़ील्ड के रूप में संग्रहीत किया जाता है। प्रति-कुंजी सेमांटिक्स: कोई मान कुंजी सेट करता है; `null` या `\"\"` इसे हटा देता है। एक JSON ऑब्जेक्ट होना चाहिए, अन्यथा `400`।"
                  },
                  "poa_parsed_address": {
                    "type": "object",
                    "nullable": true,
                    "description": "संरचित पता। केवल ये नेस्टेड कुंजियाँ स्वीकार की जाती हैं: `address_type`, `city`, `region`, `street_1`, `street_2`, `postal_code`, `country` — कोई भी अन्य कुंजी `400` लौटाती है। प्रति-कुंजी सेमेंटिक्स: कोई मान कुंजी को सेट करता है, `null` इसे हटा देता है। `formatted_address` (और शीर्ष-स्तरीय `poa_formatted_address`) सर्वर-साइड पर `street_1`, `street_2`, `city`, `region`, `postal_code`, और `country` को जोड़कर पुनः परिकलित किया जाता है — आप इसे सीधे सेट नहीं कर सकते।",
                    "properties": {
                      "address_type": {
                        "type": "string",
                        "nullable": true,
                        "description": "फ़्री-फ़ॉर्म पता वर्गीकरण (उदा. `home`)।"
                      },
                      "city": {
                        "type": "string",
                        "nullable": true,
                        "example": "Madrid"
                      },
                      "region": {
                        "type": "string",
                        "nullable": true,
                        "description": "राज्य / प्रांत / स्वायत्त समुदाय।"
                      },
                      "street_1": {
                        "type": "string",
                        "nullable": true,
                        "example": "Avda de Madrid 34"
                      },
                      "street_2": {
                        "type": "string",
                        "nullable": true
                      },
                      "postal_code": {
                        "type": "string",
                        "nullable": true,
                        "example": "28013"
                      },
                      "country": {
                        "type": "string",
                        "nullable": true,
                        "description": "ISO 3166-1 alpha-2 देश कोड। लोअरकेस इनपुट को अपरकेस में सामान्यीकृत किया जाता है; alpha-3 कोड `400` के साथ अस्वीकार किए जाते हैं।",
                        "example": "ES"
                      }
                    }
                  }
                }
              },
              "examples": {
                "Correct issuer and address": {
                  "summary": "दस्तावेज़ वर्गीकरण, जारीकर्ता और संरचित पते को ठीक करें",
                  "value": {
                    "issuing_state": "ESP",
                    "document_type": "BANK_STATEMENT",
                    "issuer": "Banco Example S.A.",
                    "issue_date": "2026-05-02",
                    "name_on_document": "Carmen Espanola",
                    "poa_address": "Avda de Madrid 34, 28013 Madrid",
                    "extra_fields": {
                      "bank_iban": "ES9121000418450200051332",
                      "additional_names": [
                        "Carmen E. Espanola"
                      ]
                    },
                    "poa_parsed_address": {
                      "street_1": "Avda de Madrid 34",
                      "city": "Madrid",
                      "postal_code": "28013",
                      "country": "ES"
                    }
                  }
                },
                "Remove a banking detail": {
                  "summary": "एक अतिरिक्त-फ़ील्ड कुंजी हटाएं, शेष रखें",
                  "value": {
                    "extra_fields": {
                      "bank_iban": null
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "POA डेटा अपडेट किया गया। **पूर्ण वर्तमान POA रिकॉर्ड** लौटाता है (प्रत्येक अपडेट करने योग्य फ़ील्ड अपने संग्रहीत मान के साथ, साथ ही पूरा `extra_fields` मैप, `poa_parsed_address`, और `poa_formatted_address`) — केवल वे फ़ील्ड नहीं जो आपने सबमिट किए हैं। `data.updated` webhook केवल तभी ट्रिगर होता है जब कम से कम एक मान वास्तव में बदला हो।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "issuing_state": {
                      "type": "string",
                      "nullable": true,
                      "description": "POA दस्तावेज़ जारी करने वाला देश, ISO 3166-1 alpha-3। केस-असंवेदनशील (अपरकेस में सामान्यीकृत); अमान्य कोड `400` लौटाते हैं।",
                      "example": "ESP"
                    },
                    "document_type": {
                      "type": "string",
                      "enum": [
                        "UTILITY_BILL",
                        "BANK_STATEMENT",
                        "GOVERNMENT_ISSUED_DOCUMENT",
                        "OTHER_POA_DOCUMENT",
                        "UNKNOWN"
                      ],
                      "description": "POA दस्तावेज़ श्रेणी। मान अपरकेस हैं — `utility_bill` जैसे लोअरकेस वेरिएंट `400` लौटाते हैं।",
                      "example": "UTILITY_BILL"
                    },
                    "document_language": {
                      "type": "string",
                      "maxLength": 50,
                      "nullable": true,
                      "description": "दस्तावेज़ की भाषा, आमतौर पर एक ISO 639-1 कोड (उदा. `es`)। मुक्त पाठ — भाषा कोड के रूप में मान्य नहीं किया गया।",
                      "example": "es"
                    },
                    "issuer": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "दस्तावेज़ जारी करने वाला संगठन (उपयोगिता कंपनी, बैंक, सरकारी एजेंसी)।",
                      "example": "Energy Provider S.A."
                    },
                    "issue_date": {
                      "type": "string",
                      "format": "date",
                      "nullable": true,
                      "description": "`YYYY-MM-DD` में POA दस्तावेज़ जारी करने की तिथि। कोई भी अन्य प्रारूप `400` लौटाता है।",
                      "example": "2026-04-12"
                    },
                    "poa_address": {
                      "type": "string",
                      "nullable": true,
                      "description": "दस्तावेज़ पर मुद्रित फ़्री-टेक्स्ट पता। जब यह मान बदलता है (केवल गैर-सैंडबॉक्स सत्र) और संरचित पता अभी भी अनुपलब्ध या अधूरा है, तो सर्वर उसी अनुरोध की पृष्ठभूमि में इसे फिर से जियोकोड करता है और जियोकोडर परिणाम के साथ `poa_parsed_address` / `poa_formatted_address` को अधिलेखित कर सकता है।",
                      "example": "Avda de Madrid 34, 28013 Madrid"
                    },
                    "name_on_document": {
                      "type": "string",
                      "maxLength": 255,
                      "nullable": true,
                      "description": "प्राप्तकर्ता का नाम जैसा कि दस्तावेज़ पर मुद्रित है।",
                      "example": "Carmen Espanola"
                    },
                    "extra_fields": {
                      "type": "object",
                      "additionalProperties": true,
                      "nullable": true,
                      "description": "रिस्पॉन्स में हमेशा मौजूद: नौ ज्ञात कुंजियाँ (अनसेट कुंजियों के लिए `null` के साथ, `additional_names` का डिफ़ॉल्ट `[]` होना) और पहले से संग्रहीत कोई भी कस्टम कुंजियाँ।"
                    },
                    "poa_parsed_address": {
                      "type": "object",
                      "nullable": true,
                      "description": "वर्तमान संरचित पता, या `null` जब कोई मौजूद न हो। सात संपादन योग्य कुंजियों के साथ पुनर्गणित `formatted_address` शामिल है। संग्रहीत रूप में लौटाया गया — सर्वर-साइड जियोकोड के बाद इसमें संपादन योग्य कुंजियों के साथ बहीखाता कुंजियाँ (उदा. `raw_results`) शामिल हो सकती हैं।",
                      "properties": {
                        "address_type": {
                          "type": "string",
                          "nullable": true,
                          "description": "फ़्री-फ़ॉर्म पता वर्गीकरण (उदा. `home`)।"
                        },
                        "city": {
                          "type": "string",
                          "nullable": true,
                          "example": "Madrid"
                        },
                        "region": {
                          "type": "string",
                          "nullable": true,
                          "description": "राज्य / प्रांत / स्वायत्त समुदाय।"
                        },
                        "street_1": {
                          "type": "string",
                          "nullable": true,
                          "example": "Avda de Madrid 34"
                        },
                        "street_2": {
                          "type": "string",
                          "nullable": true
                        },
                        "postal_code": {
                          "type": "string",
                          "nullable": true,
                          "example": "28013"
                        },
                        "country": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO 3166-1 alpha-2 देश कोड। लोअरकेस इनपुट को अपरकेस में सामान्यीकृत किया जाता है; alpha-3 कोड `400` के साथ अस्वीकार किए जाते हैं।",
                          "example": "ES"
                        },
                        "formatted_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "संरचित पते का संयुक्त, मानव-पठनीय रूप। प्रत्येक `poa_parsed_address` संपादन के बाद सर्वर-साइड पुनर्गणना की जाती है।",
                          "example": "Avda de Madrid 34, Madrid, 28013, ES"
                        }
                      }
                    },
                    "poa_formatted_address": {
                      "type": "string",
                      "nullable": true,
                      "description": "पुनर्गणित `formatted_address` की शीर्ष-स्तरीय प्रतिलिपि, संरचित पता बदलने पर सिंक में रखी जाती है।",
                      "example": "Avda de Madrid 34, Madrid, 28013, ES"
                    }
                  }
                },
                "examples": {
                  "Updated POA": {
                    "summary": "सुधार के बाद पूर्ण POA रिकॉर्ड",
                    "value": {
                      "issuing_state": "ESP",
                      "document_type": "BANK_STATEMENT",
                      "document_language": "es",
                      "issuer": "Banco Example S.A.",
                      "issue_date": "2026-05-02",
                      "poa_address": "Avda de Madrid 34, 28013 Madrid",
                      "name_on_document": "Carmen Espanola",
                      "extra_fields": {
                        "bank_account_number": null,
                        "bank_iban": "ES9121000418450200051332",
                        "bank_sort_code": null,
                        "bank_routing_number": null,
                        "bank_swift_bic": null,
                        "bank_branch_name": null,
                        "bank_branch_address": null,
                        "document_phone_number": null,
                        "additional_names": [
                          "Carmen E. Espanola"
                        ]
                      },
                      "poa_parsed_address": {
                        "city": "Madrid",
                        "street_1": "Avda de Madrid 34",
                        "postal_code": "28013",
                        "country": "ES",
                        "formatted_address": "Avda de Madrid 34, Madrid, 28013, ES"
                      },
                      "poa_formatted_address": "Avda de Madrid 34, Madrid, 28013, ES"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं; नेस्टेड `poa_parsed_address` / `extra_fields` कुंजियों पर त्रुटियां एक ऑब्जेक्ट मान का उपयोग करती हैं: `{\"extra_fields\": {\"<key>\": \"<message>\"}}`।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid document type": {
                    "summary": "Enum अपरकेस है — लोअरकेस वेरिएंट अस्वीकार कर दिए जाते हैं",
                    "value": {
                      "document_type": [
                        "\"utility_bill\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid issuing state": {
                    "summary": "issuing_state ISO 3166-1 alpha-3 नहीं है",
                    "value": {
                      "issuing_state": [
                        "Invalid ISO 3166-1 alpha-3 country code for issuing_state."
                      ]
                    }
                  },
                  "additional_names not a list": {
                    "summary": "additional_names स्ट्रिंग्स की सूची या null स्वीकार करता है",
                    "value": {
                      "extra_fields": {
                        "additional_names": "Must be a list or null."
                      }
                    }
                  },
                  "Unsupported poa_parsed_address key": {
                    "summary": "केवल सात प्रलेखित कुंजियों की अनुमति है",
                    "value": {
                      "poa_parsed_address": {
                        "zipcode": "Unsupported key. Allowed keys: address_type, city, region, street_1, street_2, postal_code, country"
                      }
                    }
                  },
                  "Bad date format": {
                    "summary": "तारीखें YYYY-MM-DD प्रारूप में होनी चाहिए",
                    "value": {
                      "issue_date": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "क्रेडेंशियल में write:sessions का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात सत्र, गैर-संपादन योग्य स्थिति में सत्र, या पैच करने के लिए कोई POA रिकॉर्ड नहीं है। प्रत्येक केस का एक अलग `detail` संदेश होता है (उदाहरण देखें)। अज्ञात-सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown session": {
                    "summary": "आपके एप्लिकेशन में इस ID वाला कोई सत्र नहीं है (या इसे हटा दिया गया था)",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Wrong session state": {
                    "summary": "सत्र मौजूद है लेकिन Approved / Declined / In Review / Kyc Expired नहीं है",
                    "value": {
                      "detail": "No Session matches the given query."
                    }
                  },
                  "No POA record": {
                    "summary": "वर्कफ़्लो ने कभी पते का प्रमाण चरण नहीं चलाया",
                    "value": {
                      "detail": "The session does not have a POA."
                    }
                  },
                  "No POA for node": {
                    "summary": "node_id दिया गया है लेकिन इसके लिए कोई POA मौजूद नहीं है",
                    "value": {
                      "detail": "The session does not have a POA for node 'feature_missing'."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "समर्पित रेट लिमिट पार हो गई — प्रति API कुंजी प्रति मिनट 10 POA डेटा अपडेट (अस्वीकृत अनुरोध बजट में गिने जाते हैं)। साझा 300/मिनट का राइट बजट भी अपने संदेश के साथ ट्रिगर हो सकता है। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर की जांच करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "POA अपडेट बजट समाप्त हो गया",
                    "value": {
                      "detail": "Session POA data update rate limit exceeded. You can make up to 10 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-poa-data/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"issuing_state\": \"ESP\",\n    \"document_type\": \"BANK_STATEMENT\",\n    \"issuer\": \"Banco Example S.A.\",\n    \"issue_date\": \"2026-05-02\",\n    \"name_on_document\": \"Carmen Espanola\",\n    \"poa_address\": \"Avda de Madrid 34, 28013 Madrid\",\n    \"extra_fields\": {\n      \"bank_iban\": \"ES9121000418450200051332\"\n    },\n    \"poa_parsed_address\": {\n      \"city\": \"Madrid\",\n      \"postal_code\": \"28013\",\n      \"country\": \"ES\"\n    }\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_poa_data(\n    \"11111111-2222-3333-4444-555555555555\",\n    issuing_state=\"ESP\",\n    document_type=\"BANK_STATEMENT\",\n    issuer=\"Banco Example S.A.\",\n    issue_date=\"2026-05-02\",\n    poa_address=\"Avda de Madrid 34, 28013 Madrid\",\n    name_on_document=\"Carmen Espanola\",\n    extra_fields={\"bank_iban\": \"ES9121000418450200051332\", \"additional_names\": [\"Carmen E. Espanola\"]},\n    poa_parsed_address={\n        \"city\": \"Madrid\",\n        \"street_1\": \"Avda de Madrid 34\",\n        \"postal_code\": \"28013\",\n        \"country\": \"ES\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updatePoaData(\"11111111-2222-3333-4444-555555555555\", {\n  issuing_state: \"ESP\",\n  document_type: \"BANK_STATEMENT\",\n  issuer: \"Banco Example S.A.\",\n  issue_date: \"2026-05-02\",\n  poa_address: \"Avda de Madrid 34, 28013 Madrid\",\n  name_on_document: \"Carmen Espanola\",\n  extra_fields: { bank_iban: \"ES9121000418450200051332\", additional_names: [\"Carmen E. Espanola\"] },\n  poa_parsed_address: {\n    city: \"Madrid\",\n    street_1: \"Avda de Madrid 34\",\n    postal_code: \"28013\",\n    country: \"ES\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdatePOAData(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdatePOADataParams{\n\tIssuingState:   didit.String(\"ESP\"),\n\tDocumentType:   didit.Some(didit.SessionsUpdatePOADataParamsDocumentType(\"BANK_STATEMENT\")),\n\tIssuer:         didit.String(\"Banco Example S.A.\"),\n\tIssueDate:      didit.String(\"2026-05-02\"),\n\tPOAAddress:     didit.String(\"Avda de Madrid 34, 28013 Madrid\"),\n\tNameOnDocument: didit.String(\"Carmen Espanola\"),\n\tExtraFields:    didit.Some(map[string]any{\"bank_iban\": \"ES9121000418450200051332\", \"additional_names\": []any{\"Carmen E. Espanola\"}}),\n\tPOAParsedAddress: didit.Some(didit.SessionsUpdatePOADataParamsPOAParsedAddress{\n\t\tCity:       didit.String(\"Madrid\"),\n\t\tStreet1:    didit.String(\"Avda de Madrid 34\"),\n\t\tPostalCode: didit.String(\"28013\"),\n\t\tCountry:    didit.String(\"ES\"),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsUpdatePoaDataParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updatePoaData(\"11111111-2222-3333-4444-555555555555\", SessionsUpdatePoaDataParams.builder()\n        .issuingState(\"ESP\")\n        .documentType(SessionsUpdatePoaDataParams.DocumentType.of(\"BANK_STATEMENT\"))\n        .issuer(\"Banco Example S.A.\")\n        .issueDate(LocalDate.parse(\"2026-05-02\"))\n        .poaAddress(\"Avda de Madrid 34, 28013 Madrid\")\n        .nameOnDocument(\"Carmen Espanola\")\n        .extraFields(Map.of(\"bank_iban\", \"ES9121000418450200051332\", \"additional_names\", List.of(\"Carmen E. Espanola\")))\n        .poaParsedAddress(SessionsUpdatePoaDataParams.PoaParsedAddress.builder()\n                .city(\"Madrid\")\n                .street1(\"Avda de Madrid 34\")\n                .postalCode(\"28013\")\n                .country(\"ES\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updatePoaData('11111111-2222-3333-4444-555555555555', [\n    'issuing_state' => 'ESP',\n    'document_type' => 'BANK_STATEMENT',\n    'issuer' => 'Banco Example S.A.',\n    'issue_date' => '2026-05-02',\n    'poa_address' => 'Avda de Madrid 34, 28013 Madrid',\n    'name_on_document' => 'Carmen Espanola',\n    'extra_fields' => ['bank_iban' => 'ES9121000418450200051332', 'additional_names' => ['Carmen E. Espanola']],\n    'poa_parsed_address' => [\n        'city' => 'Madrid',\n        'street_1' => 'Avda de Madrid 34',\n        'postal_code' => '28013',\n        'country' => 'ES',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_poa_data(\n  \"11111111-2222-3333-4444-555555555555\",\n  issuing_state: \"ESP\",\n  document_type: \"BANK_STATEMENT\",\n  issuer: \"Banco Example S.A.\",\n  issue_date: \"2026-05-02\",\n  poa_address: \"Avda de Madrid 34, 28013 Madrid\",\n  name_on_document: \"Carmen Espanola\",\n  extra_fields: { bank_iban: \"ES9121000418450200051332\", additional_names: [\"Carmen E. Espanola\"] },\n  poa_parsed_address: {\n    city: \"Madrid\",\n    street_1: \"Avda de Madrid 34\",\n    postal_code: \"28013\",\n    country: \"ES\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdatePoaDataAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsUpdatePoaDataParams\n{\n    IssuingState = \"ESP\",\n    DocumentType = new SessionsUpdatePoaDataParamsDocumentType(\"BANK_STATEMENT\"),\n    Issuer = \"Banco Example S.A.\",\n    IssueDate = \"2026-05-02\",\n    PoaAddress = \"Avda de Madrid 34, 28013 Madrid\",\n    NameOnDocument = \"Carmen Espanola\",\n    ExtraFields = new Dictionary<string, object> { [\"bank_iban\"] = \"ES9121000418450200051332\", [\"additional_names\"] = new object[] { \"Carmen E. Espanola\" } },\n    PoaParsedAddress = new SessionsUpdatePoaDataParamsPoaParsedAddress\n    {\n        City = \"Madrid\",\n        Street1 = \"Avda de Madrid 34\",\n        PostalCode = \"28013\",\n        Country = \"ES\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/{companyUuid}/update-data/": {
      "patch": {
        "summary": "व्यवसाय सत्यापन (KYB) सत्र में रजिस्ट्री से निकाले गए कंपनी डेटा को अपडेट करें",
        "description": "`companyUuid` द्वारा पहचानी गई व्यवसाय सत्यापन (KYB) सत्र में रजिस्ट्री से निकाले गए कंपनी डेटा — कंपनी का नाम, पंजीकरण संख्या, पते, स्थिति, संपर्क विवरण — को सही करें। विशिष्ट कॉलर रजिस्ट्री की गलत रीडिंग को ठीक करने वाले अनुपालन विश्लेषक, या सही किए गए कंपनी डेटा को सिंक करने वाले आपके बैक ऑफ़िस होते हैं। बॉडी में प्रत्येक फ़ील्ड वैकल्पिक है (`PATCH` सिमेंटिक्स); एक खाली JSON बॉडी (`{}`) एक नो-ऑप है जो केवल वर्तमान कंपनी रिकॉर्ड ही लौटाती है।\n\nसंपादन एक साथ दो स्थानों पर लिखे जाते हैं: कैनोनिकल कंपनी कॉलम वाले फ़ील्ड (नाम, पंजीकरण संख्या, देश, निगमन तिथि, कर संख्या, प्रकार, स्थितियाँ, पूंजी फ़ील्ड (`registered_capital`, `registered_capital_amount`, `registered_capital_currency`), वैकल्पिक नाम, व्यवसाय की प्रकृति, वेबसाइट, ईमेल, फ़ोन, LEI, स्थान, और `legal_address` → `registered_address`) उस कॉलम को अपडेट करते हैं, और **प्रत्येक** सबमिट की गई कुंजी को `registry_data` स्नैपशॉट में भी मर्ज किया जाता है (ISO स्ट्रिंग्स के रूप में तिथियां) ताकि \"रजिस्ट्री से निकाला गया\" दृश्य सुधार को दर्शाए। कॉलम के बिना फ़ील्ड — `region`, `registration_date`, `dissolution_date`, `control_scheme` — केवल `registry_data` में जाते हैं। `user_provided_data` (अंतिम उपयोगकर्ता ने होस्ट किए गए फ़्लो में जिसकी पुष्टि की है) को कभी छुआ नहीं जाता है, और प्रत्येक गैर-रिक्त PATCH पर `last_console_edit_at` अंकित किया जाता है।\n\nKYC/POA अपडेट एंडपॉइंट्स के विपरीत, इसमें **कोई सत्र-स्थिति अवरोध (gate) नहीं है**: व्यवसाय सत्र के लाइफ़साइकिल में किसी भी समय कंपनी को संपादित किया जा सकता है। कंपनी को पाथ में दिए गए सत्र से संबंधित होना चाहिए (अन्यथा `\"KYB company does not belong to the given session.\"` के साथ `404`) और आपके एप्लिकेशन से संबंधित होना चाहिए। प्रत्येक गैर-रिक्त PATCH व्यवसाय सत्र पर `data.updated` [webhook](/hi/integration/webhooks) को ट्रिगर करता है (ट्रिगर `console_registry_edit`) — तब भी जब सबमिट किए गए मान संग्रहीत मानों के बराबर हों। सत्र की स्थिति और निर्णय का **पुनः मूल्यांकन नहीं** किया जाता है, और कोई समीक्षा/ऑडिट प्रविष्टि रिकॉर्ड नहीं की जाती है।\n\nयह एक API कुंजी या कंसोल उपयोगकर्ता टोकन स्वीकार करता है; किसी भी तरह से क्रेडेंशियल को `write:businesses` अनुमति की आवश्यकता होती है। प्रमाणीकरण और अनुमति दोनों की विफलताएं `403` लौटाती हैं — यह API कभी भी `401` का उत्तर नहीं देता है। ध्यान दें कि सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए अज्ञात `sessionId` क्रेडेंशियल गायब होने पर भी `404` लौटाता है। प्रति API कुंजी प्रति मिनट 300 अनुरोधों का साझा राइट बजट लागू होता है।\n\nउपयोगकर्ता सत्यापन सत्रों के लिए, KYC समकक्ष `PATCH /v3/session/{sessionId}/update-data/` है; स्वयं सत्र निर्णय को बदलने के लिए `PATCH /v3/session/{sessionId}/update-status/` का उपयोग करें।",
        "operationId": "patch_v3_session_kyb_company_update_data",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_kyb_company_data",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "पैरेंट व्यवसाय सत्यापन (KYB) सत्र का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "companyUuid",
            "in": "path",
            "required": true,
            "description": "अपडेट किए जाने वाले कंपनी रिकॉर्ड का UUID (व्यवसाय सत्र के निर्णय में `registry_checks[].company.uuid`)। यह `sessionId` द्वारा संदर्भित सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "88888888-9999-aaaa-bbbb-cccccccccccc"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "सभी फ़ील्ड वैकल्पिक हैं — केवल वही भेजें जिसे आप बदलना चाहते हैं। प्रदान किए गए फ़ील्ड कैनोनिकल कंपनी कॉलम (जहाँ मौजूद हों) को अपडेट करते हैं और `registry_data` स्नैपशॉट में मर्ज कर दिए जाते हैं।",
                "properties": {
                  "company_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "कंपनी का कानूनी नाम। कैनोनिकल कॉलम और रजिस्ट्री स्नैपशॉट में लिखा गया।",
                    "example": "Docs Probe Corp"
                  },
                  "registration_number": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "कंपनी रजिस्ट्री के साथ आधिकारिक पंजीकरण संख्या।",
                    "example": "DPC-001"
                  },
                  "country_code": {
                    "type": "string",
                    "maxLength": 2,
                    "description": "निगमन का देश, ISO 3166-1 alpha-2। केस-असंवेदनशील (`us` को `US` के रूप में संग्रहीत किया जाता है)। Alpha-3 कोड 2 वर्णों की सीमा में विफल होकर `400` लौटाते हैं।",
                    "example": "US"
                  },
                  "region": {
                    "type": "string",
                    "maxLength": 10,
                    "nullable": true,
                    "description": "सबडिवीजन / क्षेत्र टैग जहाँ रजिस्ट्री में ऐसा उपलब्ध हो (जैसे अमेरिकी राज्य)। केवल रजिस्ट्री स्नैपशॉट में स्टोर किया जाता है — इसका कोई कैनोनिकल कॉलम नहीं है।"
                  },
                  "incorporation_date": {
                    "type": "string",
                    "format": "date",
                    "description": "`YYYY-MM-DD` में निगमन तिथि। प्रत्येक अन्य फ़ील्ड की तरह वैकल्पिक — `PATCH` अनुरोध आंशिक है। कोई भी अन्य दिनांक प्रारूप `400` लौटाता है।",
                    "example": "2015-04-12"
                  },
                  "registration_date": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "पंजीकरण तिथि जहां रजिस्ट्री इसे निगमन से अलग मानती है। केवल रजिस्ट्री स्नैपशॉट में संग्रहीत।"
                  },
                  "dissolution_date": {
                    "type": "string",
                    "format": "date",
                    "nullable": true,
                    "description": "उन कंपनियों के लिए विघटन तिथि जो अब सक्रिय नहीं हैं। केवल रजिस्ट्री स्नैपशॉट में संग्रहीत।"
                  },
                  "tax_number": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "कर पहचान संख्या।"
                  },
                  "legal_address": {
                    "type": "string",
                    "description": "कानूनी / पंजीकृत पता। सर्वर-साइड पर कैनोनिकल `registered_address` कॉलम के लिए उपनाम दिया गया — रिस्पॉन्स इसे `registered_address` के तहत लौटाता है, जबकि रजिस्ट्री स्नैपशॉट आपके द्वारा भेजी गई `legal_address` कुंजी को बनाए रखता है।",
                    "example": "1 Example Plaza, Wilmington, DE 19801"
                  },
                  "company_type": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "कानूनी इकाई प्रकार (उदा. `Limited Liability Company`, `PLC`, `GmbH`)।",
                    "example": "Limited Liability Company"
                  },
                  "registry_status": {
                    "type": "string",
                    "enum": [
                      "active",
                      "dissolved",
                      "deregistered",
                      "see full details",
                      "authorised",
                      "appointed representative",
                      "unauthorised",
                      "inactive",
                      "no longer authorised",
                      "closed",
                      "struck off"
                    ],
                    "nullable": true,
                    "description": "रजिस्ट्री द्वारा रिपोर्ट की गई कंपनी की स्थिति। लोअरकेस, कुछ मानों में रिक्त स्थान होते हैं (उदा. `struck off`, `no longer authorised`)। कोई भी अन्य मान `400` लौटाता है।",
                    "example": "active"
                  },
                  "verification_status": {
                    "type": "string",
                    "enum": [
                      "verified",
                      "failed",
                      "unknown"
                    ],
                    "nullable": true,
                    "description": "रजिस्ट्री सत्यापन का परिणाम। कोई भी अन्य मान `400` लौटाता है।",
                    "example": "verified"
                  },
                  "alternative_names": {
                    "type": "string",
                    "description": "व्यापारिक नाम, पूर्व कानूनी नाम, DBA नाम (मुक्त पाठ)।"
                  },
                  "nature_of_business": {
                    "type": "string",
                    "description": "कंपनी की गतिविधि का संक्षिप्त विवरण।",
                    "example": "Software development"
                  },
                  "registered_capital": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "मानव-पठनीय पंजीकृत पूंजी (उदाहरण के लिए `USD 50000`)। संरचित मानों के लिए `registered_capital_amount` + `registered_capital_currency` का उपयोग करें, या मुक्त-प्रारूप पाठ के लिए इस फ़ील्ड का उपयोग करें।",
                    "example": "USD 50000"
                  },
                  "registered_capital_amount": {
                    "type": "number",
                    "format": "double",
                    "nullable": true,
                    "description": "संख्यात्मक पंजीकृत-पूंजी राशि (20 अंकों तक, 2 दशमलव स्थान)। `registered_capital_amount` कॉलम सेट करता है और `registry_data` में दशमलव स्ट्रिंग के रूप में प्रतिबिंबित होता है; रिस्पॉन्स इसे दशमलव स्ट्रिंग के रूप में वापस दोहराता है (उदा. `\"1500000.50\"`)।"
                  },
                  "registered_capital_currency": {
                    "type": "string",
                    "maxLength": 3,
                    "nullable": true,
                    "description": "`registered_capital_amount` के लिए ISO 4217 करेंसी कोड। केस-असंवेदनशील (`usd` को `USD` के रूप में संग्रहीत किया जाता है); जो मान ठीक 3 अक्षरों के नहीं होते, वे ISO 4217 संदेश के साथ `400` लौटाते हैं। कैनोनिकल `registered_capital_currency` कॉलम सेट करता है और `registry_data` में प्रतिबिंबित होता है।",
                    "example": "USD"
                  },
                  "website": {
                    "type": "string",
                    "maxLength": 500,
                    "description": "कंपनी की वेबसाइट। बेयर डोमेन स्वीकार किए जाते हैं और `https://` प्रीफ़िक्स के साथ सामान्यीकृत किए जाते हैं (`docsprobe.example.com` को `https://docsprobe.example.com` के रूप में संग्रहीत किया जाता है); वे मान जो अभी भी URL सत्यापन में विफल रहते हैं, `400` लौटाते हैं।",
                    "example": "https://docsprobe.example.com"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "रजिस्ट्री में दर्ज संपर्क ईमेल।",
                    "example": "legal@docsprobe.example.com"
                  },
                  "phone": {
                    "type": "string",
                    "maxLength": 50,
                    "description": "संपर्क फ़ोन। `+`, अंकों, रिक्त स्थानों, डैश, बिंदुओं या कोष्ठकों से मेल खाना चाहिए, जिसमें कुल 7-15 अंक हों — अन्यथा `400`।",
                    "example": "+1 302 555 0143"
                  },
                  "legal_entity_identifier": {
                    "type": "string",
                    "maxLength": 50,
                    "description": "LEI, जहाँ कंपनी के पास एक हो।"
                  },
                  "location_of_registration": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "रिकॉर्ड की रजिस्ट्री का शहर / उपखंड।"
                  },
                  "vat_number": {
                    "type": "string",
                    "maxLength": 64,
                    "description": "EU VAT संख्या। केवल `registry_data` स्नैपशॉट में मर्ज की गई — इसे यहाँ संपादित करने से VAT और कर पहचान संख्या सत्यापन पुनः नहीं चलता है, इसलिए `vat_validation_status` और अन्य `vat_*` परिणाम फ़ील्ड अपरिवर्तित रहते हैं।"
                  },
                  "control_scheme": {
                    "type": "string",
                    "description": "रजिस्ट्री द्वारा उपलब्ध कराए जाने पर नियंत्रण / गवर्नेंस व्यवस्था। केवल रजिस्ट्री स्नैपशॉट में संग्रहीत।"
                  }
                }
              },
              "examples": {
                "Correct registry data": {
                  "summary": "कंपनी के रजिस्ट्री से निकाले गए फ़ील्ड ठीक करें",
                  "value": {
                    "company_name": "Docs Probe Corp",
                    "registration_number": "DPC-001",
                    "country_code": "US",
                    "incorporation_date": "2015-04-12",
                    "company_type": "Limited Liability Company",
                    "legal_address": "1 Example Plaza, Wilmington, DE 19801",
                    "registry_status": "active",
                    "verification_status": "verified",
                    "website": "docsprobe.example.com",
                    "email": "legal@docsprobe.example.com",
                    "phone": "+1 302 555 0143",
                    "registered_capital": "USD 50000",
                    "nature_of_business": "Software development"
                  }
                },
                "Single field": {
                  "summary": "केवल आपके द्वारा भेजी गई कुंजियाँ ही लिखी जाती हैं",
                  "value": {
                    "registry_status": "dissolved"
                  }
                },
                "No-op": {
                  "summary": "खाली बॉडी webhook को ट्रिगर किए बिना वर्तमान रिकॉर्ड लौटाती है",
                  "value": {}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "कंपनी डेटा अपडेट किया गया (या खाली मुख्य भाग के लिए अपरिवर्तित वापस भेजा गया)। संपूर्ण KYB कंपनी रिकॉर्ड लौटाता है — वही संरचना जो व्यवसाय सत्र निर्णय पर `registry_checks[].company` की होती है। ध्यान दें कि `legal_address` कैसे `registered_address` के रूप में वापस आता है। `registered_capital_amount`/`registered_capital_currency` अपने कैनोनिकल कॉलम को पॉप्युलेट करते हैं और `registry_data` में प्रतिबिंबित होते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "पूर्ण KYB कंपनी रिकॉर्ड — व्यवसाय सत्र के निर्णय पर `registry_checks[]` के अंदर मौजूद `company` ऑब्जेक्ट जैसा ही आकार।",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "कंपनी रिकॉर्ड पहचानकर्ता (`companyUuid` पथ पैरामीटर)।"
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true,
                      "description": "वर्कफ़्लो ग्राफ़ नोड जिससे यह कंपनी रिकॉर्ड संबंधित है, जब वर्कफ़्लो ग्राफ़-आधारित हो।"
                    },
                    "status": {
                      "type": "string",
                      "description": "रजिस्ट्री जांच की सुविधा जीवनचक्र स्थिति (उदा. `Not Finished`, `Approved`, `Declined`, `In Review`)।"
                    },
                    "registry_status": {
                      "type": "string",
                      "nullable": true,
                      "description": "रजिस्ट्री द्वारा रिपोर्ट की गई कंपनी की स्थिति (उदा. `active`, `dissolved`, `struck off`)।"
                    },
                    "data_resolved": {
                      "type": "boolean",
                      "description": "`true` जब कंपनी डेटा पूरा हो — मैन्युअल रूप से दर्ज की गई कंपनियों के लिए हमेशा `true`; रजिस्ट्री-स्रोत वाली कंपनियों के लिए, रजिस्ट्री फ़ेच पूरा हो जाने के बाद `true`।"
                    },
                    "company_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "registration_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "निगमन का ISO 3166-1 alpha-2 देश।"
                    },
                    "region": {
                      "type": "string",
                      "nullable": true
                    },
                    "company_type": {
                      "type": "string",
                      "nullable": true
                    },
                    "incorporation_date": {
                      "type": "string",
                      "format": "date",
                      "nullable": true
                    },
                    "registered_address": {
                      "type": "string",
                      "nullable": true,
                      "description": "कैनोनिकल पंजीकृत पता — जब आप `legal_address` भेजते हैं तो अपडेट किया जाता है।"
                    },
                    "tax_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "risk_level": {
                      "type": "string",
                      "nullable": true
                    },
                    "verification_status": {
                      "type": "string",
                      "nullable": true,
                      "description": "`verified`, `failed`, या `unknown`।"
                    },
                    "is_from_registry": {
                      "type": "boolean",
                      "description": "`true` जब कंपनी का विवरण मैन्युअल रूप से दर्ज करने के बजाय रजिस्ट्री खोज से पहले से भरा गया हो।"
                    },
                    "fetch_status": {
                      "type": "string",
                      "nullable": true,
                      "description": "रजिस्ट्री-स्रोतित कंपनियों के लिए रजिस्ट्री फ़ेच लाइफ़साइकिल (`pending` / `resolved`); मैन्युअल प्रविष्टियों के लिए `null`।"
                    },
                    "alternative_names": {
                      "type": "string",
                      "nullable": true,
                      "description": "वैकल्पिक, व्यापारिक, पूर्व या मूल-भाषा कंपनी के नाम टेक्स्ट के रूप में, जब रिपोर्ट किए गए हों।"
                    },
                    "nature_of_business": {
                      "type": "string",
                      "nullable": true
                    },
                    "registered_capital": {
                      "type": "string",
                      "nullable": true
                    },
                    "registered_capital_amount": {
                      "type": "string",
                      "nullable": true,
                      "description": "कैनोनिकल कॉलम। दशमलव स्ट्रिंग (उदा. `\"2750000.00\"`) के रूप में लौटाया गया।"
                    },
                    "registered_capital_currency": {
                      "type": "string",
                      "nullable": true,
                      "description": "कैनोनिकल कॉलम। रजिस्ट्री फ़्लो द्वारा या इस endpoint के माध्यम से कंसोल/API संपादनों द्वारा सेट किया गया।"
                    },
                    "website": {
                      "type": "string",
                      "nullable": true
                    },
                    "email": {
                      "type": "string",
                      "nullable": true
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true
                    },
                    "legal_entity_identifier": {
                      "type": "string",
                      "nullable": true
                    },
                    "location_of_registration": {
                      "type": "string",
                      "nullable": true
                    },
                    "vat_number": {
                      "type": "string",
                      "nullable": true,
                      "description": "EU VAT संख्या, जब होस्टेड रजिस्ट्री चरण के दौरान एकत्र की गई हो या बाद में संपादित की गई हो।"
                    },
                    "vat_validation_status": {
                      "type": "string",
                      "enum": [
                        "valid",
                        "invalid",
                        "format_valid",
                        "invalid_format",
                        "could_not_validate",
                        "not_applicable"
                      ],
                      "description": "रजिस्ट्री सबमिट पर VAT संख्या या, यदि कोई नहीं है, तो `tax_number` के सत्यापन का परिणाम। `valid` / `invalid`: देश की आधिकारिक रजिस्ट्री द्वारा तय किया जाता है (EU VIES, नॉर्वे, स्विट्जरलैंड, ब्राजील, कोलंबिया, कोस्टा रिका, इक्वाडोर, पराग्वे; पोलैंड अपने घरेलू VAT रजिस्टर द्वारा भी)। `format_valid` / `invalid_format`: देश के प्रारूप और चेक-डिजिट नियमों द्वारा तय किया जाता है जहाँ किसी रजिस्ट्री से क्वेरी नहीं की जा सकती। `could_not_validate`: रजिस्ट्री अनुपलब्ध थी। `not_applicable`: कोई संख्या नहीं, बिना रजिस्ट्री या नियमों वाला देश, या कोई सैंडबॉक्स सत्र।"
                    },
                    "vat_validated_number": {
                      "type": "string",
                      "nullable": true,
                      "description": "वह संख्या जिसकी जाँच की गई थी, जैसा कि स्रोत इसे जानता है (उदाहरण के लिए फ्रेंच SIREN या डच RSIN से प्राप्त VAT संख्या)। कोई जाँच न चलने पर `null`।"
                    },
                    "vat_validation_source": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "eu_vies",
                        "pl_vat_white_list",
                        "no_brreg",
                        "ch_uid_register",
                        "br_receita_federal",
                        "co_rues",
                        "cr_hacienda",
                        "ec_sri",
                        "py_dnit",
                        "format_rules",
                        null
                      ],
                      "description": "वह स्रोत जिसने `vat_validation_status` तय किया: एक आधिकारिक रजिस्ट्री, या `format_rules`। कोई जाँच न चलने पर `null`।"
                    },
                    "vat_validated_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "नंबर को सत्यापित करने वाले स्रोत के साथ पंजीकृत नाम, जब वह इसे प्रकट करता है। केवल तब सेट होता है जब स्थिति `valid` हो।"
                    },
                    "vat_validated_address": {
                      "type": "string",
                      "nullable": true,
                      "description": "नंबर को सत्यापित करने वाले स्रोत के पास पंजीकृत पता, यदि वह इसे प्रकट करता है। केवल तभी सेट किया जाता है जब स्थिति `valid` हो।"
                    },
                    "vat_checked_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जांच का टाइमस्टैम्प। कोई जांच न चलने पर `null`।"
                    },
                    "financial_summary": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true
                    },
                    "officers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "कंपनी से जुड़े निदेशक / अधिकारी, जिसमें प्रति-व्यक्ति KYC प्रगति भी शामिल है।"
                    },
                    "beneficial_owners": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "कंपनी से जुड़े वास्तविक स्वामी, जिसमें प्रति-व्यक्ति KYC प्रगति शामिल है।"
                    },
                    "addresses": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "रजिस्ट्री पते का विवरण, यदि रजिस्ट्री द्वारा कोई विवरण लौटाया गया हो।"
                    },
                    "industries": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "रजिस्ट्री उद्योग वर्गीकरण, जब उपलब्ध हो।"
                    },
                    "accounts": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "रजिस्ट्री फ़ाइलिंग तिथियां, जब उपलब्ध हों। वार्षिक रिटर्न और आम बैठकों के लिए last_annual_return_date और last_agm_date का उपयोग किया जाता है; वे वित्तीय खातों से भिन्न होते हैं।"
                    },
                    "registry_data": {
                      "$ref": "#/components/schemas/KYBRegistryData"
                    },
                    "user_provided_data": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "होस्टेड रजिस्ट्री-पुष्टिकरण चरण के दौरान अंतिम उपयोगकर्ता ने क्या टाइप किया। इस endpoint द्वारा कभी संशोधित नहीं किया जाता।"
                    },
                    "confirmed_by_user_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जब अंतिम उपयोगकर्ता ने होस्टेड फ़्लो में कंपनी डेटा की पुष्टि की।"
                    },
                    "last_console_edit_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "प्रत्येक सफल गैर-रिक्त PATCH पर स्टैम्प किया जाता है, ताकि UI \"ऑपरेटर द्वारा संपादित\" संदर्भ दिखा सकें।"
                    },
                    "is_editable": {
                      "type": "boolean",
                      "description": "`true` जब तक अंतिम उपयोगकर्ता होस्ट किए गए फ़्लो में रजिस्ट्री-स्रोत डेटा को संपादित कर सकता है (रजिस्ट्री-स्रोत और अभी तक पुष्टि नहीं की गई)।"
                    }
                  }
                },
                "examples": {
                  "Updated company": {
                    "summary": "सुधार के बाद पूर्ण कंपनी रिकॉर्ड",
                    "value": {
                      "uuid": "6b9479f5-6769-46c8-baf1-df63bbbc5f8c",
                      "node_id": null,
                      "status": "Not Finished",
                      "registry_status": "active",
                      "data_resolved": true,
                      "company_name": "Docs Probe Corp",
                      "registration_number": "DPC-001",
                      "country_code": "US",
                      "region": null,
                      "company_type": "Limited Liability Company",
                      "incorporation_date": "2015-04-12",
                      "registered_address": "1 Example Plaza, Wilmington, DE 19801",
                      "tax_number": null,
                      "risk_level": null,
                      "verification_status": "verified",
                      "is_from_registry": false,
                      "fetch_status": null,
                      "alternative_names": null,
                      "nature_of_business": "Software development",
                      "registered_capital": "USD 50000",
                      "registered_capital_amount": null,
                      "registered_capital_currency": "USD",
                      "website": "https://docsprobe.example.com",
                      "email": "legal@docsprobe.example.com",
                      "phone": "+1 302 555 0143",
                      "legal_entity_identifier": null,
                      "location_of_registration": null,
                      "financial_summary": null,
                      "officers": [],
                      "beneficial_owners": [],
                      "addresses": null,
                      "industries": null,
                      "accounts": null,
                      "registry_data": {
                        "company_name": "Docs Probe Corp",
                        "registration_number": "DPC-001",
                        "country_code": "US",
                        "incorporation_date": "2015-04-12",
                        "legal_address": "1 Example Plaza, Wilmington, DE 19801",
                        "company_type": "Limited Liability Company",
                        "registry_status": "active",
                        "verification_status": "verified",
                        "nature_of_business": "Software development",
                        "registered_capital": "USD 50000",
                        "registered_capital_currency": "USD",
                        "website": "https://docsprobe.example.com",
                        "email": "legal@docsprobe.example.com",
                        "phone": "+1 302 555 0143"
                      },
                      "user_provided_data": null,
                      "confirmed_by_user_at": null,
                      "last_console_edit_at": "2026-06-12T00:02:34.276061Z",
                      "is_editable": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं। प्रारूप जांच से पहले अधिकतम-लंबाई जांच चलती है, इसलिए `country_code: \"USA\"` ISO संदेश के बजाय 2-वर्ण सीमा की रिपोर्ट करता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Alpha-3 country code": {
                    "summary": "country_code alpha-2 होना चाहिए — लंबाई की जांच पहले ट्रिगर होती है",
                    "value": {
                      "country_code": [
                        "Ensure this field has no more than 2 characters."
                      ]
                    }
                  },
                  "Non-alphabetic country code": {
                    "summary": "2 वर्ण लेकिन अक्षर नहीं",
                    "value": {
                      "country_code": [
                        "country_code must be a 2-letter ISO 3166-1 alpha-2 code."
                      ]
                    }
                  },
                  "Invalid currency": {
                    "summary": "3 वर्ण लेकिन एक ISO 4217 कोड नहीं",
                    "value": {
                      "registered_capital_currency": [
                        "Currency must be a 3-letter ISO 4217 code (e.g. USD, EUR, GBP)."
                      ]
                    }
                  },
                  "Invalid phone": {
                    "summary": "फ़ोन प्रारूप / अंक-गणना जाँच में विफल रहता है",
                    "value": {
                      "phone": [
                        "Invalid phone number format."
                      ]
                    }
                  },
                  "Invalid registry status": {
                    "summary": "registry_status enum में नहीं है",
                    "value": {
                      "registry_status": [
                        "\"liquidated\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid email": {
                    "summary": "गलत स्वरूपित ईमेल पता",
                    "value": {
                      "email": [
                        "Enter a valid email address."
                      ]
                    }
                  },
                  "Invalid website": {
                    "summary": "https:// सामान्यीकरण के बाद भी मान URL सत्यापन में विफल रहता है",
                    "value": {
                      "website": [
                        "Enter a valid URL."
                      ]
                    }
                  },
                  "Bad date format": {
                    "summary": "तारीखें YYYY-MM-DD प्रारूप में होनी चाहिए",
                    "value": {
                      "incorporation_date": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "क्रेडेंशियल में write:businesses का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात सत्र, अज्ञात कंपनी, या ऐसी कंपनी जो किसी भिन्न सत्र से संबंधित है। प्रत्येक केस का एक अलग `detail` संदेश होता है (उदाहरण देखें)। अज्ञात-सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown session": {
                    "summary": "आपके एप्लिकेशन में इस ID वाला कोई सत्र नहीं है (या इसे हटा दिया गया था)",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Unknown company": {
                    "summary": "आपके एप्लिकेशन में इस UUID वाली कोई कंपनी नहीं है",
                    "value": {
                      "detail": "No KYBCompany matches the given query."
                    }
                  },
                  "Company / session mismatch": {
                    "summary": "companyUuid मौजूद है लेकिन किसी अन्य सत्र से संबंधित है",
                    "value": {
                      "detail": "KYB company does not belong to the given session."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "साझा राइट रेट लिमिट पार हो गई (प्रति API कुंजी प्रति मिनट 300 POST/PATCH/DELETE अनुरोध)। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "लेखन बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH \\\n  https://verification.didit.me/v3/session/33333333-4444-5555-6666-777777777777/kyb/88888888-9999-aaaa-bbbb-cccccccccccc/update-data/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"company_name\": \"Docs Probe Corp\",\n    \"registration_number\": \"DPC-001\",\n    \"country_code\": \"US\",\n    \"incorporation_date\": \"2015-04-12\",\n    \"company_type\": \"Limited Liability Company\",\n    \"legal_address\": \"1 Example Plaza, Wilmington, DE 19801\",\n    \"registry_status\": \"active\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_kyb_company_data(\n    \"33333333-4444-5555-6666-777777777777\",\n    \"88888888-9999-aaaa-bbbb-cccccccccccc\",\n    company_name=\"Docs Probe Corp\",\n    registration_number=\"DPC-001\",\n    country_code=\"US\",\n    incorporation_date=\"2015-04-12\",\n    legal_address=\"1 Example Plaza, Wilmington, DE 19801\",\n    company_type=\"Limited Liability Company\",\n    registry_status=\"active\",\n    verification_status=\"verified\",\n    nature_of_business=\"Software development\",\n    registered_capital=\"USD 50000\",\n    website=\"docsprobe.example.com\",\n    email=\"legal@docsprobe.example.com\",\n    phone=\"+1 302 555 0143\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateKybCompanyData(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"88888888-9999-aaaa-bbbb-cccccccccccc\",\n  {\n    company_name: \"Docs Probe Corp\",\n    registration_number: \"DPC-001\",\n    country_code: \"US\",\n    incorporation_date: \"2015-04-12\",\n    legal_address: \"1 Example Plaza, Wilmington, DE 19801\",\n    company_type: \"Limited Liability Company\",\n    registry_status: \"active\",\n    verification_status: \"verified\",\n    nature_of_business: \"Software development\",\n    registered_capital: \"USD 50000\",\n    website: \"docsprobe.example.com\",\n    email: \"legal@docsprobe.example.com\",\n    phone: \"+1 302 555 0143\",\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateKYBCompanyData(ctx, \"33333333-4444-5555-6666-777777777777\", \"88888888-9999-aaaa-bbbb-cccccccccccc\", didit.SessionsUpdateKYBCompanyDataParams{\n\tCompanyName:        didit.String(\"Docs Probe Corp\"),\n\tRegistrationNumber: didit.String(\"DPC-001\"),\n\tCountryCode:        didit.String(\"US\"),\n\tIncorporationDate:  didit.String(\"2015-04-12\"),\n\tLegalAddress:       didit.String(\"1 Example Plaza, Wilmington, DE 19801\"),\n\tCompanyType:        didit.String(\"Limited Liability Company\"),\n\tRegistryStatus:     didit.Some(didit.SessionsUpdateKYBCompanyDataParamsRegistryStatus(\"active\")),\n\tVerificationStatus: didit.Some(didit.SessionsUpdateKYBCompanyDataParamsVerificationStatus(\"verified\")),\n\tNatureOfBusiness:   didit.String(\"Software development\"),\n\tRegisteredCapital:  didit.String(\"USD 50000\"),\n\tWebsite:            didit.String(\"docsprobe.example.com\"),\n\tEmail:              didit.String(\"legal@docsprobe.example.com\"),\n\tPhone:              didit.String(\"+1 302 555 0143\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport me.didit.Didit;\nimport me.didit.types.SessionsUpdateKybCompanyDataParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateKybCompanyData(\"33333333-4444-5555-6666-777777777777\", \"88888888-9999-aaaa-bbbb-cccccccccccc\", SessionsUpdateKybCompanyDataParams.builder()\n        .companyName(\"Docs Probe Corp\")\n        .registrationNumber(\"DPC-001\")\n        .countryCode(\"US\")\n        .incorporationDate(LocalDate.parse(\"2015-04-12\"))\n        .legalAddress(\"1 Example Plaza, Wilmington, DE 19801\")\n        .companyType(\"Limited Liability Company\")\n        .registryStatus(SessionsUpdateKybCompanyDataParams.RegistryStatus.of(\"active\"))\n        .verificationStatus(SessionsUpdateKybCompanyDataParams.VerificationStatus.of(\"verified\"))\n        .natureOfBusiness(\"Software development\")\n        .registeredCapital(\"USD 50000\")\n        .website(\"docsprobe.example.com\")\n        .email(\"legal@docsprobe.example.com\")\n        .phone(\"+1 302 555 0143\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateKybCompanyData('33333333-4444-5555-6666-777777777777', '88888888-9999-aaaa-bbbb-cccccccccccc', [\n    'company_name' => 'Docs Probe Corp',\n    'registration_number' => 'DPC-001',\n    'country_code' => 'US',\n    'incorporation_date' => '2015-04-12',\n    'legal_address' => '1 Example Plaza, Wilmington, DE 19801',\n    'company_type' => 'Limited Liability Company',\n    'registry_status' => 'active',\n    'verification_status' => 'verified',\n    'nature_of_business' => 'Software development',\n    'registered_capital' => 'USD 50000',\n    'website' => 'docsprobe.example.com',\n    'email' => 'legal@docsprobe.example.com',\n    'phone' => '+1 302 555 0143',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_kyb_company_data(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"88888888-9999-aaaa-bbbb-cccccccccccc\",\n  company_name: \"Docs Probe Corp\",\n  registration_number: \"DPC-001\",\n  country_code: \"US\",\n  incorporation_date: \"2015-04-12\",\n  legal_address: \"1 Example Plaza, Wilmington, DE 19801\",\n  company_type: \"Limited Liability Company\",\n  registry_status: \"active\",\n  verification_status: \"verified\",\n  nature_of_business: \"Software development\",\n  registered_capital: \"USD 50000\",\n  website: \"docsprobe.example.com\",\n  email: \"legal@docsprobe.example.com\",\n  phone: \"+1 302 555 0143\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateKybCompanyDataAsync(\"33333333-4444-5555-6666-777777777777\", \"88888888-9999-aaaa-bbbb-cccccccccccc\", new SessionsUpdateKybCompanyDataParams\n{\n    CompanyName = \"Docs Probe Corp\",\n    RegistrationNumber = \"DPC-001\",\n    CountryCode = \"US\",\n    IncorporationDate = \"2015-04-12\",\n    LegalAddress = \"1 Example Plaza, Wilmington, DE 19801\",\n    CompanyType = \"Limited Liability Company\",\n    RegistryStatus = new SessionsUpdateKybCompanyDataParamsRegistryStatus(\"active\"),\n    VerificationStatus = new SessionsUpdateKybCompanyDataParamsVerificationStatus(\"verified\"),\n    NatureOfBusiness = \"Software development\",\n    RegisteredCapital = \"USD 50000\",\n    Website = \"docsprobe.example.com\",\n    Email = \"legal@docsprobe.example.com\",\n    Phone = \"+1 302 555 0143\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/parties/{partyUuid}/": {
      "patch": {
        "summary": "व्यवसाय सत्यापन (KYB) सत्र पर प्रमुख व्यक्ति पक्ष को छोड़ें (या पुनः आवश्यक करें)",
        "description": "सत्यापन से किसी प्रमुख व्यक्ति पक्ष को छूट दें, या उसे वापस दायरे में लाएं। यह उस पक्ष के लिए ऑपरेटर एस्केप हैच है जो अपनी स्वयं की जांच कभी पूरी नहीं कर सकता - अक्सर ऐसा इसलिए होता है क्योंकि UBO या निदेशक को सौंपा गया व्यक्तिगत KYC सत्र हटा दिया गया था, जिससे उस चाइल्ड की स्थिति फ़्रीज़ हो जाती है और KYB `Awaiting User` में अटका रह जाता है जिसे आगे बढ़ाने के लिए कुछ नहीं बचता।\n\n`is_skipped: true` सेट करने से पक्ष प्रमुख व्यक्ति एकत्रीकरण से बाहर हो जाता है और तुरंत `KYBKeyPeopleCheck` तथा पैरेंट सत्र स्थिति की पुनर्गणना हो जाती है, जिससे व्यवसाय सत्र का निपटारा हो सकता है और फिर उसे स्वीकृत या अस्वीकृत किया जा सकता है। `is_skipped: false` भेजने से पक्ष वापस दायरे में आ जाता है और जांच फिर से उसकी प्रतीक्षा करने लगती है।\n\nहोस्ट किए गए प्रमुख व्यक्ति स्क्रीन में आवेदक-सामना वाले स्किप के विपरीत, यह endpoint भूमिका की `allow_skip` सेटिंग द्वारा नियंत्रित **नहीं** है - वह फ़्लैग सीमित करता है कि आवेदक क्या तय कर सकता है, न कि आपका विश्लेषक क्या ओवरराइड कर सकता है। `requires_verification` को जानबूझकर अछूता छोड़ दिया गया है, इसलिए ओवरराइड किया गया पक्ष `requires_verification: true` **और** `is_skipped: true` के रूप में दिखता है और रिकॉर्ड अभी भी दिखाता है कि नियमों ने क्या अनुरोध किया था।\n\nपक्ष पाथ में दिए गए सत्र से संबंधित होना चाहिए (अन्यथा `\"Party does not belong to the given session.\"` के साथ `404`) और आपके एप्लिकेशन से संबंधित होना चाहिए। एक PATCH जो वास्तव में फ़्लैग को बदलता है, `console_key_people_skip` ट्रिगर के साथ व्यवसाय सत्र पर `data.updated` [webhook](/hi/integration/webhooks) को सक्रिय करता है; एक PATCH जो फ़्लैग को उसके वर्तमान मान पर सेट करता है, वह कोई कार्रवाई नहीं करता और केवल पक्ष को वापस दोहराता है।\n\nयह API कुंजी या कंसोल उपयोगकर्ता token स्वीकार करता है; दोनों ही मामलों में क्रेडेंशियल को `write:businesses` अनुमति की आवश्यकता होती है।",
        "operationId": "patch_v3_session_kyb_party_update",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_kyb_party",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "पैरेंट व्यवसाय सत्यापन (KYB) सत्र का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "partyUuid",
            "in": "path",
            "required": true,
            "description": "अपडेट किए जाने वाले प्रमुख व्यक्ति पक्ष का UUID (व्यवसाय सत्र के निर्णय में `key_people_checks[].submitted.parties[].uuid`)। यह `sessionId` द्वारा संदर्भित सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "is_skipped"
                ],
                "properties": {
                  "is_skipped": {
                    "type": "boolean",
                    "description": "`true` पक्ष को सत्यापन से छूट देता है ताकि प्रमुख व्यक्ति चेक इसके बिना पूरा हो सके; `false` इसे वापस दायरे में लाता है।",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "पक्ष अपडेट किया गया (या जब फ़्लैग का मान पहले से ही यही था, तो अपरिवर्तित लौटाया गया)। पक्ष लौटाता है - व्यवसाय सत्र निर्णय पर `key_people_checks[].submitted.parties[]` की प्रविष्टि के समान संरचना।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "प्रमुख व्यक्ति पक्ष रिकॉर्ड - व्यवसाय सत्र निर्णय पर `key_people_checks[].submitted.parties[]` की प्रविष्टि के समान प्रारूप।",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "पक्ष पहचानकर्ता।"
                    },
                    "entity_type": {
                      "type": "string",
                      "enum": [
                        "person",
                        "company"
                      ],
                      "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                    },
                    "name": {
                      "type": "string",
                      "description": "पक्ष का डिस्प्ले नाम।"
                    },
                    "is_skipped": {
                      "type": "boolean",
                      "description": "क्या पक्ष सत्यापन से मुक्त है।"
                    },
                    "requires_verification": {
                      "type": "boolean",
                      "description": "भूमिका और थ्रेशोल्ड नियमों ने क्या माँगा था। इस endpoint द्वारा अछूता छोड़ दिया गया।"
                    },
                    "kyc_session_status": {
                      "type": "string",
                      "nullable": true,
                      "description": "लिंक किए गए व्यक्तिगत KYC सत्र की स्थिति, जो सत्र हटाए जाने पर हटाए जाने के समय फ़्रीज़ कर दी जाती है।"
                    },
                    "kyc_session_url": {
                      "type": "string",
                      "nullable": true,
                      "description": "लिंक किए गए व्यक्तिगत KYC सत्र का लिंक। कोई न होने पर या हटा दिए जाने पर `null`।"
                    },
                    "kyc_session_deleted": {
                      "type": "boolean",
                      "description": "लिंक किया गया व्यक्तिगत KYC सत्र हटा दिया गया था, इसलिए यह कभी सेटल नहीं हो सकता।"
                    },
                    "kyb_sub_session_deleted": {
                      "type": "boolean",
                      "description": "`kyc_session_deleted` का कॉर्पोरेट-पक्ष समकक्ष।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अनुरोध बॉडी पर सत्यापन त्रुटि। `is_skipped` एकमात्र फ़ील्ड है जिसे यह endpoint पढ़ता है, और यह आवश्यक है। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं। बॉडी सत्यापन पार्टी लुकअप के *बाद* चलता है, इसलिए जो पार्टी मौजूद नहीं है उसे भेजी गई विकृत `is_skipped` `404` रिपोर्ट करती है, `400` नहीं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing is_skipped": {
                    "summary": "खाली बॉडी, या ऐसी बॉडी जिसमें `is_skipped` शामिल नहीं है",
                    "value": {
                      "is_skipped": [
                        "This field is required."
                      ]
                    }
                  },
                  "Non-boolean is_skipped": {
                    "summary": "मान बूलियन नहीं है — `\"maybe\"`, `2`, `[]`। बूलियन के साथ-साथ `\"true\"`/`\"false\"`, `1`/`0` और `\"yes\"`/`\"no\"` सभी स्वीकार किए जाते हैं",
                    "value": {
                      "is_skipped": [
                        "Must be a valid boolean."
                      ]
                    }
                  },
                  "Null is_skipped": {
                    "summary": "`is_skipped` मौजूद है लेकिन `null` है",
                    "value": {
                      "is_skipped": [
                        "This field may not be null."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं या अपर्याप्त अनुमतियां हैं। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "क्रेडेंशियल में write:businesses का अभाव है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात पक्ष, या ऐसा पक्ष जो किसी भिन्न सत्र से संबंधित है। प्रत्येक केस का एक अलग `detail` संदेश होता है (उदाहरण देखें)। पक्ष लुकअप से पहले क्रेडेंशियल और अनुमति जाँच चलती हैं, इसलिए अनधिकृत कॉल `404` के बजाय `403` रिपोर्ट करती है। कोई अलग सत्र लुकअप नहीं है: आपके किसी पक्ष के साथ जोड़ा गया अज्ञात `sessionId` बेमेल संदेश रिपोर्ट करता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown party": {
                    "summary": "आपके एप्लिकेशन में इस UUID वाला कोई पक्ष नहीं है",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Party / session mismatch": {
                    "summary": "partyUuid मौजूद है लेकिन किसी अन्य सत्र से जुड़ा है",
                    "value": {
                      "detail": "Party does not belong to the given session."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "साझा राइट रेट लिमिट पार हो गई (प्रति API कुंजी प्रति मिनट 300 POST/PATCH/DELETE अनुरोध)। पुनः प्रयास करने से पहले `Retry-After` और `X-RateLimit-*` रिस्पॉन्स हेडर का निरीक्षण करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "लेखन बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_kyb_party(\n    \"33333333-4444-5555-6666-777777777777\",\n    \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\",\n    is_skipped=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateKybParty(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\",\n  {\n    is_skipped: true,\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateKYBParty(ctx, \"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\", didit.SessionsUpdateKYBPartyParams{\n\tIsSkipped: true,\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateKybPartyParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateKybParty(\"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\", SessionsUpdateKybPartyParams.builder()\n        .isSkipped(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateKybParty('33333333-4444-5555-6666-777777777777', '0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41', [\n    'is_skipped' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_kyb_party(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\",\n  is_skipped: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateKybPartyAsync(\"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\", new SessionsUpdateKybPartyParams\n{\n    IsSkipped = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/travel-rule/settings/": {
      "get": {
        "summary": "Travel Rule सेटिंग्स प्राप्त करें",
        "description": "एप्लिकेशन की Travel Rule सेटिंग्स और VASP प्रोफ़ाइल पढ़ें। पहली बार पढ़ने पर स्वचालित रूप से एक डिफ़ॉल्ट (अक्षम) सेटिंग्स पंक्ति और एक खाली प्रोफ़ाइल बनाता है।",
        "operationId": "getTravelRuleSettings",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_settings",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/settings/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.retrieve_settings()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.retrieveSettings();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RetrieveSettings(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().retrieveSettings();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->retrieveSettings();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.retrieve_settings\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.RetrieveSettingsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वर्तमान Travel Rule सेटिंग्स और VASP प्रोफ़ाइल।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleSettingsDetail"
                },
                "examples": {
                  "Disabled (default)": {
                    "value": {
                      "is_enabled": false,
                      "jurisdiction": "EU",
                      "name_matching_strictness": "DEFAULT",
                      "confirmation_timeout_hours": 48,
                      "timeout_outcome": "HOLD",
                      "threshold_amount": "0.00",
                      "inbound_auto_accept": true,
                      "allow_self_declaration": true,
                      "allow_screenshot_proof": true,
                      "auto_wallet_verification": true,
                      "vasp_attribution_enabled": true,
                      "legal_name": "",
                      "lei": "",
                      "compliance_email": "",
                      "is_discoverable": true,
                      "counterparty_screening_enabled": false,
                      "sunrise_policy": "",
                      "sunrise_jurisdictions": [
                        "CO",
                        "KH",
                        "VN"
                      ],
                      "non_responsive_policy": "",
                      "travel_address": "",
                      "disabled_networks": [],
                      "networks": {
                        "gtr": {
                          "rail": "GTR",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "trust": {
                          "rail": "TRUST",
                          "mode": "unavailable",
                          "state": "unavailable",
                          "reason": "own_membership_only",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "verifyvasp": {
                          "rail": "VERIFYVASP",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "sygna": {
                          "rail": "SYGNA",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        }
                      },
                      "didit_network": {
                        "listed": false,
                        "missing": [
                          "travel_rule_off",
                          "legal_name_missing",
                          "compliance_email_missing"
                        ],
                        "compliance_email_confirmed": false
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Travel Rule सेटिंग्स अपडेट करें",
        "description": "एप्लिकेशन की Travel Rule सेटिंग्स और VASP प्रोफ़ाइल को अपसर्ट करें। आंशिक अपडेट — केवल वही फ़ील्ड भेजें जिन्हें आप बदलना चाहते हैं। `is_enabled: true` सेट करने के लिए एक गैर-रिक्त `legal_name` की आवश्यकता होती है (पहले से संग्रहीत या उसी अनुरोध में शामिल), अन्यथा 400 लौटाता है।",
        "operationId": "updateTravelRuleSettings",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "update_settings",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleSettingsUpdate"
              },
              "example": {
                "is_enabled": true,
                "legal_name": "Origin CASP SL",
                "jurisdiction": "EU",
                "name_matching_strictness": "DEFAULT",
                "confirmation_timeout_hours": 48,
                "timeout_outcome": "HOLD",
                "is_discoverable": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PUT https://verification.didit.me/v3/travel-rule/settings/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"is_enabled\": true, \"legal_name\": \"Origin CASP SL\", \"jurisdiction\": \"EU\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.update_settings(\n    is_enabled=True,\n    legal_name=\"Origin CASP SL\",\n    jurisdiction=\"EU\",\n    name_matching_strictness=\"DEFAULT\",\n    confirmation_timeout_hours=48,\n    timeout_outcome=\"HOLD\",\n    is_discoverable=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.updateSettings({\n  is_enabled: true,\n  legal_name: \"Origin CASP SL\",\n  jurisdiction: \"EU\",\n  name_matching_strictness: \"DEFAULT\",\n  confirmation_timeout_hours: 48,\n  timeout_outcome: \"HOLD\",\n  is_discoverable: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.UpdateSettings(ctx, didit.TravelRuleSettingsUpdate{\n\tIsEnabled:                didit.Bool(true),\n\tLegalName:                didit.String(\"Origin CASP SL\"),\n\tJurisdiction:             didit.String(\"EU\"),\n\tNameMatchingStrictness:   didit.Some(didit.TravelRuleSettingsUpdateNameMatchingStrictness(\"DEFAULT\")),\n\tConfirmationTimeoutHours: didit.Int(48),\n\tTimeoutOutcome:           didit.Some(didit.TravelRuleSettingsUpdateTimeoutOutcome(\"HOLD\")),\n\tIsDiscoverable:           didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleSettingsUpdate;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().updateSettings(TravelRuleSettingsUpdate.builder()\n        .isEnabled(true)\n        .legalName(\"Origin CASP SL\")\n        .jurisdiction(\"EU\")\n        .nameMatchingStrictness(TravelRuleSettingsUpdate.NameMatchingStrictness.of(\"DEFAULT\"))\n        .confirmationTimeoutHours(48L)\n        .timeoutOutcome(TravelRuleSettingsUpdate.TimeoutOutcome.of(\"HOLD\"))\n        .isDiscoverable(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->updateSettings([\n    'is_enabled' => true,\n    'legal_name' => 'Origin CASP SL',\n    'jurisdiction' => 'EU',\n    'name_matching_strictness' => 'DEFAULT',\n    'confirmation_timeout_hours' => 48,\n    'timeout_outcome' => 'HOLD',\n    'is_discoverable' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.update_settings(\n  is_enabled: true,\n  legal_name: \"Origin CASP SL\",\n  jurisdiction: \"EU\",\n  name_matching_strictness: \"DEFAULT\",\n  confirmation_timeout_hours: 48,\n  timeout_outcome: \"HOLD\",\n  is_discoverable: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.UpdateSettingsAsync(new TravelRuleSettingsUpdate\n{\n    IsEnabled = true,\n    LegalName = \"Origin CASP SL\",\n    Jurisdiction = \"EU\",\n    NameMatchingStrictness = new TravelRuleSettingsUpdateNameMatchingStrictness(\"DEFAULT\"),\n    ConfirmationTimeoutHours = 48,\n    TimeoutOutcome = new TravelRuleSettingsUpdateTimeoutOutcome(\"HOLD\"),\n    IsDiscoverable = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट की गई सेटिंग्स और प्रोफ़ाइल, GET के समान स्वरूप में।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleSettingsDetail"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि, उदाहरण के लिए बिना legal_name के सक्षम करना, HOLD, REJECT, PROCEED या रिक्त के अलावा sunrise_policy या non_responsive_policy, `matching_rules` में कोई अज्ञात फ़ील्ड, या `data_sharing_fields` का ऐसा विकल्प जो आपके क्षेत्राधिकार के नियमों के प्रेषक दायित्वों को पूरा नहीं कर सकता (त्रुटियां `data_sharing_fields` के तहत एंटिटी प्रकार के अनुसार व्यवस्थित होती हैं)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "legal_name": [
                    "legal_name is required to enable travel rule."
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/settings/compliance-email/confirmation/": {
      "post": {
        "summary": "अनुपालन ईमेल पुष्टि भेजें",
        "description": "आपकी VASP प्रोफ़ाइल के compliance_email पर एक सिंगल-यूज़ कन्फ़र्मेशन लिंक ईमेल करता है। लिंक को खोलने और उसके कन्फ़र्मेशन बटन को दबाने से पते की पुष्टि होती है, जो Didit नेटवर्क द्वारा आपकी प्रोफ़ाइल को सूचीबद्ध करने से पहले आवश्यक है। एक नया अनुरोध पिछले लिंक को बदल देता है; अनुपालन ईमेल बदलने पर लिंक काम करना बंद कर देता है। प्रति पते पर प्रति मिनट एक ईमेल।",
        "operationId": "sendTravelRuleComplianceEmailConfirmation",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "send_compliance_email_confirmation",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/settings/compliance-email/confirmation/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.send_compliance_email_confirmation()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.sendComplianceEmailConfirmation();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.SendComplianceEmailConfirmation(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().sendComplianceEmailConfirmation();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->sendComplianceEmailConfirmation();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.send_compliance_email_confirmation\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.SendComplianceEmailConfirmationAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "202": {
            "description": "पुष्टि ईमेल भेज दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "sent_to": {
                      "type": "string",
                      "format": "email"
                    }
                  }
                },
                "example": {
                  "sent_to": "compliance@your-vasp.example"
                }
              }
            }
          },
          "400": {
            "description": "कोई अनुपालन ईमेल सेट नहीं है, या यह पहले से ही कन्फ़र्म है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "No compliance email": {
                    "value": {
                      "compliance_email": [
                        "Set a compliance email before confirming it."
                      ]
                    }
                  },
                  "Already confirmed": {
                    "value": {
                      "compliance_email": [
                        "This compliance email is already confirmed."
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "एक मिनट से भी कम समय पहले इस पते पर एक पुष्टिकरण भेजा गया था।"
          },
          "503": {
            "description": "ईमेल नहीं भेजा जा सका। कुछ भी नहीं बदला; कुछ ही पलों में पुनः प्रयास करें।"
          }
        }
      }
    },
    "/v3/travel-rule/wallet-addresses/": {
      "get": {
        "summary": "वॉलेट पता पुस्तिका प्रविष्टियाँ सूचीबद्ध करें",
        "description": "आपके एप्लिकेशन की Travel Rule वॉलेट पता पुस्तिका की पेजिनेटेड सूची, नवीनतम पहले।",
        "operationId": "listTravelRuleWalletAddresses",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_addresses",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/wallet-addresses/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.wallet_addresses.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.walletAddresses.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.WalletAddresses.ListAutoPaging(ctx, didit.TravelRuleWalletAddressesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().walletAddresses().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->walletAddresses->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.wallet_addresses.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.WalletAddresses.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड वॉलेट पता पुस्तिका प्रविष्टियां।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WalletAddressEntry"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "वॉलेट का पता पंजीकृत करें",
        "description": "अपनी Travel Rule वॉलेट पता पुस्तिका में एक प्रविष्टि जोड़ें ताकि इनबाउंड INTERNAL-rail ट्रांसफ़र इसके आधार पर हल किए जा सकें।",
        "operationId": "createTravelRuleWalletAddress",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_addresses",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletAddressEntryCreate"
              },
              "example": {
                "address": "0xBeneficiaryWallet01",
                "chain": "ETH",
                "holder_name": "Ana Diaz",
                "holder_vendor_data": "user-042",
                "self_declared": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"address\": \"0xBeneficiaryWallet01\", \"chain\": \"ETH\", \"holder_name\": \"Ana Diaz\", \"self_declared\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.wallet_addresses.create(\n    address=\"0xBeneficiaryWallet01\",\n    chain=\"ETH\",\n    holder_vendor_data=\"user-042\",\n    holder_name=\"Ana Diaz\",\n    self_declared=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.walletAddresses.create({\n  address: \"0xBeneficiaryWallet01\",\n  chain: \"ETH\",\n  holder_vendor_data: \"user-042\",\n  holder_name: \"Ana Diaz\",\n  self_declared: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.WalletAddresses.Create(ctx, didit.WalletAddressEntryCreate{\n\tAddress:          \"0xBeneficiaryWallet01\",\n\tChain:            didit.String(\"ETH\"),\n\tHolderVendorData: didit.String(\"user-042\"),\n\tHolderName:       didit.String(\"Ana Diaz\"),\n\tSelfDeclared:     didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.WalletAddressEntryCreate;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().walletAddresses().create(WalletAddressEntryCreate.builder()\n        .address(\"0xBeneficiaryWallet01\")\n        .chain(\"ETH\")\n        .holderVendorData(\"user-042\")\n        .holderName(\"Ana Diaz\")\n        .selfDeclared(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->walletAddresses->create([\n    'address' => '0xBeneficiaryWallet01',\n    'chain' => 'ETH',\n    'holder_vendor_data' => 'user-042',\n    'holder_name' => 'Ana Diaz',\n    'self_declared' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.wallet_addresses.create(\n  address: \"0xBeneficiaryWallet01\",\n  chain: \"ETH\",\n  holder_vendor_data: \"user-042\",\n  holder_name: \"Ana Diaz\",\n  self_declared: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.WalletAddresses.CreateAsync(new WalletAddressEntryCreate\n{\n    Address = \"0xBeneficiaryWallet01\",\n    Chain = \"ETH\",\n    HolderVendorData = \"user-042\",\n    HolderName = \"Ana Diaz\",\n    SelfDeclared = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "बनाई गई प्रविष्टि।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletAddressEntry"
                }
              }
            }
          },
          "400": {
            "description": "इस एप्लिकेशन के लिए डुप्लिकेट वॉलेट (पता, चेन और मेमो), एक मेमो या X-address जिसे चेन नहीं ले जा सकती, अनुपलब्ध `address`, एक अमान्य `travel_address`, जब `allow_self_declaration` बंद हो तब `self_declared: true`, या जब `ownership_validation_mode` `FULL` हो तब `self_declared: true`।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "examples": {
                  "Duplicate entry": {
                    "value": {
                      "address": [
                        "A wallet address entry with this address and chain already exists."
                      ]
                    }
                  },
                  "Invalid travel address": {
                    "value": {
                      "travel_address": [
                        "Invalid travel address."
                      ]
                    }
                  },
                  "Self-declaration disabled": {
                    "value": {
                      "self_declared": [
                        "Self-declared ownership is disabled for this application."
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/wallet-addresses/{entry_uuid}/": {
      "patch": {
        "summary": "वॉलेट पते के धारक का मेटाडेटा अपडेट करें",
        "description": "holder_name, holder_vendor_data, entity_type, और travel_address का आंशिक अपडेट। travel_address सेट करने से प्रविष्टि में TRP रूटिंग पता जुड़ जाता है; अमान्य मानों को 400 के साथ अस्वीकार कर दिया जाता है। रिस्पॉन्स में केवल ये चार फ़ील्ड लौटाए जाते हैं।",
        "operationId": "updateTravelRuleWalletAddress",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_addresses",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "entry_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WalletAddressEntryUpdate"
              },
              "example": {
                "holder_name": "Ana Updated",
                "travel_address": "ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH https://verification.didit.me/v3/travel-rule/wallet-addresses/{entry_uuid}/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"holder_name\": \"Ana Updated\", \"travel_address\": \"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.wallet_addresses.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    holder_name=\"Ana Updated\",\n    travel_address=\"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.walletAddresses.update(\"11111111-2222-3333-4444-555555555555\", {\n  holder_name: \"Ana Updated\",\n  travel_address: \"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.WalletAddresses.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WalletAddressEntryUpdateParam{\n\tHolderName:    didit.String(\"Ana Updated\"),\n\tTravelAddress: didit.String(\"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.WalletAddressEntryUpdate;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().walletAddresses().update(\"11111111-2222-3333-4444-555555555555\", WalletAddressEntryUpdate.builder()\n        .holderName(\"Ana Updated\")\n        .travelAddress(\"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->walletAddresses->update('11111111-2222-3333-4444-555555555555', [\n    'holder_name' => 'Ana Updated',\n    'travel_address' => 'ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.wallet_addresses.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  holder_name: \"Ana Updated\",\n  travel_address: \"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.WalletAddresses.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new WalletAddressEntryUpdate\n{\n    HolderName = \"Ana Updated\",\n    TravelAddress = \"ta2ih1MicegQ3JqiKz9xT89KsSuwaDJYw8DgzmeSEp1h9tduJcNDZ5SgKLEHeyGMcS1s2HgbM6undFrMQknhM5aTXw3G9KBzi16hx\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किए गए फ़ील्ड।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletAddressEntryUpdate"
                }
              }
            }
          },
          "400": {
            "description": "`travel_address` एक मान्य Travel Address नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid travel address": {
                    "value": {
                      "travel_address": [
                        "Invalid travel address."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात या हटाई गई प्रविष्टि।"
          }
        }
      },
      "delete": {
        "summary": "वॉलेट पता हटाएं",
        "description": "प्रविष्टि को उसके स्वामित्व प्रमाणों और उनके द्वारा संग्रहीत स्क्रीनशॉट के साथ हटाता है। यह नए स्थानांतरणों से तुरंत मेल खाना बंद कर देता है और पता फिर से पंजीकरण के लिए मुक्त हो जाता है। जिन स्थानांतरणों ने पहले ही वॉलेट का उपयोग किया है, वे इसका अपना रिकॉर्ड रखते हैं और वैसा ही पढ़ते हैं। हटाना अपरिवर्तनीय है।",
        "operationId": "deleteTravelRuleWalletAddress",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_addresses",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "entry_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE https://verification.didit.me/v3/travel-rule/wallet-addresses/{entry_uuid}/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.travel_rule.wallet_addresses.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.travelRule.walletAddresses.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.TravelRule.WalletAddresses.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.travelRule().walletAddresses().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->travelRule->walletAddresses->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.wallet_addresses.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.TravelRule.WalletAddresses.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ],
        "responses": {
          "204": {
            "description": "हटा दिया गया।"
          },
          "404": {
            "description": "अज्ञात या पहले से हटाई गई प्रविष्टि।"
          },
          "503": {
            "description": "`wallet_address_deletion_incomplete`: एक संग्रहीत फ़ाइल हटाई नहीं जा सकी, इसलिए विलोपन समाप्त होने से पहले ही रुक गया। पता-पुस्तिका प्रविष्टि अभी भी मौजूद है; इसे पूरा करने के लिए उसी अनुरोध का पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "example": {
                  "detail": "A stored file could not be deleted, so the deletion stopped before it finished. Try again.",
                  "code": "wallet_address_deletion_incomplete"
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/vasps/": {
      "get": {
        "summary": "VASP डायरेक्टरी खोजें",
        "description": "VASP डायरेक्टरी की पेजिनेटेड, नाम के अनुसार क्रमबद्ध खोज: साझा डायरेक्टरी प्रविष्टियाँ, जिन्हें Didit ESMA अंतरिम MiCA रजिस्टर, सार्वजनिक TRISA डायरेक्टरी, वैश्विक LEI रजिस्टर और अपने स्वयं के क्यूरेशन, साथ ही Didit नेटवर्क के सदस्यों से बनाता है। प्रत्येक पंक्ति में वे रूट होते हैं जो आपके एप्लिकेशन के पास आज इसके लिए उपलब्ध हैं। आपके अपने एप्लिकेशन की प्रोफ़ाइल कभी भी सूचीबद्ध नहीं होती है। पंक्तियों में साझा उचित परिश्रम (ड्यू डिलिजेंस) मूल्यांकन और आपके एप्लिकेशन का अपना निर्णय, निकाय स्क्रीनिंग और प्रश्नावलियाँ भी शामिल होती हैं।",
        "operationId": "listTravelRuleVasps",
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 255
            },
            "description": "एक नाम या उपनाम का अंश (केस-असंवेदनशील), एक सटीक LEI, या एक डोमेन (example.com या उस पर कोई URL)। Didit नेटवर्क सदस्य अपने कानूनी नाम, LEI या अपने अनुपालन ईमेल के डोमेन पर मेल खाते हैं।"
          },
          {
            "name": "network",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "GTR",
                "TRUST",
                "VERIFYVASP",
                "SYGNA",
                "TRISA"
              ]
            },
            "description": "केवल वही डायरेक्टरी प्रविष्टियाँ जो किसी नेटवर्क की सदस्य डायरेक्टरी में वर्तमान में सूचीबद्ध हैं।"
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166 alpha-2 या alpha-3 देश कोड। किसी अन्य मान के लिए 400।"
          },
          {
            "name": "reachable",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "true: केवल वे VASP जिन तक आपके एप्लिकेशन के पास उपलब्ध रूट है (Didit नेटवर्क के सदस्य शामिल हैं)। false: केवल वे डायरेक्टरी प्रविष्टियाँ जिन तक यह आज नहीं पहुँच सकता।"
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "directory",
                "didit"
              ]
            },
            "description": "केवल डायरेक्टरी प्रविष्टियाँ, या केवल Didit नेटवर्क के सदस्य।"
          },
          {
            "name": "risk",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "LOW",
                "MEDIUM",
                "HIGH"
              ]
            },
            "description": "केवल वही डायरेक्टरी प्रविष्टियाँ जिनका risk_level यह बैंड है। Didit नेटवर्क के सदस्य, जिन्हें स्कोर नहीं किया जाता है, कभी मेल नहीं खाते।"
          },
          {
            "name": "responsiveness",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "RESPONSIVE",
                "UNRESPONSIVE",
                "UNKNOWN"
              ]
            },
            "description": "केवल वही डायरेक्टरी प्रविष्टियाँ जिनका responsiveness.status यह मान है। Didit नेटवर्क के सदस्य कभी मेल नहीं खाते।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/travel-rule/vasps/?search=counterparty&reachable=true' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.list_vasps():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.listVasps()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.ListVASPsAutoPaging(ctx, didit.TravelRuleListVASPsParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().listVasps()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->listVasps() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.list_vasps.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.ListVaspsAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड, नाम के अनुसार क्रमबद्ध VASP डायरेक्टरी परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VaspDirectoryEntry"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "फ़िल्टर अमान्य है: अनुरोध का मुख्य भाग प्रत्येक फ़ील्ड का नाम बताता है, उदाहरण के लिए कोई अज्ञात नेटवर्क, देश कोड, जोखिम बैंड या प्रतिक्रियाशीलता स्थिति।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "jurisdiction": [
                    "Use an ISO 3166 alpha-2 or alpha-3 country code."
                  ],
                  "network": [
                    "\"SWIFT\" is not a valid choice."
                  ]
                }
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "list_vasps",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/travel-rule/vasps/{vasp_id}/": {
      "get": {
        "summary": "VASP डायरेक्टरी प्रविष्टि प्राप्त करें",
        "description": "खोज द्वारा लौटाए गए id द्वारा एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य, समान फ़ील्ड और आपके एप्लिकेशन के पास इसके लिए मौजूद रूट के साथ।",
        "operationId": "getTravelRuleVasp",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_vasp",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.retrieve_vasp(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.retrieveVasp(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RetrieveVASP(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().retrieveVasp(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->retrieveVasp('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.retrieve_vasp(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.RetrieveVaspAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "एंट्री।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VaspDirectoryEntry"
                }
              }
            }
          },
          "404": {
            "description": "किसी भी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry has this id."
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/vasps/{vasp_id}/decision/": {
      "get": {
        "summary": "VASP पर अपना निर्णय प्राप्त करें",
        "description": "किसी प्रतिपक्ष (एक डायरेक्टरी प्रविष्टि या एक Didit नेटवर्क सदस्य) पर आपकी एप्लिकेशन का निर्णय: स्वीकृत, प्रतिबंधित या ब्लॉक किया गया। बिना किसी स्वयं के निर्णय वाले ब्रांड की इकाई ब्रांड के निर्णय का पालन करती है, जिसका नाम inherited_from में दिया गया है। आपकी एप्लिकेशन के लिए निजी।",
        "operationId": "getTravelRuleVaspDecision",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_vasp_decision",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.retrieve_vasp_decision(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.retrieveVaspDecision(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RetrieveVASPDecision(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().retrieveVaspDecision(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->retrieveVaspDecision('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.retrieve_vasp_decision(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.RetrieveVaspDecisionAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "लागू होने वाला निर्णय, या null।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyDecisionResponse"
                },
                "examples": {
                  "Own decision": {
                    "value": {
                      "decision": {
                        "decision": "APPROVED",
                        "reason": "Licensed in DE, questionnaire reviewed",
                        "decided_by": "",
                        "updated_at": "2026-10-14T10:05:00Z",
                        "inherited_from": null
                      }
                    }
                  },
                  "Inherited from the brand": {
                    "value": {
                      "decision": {
                        "decision": "BLOCKED",
                        "reason": "Group refused after review",
                        "decided_by": "",
                        "updated_at": "2026-10-14T10:05:00Z",
                        "inherited_from": {
                          "id": "5e4d3c2b-1a0f-4e9d-8c7b-6a5f4e3d2c1b",
                          "name": "Example Group"
                        }
                      }
                    }
                  },
                  "No decision": {
                    "value": {
                      "decision": null
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "किसी VASP पर अपना निर्णय सेट करें",
        "description": "किसी प्रतिपक्ष के बारे में अपने एप्लिकेशन का निर्णय निर्धारित करें या बदलें: APPROVED, RESTRICTED या BLOCKED, एक वैकल्पिक कारण के साथ। यह साझा डायरेक्टरी प्रविष्टि को कभी नहीं बदलता है और केवल आपके लेन-देन नियमों (counterparty_dd_status) के माध्यम से कार्य करता है। किसी ब्रांड पर लिया गया निर्णय उसकी प्रत्येक ऐसी इकाई को भी कवर करता है जिसका अपना कोई निर्णय नहीं है।",
        "operationId": "updateTravelRuleVaspDecision",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "update_vasp_decision",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleCounterpartyDecisionRequest"
              },
              "example": {
                "decision": "BLOCKED",
                "reason": "Unlicensed in its home jurisdiction"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PUT https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"decision\": \"BLOCKED\", \"reason\": \"Unlicensed in its home jurisdiction\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.update_vasp_decision(\n    \"11111111-2222-3333-4444-555555555555\",\n    decision=\"BLOCKED\",\n    reason=\"Unlicensed in its home jurisdiction\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.updateVaspDecision(\"11111111-2222-3333-4444-555555555555\", {\n  decision: \"BLOCKED\",\n  reason: \"Unlicensed in its home jurisdiction\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.UpdateVASPDecision(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleCounterpartyDecisionRequest{\n\tDecision: \"BLOCKED\",\n\tReason:   didit.String(\"Unlicensed in its home jurisdiction\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleCounterpartyDecisionRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().updateVaspDecision(\"11111111-2222-3333-4444-555555555555\", TravelRuleCounterpartyDecisionRequest.builder()\n        .decision(TravelRuleCounterpartyDecisionRequest.Decision.of(\"BLOCKED\"))\n        .reason(\"Unlicensed in its home jurisdiction\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->updateVaspDecision('11111111-2222-3333-4444-555555555555', [\n    'decision' => 'BLOCKED',\n    'reason' => 'Unlicensed in its home jurisdiction',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.update_vasp_decision(\n  \"11111111-2222-3333-4444-555555555555\",\n  decision: \"BLOCKED\",\n  reason: \"Unlicensed in its home jurisdiction\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.UpdateVaspDecisionAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleCounterpartyDecisionRequest\n{\n    Decision = \"BLOCKED\",\n    Reason = \"Unlicensed in its home jurisdiction\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "निर्णय जैसा कि अब लागू होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyDecisionResponse"
                },
                "example": {
                  "decision": {
                    "decision": "BLOCKED",
                    "reason": "Unlicensed in its home jurisdiction",
                    "decided_by": "",
                    "updated_at": "2026-10-14T10:05:00Z",
                    "inherited_from": null
                  }
                }
              }
            }
          },
          "400": {
            "description": "निर्णय गायब है या APPROVED, RESTRICTED या BLOCKED में से एक नहीं है, अथवा कारण 255 वर्णों से अधिक लंबा है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "decision": [
                    "\"MAYBE\" is not a valid choice."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          }
        }
      },
      "delete": {
        "summary": "VASP पर अपने निर्णय को हटाएँ",
        "description": "किसी प्रतिपक्ष पर अपने एप्लिकेशन के निर्णय को हटाएँ। रिस्पॉन्स वह निर्णय दिखाता है जो इसके बाद लागू होता है: null, या किसी ब्रांड की इकाई के लिए ब्रांड का निर्णय, जिसका वह इकाई फिर से पालन करती है।",
        "operationId": "clearTravelRuleVaspDecision",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "clear_vasp_decision",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/decision/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.clear_vasp_decision(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.clearVaspDecision(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.ClearVASPDecision(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().clearVaspDecision(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->clearVaspDecision('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.clear_vasp_decision(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.ClearVaspDecisionAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "निर्णय हटा दिया गया; बॉडी वह निर्णय दिखाती है जो अब लागू होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyDecisionResponse"
                },
                "example": {
                  "decision": null
                }
              }
            }
          },
          "404": {
            "description": "किसी भी प्रतिपक्ष की यह id नहीं है, या आपके एप्लिकेशन का इस पर अपना कोई निर्णय नहीं है (वह निर्णय जिसे यह केवल अपने ब्रांड से इनहेरिट करता है, उसे यहाँ साफ़ नहीं किया जा सकता: ब्रांड के निर्णय को साफ़ करें)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown id": {
                    "value": {
                      "detail": "No directory entry or Didit network member has this id."
                    }
                  },
                  "No decision of its own": {
                    "value": {
                      "detail": "This application has no decision of its own on this counterparty."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/vasps/{vasp_id}/screening/": {
      "get": {
        "summary": "VASP की इकाई स्क्रीनिंग प्राप्त करें",
        "description": "क्या आपके एप्लिकेशन के लिए प्रतिपक्ष स्क्रीनिंग चालू है, आपके संगठन के लिए एक स्क्रीनिंग की कीमत क्या है, परिणाम कब तक मान्य रहता है, और प्रतिपक्ष की आपकी नवीनतम प्रतिबंध और प्रतिकूल मीडिया स्क्रीनिंग क्या है। इसे पढ़ना निःशुल्क है।",
        "operationId": "getTravelRuleVaspScreening",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_vasp_screening",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/screening/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.retrieve_vasp_screening(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.retrieveVaspScreening(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RetrieveVASPScreening(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().retrieveVaspScreening(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->retrieveVaspScreening('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.retrieve_vasp_screening(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.RetrieveVaspScreeningAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "आपकी स्क्रीनिंग सेटिंग, इसकी कीमत और आपकी नवीनतम स्क्रीनिंग।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyScreeningStatus"
                },
                "example": {
                  "enabled": true,
                  "price": "0.20",
                  "fresh_days": 30,
                  "screening": {
                    "id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
                    "status": "Approved",
                    "total_hits": 0,
                    "score": null,
                    "screened_at": "2026-10-14T09:58:00Z",
                    "fresh": true,
                    "flagged": false
                  }
                }
              }
            }
          },
          "403": {
            "description": "आपके संगठन के अनुबंध में प्रतिपक्ष स्क्रीनिंग के लिए कोई दर कॉन्फ़िगर नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No contract rate is configured for this usage type."
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "किसी VASP की स्क्रीनिंग करें",
        "description": "अपने एप्लिकेशन के लिए प्रतिपक्ष निकाय को प्रतिबंधों और प्रतिकूल मीडिया के विरुद्ध स्क्रीन करें। ऑप्ट-इन: आपकी Travel Rule सेटिंग्स में counterparty_screening_enabled चालू होना चाहिए। प्रत्येक नई स्क्रीनिंग का बिल आपके संगठन की कंपनी AML स्क्रीनिंग की कीमत पर लिया जाता है; 30 दिनों से कम पुरानी स्क्रीनिंग इसके बजाय वापस कर दी जाती है (200, बिल नहीं किया गया), जब तक कि आप refresh: true न भेजें। प्रति एप्लिकेशन एक समय में एक प्रतिपक्ष की केवल एक स्क्रीनिंग चलती है। परिणाम आपके एप्लिकेशन के लिए निजी होता है। सैंडबॉक्स एप्लिकेशन को कभी स्क्रीन नहीं किया जाता है।",
        "operationId": "screenTravelRuleVasp",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "screen_vasp",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleCounterpartyScreeningRequest"
              },
              "example": {
                "refresh": false
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/screening/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"refresh\": false}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.screen_vasp(\n    \"11111111-2222-3333-4444-555555555555\",\n    refresh=False,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.screenVasp(\"11111111-2222-3333-4444-555555555555\", {\n  refresh: false,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.ScreenVASP(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleCounterpartyScreeningRequest{\n\tRefresh: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleCounterpartyScreeningRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().screenVasp(\"11111111-2222-3333-4444-555555555555\", TravelRuleCounterpartyScreeningRequest.builder()\n        .refresh(false)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->screenVasp('11111111-2222-3333-4444-555555555555', [\n    'refresh' => false,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.screen_vasp(\n  \"11111111-2222-3333-4444-555555555555\",\n  refresh: false\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.ScreenVaspAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleCounterpartyScreeningRequest\n{\n    Refresh = false,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "एक नई स्क्रीनिंग पहले से मौजूद थी और वही वापस की गई। कोई बिलिंग नहीं की गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyScreeningResult"
                },
                "example": {
                  "outcome": "reused",
                  "screening": {
                    "id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
                    "status": "Approved",
                    "total_hits": 0,
                    "score": null,
                    "screened_at": "2026-10-14T09:58:00Z",
                    "fresh": true,
                    "flagged": false
                  }
                }
              }
            }
          },
          "201": {
            "description": "एक नई स्क्रीनिंग चलाई गई और बिल की गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyScreeningResult"
                },
                "example": {
                  "outcome": "screened",
                  "screening": {
                    "id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
                    "status": "In Review",
                    "total_hits": 2,
                    "score": 85.0,
                    "screened_at": "2026-10-14T09:58:00Z",
                    "fresh": true,
                    "flagged": true
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है, या प्रतिपक्ष के पास स्क्रीन करने के लिए कोई नाम नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": [
                    "This counterparty has no name to screen."
                  ]
                }
              }
            }
          },
          "403": {
            "description": "आपके संगठन का बैलेंस स्क्रीनिंग को कवर नहीं कर सकता (कोड insufficient_credits; कुछ भी नहीं चला और कुछ भी बिल नहीं किया गया), या आपके अनुबंध में इसके लिए कोई दर कॉन्फ़िगर नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me",
                  "code": "insufficient_credits"
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          },
          "409": {
            "description": "कुछ भी नहीं चला और कोई बिलिंग नहीं की गई: आपके एप्लिकेशन के लिए प्रतिपक्ष स्क्रीनिंग बंद है, एप्लिकेशन सैंडबॉक्स वाला है, या इस प्रतिपक्ष की स्क्रीनिंग पहले से चल रही है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Screening off": {
                    "value": {
                      "detail": "Counterparty screening is turned off. Enable it in the Travel Rule settings first."
                    }
                  },
                  "Sandbox application": {
                    "value": {
                      "detail": "Counterparty screening does not run for sandbox applications."
                    }
                  },
                  "Already running": {
                    "value": {
                      "detail": "A screening of this counterparty is already running. Try again in a moment."
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "स्क्रीनिंग पूरी नहीं की जा सकी। कुछ भी बिल नहीं किया गया; कुछ क्षण बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "The screening provider did not answer. Try again in a moment."
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/vasps/{vasp_id}/questionnaires/": {
      "get": {
        "summary": "किसी VASP के साथ ड्यू डिलिजेंस प्रश्नावलियाँ सूचीबद्ध करें",
        "description": "वे सभी ड्यू-डिलिजेंस प्रश्नावलियाँ जो आपके एप्लिकेशन ने प्रतिपक्ष को भेजी हैं, सबसे नई पहले, अपनी स्थिति के साथ और उत्तर दिए जाने पर, उत्तरों के साथ। आपके एप्लिकेशन के लिए निजी।",
        "operationId": "listTravelRuleVaspQuestionnaires",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "list_vasp_questionnaires",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/questionnaires/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.list_vasp_questionnaires(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.listVaspQuestionnaires(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.ListVASPQuestionnaires(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().listVaspQuestionnaires(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->listVaspQuestionnaires('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.list_vasp_questionnaires(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.ListVaspQuestionnairesAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "इस प्रतिपक्ष के साथ आपकी प्रश्नावलियाँ।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyQuestionnaireList"
                },
                "example": {
                  "questionnaires": [
                    {
                      "id": "3f9e8d7c-6b5a-4c3d-9e2f-1a0b9c8d7e6f",
                      "status": "SENT",
                      "form_version": "1",
                      "sent_to": "travelrule@counterparty.example",
                      "sent_at": "2026-10-14T10:00:00Z",
                      "expires_at": "2026-11-13T10:00:00Z",
                      "answered_at": null,
                      "valid_until": null,
                      "current": false,
                      "answers": {}
                    },
                    {
                      "id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
                      "status": "ANSWERED",
                      "form_version": "1",
                      "sent_to": "travelrule@counterparty.example",
                      "sent_at": "2026-09-02T08:00:00Z",
                      "expires_at": "2026-10-02T08:00:00Z",
                      "answered_at": "2026-09-04T15:20:00Z",
                      "valid_until": "2027-09-04T15:20:00Z",
                      "current": true,
                      "answers": {
                        "legal_name": "Example Counterparty VASP, incorporated in the example jurisdiction.",
                        "licensing": "Crypto-asset service provider authorised under MiCA by its national regulator, licence active.",
                        "jurisdictions": "EU and EEA. We do not serve the United States.",
                        "aml_program": "Written AML/CFT policy, annual independent review, last completed in March 2026.",
                        "compliance_officer": "Head of Compliance, reachable at compliance@counterparty.example.",
                        "sanctions_screening": "Customers at onboarding and daily; counterparties on every transfer.",
                        "transaction_monitoring": "Rule-based monitoring with analyst review; suspicious activity reports filed with the FIU.",
                        "travel_rule": "TRP and email; we answer requests within one business day.",
                        "custody": "Segregated customer wallets held with a qualified custodian, insured.",
                        "ownership": "No shareholder holds 25 percent or more; parent company Example Holding Group.",
                        "record_keeping": "Five-year record-keeping for Travel Rule and transaction data, as our regulator requires.",
                        "data_protection": "Encrypted at rest and in transit, stored in the EU."
                      }
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "किसी VASP को उचित परिश्रम प्रश्नावली भेजें",
        "description": "प्रतिपक्ष के रिकॉर्ड में मौजूद अनुपालन पते पर एकल-उपयोग उत्तर लिंक के साथ Didit की मानक ड्यू-डिलिजेंस प्रश्नावली ईमेल करें। प्रतिपक्ष के पास प्रत्येक प्रश्न का उत्तर देने के लिए 30 दिन का समय होता है; उत्तर 365 दिनों तक वैध रहते हैं। नया भेजा गया अनुरोध उसी प्रतिपक्ष को भेजी गई आपकी पिछली अनुत्तरित प्रश्नावली को प्रतिस्थापित कर देता है, जिसका लिंक काम करना बंद कर देता है। प्रति पता प्रति मिनट एक ईमेल।",
        "operationId": "sendTravelRuleVaspQuestionnaire",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "send_vasp_questionnaire",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "vasp_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ की एक पंक्ति की id: एक डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleCounterpartyQuestionnaireRequest"
              },
              "example": {
                "sent_to": "travelrule@counterparty.example"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/vasps/{vasp_id}/questionnaires/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"sent_to\": \"travelrule@counterparty.example\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.send_vasp_questionnaire(\n    \"11111111-2222-3333-4444-555555555555\",\n    sent_to=\"travelrule@counterparty.example\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.sendVaspQuestionnaire(\"11111111-2222-3333-4444-555555555555\", {\n  sent_to: \"travelrule@counterparty.example\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.SendVASPQuestionnaire(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleCounterpartyQuestionnaireRequest{\n\tSentTo: didit.String(\"travelrule@counterparty.example\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleCounterpartyQuestionnaireRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().sendVaspQuestionnaire(\"11111111-2222-3333-4444-555555555555\", TravelRuleCounterpartyQuestionnaireRequest.builder()\n        .sentTo(\"travelrule@counterparty.example\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->sendVaspQuestionnaire('11111111-2222-3333-4444-555555555555', [\n    'sent_to' => 'travelrule@counterparty.example',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.send_vasp_questionnaire(\n  \"11111111-2222-3333-4444-555555555555\",\n  sent_to: \"travelrule@counterparty.example\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.SendVaspQuestionnaireAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleCounterpartyQuestionnaireRequest\n{\n    SentTo = \"travelrule@counterparty.example\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "202": {
            "description": "प्रश्नावली ईमेल कर दी गई थी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyQuestionnaire"
                },
                "example": {
                  "id": "3f9e8d7c-6b5a-4c3d-9e2f-1a0b9c8d7e6f",
                  "status": "SENT",
                  "form_version": "1",
                  "sent_to": "travelrule@counterparty.example",
                  "sent_at": "2026-10-14T10:00:00Z",
                  "expires_at": "2026-11-13T10:00:00Z",
                  "answered_at": null,
                  "valid_until": null,
                  "current": false,
                  "answers": {}
                }
              }
            }
          },
          "400": {
            "description": "sent_to एक मान्य ईमेल पता नहीं है या प्रतिपक्ष के लिए रिकॉर्ड में मौजूद अनुपालन पता नहीं है, या प्रतिपक्ष का रिकॉर्ड में कोई अनुपालन पता नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not on record": {
                    "value": {
                      "sent_to": [
                        "Send the questionnaire to a compliance address on record for this counterparty."
                      ]
                    }
                  },
                  "No address": {
                    "value": {
                      "sent_to": [
                        "No compliance address is on record for this counterparty. Add a contact for it first."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि या सूचीबद्ध Didit नेटवर्क सदस्य की यह id नहीं है। आपकी अपनी VASP प्रोफ़ाइल कभी भी आपकी प्रतिपक्ष नहीं होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No directory entry or Didit network member has this id."
                }
              }
            }
          },
          "429": {
            "description": "एक मिनट से भी कम समय पहले इस पते पर एक प्रश्नावली भेजी गई थी।"
          },
          "503": {
            "description": "ईमेल नहीं भेजा जा सका और कोई प्रश्नावली नहीं बनाई गई। कुछ ही पलों में पुनः प्रयास करें।"
          }
        }
      }
    },
    "/v3/transactions/{transaction_id}/travel-rule/": {
      "patch": {
        "summary": "Travel Rule ट्रांसफ़र के प्रेषक वॉलेट को समाप्त करें, रद्द करें, पुनः भेजें या अपडेट करें",
        "description": "ऑन-चेन हैश की रिपोर्ट करने और आउटबाउंड COMPLETED ट्रांसफ़र को FINISHED में ले जाने के लिए `payment_txn_id` प्रदान करें (इसका INTERNAL-रेल समकक्ष भी FINISHED में चला जाता है), गैर-टर्मिनल ट्रांसफ़र को रद्द करने के लिए `{\"action\": \"cancel\"}` प्रदान करें, या COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, या NOT_ENOUGH_COUNTERPARTY_DATA में अटके आउटबाउंड ट्रांसफ़र को फिर से रूट करने के लिए `{\"action\": \"resend\"}` प्रदान करें (पहले प्रतिपक्ष डेटा में सुधार करें, उदाहरण के लिए गंतव्य वॉलेट प्रविष्टि में travel_address जोड़ें)। resend केवल आउटबाउंड ट्रांसफ़र पर लागू होता है। `{\"action\": \"update_compliance_email\", \"compliance_email\": \"desk@example.com\"}` उन तीन स्थितियों में से किसी एक में आउटबाउंड ट्रांसफ़र के अनुपालन ईमेल को बदल देता है, जो `reason: email_undeliverable` का समाधान है: स्थिति नहीं बदलती है, और अगला `resend` उस पते पर अनुरोध भेजता है। पुनः भेजना कतार में रखा जाता है, अनुरोध के भीतर नहीं चलाया जाता है: रिस्पॉन्स ट्रांसफ़र को वापस AWAITING_COUNTERPARTY में `resend queued` टाइमलाइन प्रविष्टि और कतारबद्ध `delivery` के साथ दिखाता है, और यह किस गंतव्य पर गया, इसकी जानकारी `travel_rule.status.updated` webhook के रूप में प्राप्त होती है। जब ट्रांसफ़र GTR, VerifyVASP या Sygna Bridge पर जाता है, तो नेटवर्क को रिस्पॉन्स के बाद, पुनः प्रयासों के साथ, ऑन-चेन हैश या रद्दीकरण की जानकारी मिलती है; `delivery` दिखाता है कि वह संदेश किस स्थिति में है। `{\"action\": \"update_originator_wallet\", \"wallet_address\": \"...\"}` उस वॉलेट को रिकॉर्ड करता है जिससे आउटबाउंड ट्रांसफ़र पर वास्तव में धनराशि निकली थी, उदाहरण के लिए वह पता जिससे आपके द्वारा घोषित मुख्य वॉलेट के बजाय UTXO निकासी प्रसारित की गई थी। यह केवल रिकॉर्ड को बदलता है: प्रतिपक्ष को दोबारा कुछ नहीं भेजा जाता है और स्थिति वही रहती है। प्रेषक `source: updated` के साथ `chain_details.originator` बन जाता है, पिछले और नए वॉलेट के साथ परिवर्तन को `timeline` में जोड़ा जाता है, और ट्रांसफ़र के INTERNAL-रेल समकक्ष को उसी तरह अपडेट किया जाता है। `{\"action\": \"beneficiary_vasp\", \"beneficiary_vasp\": \"<directory VASP id>\"}` COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE या NOT_ENOUGH_COUNTERPARTY_DATA में किसी आउटबाउंड ट्रांसफ़र पर खोज न होने पर प्रतिपक्ष का नाम स्वयं तय करता है: ट्रांसफ़र को उस VASP पर रूट किया जाता है और फिर से भेजा जाता है।",
        "operationId": "patchTravelRuleTransfer",
        "x-didit-sdk": {
          "resource": "transactions.travel_rule",
          "method": "update_transfer",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "ट्रांसफ़र का स्वामित्व रखने वाला Didit-स्थायी लेन-देन UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleTransferPatchRequest"
              },
              "examples": {
                "Finish": {
                  "value": {
                    "payment_txn_id": "0xchainhash"
                  }
                },
                "Cancel": {
                  "value": {
                    "action": "cancel"
                  }
                },
                "Resend": {
                  "value": {
                    "action": "resend"
                  }
                },
                "Update compliance email": {
                  "value": {
                    "action": "update_compliance_email",
                    "compliance_email": "desk@example.com"
                  }
                },
                "Update originator wallet": {
                  "value": {
                    "action": "update_originator_wallet",
                    "wallet_address": "bc1qOriginatorInputAddress01"
                  }
                },
                "Name the counterparty": {
                  "value": {
                    "action": "beneficiary_vasp",
                    "beneficiary_vasp": "9f1c2b34-5d6e-4f70-8a91-b2c3d4e5f607"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"payment_txn_id\": \"0xchainhash\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.travel_rule.update_transfer(\n    \"11111111-2222-3333-4444-555555555555\",\n    payment_txn_id=\"0xchainhash\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.travelRule.updateTransfer(\"11111111-2222-3333-4444-555555555555\", {\n  payment_txn_id: \"0xchainhash\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.TravelRule.UpdateTransfer(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleTransferPatchRequest{\n\tPaymentTxnID: didit.String(\"0xchainhash\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleTransferPatchRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().travelRule().updateTransfer(\"11111111-2222-3333-4444-555555555555\", TravelRuleTransferPatchRequest.builder()\n        .paymentTxnId(\"0xchainhash\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->travelRule->updateTransfer('11111111-2222-3333-4444-555555555555', [\n    'payment_txn_id' => '0xchainhash',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.travel_rule.update_transfer(\n  \"11111111-2222-3333-4444-555555555555\",\n  payment_txn_id: \"0xchainhash\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.TravelRule.UpdateTransferAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleTransferPatchRequest\n{\n    PaymentTxnId = \"0xchainhash\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया ट्रांसफ़र। `update_compliance_email` के बाद इसकी स्थिति अपरिवर्तित रहती है और यह अगले `resend` तक `reason: email_undeliverable` बनाए रखता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleTransferDetail"
                }
              }
            }
          },
          "400": {
            "description": "न तो payment_txn_id और न ही कोई समर्थित कार्रवाई प्रदान की गई थी, `update_compliance_email` पर `compliance_email` गायब है या कोई ईमेल पता नहीं है, या, `update_originator_wallet` के लिए, कोई wallet_address नहीं है, ऐसा वॉलेट या मेमो जिसे ट्रांसफर की चेन नहीं ले जा सकती, या ऐसा वॉलेट जो ट्रांसफर के UTXO इनपुट में से एक नहीं है, या `beneficiary_vasp` गायब है या एक मान्य डायरेक्टरी VASP id नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "No action": {
                    "value": {
                      "detail": [
                        "Provide payment_txn_id, action=cancel, action=resend, action=beneficiary_vasp, action=update_originator_wallet or action=update_compliance_email."
                      ]
                    }
                  },
                  "Invalid compliance email": {
                    "value": {
                      "compliance_email": [
                        "Enter a valid email address."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात लेन-देन, लेन-देन में कोई Travel Rule ट्रांसफ़र नहीं है, या (कार्रवाई `beneficiary_vasp`) किसी भी डायरेक्टरी प्रविष्टि में वह id नहीं है।"
          },
          "409": {
            "description": "ट्रांसफर ऐसी स्थिति में नहीं है जो इस कार्रवाई की अनुमति देता हो (उदा. समाप्त करने के लिए COMPLETED/outbound नहीं, रद्द करने के लिए पहले से ही अंतिम स्थिति में, या पुनः भेजने के लिए पुनः भेजने योग्य स्थिति में आउटबाउंड ट्रांसफर नहीं)। `update_compliance_email` इनबाउंड ट्रांसफर के लिए, और COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE और NOT_ENOUGH_COUNTERPARTY_DATA के बाहर के आउटबाउंड ट्रांसफर के लिए `409` उत्तर देता है। `update_originator_wallet` इनबाउंड, रद्द या समय-सीमा समाप्त ट्रांसफर के लिए `409` उत्तर देता है। `beneficiary_vasp` तब तक `409` उत्तर देता है जब तक कि ट्रांसफर आउटबाउंड न हो और COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE या NOT_ENOUGH_COUNTERPARTY_DATA में न हो।",
            "content": {
              "application/json": {
                "examples": {
                  "Cancel from a terminal status": {
                    "value": {
                      "detail": "Transfer is already in a terminal state."
                    }
                  },
                  "Resend not allowed": {
                    "value": {
                      "detail": "Transfer cannot be resent from its current state."
                    }
                  },
                  "Finish not allowed": {
                    "value": {
                      "detail": "Transfer must be an outbound transfer in COMPLETED status to finish."
                    }
                  },
                  "Compliance email cannot change": {
                    "value": {
                      "detail": "The compliance email of this transfer cannot change from its current state."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/transactions/{transaction_id}/travel-rule/ownership/": {
      "post": {
        "summary": "वॉलेट स्वामित्व की पुष्टि करें या अस्वीकार करें",
        "description": "किसी ऐसे ट्रांसफ़र को रीसॉल्व करें जो वॉलेट स्वामित्व की प्रतीक्षा कर रहा हो: जब यह UNCONFIRMED_OWNERSHIP स्थिति में हो, या जब यह ON_HOLD में एक इनबाउंड ट्रांसफ़र हो, तो इसे ट्रांसफ़र के अपने पक्ष से कॉल करें। पुष्टि करने पर मिलान वाली वॉलेट पता पुस्तिका प्रविष्टि स्वामित्व-सत्यापित के रूप में चिह्नित हो जाती है (बिना प्रविष्टि वाले इनबाउंड ON_HOLD ट्रांसफ़र के लिए, Didit beneficiary_data.wallet_address से एक प्रविष्टि बनाता है) और ट्रांसफ़र के दोनों पक्षों पर लाभार्थी के नाम का मिलान चलाता है; अस्वीकार करने पर दोनों पक्ष अस्वीकृत हो जाते हैं। एक इनबाउंड ट्रांसफ़र जिसकी जमा राशि पहले ही सेटल हो चुकी है, मिलान सफल होने पर FINISHED पर चला जाता है। जब प्रतिपक्ष वॉलेट को स्व-होस्टेड घोषित किया गया था (counterparty.payment_method.method_type: unhosted_wallet), तो पुष्टि करने से यह रिकॉर्ड होता है कि ग्राहक ने सत्यापित किया है कि उस वॉलेट को कौन नियंत्रित करता है और दोनों दिशाओं में ट्रांसफ़र पूरा (COMPLETED) हो जाता है, या किसी ऐसे इनबाउंड डिपॉज़िट के लिए FINISHED हो जाता है जिसका ऑन-चेन हैश पहले से ज्ञात है। सत्यापित वॉलेट प्रतिपक्ष का होता है: आउटबाउंड निकासी का गंतव्य, या इनबाउंड डिपॉज़िट का स्रोत (प्रेषक का वॉलेट)। यदि यह अभी तक आपकी वॉलेट पता पुस्तिका में नहीं है, तो Didit इसे प्रतिपक्ष के नाम के तहत स्वामित्व-सत्यापित के रूप में जोड़ता है; यदि पुस्तिका में यह पहले से ही किसी भिन्न धारक के नाम पर है, तो ट्रांसफ़र COUNTERPARTY_MISMATCHED_DATA में चला जाता है। UNCONFIRMED_OWNERSHIP, ON_HOLD या COUNTERPARTY_MISMATCHED_DATA में इनबाउंड TRP ट्रांसफ़र के लिए, Didit आपका निर्णय इसके बजाय प्रेषक VASP को भेजता है: स्वीकृत करने पर भुगतान पता (wallet_address, या मिलान प्रविष्टि का पता) वापस आता है और ट्रांसफ़र COMPLETED में चला जाता है, और अस्वीकार करने पर यह अस्वीकृत हो जाता है। वही कॉल उस इनबाउंड ट्रांसफ़र का भी निर्णय करती है जिसे GTR या Sygna Bridge प्रतिपक्ष ने भेजा था और जो आपकी समीक्षा की प्रतीक्षा कर रहा है (`UNCONFIRMED_OWNERSHIP`, `ON_HOLD` या `COUNTERPARTY_MISMATCHED_DATA`): `confirmed: true` इसे स्वीकृत करता है (जब ट्रांसफ़र में किसी का उल्लेख न हो तो `wallet_address` पास करें) और `confirmed: false` इसे अस्वीकृत करता है, और रिस्पॉन्स के बाद नेटवर्क को पुनः प्रयासों के साथ उत्तर दिया जाता है। VerifyVASP पूछते समय ही अपना उत्तर ले लेता है, इसलिए एक ऐसा VerifyVASP ट्रांसफ़र जिसे आपकी समीक्षा की आवश्यकता होगी, तुरंत अस्वीकृत कर दिया जाता है और उसका निर्णय बाद में नहीं लिया जा सकता।",
        "operationId": "confirmTravelRuleOwnership",
        "x-didit-sdk": {
          "resource": "transactions.travel_rule",
          "method": "confirm_ownership",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "इस ट्रांसफ़र के लिए आपके एप्लिकेशन द्वारा धारित लेन-देन का Didit-स्थायी UUID: INTERNAL-रेल ट्रांसफ़र पर लाभार्थी पक्ष का लेन-देन, या प्रतिपक्ष वॉलेट के स्व-होस्टेड घोषित होने पर आपके द्वारा बनाया गया लेन-देन (outbound या inbound)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleOwnershipConfirmRequest"
              },
              "example": {
                "confirmed": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/ownership/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"confirmed\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.travel_rule.confirm_ownership(\n    \"11111111-2222-3333-4444-555555555555\",\n    confirmed=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.travelRule.confirmOwnership(\"11111111-2222-3333-4444-555555555555\", {\n  confirmed: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.TravelRule.ConfirmOwnership(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleOwnershipConfirmRequest{\n\tConfirmed: true,\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleOwnershipConfirmRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().travelRule().confirmOwnership(\"11111111-2222-3333-4444-555555555555\", TravelRuleOwnershipConfirmRequest.builder()\n        .confirmed(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->travelRule->confirmOwnership('11111111-2222-3333-4444-555555555555', [\n    'confirmed' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.travel_rule.confirm_ownership(\n  \"11111111-2222-3333-4444-555555555555\",\n  confirmed: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.TravelRule.ConfirmOwnershipAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleOwnershipConfirmRequest\n{\n    Confirmed = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया ट्रांसफ़र। इनबाउंड ट्रांसफ़र के लिए प्रतिपक्ष का originator_data/beneficiary_data स्वामित्व की पुष्टि होने तक मास्क रहता है (`data_masked: true`), फिर `data_unmasked` यह रिकॉर्ड करता है कि कब, क्यों और किसके द्वारा ऐसा किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleTransferDetail"
                }
              }
            }
          },
          "409": {
            "description": "ट्रांसफर स्वामित्व पुष्टि की प्रतीक्षा नहीं कर रहा है, कोई भी वॉलेट पता पुस्तिका प्रविष्टि इसके प्रतिपक्ष वॉलेट से मेल नहीं खाती है, किसी अन्य Didit ग्राहक से INTERNAL ट्रांसफर की पुष्टि होने से पहले नियंत्रण प्रमाण (एक हस्ताक्षरित संदेश या एक परीक्षण जमा) की आवश्यकता होती है, या नेटवर्क ट्रांसफर का उत्तर पहले ही उसके नेटवर्क पर दिया जा चुका है (एक VerifyVASP ट्रांसफर, या एक GTR या Sygna Bridge ट्रांसफर जिसका निर्णय आपने या Didit ने पहले ही कर लिया है)।",
            "content": {
              "application/json": {
                "examples": {
                  "Not awaiting confirmation": {
                    "value": {
                      "detail": "Transfer is not awaiting ownership confirmation."
                    }
                  },
                  "No matching address book entry": {
                    "value": {
                      "detail": "wallet address entry no longer available"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: confirmed गायब है, इनबाउंड TRP अनुमोदन में कोई wallet_address नहीं है और फ़ालबैक के लिए कोई पता नहीं है, या घोषित स्व-होस्टेड वॉलेट ट्रांसफर पर `confirmed: true` है जिसमें किसी प्रतिपक्ष वॉलेट का नाम नहीं है और कोई `wallet_address` नहीं भेजा गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "No payment address": {
                    "value": {
                      "wallet_address": [
                        "wallet_address is required to approve."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात लेन-देन, या लेन-देन पर कोई Travel Rule ट्रांसफ़र नहीं है।"
          },
          "502": {
            "description": "केवल इनबाउंड TRP ट्रांसफ़र: Didit आपका निर्णय प्रेषक VASP तक डिलीवर नहीं कर सका, इसलिए ट्रांसफ़र की स्थिति नहीं बदलती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Callback not delivered": {
                    "value": {
                      "detail": "Counterparty inquiry-resolution callback could not be delivered."
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/transactions/{transaction_id}/travel-rule/messages/": {
      "get": {
        "summary": "Travel Rule संदेश सूचीबद्ध करें",
        "description": "इस ट्रांसफर के बारे में प्रतिपक्ष VASP के साथ आदान-प्रदान किए गए संदेश और दस्तावेज़ अनुरोध।",
        "operationId": "listTravelRuleMessages",
        "x-didit-sdk": {
          "resource": "transactions.travel_rule",
          "method": "list_messages",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "ट्रांसफ़र का स्वामित्व रखने वाला Didit-स्थायी लेन-देन UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/messages/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.travel_rule.list_messages(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.travelRule.listMessages(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.TravelRule.ListMessages(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().travelRule().listMessages(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->travelRule->listMessages('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.travel_rule.list_messages(\"11111111-2222-3333-4444-555555555555\").each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.TravelRule.ListMessagesAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "संदेश, सबसे पुराने पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelRuleMessage"
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात लेन-देन या token, या लेन-देन पर कोई Travel Rule ट्रांसफ़र नहीं है।"
          }
        }
      },
      "post": {
        "summary": "एक Travel Rule संदेश या दस्तावेज़ अनुरोध भेजें",
        "description": "प्रतिपक्ष VASP को कोई संदेश या दस्तावेज़ अनुरोध भेजता है। INTERNAL ट्रांसफ़र (अन्य Didit ग्राहक इसे जोड़ी के अपने हिस्से पर देखता है) और EMAIL ट्रांसफ़र (प्रतिपक्ष को ईमेल भेजा जाता है और वह पिकअप पोर्टल में उत्तर देता है) पर काम करता है। TRP, GTR, TRUST, VerifyVASP या Sygna पर किए जाने वाले ट्रांसफ़र में कोई संदेश नहीं होता, क्योंकि उन प्रोटोकॉल में इसकी सुविधा नहीं है। सीमाएं: प्रति ट्रांसफ़र 100 संदेश, प्रति बॉडी 5000 वर्ण, 10 अनुरोधित दस्तावेज़, प्रत्येक 10 MB की 5 फ़ाइलें।",
        "operationId": "createTravelRuleMessage",
        "x-didit-sdk": {
          "resource": "transactions.travel_rule",
          "method": "create_message",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "ट्रांसफ़र का स्वामित्व रखने वाला Didit-स्थायी लेन-देन UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleMessageCreateRequest"
              },
              "example": {
                "kind": "DOCUMENT_REQUEST",
                "body": "Please confirm the date of birth of the beneficiary.",
                "requested_documents": [
                  "Proof of address"
                ]
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleMessageCreateRequest"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/transactions/{transaction_id}/travel-rule/messages/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"kind\": \"DOCUMENT_REQUEST\", \"body\": \"Please confirm the date of birth of the beneficiary.\", \"requested_documents\": [\"Proof of address\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.travel_rule.create_message(\n    \"11111111-2222-3333-4444-555555555555\",\n    kind=\"DOCUMENT_REQUEST\",\n    body=\"Please confirm the date of birth of the beneficiary.\",\n    requested_documents=[\"Proof of address\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.travelRule.createMessage(\"11111111-2222-3333-4444-555555555555\", {\n  kind: \"DOCUMENT_REQUEST\",\n  body: \"Please confirm the date of birth of the beneficiary.\",\n  requested_documents: [\"Proof of address\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.TravelRule.CreateMessage(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleMessageCreateRequest{\n\tKind:               didit.Some(didit.TravelRuleMessageCreateRequestKind(\"DOCUMENT_REQUEST\")),\n\tBody:               didit.String(\"Please confirm the date of birth of the beneficiary.\"),\n\tRequestedDocuments: didit.Some([]string{\"Proof of address\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.TravelRuleMessageCreateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().travelRule().createMessage(\"11111111-2222-3333-4444-555555555555\", TravelRuleMessageCreateRequest.builder()\n        .kind(TravelRuleMessageCreateRequest.Kind.of(\"DOCUMENT_REQUEST\"))\n        .body(\"Please confirm the date of birth of the beneficiary.\")\n        .requestedDocuments(List.of(\"Proof of address\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->travelRule->createMessage('11111111-2222-3333-4444-555555555555', [\n    'kind' => 'DOCUMENT_REQUEST',\n    'body' => 'Please confirm the date of birth of the beneficiary.',\n    'requested_documents' => ['Proof of address'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.travel_rule.create_message(\n  \"11111111-2222-3333-4444-555555555555\",\n  kind: \"DOCUMENT_REQUEST\",\n  body: \"Please confirm the date of birth of the beneficiary.\",\n  requested_documents: [\"Proof of address\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.TravelRule.CreateMessageAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleMessageCreateRequest\n{\n    Kind = new TravelRuleMessageCreateRequestKind(\"DOCUMENT_REQUEST\"),\n    Body = \"Please confirm the date of birth of the beneficiary.\",\n    RequestedDocuments = new string[] { \"Proof of address\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "संग्रहीत संदेश।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleMessage"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body, ऐसी फ़ाइल का प्रकार या आकार जो स्वीकार्य नहीं है, ट्रांसफ़र पर 100 से अधिक संदेश, या एक ऐसा `reply_to` जो इस ट्रांसफ़र का संदेश नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "requested_documents": [
                    "Name at least one document the counterparty should send."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात लेन-देन या token, या लेन-देन पर कोई Travel Rule ट्रांसफ़र नहीं है।"
          },
          "409": {
            "description": "कोई भी संदेश प्रतिपक्ष तक नहीं पहुँच सकता। `detail` कारण बताता है: स्थानांतरण नेटवर्क रेल (TRP, GTR, TRUST, VerifyVASP या Sygna) पर चलता है, इसका अभी तक कोई प्रतिपक्ष नहीं है, INTERNAL स्थानांतरण का डेटा वॉलेट धारक से मेल नहीं खाता था इसलिए प्राप्तकर्ता तक कुछ नहीं पहुँचा, या EMAIL स्थानांतरण का पिकअप लिंक समाप्त हो गया है या स्थानांतरण बंद है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/pickup/{token}/": {
      "get": {
        "summary": "ईमेल-रेल पिकअप जानकारी प्राप्त करें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। गैर-Didit प्रतिपक्ष VASP को ईमेल किए गए पिकअप लिंक से लंबित एक्सचेंज का पूर्वावलोकन करने देता है। token स्वयं ही प्रमाणीकरण है।",
        "operationId": "getTravelRulePickup",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_pickup",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contact",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "लिंक का `?contact=` मान, वह संपर्क जिसे लिंक भेजा गया था। `contact` के रूप में अपरिवर्तित वापस भेजा जाता है; इसे मान्य नहीं किया जाता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl https://verification.didit.me/v3/travel-rule/pickup/{token}/"
          }
        ],
        "responses": {
          "200": {
            "description": "पिकअप पूर्वावलोकन।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRulePickupInfo"
                },
                "example": {
                  "reference": "33333333-4444-5555-6666-777777777777",
                  "requested_at": "2026-07-05T10:00:00Z",
                  "originator_vasp_name": "Origin CASP SL",
                  "originator_vasp_lei": "529900EXAMPLEORIG001",
                  "recipient_vasp_name": "Example Counterparty VASP",
                  "language": "es",
                  "amount": "0.250000000000000000",
                  "currency": "ETH",
                  "fiat_amount": "",
                  "fiat_currency": "",
                  "chain": "ETH",
                  "beneficiary_wallet": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb",
                  "status": "AWAITING_COUNTERPARTY",
                  "ivms_version": "ivms101.2023",
                  "deadline_at": "2026-07-07T10:00:00Z",
                  "reminders_sent": 0,
                  "contact": "",
                  "decline_reasons": [
                    "data_mismatch",
                    "not_our_customer",
                    "wallet_not_hosted",
                    "sanctions",
                    "risk_appetite",
                    "jurisdiction",
                    "insufficient_data",
                    "other"
                  ],
                  "join_invitation": {
                    "eligible": false,
                    "url": ""
                  },
                  "originator_data": {
                    "name": "Jane Doe",
                    "wallet_address": "0x77ccff0cc624a53cd8b8d8703ced826710211ec7"
                  },
                  "beneficiary_data": {
                    "name": "Ana Diaz",
                    "wallet_address": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb"
                  },
                  "ivms_request": {
                    "originator": {
                      "originatorPersons": [
                        {
                          "naturalPerson": {
                            "name": {
                              "nameIdentifier": [
                                {
                                  "primaryIdentifier": "Doe",
                                  "secondaryIdentifier": "Jane",
                                  "nameIdentifierType": "LEGL"
                                }
                              ]
                            }
                          }
                        }
                      ],
                      "accountNumber": [
                        "0x77ccff0cc624a53cd8b8d8703ced826710211ec7"
                      ]
                    },
                    "beneficiary": {
                      "beneficiaryPersons": [
                        {
                          "naturalPerson": {
                            "name": {
                              "nameIdentifier": [
                                {
                                  "primaryIdentifier": "Diaz",
                                  "secondaryIdentifier": "Ana",
                                  "nameIdentifierType": "LEGL"
                                }
                              ]
                            }
                          }
                        }
                      ],
                      "accountNumber": [
                        "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb"
                      ]
                    }
                  },
                  "data_masked": false
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "विंडो बंद हो गई है: प्रतिपक्ष ने पहले ही उत्तर दे दिया है, ट्रांसफर AWAITING_COUNTERPARTY से बाहर निकल गया है, या समय-सीमा समाप्त हो गई है।"
          }
        }
      }
    },
    "/v3/travel-rule/pickup/{token}/respond/": {
      "post": {
        "summary": "ईमेल-रेल पिकअप का उत्तर दें",
        "description": "सार्वजनिक, अनअथेंटिकेटेड। ईमेल किए गए पिकअप लिंक से एक्सचेंज को स्वीकार या अस्वीकार करता है। स्वीकार करने पर, beneficiary_name की जांच प्रेषक की name_matching_strictness नीति के विरुद्ध की जाती है।",
        "operationId": "respondTravelRulePickup",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "respond_pickup",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contact",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "लिंक का `?contact=` मान। तब उपयोग किया जाता है जब बॉडी में कोई `contact` नहीं भेजा जाता।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRulePickupRespondRequest"
              },
              "example": {
                "decision": "accept",
                "beneficiary_name": "Carlos Ruiz"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/pickup/{token}/respond/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"decision\": \"accept\", \"beneficiary_name\": \"Carlos Ruiz\"}'"
          }
        ],
        "responses": {
          "200": {
            "description": "परिणामी एक्सचेंज स्थिति: स्वीकार करने के बाद COMPLETED या COUNTERPARTY_MISMATCHED_DATA, अस्वीकार करने के बाद COUNTERPARTY_VASP_GENERAL_DECLINE, जो `decline_reason` को भी दर्शाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "decline_reason": {
                      "type": "string",
                      "description": "अस्वीकृति के बाद मौजूद होता है।"
                    }
                  }
                },
                "examples": {
                  "accepted": {
                    "value": {
                      "status": "COMPLETED"
                    }
                  },
                  "declined": {
                    "value": {
                      "status": "COUNTERPARTY_VASP_GENERAL_DECLINE",
                      "decline_reason": "not_our_customer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक फ़ील्ड अमान्य है: उदाहरण के लिए `decision` अनुपलब्ध है या `accept` या `decline` नहीं है, `decline_reason: other` के साथ अस्वीकृति पर `decline_detail` अनुपलब्ध है, एक `ivms_response` जो IVMS 101 ऑब्जेक्ट नहीं है या 16384 वर्णों से अधिक लंबा है, या मुख्य भाग में एक `contact` जो UUID नहीं है (`{\"contact\": [\"Must be a valid UUID.\"]}`)।",
            "content": {
              "application/json": {
                "example": {
                  "decline_detail": [
                    "Say what the reason is when you choose another reason."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "विंडो बंद हो गई है: प्रतिपक्ष ने पहले ही उत्तर दे दिया है, ट्रांसफर AWAITING_COUNTERPARTY से बाहर निकल गया है, या समय-सीमा समाप्त हो गई है।"
          }
        }
      }
    },
    "/v3/travel-rule/pickup/{token}/messages/": {
      "get": {
        "summary": "पिकअप संदेश सूचीबद्ध करें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। EMAIL-रेल ट्रांसफर के संदेश, जैसा कि प्रतिपक्ष VASP उन्हें पढ़ता है: ग्राहक ने जो भेजा वह `INBOUND` है और ग्राहक के VASP नाम के साथ हस्ताक्षरित है। token ही प्रमाणीकरण है।",
        "operationId": "listTravelRulePickupMessages",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "list_pickup_messages",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl https://verification.didit.me/v3/travel-rule/pickup/{token}/messages/"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रतिपक्ष की ओर से संदेश, सबसे पुराने पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TravelRuleMessage"
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "पिकअप लिंक की समय-सीमा समाप्त हो गई है या स्थानांतरण बंद कर दिया गया है।"
          }
        }
      },
      "post": {
        "summary": "पिकअप पोर्टल में उत्तर दें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। प्रतिपक्ष VASP EMAIL-रेल ट्रांसफर पर जवाब देता है। लेन-देन के संदेशों के समान मुख्य भाग; अटैचमेंट PDF, PNG, JPEG या WebP होने चाहिए। token ही प्रमाणीकरण है।",
        "operationId": "createTravelRulePickupMessage",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "create_pickup_message",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleMessageCreateRequest"
              },
              "example": {
                "kind": "MESSAGE",
                "body": "Attached is the proof of address of the wallet holder."
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleMessageCreateRequest"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/pickup/{token}/messages/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"kind\": \"MESSAGE\", \"body\": \"Attached is the proof of address of the wallet holder.\"}'"
          }
        ],
        "responses": {
          "201": {
            "description": "संग्रहीत संदेश।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleMessage"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body, ऐसी फ़ाइल का प्रकार या आकार जो स्वीकार्य नहीं है, ट्रांसफ़र पर 100 से अधिक संदेश, या एक ऐसा `reply_to` जो इस ट्रांसफ़र का संदेश नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "requested_documents": [
                    "Name at least one document the counterparty should send."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "पिकअप लिंक की समय-सीमा समाप्त हो गई है या स्थानांतरण बंद कर दिया गया है।"
          }
        }
      }
    },
    "/v3/travel-rule/inbound/": {
      "post": {
        "summary": "डिपॉज़िट के बाद (sunrise) इनबाउंड ट्रांसफ़र पंजीकृत करें",
        "description": "किसी क्रिप्टो डिपॉज़िट के लिए Travel Rule डेटा पंजीकृत करें जो किसी भी एक्सचेंज से पहले ऑन-चेन सेटल हो चुका है। एक इनबाउंड travelRule लेन-देन बनाता है (या किसी अनक्लेम्ड डिपॉज़िट का पुनः उपयोग करता है) और आपकी वॉलेट पता पुस्तिका के विरुद्ध ट्रांसफ़र को हल करता है। नए बनाए गए लेन-देन के लिए, Didit पहले transaction.created और उसके बाद travel_rule.status.updated webhook भेजता है।",
        "operationId": "registerTravelRuleInbound",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "register_inbound",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleInboundRequest"
              },
              "example": {
                "chain": "ETH",
                "txid": "0xdeposit-hash",
                "wallet_address": "0xYourDepositWallet",
                "amount": "500.00",
                "currency": "USDC",
                "originator_data": {
                  "name": "Origin CASP SL"
                },
                "beneficiary_data": {
                  "name": "Ana Diaz"
                },
                "originating_vasp": {
                  "name": "Origin CASP SL",
                  "lei": "",
                  "travel_address": "ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/inbound/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"chain\":\"ETH\",\"txid\":\"0xdeposit-hash\",\"wallet_address\":\"0xYourDepositWallet\",\"amount\":\"500.00\",\"currency\":\"USDC\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.register_inbound(\n    chain=\"ETH\",\n    txid=\"0xdeposit-hash\",\n    wallet_address=\"0xYourDepositWallet\",\n    amount=\"500.00\",\n    currency=\"USDC\",\n    originator_data={\"name\": \"Origin CASP SL\"},\n    beneficiary_data={\"name\": \"Ana Diaz\"},\n    originating_vasp={\n        \"name\": \"Origin CASP SL\",\n        \"lei\": \"\",\n        \"travel_address\": \"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.registerInbound({\n  chain: \"ETH\",\n  txid: \"0xdeposit-hash\",\n  wallet_address: \"0xYourDepositWallet\",\n  amount: \"500.00\",\n  currency: \"USDC\",\n  originator_data: { name: \"Origin CASP SL\" },\n  beneficiary_data: { name: \"Ana Diaz\" },\n  originating_vasp: {\n    name: \"Origin CASP SL\",\n    lei: \"\",\n    travel_address: \"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RegisterInbound(ctx, didit.TravelRuleInboundRequest{\n\tChain:           \"ETH\",\n\tTxid:            \"0xdeposit-hash\",\n\tWalletAddress:   \"0xYourDepositWallet\",\n\tAmount:          \"500.00\",\n\tCurrency:        \"USDC\",\n\tOriginatorData:  didit.Some(map[string]any{\"name\": \"Origin CASP SL\"}),\n\tBeneficiaryData: didit.Some(map[string]any{\"name\": \"Ana Diaz\"}),\n\tOriginatingVASP: didit.Some(didit.TravelRuleInboundRequestOriginatingVASP{\n\t\tName:          didit.String(\"Origin CASP SL\"),\n\t\tLei:           didit.String(\"\"),\n\t\tTravelAddress: didit.String(\"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\"),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.TravelRuleInboundRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().registerInbound(TravelRuleInboundRequest.builder()\n        .chain(\"ETH\")\n        .txid(\"0xdeposit-hash\")\n        .walletAddress(\"0xYourDepositWallet\")\n        .amount(\"500.00\")\n        .currency(\"USDC\")\n        .originatorData(Map.of(\"name\", \"Origin CASP SL\"))\n        .beneficiaryData(Map.of(\"name\", \"Ana Diaz\"))\n        .originatingVasp(TravelRuleInboundRequest.OriginatingVasp.builder()\n                .name(\"Origin CASP SL\")\n                .lei(\"\")\n                .travelAddress(\"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->registerInbound([\n    'chain' => 'ETH',\n    'txid' => '0xdeposit-hash',\n    'wallet_address' => '0xYourDepositWallet',\n    'amount' => '500.00',\n    'currency' => 'USDC',\n    'originator_data' => ['name' => 'Origin CASP SL'],\n    'beneficiary_data' => ['name' => 'Ana Diaz'],\n    'originating_vasp' => [\n        'name' => 'Origin CASP SL',\n        'lei' => '',\n        'travel_address' => 'ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.register_inbound(\n  chain: \"ETH\",\n  txid: \"0xdeposit-hash\",\n  wallet_address: \"0xYourDepositWallet\",\n  amount: \"500.00\",\n  currency: \"USDC\",\n  originator_data: { name: \"Origin CASP SL\" },\n  beneficiary_data: { name: \"Ana Diaz\" },\n  originating_vasp: {\n    name: \"Origin CASP SL\",\n    lei: \"\",\n    travel_address: \"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.RegisterInboundAsync(new TravelRuleInboundRequest\n{\n    Chain = \"ETH\",\n    Txid = \"0xdeposit-hash\",\n    WalletAddress = \"0xYourDepositWallet\",\n    Amount = \"500.00\",\n    Currency = \"USDC\",\n    OriginatorData = new Dictionary<string, object> { [\"name\"] = \"Origin CASP SL\" },\n    BeneficiaryData = new Dictionary<string, object> { [\"name\"] = \"Ana Diaz\" },\n    OriginatingVasp = new TravelRuleInboundRequestOriginatingVasp\n    {\n        Name = \"Origin CASP SL\",\n        Lei = \"\",\n        TravelAddress = \"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "इस txid और wallet_address के लिए एक ट्रांसफर पहले ही पंजीकृत किया जा चुका था; मौजूदा ट्रांसफर बिना किसी बदलाव के लौटाया जाता है (created का मान false है)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleInboundResponse"
                }
              }
            }
          },
          "201": {
            "description": "एक नए इनबाउंड लेन-देन पर या किसी मौजूदा अनक्लेम्ड डिपॉज़िट पर एक नया Travel Rule ट्रांसफर पंजीकृत किया गया (created true है)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleInboundResponse"
                }
              }
            }
          },
          "400": {
            "description": "एक आवश्यक फ़ील्ड (`chain`, `txid`, `wallet_address`, `amount`, `currency`) मौजूद नहीं है, `originating_vasp.lei` एक मान्य LEI नहीं है, `originating_vasp.travel_address` एक मान्य Travel Address नहीं है, एक ऐसा memo, X-address या `utxo` है जिसे चेन संभाल नहीं सकती, या `originator_data` / `beneficiary_data` जो कोई ऑब्जेक्ट नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing field": {
                    "value": {
                      "txid": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid LEI": {
                    "value": {
                      "originating_vasp": {
                        "lei": [
                          "Invalid LEI: expected 20 alphanumeric characters (ISO 17442)."
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/test-vasp/inbound/": {
      "post": {
        "summary": "Didit Test VASP (सैंडबॉक्स) से इनबाउंड ट्रांसफ़र ट्रिगर करें",
        "description": "केवल सैंडबॉक्स एप्लिकेशन। Didit Test VASP आपके एप्लिकेशन को एक इनबाउंड Travel Rule ट्रांसफ़र भेजता है, जिससे आप लाइव होने से पहले किसी एक्सचेंज के प्राप्तकर्ता पक्ष का शुरू से अंत तक परीक्षण कर सकें। ट्रांसफ़र उसी लॉजिक द्वारा बुक और तय किया जाता है जो आपकी वॉलेट पता पुस्तिका के विरुद्ध नेटवर्क से आने वाला वास्तविक इनबाउंड ट्रांसफ़र चलाता है, इसलिए इनबॉक्स, निर्णय और वॉलेट स्वामित्व फ़्लो लाइव की तरह ही व्यवहार करते हैं। Didit से कुछ भी बाहर नहीं जाता है। एक लाइव एप्लिकेशन को 400 प्राप्त होता है। दूसरा ट्रांसफ़र बुक करने के बजाय पहली कॉल द्वारा बुक किए गए ट्रांसफ़र को प्राप्त करने के लिए वही `reference` दोबारा भेजें।",
        "operationId": "triggerTravelRuleTestVaspInbound",
        "x-didit-sdk": {
          "resource": "transactions.travel_rule",
          "method": "trigger_test_vasp_inbound",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleTestVaspInboundRequest"
              },
              "example": {
                "beneficiary_wallet_address": "0xYourSandboxWallet",
                "scenario": "accept",
                "amount": "1",
                "reference": "demo-001"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/test-vasp/inbound/ \\\n  -H 'x-api-key: YOUR_SANDBOX_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"beneficiary_wallet_address\":\"0xYourSandboxWallet\",\"scenario\":\"accept\",\"reference\":\"demo-001\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.travel_rule.trigger_test_vasp_inbound(\n    beneficiary_wallet_address=\"0xYourSandboxWallet\",\n    scenario=\"accept\",\n    amount=\"1\",\n    reference=\"demo-001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.travelRule.triggerTestVaspInbound({\n  beneficiary_wallet_address: \"0xYourSandboxWallet\",\n  scenario: \"accept\",\n  amount: \"1\",\n  reference: \"demo-001\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.TravelRule.TriggerTestVASPInbound(ctx, didit.TravelRuleTestVASPInboundRequest{\n\tBeneficiaryWalletAddress: \"0xYourSandboxWallet\",\n\tScenario:                 didit.Some(didit.TravelRuleTestVASPInboundRequestScenario(\"accept\")),\n\tAmount:                   didit.String(\"1\"),\n\tReference:                didit.String(\"demo-001\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleTestVaspInboundRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().travelRule().triggerTestVaspInbound(TravelRuleTestVaspInboundRequest.builder()\n        .beneficiaryWalletAddress(\"0xYourSandboxWallet\")\n        .scenario(TravelRuleTestVaspInboundRequest.Scenario.of(\"accept\"))\n        .amount(\"1\")\n        .reference(\"demo-001\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->travelRule->triggerTestVaspInbound([\n    'beneficiary_wallet_address' => '0xYourSandboxWallet',\n    'scenario' => 'accept',\n    'amount' => '1',\n    'reference' => 'demo-001',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.travel_rule.trigger_test_vasp_inbound(\n  beneficiary_wallet_address: \"0xYourSandboxWallet\",\n  scenario: \"accept\",\n  amount: \"1\",\n  reference: \"demo-001\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.TravelRule.TriggerTestVaspInboundAsync(new TravelRuleTestVaspInboundRequest\n{\n    BeneficiaryWalletAddress = \"0xYourSandboxWallet\",\n    Scenario = new TravelRuleTestVaspInboundRequestScenario(\"accept\"),\n    Amount = \"1\",\n    Reference = \"demo-001\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "इनबाउंड ट्रांसफर बुक किया गया था और उस पर निर्णय लिया गया था। उसी `reference` के साथ दोहराने पर वही payload वापस आता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleTestVaspInboundResponse"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body, एक अज्ञात या असमर्थित `scenario`, या एप्लिकेशन एक लाइव एप्लिकेशन है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "ट्रांसफर बुक नहीं किया जा सका, उदाहरण के लिए क्योंकि एप्लिकेशन के लिए Travel Rule सक्षम नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/widget-session/": {
      "post": {
        "summary": "वॉलेट-स्वामित्व विजेट सत्र मिंट करें",
        "description": "होस्टेड वॉलेट-स्वामित्व विजेट URL/token जनरेट करें। वॉलेट पर नियंत्रण साबित करने के लिए ग्राहक को लौटाए गए url पर भेजें (मैसेज साइनिंग, Satoshi टेस्ट, स्क्रीनशॉट, या स्व-घोषणा)। यह विजेट इस रिलीज़ में केवल वेब के लिए है - url को सिस्टम ब्राउज़र या कस्टम टैब में खोलें, मोबाइल SDK वेबव्यू के अंदर कभी नहीं।",
        "operationId": "createTravelRuleWidgetSession",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "create_widget_session",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWidgetSessionCreate"
              },
              "example": {
                "wallet_address": "0xd3b62acb76fb27a7f8961ec40fa11746b113aca9",
                "chain": "ETH",
                "holder_name": "Jane Doe",
                "vendor_data": "user-042",
                "transaction_id": "99999999-aaaa-bbbb-cccc-dddddddddddd",
                "expires_in_minutes": 60
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/widget-session/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"wallet_address\":\"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\",\"chain\":\"ETH\",\"holder_name\":\"Jane Doe\",\"transaction_id\":\"99999999-aaaa-bbbb-cccc-dddddddddddd\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.create_widget_session(\n    wallet_address=\"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\",\n    chain=\"ETH\",\n    holder_name=\"Jane Doe\",\n    vendor_data=\"user-042\",\n    transaction_id=\"99999999-aaaa-bbbb-cccc-dddddddddddd\",\n    expires_in_minutes=60,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.createWidgetSession({\n  wallet_address: \"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\",\n  chain: \"ETH\",\n  holder_name: \"Jane Doe\",\n  vendor_data: \"user-042\",\n  transaction_id: \"99999999-aaaa-bbbb-cccc-dddddddddddd\",\n  expires_in_minutes: 60,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.CreateWidgetSession(ctx, didit.TravelRuleWidgetSessionCreate{\n\tWalletAddress:    didit.String(\"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\"),\n\tChain:            didit.String(\"ETH\"),\n\tHolderName:       didit.String(\"Jane Doe\"),\n\tVendorData:       didit.String(\"user-042\"),\n\tTransactionID:    didit.String(\"99999999-aaaa-bbbb-cccc-dddddddddddd\"),\n\tExpiresInMinutes: didit.Int(60),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleWidgetSessionCreate;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().createWidgetSession(TravelRuleWidgetSessionCreate.builder()\n        .walletAddress(\"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\")\n        .chain(\"ETH\")\n        .holderName(\"Jane Doe\")\n        .vendorData(\"user-042\")\n        .transactionId(\"99999999-aaaa-bbbb-cccc-dddddddddddd\")\n        .expiresInMinutes(60L)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->createWidgetSession([\n    'wallet_address' => '0xd3b62acb76fb27a7f8961ec40fa11746b113aca9',\n    'chain' => 'ETH',\n    'holder_name' => 'Jane Doe',\n    'vendor_data' => 'user-042',\n    'transaction_id' => '99999999-aaaa-bbbb-cccc-dddddddddddd',\n    'expires_in_minutes' => 60,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.create_widget_session(\n  wallet_address: \"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\",\n  chain: \"ETH\",\n  holder_name: \"Jane Doe\",\n  vendor_data: \"user-042\",\n  transaction_id: \"99999999-aaaa-bbbb-cccc-dddddddddddd\",\n  expires_in_minutes: 60\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.CreateWidgetSessionAsync(new TravelRuleWidgetSessionCreate\n{\n    WalletAddress = \"0xd3b62acb76fb27a7f8961ec40fa11746b113aca9\",\n    Chain = \"ETH\",\n    HolderName = \"Jane Doe\",\n    VendorData = \"user-042\",\n    TransactionId = \"99999999-aaaa-bbbb-cccc-dddddddddddd\",\n    ExpiresInMinutes = 60,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "मिंट किया गया विजेट सत्र।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetSessionResponse"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body: `callback_url` एक पूर्ण http(s) URL नहीं है, `expires_in_minutes` 5 से 10080 के बाहर है, `transaction_id` एक UUID नहीं है, या कोई फ़ील्ड अपनी सीमा से अधिक लंबा है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid callback_url": {
                    "value": {
                      "callback_url": [
                        "callback_url must be an absolute http(s) URL."
                      ]
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "`transaction_id` इस एप्लिकेशन में किसी Travel Rule स्थानांतरण को संदर्भित नहीं करता है।"
          }
        }
      }
    },
    "/v3/travel-rule/widget/{token}/": {
      "get": {
        "summary": "वॉलेट-स्वामित्व विजेट संदर्भ प्राप्त करें",
        "description": "विजेट सत्र token-आधारित सार्वजनिक रीड endpoint - किसी API कुंजी की आवश्यकता नहीं है। विजेट संदर्भ के साथ-साथ प्रत्येक प्रमाण की स्थिति लौटाता है, ताकि आप पूर्णता का पता लगाने के लिए इसे पोल कर सकें; एक बार प्रमाण सत्यापित हो जाने पर completed_at नॉन-नल हो जाता है। एक SATOSHI_TEST प्रमाण status PENDING पर रह सकता है, जबकि उसका डिपॉज़िट ऑन-चेन देखा गया हो लेकिन अनकन्फ़र्म्ड हो - एक बैकग्राउंड जॉब स्वचालित रूप से इसे फिर से जांचता है और डिपॉज़िट कन्फ़र्म होने पर इसे पूरा करता है, इसलिए प्रतीक्षा करते समय किसी क्लाइंट कार्रवाई की आवश्यकता नहीं होती है। प्रत्येक प्रमाण में वे फ़ील्ड होते हैं जिनकी उसकी विधि को आवश्यकता होती है: SATOSHI_TEST के लिए deposit_address, expected_amount, और उसका अपना expires_at; MESSAGE_SIGNING के लिए challenge। जब सत्र किसी ट्रांसफ़र से जुड़ा हो, तो पोलिंग के बजाय travel_rule.status.updated webhook को प्राथमिकता दें।",
        "operationId": "getTravelRuleWidgetContext",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "retrieve_widget_context",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "description": "विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl https://verification.didit.me/v3/travel-rule/widget/{token}/"
          }
        ],
        "responses": {
          "200": {
            "description": "विजेट संदर्भ और प्रमाण स्थितियां।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetContext"
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "सत्र पूरा हुए बिना समाप्त हो गया।"
          }
        }
      }
    },
    "/v3/travel-rule/widget/{token}/vasps/": {
      "get": {
        "summary": "वॉलेट विजेट से VASP खोजें",
        "description": "विजेट सत्र token-आधारित सार्वजनिक रीड endpoint, किसी API कुंजी की आवश्यकता नहीं है: अंतिम उपयोगकर्ता के विजेट का VASP पिकर। विजेट के एप्लिकेशन के लिए GET /v3/travel-rule/vasps/ जैसी ही खोज और फ़िल्टर, जो केवल यह उत्तर देते हैं कि प्रत्येक VASP कौन है और क्या उस तक पहुँचा जा सकता है।",
        "operationId": "listTravelRuleWidgetVasps",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "list_widget_vasps",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "description": "विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 255
            },
            "description": "एक नाम या उपनाम का अंश (केस-असंवेदनशील), एक सटीक LEI, या एक डोमेन (example.com या उस पर कोई URL)। Didit नेटवर्क सदस्य अपने कानूनी नाम, LEI या अपने अनुपालन ईमेल के डोमेन पर मेल खाते हैं।"
          },
          {
            "name": "network",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "GTR",
                "TRUST",
                "VERIFYVASP",
                "SYGNA",
                "TRISA"
              ]
            },
            "description": "केवल वही डायरेक्टरी प्रविष्टियाँ जो किसी नेटवर्क की सदस्य डायरेक्टरी में वर्तमान में सूचीबद्ध हैं।"
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166 alpha-2 या alpha-3 देश कोड। किसी अन्य मान के लिए 400।"
          },
          {
            "name": "reachable",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "true: केवल वे VASP जिन तक आपके एप्लिकेशन के पास उपलब्ध रूट है (Didit नेटवर्क के सदस्य शामिल हैं)। false: केवल वे डायरेक्टरी प्रविष्टियाँ जिन तक यह आज नहीं पहुँच सकता।"
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "directory",
                "didit"
              ]
            },
            "description": "केवल डायरेक्टरी प्रविष्टियाँ, या केवल Didit नेटवर्क के सदस्य।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl 'https://verification.didit.me/v3/travel-rule/widget/{token}/vasps/?search=counterparty'"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड, नाम के अनुसार क्रमबद्ध परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/VaspDirectoryWidgetEntry"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "फ़िल्टर अमान्य है: body प्रत्येक फ़ील्ड का नाम बताती है, उदाहरण के लिए कोई अज्ञात नेटवर्क या देश कोड।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "jurisdiction": [
                    "Use an ISO 3166 alpha-2 or alpha-3 country code."
                  ],
                  "network": [
                    "\"SWIFT\" is not a valid choice."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "410": {
            "description": "सत्र समाप्त हो गया।"
          }
        }
      },
      "post": {
        "summary": "वॉलेट विजेट में प्रतिपक्ष VASP चुनें",
        "description": "विजेट सत्र token-आधारित सार्वजनिक राइट endpoint, किसी API कुंजी की आवश्यकता नहीं है: अंतिम उपयोगकर्ता ने गंतव्य VASP चुना जिसे स्वचालित खोज नाम नहीं दे सकी। केवल COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE या NOT_ENOUGH_COUNTERPARTY_DATA स्थिति वाला आउटबाउंड ट्रांसफ़र ही इसे स्वीकार करता है। ट्रांसफ़र को उस VASP पर रूट किया जाता है और फिर से भेजा जाता है; स्वचालित खोज कभी भी चयन को ओवरराइड नहीं करती है।",
        "operationId": "selectTravelRuleWidgetVasp",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "select_widget_vasp",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "description": "विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "vasp"
                ],
                "properties": {
                  "vasp": {
                    "type": "string",
                    "format": "uuid",
                    "description": "`GET /v3/travel-rule/widget/{token}/vasps/` से VASP का `id`।"
                  }
                }
              },
              "example": {
                "vasp": "9f1c2b34-5d6e-4f70-8a91-b2c3d4e5f607"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/widget/{token}/vasps/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vasp\": \"9f1c2b34-5d6e-4f70-8a91-b2c3d4e5f607\"}'"
          }
        ],
        "responses": {
          "200": {
            "description": "चयन रिकॉर्ड कर लिया गया था और स्थानांतरण फिर से भेजा जा रहा है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "transfer_status": {
                      "type": "string",
                      "description": "चयन के बाद ट्रांसफर की स्थिति।"
                    },
                    "counterparty_vasp": {
                      "type": "string",
                      "description": "अंतिम उपयोगकर्ता द्वारा चुने गए VASP का नाम।"
                    }
                  }
                },
                "example": {
                  "detail": "Counterparty VASP selected; the transfer is being resent.",
                  "transfer_status": "AWAITING_COUNTERPARTY",
                  "counterparty_vasp": "Northwind Exchange"
                }
              }
            }
          },
          "400": {
            "description": "`vasp` अनुपलब्ध है, या किसी भी लाइव निर्देशिका प्रविष्टि में वह ID नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "vasp": [
                    "No directory entry has this id."
                  ]
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "409": {
            "description": "विजेट सत्र Travel Rule ट्रांसफर से लिंक नहीं है, या ट्रांसफर ऐसी स्थिति में आउटबाउंड ट्रांसफर नहीं है जो प्रतिपक्ष को स्वीकार करती हो।"
          },
          "410": {
            "description": "सत्र समाप्त हो गया।"
          }
        }
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/vendor-users/toggle-ongoing-monitoring/": {
      "patch": {
        "summary": "उपयोगकर्ताओं के लिए सतत AML निगरानी टॉगल करें",
        "description": "उपयोगकर्ता स्तर पर सतत AML निगरानी को सक्षम या अक्षम करता है। प्रति उपयोगकर्ता ठीक एक मॉनिटर की गई AML स्क्रीनिंग रखी जाती है; बिना किसी AML स्क्रीनिंग वाले उपयोगकर्ताओं (उदाहरण के लिए इंपोर्ट किए गए उपयोगकर्ता) के लिए पहले एक स्क्रीनिंग बनाई और जांची जाती है, जिसे नियमित AML स्क्रीनिंग के रूप में बिल किया जाता है। डेटा लिखे बिना संख्या और लागत का पूर्वावलोकन करने के लिए estimate_only सेट करें। 20 या उससे कम के बैच इनलाइन (200, COMPLETED) हल होते हैं; बड़े बैच 202 लौटाते हैं और एसिंक्रोनस रूप से चलते हैं।",
        "operationId": "toggle_vendor_users_ongoing_monitoring",
        "x-didit-sdk": {
          "resource": "users",
          "method": "set_ongoing_monitoring",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OngoingMonitoringToggleRequest"
              },
              "example": {
                "is_enabled": true,
                "didit_internal_id_list": [
                  "5b9a0000-0000-4000-8000-00000000f00d"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "अनुमान (जब estimate_only हो) या इनलाइन संसाधित छोटे बैचों के लिए पूरा किया गया कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringToggleResult"
                }
              }
            }
          },
          "202": {
            "description": "बड़े बैच एसिंक्रोनस रूप से संसाधित किए जाते हैं; लौटाए गए job_id के साथ जॉब endpoint को पोल करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "403": {
            "description": "write:sessions विशेषाधिकार मौजूद नहीं है, या सक्षम करने के लिए अपर्याप्त बैलेंस है (अनुमान त्रुटि बॉडी में शामिल है)।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.users.set_ongoing_monitoring(\n    is_enabled=True,\n    didit_internal_id_list=[\"5b9a0000-0000-4000-8000-00000000f00d\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.users.setOngoingMonitoring({\n  is_enabled: true,\n  didit_internal_id_list: [\"5b9a0000-0000-4000-8000-00000000f00d\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Users.SetOngoingMonitoring(ctx, didit.OngoingMonitoringToggleRequest{\n\tIsEnabled:           true,\n\tDiditInternalIDList: didit.Some([]string{\"5b9a0000-0000-4000-8000-00000000f00d\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.OngoingMonitoringToggleRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.users().setOngoingMonitoring(OngoingMonitoringToggleRequest.builder()\n        .isEnabled(true)\n        .diditInternalIdList(List.of(\"5b9a0000-0000-4000-8000-00000000f00d\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->users->setOngoingMonitoring([\n    'is_enabled' => true,\n    'didit_internal_id_list' => ['5b9a0000-0000-4000-8000-00000000f00d'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.users.set_ongoing_monitoring(\n  is_enabled: true,\n  didit_internal_id_list: [\"5b9a0000-0000-4000-8000-00000000f00d\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Users.SetOngoingMonitoringAsync(new OngoingMonitoringToggleRequest\n{\n    IsEnabled = true,\n    DiditInternalIdList = new string[] { \"5b9a0000-0000-4000-8000-00000000f00d\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/vendor-users/toggle-ongoing-monitoring/{job_id}/": {
      "get": {
        "summary": "AML सतत निगरानी कार्य प्राप्त करें",
        "description": "निगरानी टॉगल जॉब की प्रगति और प्रति-परिणाम काउंटर। जब status PENDING या PROCESSING हो, तो हर दो सेकंड में पोल करें।",
        "operationId": "get_vendor_users_ongoing_monitoring_job",
        "x-didit-sdk": {
          "resource": "users",
          "method": "retrieve_ongoing_monitoring_job",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "टॉगल endpoint द्वारा लौटाया गया निगरानी कार्य UUID।"
          }
        ],
        "responses": {
          "200": {
            "description": "जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए अज्ञात जॉब।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.users.retrieve_ongoing_monitoring_job(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.users.retrieveOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Users.RetrieveOngoingMonitoringJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.users().retrieveOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->users->retrieveOngoingMonitoringJob('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.users.retrieve_ongoing_monitoring_job(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Users.RetrieveOngoingMonitoringJobAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/vendor-businesses/toggle-ongoing-monitoring/": {
      "patch": {
        "summary": "व्यवसायों के लिए सतत AML निगरानी टॉगल करें",
        "description": "उपयोगकर्ता टॉगल के समान व्यवसाय-स्तरीय समकक्ष: प्रति व्यवसाय एक मॉनिटर की गई AML स्क्रीनिंग, जिसमें किसी भी AML स्क्रीनिंग से रहित व्यवसायों की स्क्रीनिंग पहले की जाती है (कंपनी एंटिटी)। समान estimate_only, इनलाइन फ़ास्ट-पाथ और एसिंक्रोनस जॉब अनुबंध।",
        "operationId": "toggle_vendor_businesses_ongoing_monitoring",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "set_ongoing_monitoring",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OngoingMonitoringToggleRequest"
              },
              "example": {
                "is_enabled": true,
                "didit_internal_id_list": [
                  "b0000000-0000-4000-8000-0000000000b1"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "अनुमान (जब estimate_only हो) या इनलाइन संसाधित छोटे बैचों के लिए पूरा किया गया कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringToggleResult"
                }
              }
            }
          },
          "202": {
            "description": "बड़े बैच एसिंक्रोनस रूप से संसाधित किए जाते हैं; लौटाए गए job_id के साथ जॉब endpoint को पोल करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "403": {
            "description": "write:sessions विशेषाधिकार मौजूद नहीं है, या सक्षम करने के लिए अपर्याप्त बैलेंस है (अनुमान त्रुटि बॉडी में शामिल है)।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.businesses.set_ongoing_monitoring(\n    is_enabled=True,\n    didit_internal_id_list=[\"b0000000-0000-4000-8000-0000000000b1\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businesses.setOngoingMonitoring({\n  is_enabled: true,\n  didit_internal_id_list: [\"b0000000-0000-4000-8000-0000000000b1\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.SetOngoingMonitoring(ctx, didit.OngoingMonitoringToggleRequest{\n\tIsEnabled:           true,\n\tDiditInternalIDList: didit.Some([]string{\"b0000000-0000-4000-8000-0000000000b1\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.OngoingMonitoringToggleRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businesses().setOngoingMonitoring(OngoingMonitoringToggleRequest.builder()\n        .isEnabled(true)\n        .diditInternalIdList(List.of(\"b0000000-0000-4000-8000-0000000000b1\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businesses->setOngoingMonitoring([\n    'is_enabled' => true,\n    'didit_internal_id_list' => ['b0000000-0000-4000-8000-0000000000b1'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.businesses.set_ongoing_monitoring(\n  is_enabled: true,\n  didit_internal_id_list: [\"b0000000-0000-4000-8000-0000000000b1\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.SetOngoingMonitoringAsync(new OngoingMonitoringToggleRequest\n{\n    IsEnabled = true,\n    DiditInternalIdList = new string[] { \"b0000000-0000-4000-8000-0000000000b1\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/vendor-businesses/toggle-ongoing-monitoring/{job_id}/": {
      "get": {
        "summary": "AML सतत निगरानी कार्य प्राप्त करें",
        "description": "निगरानी टॉगल जॉब की प्रगति और प्रति-परिणाम काउंटर। जब status PENDING या PROCESSING हो, तो हर दो सेकंड में पोल करें।",
        "operationId": "get_vendor_businesses_ongoing_monitoring_job",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "retrieve_ongoing_monitoring_job",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "टॉगल endpoint द्वारा लौटाया गया निगरानी कार्य UUID।"
          }
        ],
        "responses": {
          "200": {
            "description": "जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए अज्ञात जॉब।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.businesses.retrieve_ongoing_monitoring_job(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businesses.retrieveOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.RetrieveOngoingMonitoringJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businesses().retrieveOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businesses->retrieveOngoingMonitoringJob('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.businesses.retrieve_ongoing_monitoring_job(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.RetrieveOngoingMonitoringJobAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/businesses/toggle-ongoing-monitoring/": {
      "patch": {
        "summary": "व्यावसायिक सत्रों के लिए सतत AML निगरानी टॉगल करें",
        "description": "KYB सत्यापनों के लिए सत्र-स्तरीय टॉगल, सत्र संख्या द्वारा संबोधित। AML स्क्रीनिंग के बिना सत्रों के लिए एक बनाया जाता है और सत्र से ही संलग्न किया जाता है। उपयोगकर्ता-स्तरीय endpoint के समान estimate_only, इनलाइन फ़ास्ट-पाथ और एसिंक्रोनस जॉब अनुबंध। पुराने सिंक्रोनस व्यवहार को प्रतिस्थापित करता है जो AML स्क्रीनिंग के बिना सत्रों को छोड़ देता था।",
        "operationId": "toggle_business_sessions_ongoing_monitoring",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "set_session_ongoing_monitoring",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "is_enabled"
                ],
                "properties": {
                  "is_enabled": {
                    "type": "boolean",
                    "description": "निगरानी सक्षम करने के लिए true, इसे अक्षम करने के लिए false।"
                  },
                  "estimate_only": {
                    "type": "boolean",
                    "default": false,
                    "description": "true होने पर, लागत अनुमान लौटाता है और कोई राइट ऑपरेशन नहीं करता है।"
                  },
                  "update_all": {
                    "type": "boolean",
                    "default": false,
                    "description": "एप्लिकेशन की प्रत्येक इकाई पर लागू करें (उपस्थित होने पर filter_* पैरामीटर द्वारा सीमित)।"
                  },
                  "filter_search": {
                    "type": "string"
                  },
                  "filter_status": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "filter_country": {
                    "type": "string"
                  },
                  "filter_date_from": {
                    "type": "string",
                    "format": "date"
                  },
                  "filter_date_to": {
                    "type": "string",
                    "format": "date"
                  },
                  "session_numbers": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "टॉगल करने के लिए व्यवसाय सत्र संख्याएं। तब तक आवश्यक जब तक कि update_all (या लीगेसी toggle_all उपनाम) true न हो।"
                  },
                  "toggle_all": {
                    "type": "boolean",
                    "default": false,
                    "description": "update_all का लीगेसी उपनाम।"
                  },
                  "filter_workflow_id": {
                    "type": "string"
                  }
                }
              },
              "example": {
                "is_enabled": true,
                "session_numbers": [
                  "1001",
                  "1002"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "अनुमान (जब estimate_only हो) या इनलाइन संसाधित छोटे बैचों के लिए पूरा किया गया कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringToggleResult"
                }
              }
            }
          },
          "202": {
            "description": "बड़े बैच एसिंक्रोनस रूप से संसाधित किए जाते हैं; लौटाए गए job_id के साथ जॉब endpoint को पोल करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "403": {
            "description": "write:sessions विशेषाधिकार मौजूद नहीं है, या सक्षम करने के लिए अपर्याप्त बैलेंस है (अनुमान त्रुटि बॉडी में शामिल है)।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.businesses.set_session_ongoing_monitoring(\n    is_enabled=True,\n    session_numbers=[\"1001\", \"1002\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businesses.setSessionOngoingMonitoring({\n  is_enabled: true,\n  session_numbers: [\"1001\", \"1002\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.SetSessionOngoingMonitoring(ctx, didit.BusinessesSetSessionOngoingMonitoringParams{\n\tIsEnabled:      true,\n\tSessionNumbers: didit.Some([]string{\"1001\", \"1002\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.BusinessesSetSessionOngoingMonitoringParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businesses().setSessionOngoingMonitoring(BusinessesSetSessionOngoingMonitoringParams.builder()\n        .isEnabled(true)\n        .sessionNumbers(List.of(\"1001\", \"1002\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businesses->setSessionOngoingMonitoring([\n    'is_enabled' => true,\n    'session_numbers' => ['1001', '1002'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.businesses.set_session_ongoing_monitoring(\n  is_enabled: true,\n  session_numbers: [\"1001\", \"1002\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.SetSessionOngoingMonitoringAsync(new BusinessesSetSessionOngoingMonitoringParams\n{\n    IsEnabled = true,\n    SessionNumbers = new string[] { \"1001\", \"1002\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/businesses/toggle-ongoing-monitoring/{job_id}/": {
      "get": {
        "summary": "AML सतत निगरानी कार्य प्राप्त करें",
        "description": "निगरानी टॉगल जॉब की प्रगति और प्रति-परिणाम काउंटर। जब status PENDING या PROCESSING हो, तो हर दो सेकंड में पोल करें।",
        "operationId": "get_business_sessions_ongoing_monitoring_job",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "retrieve_session_ongoing_monitoring_job",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "टॉगल endpoint द्वारा लौटाया गया निगरानी कार्य UUID।"
          }
        ],
        "responses": {
          "200": {
            "description": "जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OngoingMonitoringJob"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन के लिए अज्ञात जॉब।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.businesses.retrieve_session_ongoing_monitoring_job(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businesses.retrieveSessionOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.RetrieveSessionOngoingMonitoringJob(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businesses().retrieveSessionOngoingMonitoringJob(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businesses->retrieveSessionOngoingMonitoringJob('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.businesses.retrieve_session_ongoing_monitoring_job(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.RetrieveSessionOngoingMonitoringJobAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/": {
      "get": {
        "summary": "केस सूचीबद्ध करें",
        "description": "एप्लिकेशन के लिए केस सूचीबद्ध करें, नवीनतम पहले। फ़िल्टरिंग, खोज और सॉर्टिंग का समर्थन करता है; क्वेरी पैरामीटर देखें। `limit`/`offset` के साथ पेजिनेटेड।",
        "operationId": "list_cases",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार। डिफ़ॉल्ट 50 है।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट।"
          },
          {
            "name": "status__in",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "शामिल करने के लिए स्थितियों की अल्पविराम से अलग की गई सूची, उदाहरण के लिए OPEN,AWAITING_USER।"
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "शामिल करने के लिए प्राथमिकताओं की अल्पविराम से अलग की गई सूची।"
          },
          {
            "name": "source__in",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "शामिल करने के लिए स्रोतों की अल्पविराम से अलग की गई सूची।"
          },
          {
            "name": "blueprint",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "इस ब्लूप्रिंट वाले केसों को फ़िल्टर करें।"
          },
          {
            "name": "assigned_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "इस उपयोगकर्ता को असाइन किए गए केसों को फ़िल्टर करें।"
          },
          {
            "name": "unassigned",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "असाइन नहीं किए गए केस के लिए true, असाइन किए गए केस के लिए false।"
          },
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "इस सटीक टैग वाले केसों को फ़िल्टर करें।"
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "title, case_number, tag, विषय नाम/UUID/external ID, लिंक किए गए सत्र UUID, या लिंक किए गए लेन-देन UUID से मेल खाता है।"
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "निर्माण-समय की निचली सीमा (समावेशी)।"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "निर्माण-समय की ऊपरी सीमा (समावेशी)।"
          },
          {
            "name": "due_before",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "due_at ऊपरी सीमा।"
          },
          {
            "name": "overdue",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "केवल अतिदेय open/awaiting-user केस वापस करने के लिए true।"
          },
          {
            "name": "ordering",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "created_at",
                "-created_at",
                "due_at",
                "-due_at"
              ],
              "default": "-created_at"
            },
            "description": "सॉर्ट क्रम। due_at में nulls को अंत में सॉर्ट किया जाता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/?status__in=OPEN,AWAITING_USER&ordering=-due_at' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.ListAutoPaging(ctx, didit.CasesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड केस सूची।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मेल खाने वाली पंक्तियों की संख्या। 100 तक सटीक, परफ़ॉर्मेंस के लिए उससे अधिक होने पर 100 पर सीमित। अंतिम पेज का पता लगाने के लिए `next` के null होने पर निर्भर रहें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या null।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या null।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CaseListItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "केस बनाएं",
        "description": "किसी संलग्न सत्र/लेन-देन लिंक से विषय प्राप्त करके या सीधे ठीक एक विषय (एक उपयोगकर्ता या एक व्यवसाय) से जुड़ा एक केस बनाएँ। API द्वारा बनाए गए केसों के लिए स्रोत हमेशा `MANUAL` होता है।",
        "operationId": "create_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title"
                ],
                "properties": {
                  "title": {
                    "type": "string",
                    "maxLength": 255
                  },
                  "blueprint": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "CaseBlueprint UUID। बिना किसी ब्लूप्रिंट के लिए छोड़ दें।"
                  },
                  "priority": {
                    "type": "string",
                    "enum": [
                      "LOW",
                      "MEDIUM",
                      "HIGH"
                    ],
                    "default": "MEDIUM"
                  },
                  "due_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "subject": {
                    "type": "object",
                    "description": "आवश्यक है जब तक कि links प्रदान न किया गया हो; केस का ठीक एक विषय।",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "user",
                          "business"
                        ]
                      },
                      "uuid": {
                        "type": "string",
                        "format": "uuid"
                      }
                    }
                  },
                  "links": {
                    "type": "array",
                    "description": "निर्माण के समय संलग्न किए जाने वाले सत्र/व्यवसाय सत्र/लेन-देन, उदाहरण के लिए [{\"entity_type\": \"transaction\", \"entity_uuid\": \"...\"}]। जब विषय छोड़ दिया जाता है, तो विषय पहले लिंक के स्वामी से प्राप्त किया जाता है।",
                    "items": {
                      "type": "object"
                    }
                  },
                  "assigned_to": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "तुरंत असाइन करने के लिए उपयोगकर्ता UUID।"
                  },
                  "review_duplicates": {
                    "type": "boolean",
                    "default": false,
                    "description": "केस बनाने से पहले मौजूदा जांचों की पुनः जांच करें। true होने पर, मौजूदा केस वाले विषय के लिए एक गैर-रिक्त separate_incident_reason की आवश्यकता होती है। कंसोल हमेशा इस सुरक्षा को सक्षम करता है। इसे छोड़ देने से मौजूदा API व्यवहार बना रहता है।"
                  },
                  "separate_incident_reason": {
                    "type": "string",
                    "maxLength": 1000
                  },
                  "source_context": {
                    "$ref": "#/components/schemas/CaseDuplicateCaseFraudSourceContextRequest"
                  }
                }
              },
              "example": {
                "title": "Manual - Jane Doe",
                "blueprint": "b1de0000-0000-4000-8000-000000000002",
                "priority": "HIGH",
                "subject": {
                  "type": "user",
                  "uuid": "5b9a0000-0000-4000-8000-00000000f00d"
                },
                "tags": [
                  "review"
                ]
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"title\": \"Manual - Jane Doe\", \"blueprint\": \"b1de0000-0000-4000-8000-000000000002\", \"priority\": \"HIGH\", \"subject\": {\"type\": \"user\", \"uuid\": \"5b9a0000-0000-4000-8000-00000000f00d\"}, \"tags\": [\"review\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.create(\n    title=\"Manual - Jane Doe\",\n    blueprint=\"b1de0000-0000-4000-8000-000000000002\",\n    priority=\"HIGH\",\n    tags=[\"review\"],\n    subject={\n        \"type\": \"user\",\n        \"uuid\": \"5b9a0000-0000-4000-8000-00000000f00d\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.create({\n  title: \"Manual - Jane Doe\",\n  blueprint: \"b1de0000-0000-4000-8000-000000000002\",\n  priority: \"HIGH\",\n  tags: [\"review\"],\n  subject: {\n    type: \"user\",\n    uuid: \"5b9a0000-0000-4000-8000-00000000f00d\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Create(ctx, didit.CasesCreateParams{\n\tTitle:     \"Manual - Jane Doe\",\n\tBlueprint: didit.String(\"b1de0000-0000-4000-8000-000000000002\"),\n\tPriority:  didit.Some(didit.CasesCreateParamsPriority(\"HIGH\")),\n\tTags:      didit.Some([]string{\"review\"}),\n\tSubject: didit.Some(didit.CasesCreateParamsSubject{\n\t\tType: didit.Some(didit.CasesCreateParamsSubjectType(\"user\")),\n\t\tUUID: didit.String(\"5b9a0000-0000-4000-8000-00000000f00d\"),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CasesCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().create(CasesCreateParams.builder()\n        .title(\"Manual - Jane Doe\")\n        .blueprint(\"b1de0000-0000-4000-8000-000000000002\")\n        .priority(CasesCreateParams.Priority.of(\"HIGH\"))\n        .tags(List.of(\"review\"))\n        .subject(CasesCreateParams.Subject.builder()\n                .type(CasesCreateParams.Subject.Type.of(\"user\"))\n                .uuid(\"5b9a0000-0000-4000-8000-00000000f00d\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->create([\n    'title' => 'Manual - Jane Doe',\n    'blueprint' => 'b1de0000-0000-4000-8000-000000000002',\n    'priority' => 'HIGH',\n    'tags' => ['review'],\n    'subject' => [\n        'type' => 'user',\n        'uuid' => '5b9a0000-0000-4000-8000-00000000f00d',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.create(\n  title: \"Manual - Jane Doe\",\n  blueprint: \"b1de0000-0000-4000-8000-000000000002\",\n  priority: \"HIGH\",\n  tags: [\"review\"],\n  subject: {\n    type: \"user\",\n    uuid: \"5b9a0000-0000-4000-8000-00000000f00d\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.CreateAsync(new CasesCreateParams\n{\n    Title = \"Manual - Jane Doe\",\n    Blueprint = \"b1de0000-0000-4000-8000-000000000002\",\n    Priority = new CasesCreateParamsPriority(\"HIGH\"),\n    Tags = new string[] { \"review\" },\n    Subject = new CasesCreateParamsSubject\n    {\n        Type = new CasesCreateParamsSubjectType(\"user\"),\n        Uuid = \"5b9a0000-0000-4000-8000-00000000f00d\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "केस बनाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "400": {
            "description": "न तो subject और न ही links प्रदान किए गए, या subject/blueprint/assignee नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "409": {
            "description": "डुप्लिकेट समीक्षा सक्षम है और बिना किसी अलग घटना के कारण के एक मौजूदा केस पाया गया था। कोई केस नहीं बनाया गया।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/": {
      "get": {
        "summary": "केस प्राप्त करें",
        "description": "केस को उसके विषय, ब्लूप्रिंट, नोट्स, इवेंट्स, लिंक्स और चेकलिस्ट के साथ प्राप्त करें।",
        "operationId": "get_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.retrieve(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.retrieve(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Retrieve(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().retrieve(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->retrieve('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.retrieve(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RetrieveAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन में केस (या नेस्टेड संसाधन) नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "केस अपडेट करें",
        "description": "केस का शीर्षक, प्राथमिकता, देय तिथि, टैग या स्वामित्व वाली समीक्षा टीम को अपडेट करें। केवल वे फ़ील्ड भेजें जिन्हें आप बदलना चाहते हैं; जिन फ़ील्ड को आप छोड़ देते हैं वे अपना मान बनाए रखते हैं। `tags` पूरी टैग सूची को बदल देता है। `team` इस एप्लिकेशन की एक सक्रिय समीक्षा टीम का uuid लेता है (`GET .../cases/teams/` के साथ उनकी सूची बनाएं), या टीम को हटाने के लिए null लेता है। इसके लिए पूर्ण-पहुँच वाली API कुंजी, या कंसोल सदस्य के लिए `write:cases` की आवश्यकता होती है: प्रतिबंधित पहुँच वाली कुंजी को 403 मिलता है। लागू होने पर PRIORITY_CHANGED, DUE_DATE_CHANGED, TAG_ADDED, TAG_REMOVED और TEAM_CHANGED इवेंट लॉग करता है; शीर्षक परिवर्तन टाइमलाइन इवेंट के बिना सहेजा जाता है। अपडेट किया गया केस लौटाता है।",
        "operationId": "update_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "नया केस शीर्षक।"
                  },
                  "priority": {
                    "type": "string",
                    "enum": [
                      "LOW",
                      "MEDIUM",
                      "HIGH"
                    ]
                  },
                  "due_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true,
                    "description": "नई समय-सीमा। इसे हटाने के लिए null भेजें।"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "पूरी टैग सूची। यह वर्तमान टैग्स को प्रतिस्थापित करती है।"
                  },
                  "team": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "उस समीक्षा टीम का UUID जिसके पास केस का स्वामित्व है। यह इस एप्लिकेशन की सक्रिय टीम होनी चाहिए। टीम को हटाने के लिए null भेजें।"
                  }
                }
              },
              "examples": {
                "Change priority and deadline": {
                  "value": {
                    "priority": "HIGH",
                    "due_at": "2026-11-01T00:00:00Z"
                  }
                },
                "Move the case to a team": {
                  "value": {
                    "team": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
                },
                "Clear the team": {
                  "value": {
                    "team": null
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"priority\": \"HIGH\", \"due_at\": \"2026-08-01T00:00:00Z\"}'"
          },
          {
            "lang": "curl",
            "label": "curl (change team)",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"team\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.update(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    priority=\"HIGH\",\n    due_at=\"2026-11-01T00:00:00Z\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.update(\"c1a5e000-0000-4000-8000-000000000001\", {\n  priority: \"HIGH\",\n  due_at: \"2026-11-01T00:00:00Z\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Update(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesUpdateParams{\n\tPriority: didit.Some(didit.CasesUpdateParamsPriority(\"HIGH\")),\n\tDueAt:    didit.Time(time.Date(2026, 11, 1, 0, 0, 0, 0, time.UTC)),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.OffsetDateTime;\nimport me.didit.Didit;\nimport me.didit.types.CasesUpdateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().update(\"c1a5e000-0000-4000-8000-000000000001\", CasesUpdateParams.builder()\n        .priority(CasesUpdateParams.Priority.of(\"HIGH\"))\n        .dueAt(OffsetDateTime.parse(\"2026-11-01T00:00:00Z\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->update('c1a5e000-0000-4000-8000-000000000001', [\n    'priority' => 'HIGH',\n    'due_at' => '2026-11-01T00:00:00Z',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.update(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  priority: \"HIGH\",\n  due_at: \"2026-11-01T00:00:00Z\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.UpdateAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesUpdateParams\n{\n    Priority = new CasesUpdateParamsPriority(\"HIGH\"),\n    DueAt = DateTimeOffset.Parse(\"2026-11-01T00:00:00Z\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया केस।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "400": {
            "description": "एक फ़ील्ड का सत्यापन विफल रहा। मुख्य भाग को फ़ील्ड नाम द्वारा कीड किया गया है। जब `team` इस एप्लिकेशन की एक सक्रिय समीक्षा टीम नहीं होती है, तो इसे अस्वीकार कर दिया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Team not active in this application": {
                    "value": {
                      "team": [
                        "Choose an active team of this application."
                      ]
                    }
                  },
                  "Invalid priority": {
                    "value": {
                      "priority": [
                        "\"URGENT\" is not a valid choice."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Cases endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `write:cases` आवश्यक है।",
            "content": {
              "application/json": {
                "examples": {
                  "Restricted API Key": {
                    "summary": "प्रतिबंधित एक्सेस वाली API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "write:cases के बिना कंसोल सदस्य, या किसी अन्य एप्लिकेशन की कुंजी",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन में केस नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No Case matches the given query."
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "केस हटाएं",
        "description": "किसी केस को स्थायी रूप से हटाएं। इसके ड्राफ्ट नियामक रिपोर्ट इसके साथ हटा दिए जाते हैं। लिंक किए गए सत्यापन, लोग, कंपनियां और लेन-देन नहीं हटाए जाते हैं। पुनर्स्थापित करने वाला कोई endpoint नहीं है。\n\nयदि केस में कोई अंतिम रूप दी गई नियामक रिपोर्ट है, तो पूरा अनुरोध `409` के साथ अस्वीकृत कर दिया जाता है और कुछ भी नहीं हटाया जाता है। बॉडी में `code: in_filed_report` का उपयोग होता है और प्रत्येक रिपोर्ट को `uuid`, `report_number`, `report_type` और `case_uuid` के साथ नामित किया जाता है। रिपोर्ट हटाएं, फिर अनुरोध दोहराएं।",
        "operationId": "delete_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.delete(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.delete(\"c1a5e000-0000-4000-8000-000000000001\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.Delete(ctx, \"c1a5e000-0000-4000-8000-000000000001\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().delete(\"c1a5e000-0000-4000-8000-000000000001\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->delete('c1a5e000-0000-4000-8000-000000000001');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.delete(\"c1a5e000-0000-4000-8000-000000000001\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.DeleteAsync(\"c1a5e000-0000-4000-8000-000000000001\");"
          }
        ],
        "responses": {
          "204": {
            "description": "केस हटाया गया।"
          },
          "403": {
            "description": "कुंजी केस हटा नहीं सकती। इसके लिए `write:cases` वाली पूर्ण-एक्सेस कुंजी की आवश्यकता होती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "केस इस एप्लिकेशन में मौजूद नहीं है या पहले ही हटाया जा चुका है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "केस में एक अंतिम नियामक रिपोर्ट है। कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InFiledReportError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/assign/": {
      "post": {
        "summary": "केस असाइन या अनअसाइन करें",
        "description": "केस को किसी उपयोगकर्ता को असाइन करें, या assignee_user_id: null भेजकर इसे अनअसाइन करें। जब असाइनी अभी मौजूद नहीं होता, तो assignee_email/assignee_name स्वचालित रूप से एक User रिकॉर्ड बनाते हैं।",
        "operationId": "assign_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "assign",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "assignee_user_id"
                ],
                "properties": {
                  "assignee_user_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "अनअसाइन करने के लिए null।"
                  },
                  "assignee_email": {
                    "type": "string",
                    "format": "email",
                    "nullable": true
                  },
                  "assignee_name": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "example": {
                "assignee_user_id": "9a000000-0000-4000-8000-0000000000aa"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/assign/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"assignee_user_id\": \"9a000000-0000-4000-8000-0000000000aa\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.assign(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    assignee_user_id=\"9a000000-0000-4000-8000-0000000000aa\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.assign(\"c1a5e000-0000-4000-8000-000000000001\", {\n  assignee_user_id: \"9a000000-0000-4000-8000-0000000000aa\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Assign(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesAssignParams{\n\tAssigneeUserID: didit.String(\"9a000000-0000-4000-8000-0000000000aa\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesAssignParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().assign(\"c1a5e000-0000-4000-8000-000000000001\", CasesAssignParams.builder()\n        .assigneeUserId(\"9a000000-0000-4000-8000-0000000000aa\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->assign('c1a5e000-0000-4000-8000-000000000001', [\n    'assignee_user_id' => '9a000000-0000-4000-8000-0000000000aa',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.assign(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  assignee_user_id: \"9a000000-0000-4000-8000-0000000000aa\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.AssignAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesAssignParams\n{\n    AssigneeUserId = \"9a000000-0000-4000-8000-0000000000aa\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस असाइन/अनअसाइन किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/resolve/": {
      "post": {
        "summary": "केस रीसॉल्व करें",
        "description": "केस को पांच समाधानों में से किसी एक के साथ हल करें: FALSE_POSITIVE (कोई चिंता नहीं मिली), VALID_THREAT (चिंता की पुष्टि हुई), INCONCLUSIVE, REQUIREMENTS_NOT_MET या REQUIREMENTS_SATISFIED। यदि ब्लूप्रिंट की चेकलिस्ट वैकल्पिक नहीं है और आइटम अधूरे रहते हैं, या यदि ब्लूप्रिंट के लिए समाधान नोट आवश्यक है और कोई नोट नहीं दिया गया है, तो 400 के साथ ब्लॉक कर दिया जाता है। जब केस के ब्लूप्रिंट में फोर-आइज चेकर चरण (four_eyes_checker_blueprint) होता है, तो समाधान को स्टेज किया जाता है (case.pending_resolution) और केस तुरंत हल होने के बजाय चेकर ब्लूप्रिंट पर चला जाता है; किसी अन्य अधिकारी को approve या reject-approval को कॉल करना होगा। फोर-आइज समाधान को कंसोल सदस्य के रूप में सबमिट करें: API कुंजी द्वारा सबमिट किए गए समाधान में कोई दर्ज मेकर नहीं होता है, इसलिए approve और reject-approval प्रत्येक कॉलर के लिए 403 लौटाते हैं। फोर-आइज ब्लूप्रिंट पर आप `checker` के साथ उस सदस्य का नाम निर्दिष्ट कर सकते हैं जिसे स्वीकृति देनी होगी: तब केवल वही सदस्य समाधान को स्वीकृत या अस्वीकृत कर सकता है, और रिस्पॉन्स का `checker` उनका नाम दिखाता है। `checker` के बिना, समाधान चेकर ब्लूप्रिंट की कतार में प्रतीक्षा करता है। चेकर चरण के बिना किसी ब्लूप्रिंट के लिए `checker` भेजने पर 400 मिलता है।",
        "operationId": "resolve_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "resolve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "resolution"
                ],
                "properties": {
                  "resolution": {
                    "type": "string",
                    "enum": [
                      "FALSE_POSITIVE",
                      "VALID_THREAT",
                      "INCONCLUSIVE",
                      "REQUIREMENTS_NOT_MET",
                      "REQUIREMENTS_SATISFIED"
                    ]
                  },
                  "note": {
                    "type": "string",
                    "nullable": true,
                    "description": "आवश्यक है जब ब्लूप्रिंट require_resolution_note सेट करता है।"
                  },
                  "checker": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "केवल फोर-आईज़ ब्लूप्रिंट। उस सदस्य का उपयोगकर्ता uuid जिसे इस समाधान को स्वीकृत करना होगा (वही id जो किसी केस पर `assigned_to.uuid` है, या किसी समीक्षा टीम पर `members[].user_id` है)। सदस्य के पास इस एप्लिकेशन के लिए केस एक्सेस होना चाहिए और वह समाधान सबमिट करने वाला अधिकारी नहीं हो सकता। इसे छोड़ दें या समाधान को चेकर कतार पर छोड़ने के लिए null भेजें।"
                  }
                }
              },
              "examples": {
                "Resolve": {
                  "value": {
                    "resolution": "FALSE_POSITIVE",
                    "note": "Confirmed legitimate activity after reviewing documents."
                  }
                },
                "Four-eyes blueprint with a named checker": {
                  "value": {
                    "resolution": "VALID_THREAT",
                    "note": "Document tampering confirmed.",
                    "checker": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/resolve/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"resolution\": \"FALSE_POSITIVE\", \"note\": \"Confirmed legitimate activity after reviewing documents.\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.resolve(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    resolution=\"FALSE_POSITIVE\",\n    note=\"Confirmed legitimate activity after reviewing documents.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.resolve(\"c1a5e000-0000-4000-8000-000000000001\", {\n  resolution: \"FALSE_POSITIVE\",\n  note: \"Confirmed legitimate activity after reviewing documents.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Resolve(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesResolveParams{\n\tResolution: \"FALSE_POSITIVE\",\n\tNote:       didit.String(\"Confirmed legitimate activity after reviewing documents.\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesResolveParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().resolve(\"c1a5e000-0000-4000-8000-000000000001\", CasesResolveParams.builder()\n        .resolution(CasesResolveParams.Resolution.of(\"FALSE_POSITIVE\"))\n        .note(\"Confirmed legitimate activity after reviewing documents.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->resolve('c1a5e000-0000-4000-8000-000000000001', [\n    'resolution' => 'FALSE_POSITIVE',\n    'note' => 'Confirmed legitimate activity after reviewing documents.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.resolve(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  resolution: \"FALSE_POSITIVE\",\n  note: \"Confirmed legitimate activity after reviewing documents.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ResolveAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesResolveParams\n{\n    Resolution = \"FALSE_POSITIVE\",\n    Note = \"Confirmed legitimate activity after reviewing documents.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "हल किया गया, या 4-आइज अनुमोदन के लिए स्टेज किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "400": {
            "description": "समाधान अस्वीकार कर दिया गया था। गैर-फ़ील्ड त्रुटियाँ स्ट्रिंग्स की सूची के रूप में आती हैं: एक अपूर्ण चेकलिस्ट, एक अनुपलब्ध आवश्यक नोट, या एक `checker` जिसे जाँचा नहीं जा सका या जो इस एप्लिकेशन के केस एक्सेस वाला सक्रिय समीक्षक नहीं है। `checker` त्रुटियाँ फ़ील्ड के अनुसार आती हैं: नामित सदस्य समाधान सबमिट करने वाला अधिकारी है, या केस के ब्लूप्रिंट में कोई चेकर चरण नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  ]
                },
                "examples": {
                  "Incomplete checklist": {
                    "value": [
                      "Case has incomplete checklist items: Verify source of funds"
                    ]
                  },
                  "Resolution note required": {
                    "value": [
                      "A resolution note is required to resolve this case."
                    ]
                  },
                  "Reviewer access could not be verified": {
                    "value": [
                      "Reviewer access could not be verified. Try again."
                    ]
                  },
                  "Checker is not an active reviewer": {
                    "value": [
                      "Choose an active reviewer with case access to this application."
                    ]
                  },
                  "Checker is the submitting officer": {
                    "value": {
                      "checker": [
                        "The officer who submitted the resolution cannot be its checker."
                      ]
                    }
                  },
                  "Policy has no checker step": {
                    "value": {
                      "checker": [
                        "This review policy has no checker step, so the case resolves directly."
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/reopen/": {
      "post": {
        "summary": "केस पुनः खोलें",
        "description": "उपयोगकर्ता-प्रतीक्षारत (awaiting-user) या समाधान किए गए (resolved) केस को वापस ओपन में ले जाएं, जिससे resolution, resolution_notes, resolved_at, और resolved_by_email साफ़ हो जाते हैं।",
        "operationId": "reopen_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "reopen",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/reopen/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.reopen(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.reopen(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Reopen(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().reopen(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->reopen('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.reopen(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ReopenAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस पुनः खोलें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/request-info/": {
      "post": {
        "summary": "जानकारी का अनुरोध करें (उपयोगकर्ता की प्रतीक्षा में)",
        "description": "ओपन केस को awaiting_user में ले जाएं जब तक सत्यापित उपयोगकर्ता से अधिक जानकारी एकत्र की जा रही हो। यदि कोई समाधान वर्तमान में 4-eyes अनुमोदन के लिए लंबित है, तो 400 के साथ विफल हो जाता है।",
        "operationId": "request_case_info",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "request_info",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/request-info/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.request_info(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requestInfo(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RequestInfo(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requestInfo(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requestInfo('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.request_info(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RequestInfoAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "जानकारी का अनुरोध करें (उपयोगकर्ता की प्रतीक्षा में)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/escalate/": {
      "post": {
        "summary": "केस एस्केलेट करें",
        "description": "केस को उसके ब्लूप्रिंट के कॉन्फ़िगर किए गए escalation_blueprint पर ले जाएं। इसके लिए वर्तमान ब्लूप्रिंट में escalation_enabled और एक escalation_blueprint सेट होना आवश्यक है, अन्यथा 400।",
        "operationId": "escalate_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "escalate",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/escalate/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.escalate(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.escalate(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Escalate(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().escalate(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->escalate('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.escalate(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.EscalateAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस एस्केलेट करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/transfer/": {
      "post": {
        "summary": "ट्रांसफ़र केस",
        "description": "केस को उसी एप्लिकेशन के किसी भिन्न, सक्रिय ब्लूप्रिंट में ले जाएं। इसके लिए वर्तमान ब्लूप्रिंट में transfer_enabled होना आवश्यक है, अन्यथा 400।",
        "operationId": "transfer_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "transfer",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "target_blueprint"
                ],
                "properties": {
                  "target_blueprint": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "example": {
                "target_blueprint": "b1de0000-0000-4000-8000-000000000002"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/transfer/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"target_blueprint\": \"b1de0000-0000-4000-8000-000000000002\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.transfer(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    target_blueprint=\"b1de0000-0000-4000-8000-000000000002\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.transfer(\"c1a5e000-0000-4000-8000-000000000001\", {\n  target_blueprint: \"b1de0000-0000-4000-8000-000000000002\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Transfer(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesTransferParams{\n\tTargetBlueprint: \"b1de0000-0000-4000-8000-000000000002\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesTransferParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().transfer(\"c1a5e000-0000-4000-8000-000000000001\", CasesTransferParams.builder()\n        .targetBlueprint(\"b1de0000-0000-4000-8000-000000000002\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->transfer('c1a5e000-0000-4000-8000-000000000001', [\n    'target_blueprint' => 'b1de0000-0000-4000-8000-000000000002',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.transfer(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  target_blueprint: \"b1de0000-0000-4000-8000-000000000002\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.TransferAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesTransferParams\n{\n    TargetBlueprint = \"b1de0000-0000-4000-8000-000000000002\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस ट्रांसफ़र किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/approve/": {
      "post": {
        "summary": "स्टेज किए गए समाधान को स्वीकृत करें (4-eyes)",
        "description": "चार-आँखों वाले ब्लूप्रिंट पर resolve द्वारा स्टेज किए गए समाधान को लागू करें। कॉलर को इसे सबमिट करने वाले अधिकारी से भिन्न अधिकारी होना चाहिए, अन्यथा 403। जब समाधान किसी जाँचकर्ता (केस का `checker`) को नामित करता है, तो केवल वही सदस्य इसे स्वीकृत कर सकता है: API कुंजी का उपयोग करने वाले सहित किसी भी अन्य कॉलर को 403 मिलता है।",
        "operationId": "approve_case_resolution",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "approve_resolution",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/approve/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.approve_resolution(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.approveResolution(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.ApproveResolution(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().approveResolution(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->approveResolution('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.approve_resolution(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ApproveResolutionAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "समाधान लागू किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "409": {
            "description": "केस में अनुमोदन लंबित कोई समाधान नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कॉलर इस समाधान को स्वीकृत नहीं कर सकता: उन्होंने इसे सबमिट किया था, केस में कोई रिकॉर्ड किया गया मेकर नहीं है, या समाधान किसी भिन्न चेकर का नाम देता है। जब किसी चेकर का नाम दिया जाता है तो API कुंजी को हमेशा यह 403 प्राप्त होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Caller submitted the resolution": {
                    "value": {
                      "detail": "The officer who submitted the resolution cannot approve it."
                    }
                  },
                  "No recorded maker": {
                    "value": {
                      "detail": "Case has no recorded maker for this pending resolution; approve is not permitted."
                    }
                  },
                  "Caller is not the named checker": {
                    "value": {
                      "detail": "Only the named checker can approve this resolution."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/reject-approval/": {
      "post": {
        "summary": "तैयार समाधान अस्वीकार करें (4-आंखें)",
        "description": "resolve द्वारा तैयार किए गए समाधान को अस्वीकार करें और केस को उसके निर्माता ब्लूप्रिंट पर वापस लौटाएं। कॉलर वही अधिकारी नहीं होना चाहिए जिसने इसे सबमिट किया था, अन्यथा 403 मिलता है। जब समाधान में किसी चेकर (केस का `checker`) का नाम होता है, तो केवल वही सदस्य इसे अस्वीकार कर सकता है: किसी अन्य कॉलर को, जिसमें API कुंजी भी शामिल है, 403 मिलता है।",
        "operationId": "reject_case_resolution",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "reject_resolution",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "notes": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "example": {
                "notes": "Needs a clearer rationale before this can be approved."
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/reject-approval/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"notes\": \"Needs a clearer rationale before this can be approved.\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.reject_resolution(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    notes=\"Needs a clearer rationale before this can be approved.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.rejectResolution(\"c1a5e000-0000-4000-8000-000000000001\", {\n  notes: \"Needs a clearer rationale before this can be approved.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RejectResolution(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesRejectResolutionParams{\n\tNotes: didit.String(\"Needs a clearer rationale before this can be approved.\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesRejectResolutionParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().rejectResolution(\"c1a5e000-0000-4000-8000-000000000001\", CasesRejectResolutionParams.builder()\n        .notes(\"Needs a clearer rationale before this can be approved.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->rejectResolution('c1a5e000-0000-4000-8000-000000000001', [\n    'notes' => 'Needs a clearer rationale before this can be approved.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.reject_resolution(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  notes: \"Needs a clearer rationale before this can be approved.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RejectResolutionAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesRejectResolutionParams\n{\n    Notes = \"Needs a clearer rationale before this can be approved.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "समाधान अस्वीकार कर दिया गया, केस मेकर ब्लूप्रिंट पर वापस भेज दिया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDetail"
                }
              }
            }
          },
          "409": {
            "description": "केस में अनुमोदन लंबित कोई समाधान नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कॉलर इस समाधान को अस्वीकार नहीं कर सकता: उन्होंने इसे सबमिट किया था, केस में कोई रिकॉर्ड किया गया मेकर नहीं है, या समाधान किसी भिन्न चेकर का नाम देता है। जब किसी चेकर का नाम दिया जाता है तो API कुंजी को हमेशा यह 403 प्राप्त होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Caller submitted the resolution": {
                    "value": {
                      "detail": "The officer who submitted the resolution cannot reject it."
                    }
                  },
                  "No recorded maker": {
                    "value": {
                      "detail": "Case has no recorded maker for this pending resolution; reject is not permitted."
                    }
                  },
                  "Caller is not the named checker": {
                    "value": {
                      "detail": "Only the named checker can reject this resolution."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/entity-actions/": {
      "post": {
        "operationId": "apply_case_entity_action",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "apply_entity_action",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CaseActionCaseEntityActionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseActionCaseEntityActionRequest"
              },
              "example": {
                "client_reference": "e1a00000-0000-4000-8000-000000000001",
                "action": "add_tags",
                "tags": [
                  "source-of-funds-reviewed"
                ]
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CaseActionCaseEntityActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseActionCaseEntityActionResult"
                }
              }
            },
            "description": ""
          },
          "409": {
            "description": "संदर्भ किसी अन्य कार्रवाई के payload से संबंधित है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "केस विषय पर एक स्पष्ट कार्रवाई लागू करें। कार्रवाई रसीद प्राप्त करने और पुनः प्रयासों को आइडेम्पोटेंट बनाने के लिए एक अद्वितीय client_reference प्रदान करें। भिन्न payload के साथ उस संदर्भ का पुनः उपयोग करने पर 409 प्राप्त होता है। संदर्भ के साथ, HTTP स्थिति 200 होने पर भी receipt.status की जांच करें: FAILED का अर्थ है कि कोई कार्रवाई लागू नहीं की गई थी। किसी विफल अनुरोध को दोहराने पर यह तब तक फिर से निष्पादित नहीं होता जब तक कि retry सत्य न हो। client_reference छोड़ने पर लीगेसी रिस्पॉन्स सुरक्षित रहता है।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.apply_entity_action(\n    \"11111111-2222-3333-4444-555555555555\",\n    client_reference=\"e1a00000-0000-4000-8000-000000000001\",\n    action=\"add_tags\",\n    tags=[\"source-of-funds-reviewed\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.applyEntityAction(\"11111111-2222-3333-4444-555555555555\", {\n  client_reference: \"e1a00000-0000-4000-8000-000000000001\",\n  action: \"add_tags\",\n  tags: [\"source-of-funds-reviewed\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.ApplyEntityAction(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CaseActionCaseEntityActionRequest{\n\tClientReference: didit.String(\"e1a00000-0000-4000-8000-000000000001\"),\n\tAction:          didit.CaseActionActionEnum(\"add_tags\"),\n\tTags:            didit.Some([]string{\"source-of-funds-reviewed\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CaseActionActionEnum;\nimport me.didit.types.CaseActionCaseEntityActionRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().applyEntityAction(\"11111111-2222-3333-4444-555555555555\", CaseActionCaseEntityActionRequest.builder()\n        .clientReference(\"e1a00000-0000-4000-8000-000000000001\")\n        .action(CaseActionActionEnum.of(\"add_tags\"))\n        .tags(List.of(\"source-of-funds-reviewed\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->applyEntityAction('11111111-2222-3333-4444-555555555555', [\n    'client_reference' => 'e1a00000-0000-4000-8000-000000000001',\n    'action' => 'add_tags',\n    'tags' => ['source-of-funds-reviewed'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.apply_entity_action(\n  \"11111111-2222-3333-4444-555555555555\",\n  client_reference: \"e1a00000-0000-4000-8000-000000000001\",\n  action: \"add_tags\",\n  tags: [\"source-of-funds-reviewed\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ApplyEntityActionAsync(\"11111111-2222-3333-4444-555555555555\", new CaseActionCaseEntityActionRequest\n{\n    ClientReference = \"e1a00000-0000-4000-8000-000000000001\",\n    Action = \"add_tags\",\n    Tags = new string[] { \"source-of-funds-reviewed\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/print/": {
      "get": {
        "summary": "केस प्रिंट करें (PDF)",
        "description": "पूरे केस (सारांश, विषय, चेकलिस्ट स्थिति, नोट्स, संलग्न सत्र/लेन-देन, इवेंट्स, FIU रिपोर्ट सूची) को PDF के रूप में रेंडर करें और एक प्री-साइन किया हुआ डाउनलोड URL लौटाएं।",
        "operationId": "print_case",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "print",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/print/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.print(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.print(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Print(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().print(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->print('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.print(\"c1a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.PrintAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्री-साइन किया गया PDF URL।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/": {
      "get": {
        "operationId": "list_case_notes",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "परिणामों को क्रमित करते समय किस फ़ील्ड का उपयोग करना है।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "प्रति पेज लौटाए जाने वाले परिणामों की संख्या।",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "प्रारंभिक इंडेक्स जहाँ से परिणाम वापस करने हैं।",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseCollaborationPaginatedCaseNoteList"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "404": {
            "description": "इस कॉलर के लिए केस या नोट अनुपलब्ध है।"
          }
        },
        "tags": [
          "Case Management"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.notes.list(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.notes.list(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.Notes.ListAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasesNotesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().notes().list(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->notes->list('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.notes.list(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.Notes.ListAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "operationId": "create_case_note",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationCaseNoteCreateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationCaseNoteCreateRequest"
              },
              "example": {
                "comment": "Proof of address matches the ID document."
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationCaseNoteCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseCollaborationCaseNote"
                }
              }
            },
            "description": ""
          },
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseCollaborationCaseNote"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "404": {
            "description": "इस कॉलर के लिए केस या नोट अनुपलब्ध है।"
          },
          "409": {
            "description": "यह क्लाइंट संदर्भ पहले से ही किसी अन्य नोट के लिए या हटाए जा चुके नोट के लिए उपयोग किया गया था।"
          }
        },
        "tags": [
          "Case Management"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "केस-स्कोप वाला नोट जोड़ें। एक वैकल्पिक client_reference बिना किसी डुप्लिकेट गतिविधि या सूचनाओं के एक अपरिवर्तित पुनः प्रयास पर वही नोट वापस लौटाता है। reply_to को इस केस में एक लाइव नोट की पहचान करनी चाहिए। रिस्पॉन्स में उस अंश को सहेजे गए उत्तर में कॉपी किए बिना एक सीमित पैरेंट अंश शामिल होता है।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.notes.create(\n    \"11111111-2222-3333-4444-555555555555\",\n    comment=\"Proof of address matches the ID document.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.notes.create(\"11111111-2222-3333-4444-555555555555\", {\n  comment: \"Proof of address matches the ID document.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Notes.Create(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CaseCollaborationCaseNoteCreateRequest{\n\tComment: \"Proof of address matches the ID document.\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseCollaborationCaseNoteCreateRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().notes().create(\"11111111-2222-3333-4444-555555555555\", CaseCollaborationCaseNoteCreateRequest.builder()\n        .comment(\"Proof of address matches the ID document.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->notes->create('11111111-2222-3333-4444-555555555555', [\n    'comment' => 'Proof of address matches the ID document.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.notes.create(\n  \"11111111-2222-3333-4444-555555555555\",\n  comment: \"Proof of address matches the ID document.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Notes.CreateAsync(\"11111111-2222-3333-4444-555555555555\", new CaseCollaborationCaseNoteCreateRequest\n{\n    Comment = \"Proof of address matches the ID document.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/{note_uuid}/": {
      "patch": {
        "operationId": "root_partial_update",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "note_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationPatchedCaseNoteUpdateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationPatchedCaseNoteUpdateRequest"
              },
              "example": {
                "is_pinned": true
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CaseCollaborationPatchedCaseNoteUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseCollaborationCaseNote"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "404": {
            "description": "इस कॉलर के लिए केस या नोट अनुपलब्ध है।"
          }
        },
        "tags": [
          "Case Management"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "मौजूदा नोट को पिन या अनपिन करें। पिन किए गए नोट पहले दिखाई देते हैं। पिन परिवर्तन केस गतिविधि में दर्ज किए जाते हैं और साक्ष्य या स्रोत निर्णयों को नहीं बदलते हैं।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.notes.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n    is_pinned=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.notes.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n  {\n    is_pinned: true,\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Notes.Update(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", didit.CaseCollaborationPatchedCaseNoteUpdateRequest{\n\tIsPinned: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseCollaborationPatchedCaseNoteUpdateRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().notes().update(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", CaseCollaborationPatchedCaseNoteUpdateRequest.builder()\n        .isPinned(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->notes->update('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555', [\n    'is_pinned' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.notes.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n  is_pinned: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Notes.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", new CaseCollaborationPatchedCaseNoteUpdateRequest\n{\n    IsPinned = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "operationId": "delete_case_note",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "note_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "204": {
            "description": "नोट स्थायी रूप से हटा दिया गया है। हटाए गए पैरेंट अंश के बिना, उत्तर बने रहते हैं। अटैचमेंट हटा दिए जाते हैं जब तक कि कोई अन्य नोट अभी भी उनका उपयोग न कर रहा हो।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "404": {
            "description": "इस कॉलर के लिए केस या नोट अनुपलब्ध है।"
          }
        },
        "tags": [
          "Case Management"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.notes.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.notes.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.Notes.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().notes().delete(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->notes->delete('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.notes.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.Notes.DeleteAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/notes/presign/": {
      "post": {
        "summary": "नोट अटैचमेंट अपलोड करें",
        "description": "नोट में संलग्न करने के लिए एक फ़ाइल (JPEG, PNG, WebP, PDF, सादा पाठ, या CSV; अधिकतम 5 MB) अपलोड करें। नोट के attachments ऐरे में पास करने के लिए s3_key लौटाता है।",
        "operationId": "upload_case_note_attachment",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "create_attachment_upload",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/notes/presign/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'file=@evidence.pdf'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.notes.create_attachment_upload(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    file=open(\"document.pdf\", \"rb\"),\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.notes.createAttachmentUpload(\"c1a5e000-0000-4000-8000-000000000001\", {\n  file: await fileFromPath(\"document.pdf\"),\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Notes.CreateAttachmentUpload(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesNotesCreateAttachmentUploadParams{\n\tFile: didit.FileFromPath(\"document.pdf\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.CasesNotesCreateAttachmentUploadParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().notes().createAttachmentUpload(\"c1a5e000-0000-4000-8000-000000000001\", CasesNotesCreateAttachmentUploadParams.builder()\n        .file(Path.of(\"document.pdf\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->notes->createAttachmentUpload('c1a5e000-0000-4000-8000-000000000001', [\n    'file' => File::fromPath('document.pdf'),\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.notes.create_attachment_upload(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  file: Pathname(\"document.pdf\")\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Notes.CreateAttachmentUploadAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesNotesCreateAttachmentUploadParams\n{\n    File = FileUpload.FromPath(\"document.pdf\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "फ़ाइल अपलोड हो गई।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "s3_key": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "filename": {
                      "type": "string"
                    },
                    "file_size": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "कोई फ़ाइल नहीं है, असमर्थित सामग्री प्रकार है, या फ़ाइल 5 MB से अधिक है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "get": {
        "summary": "नोट अटैचमेंट URL प्राप्त करें",
        "description": "केस के किसी एक नोट पर पहले से संग्रहीत अटैचमेंट के लिए एक नया प्री-साइन्ड डाउनलोड URL जनरेट करें।",
        "operationId": "get_case_note_attachment_url",
        "x-didit-sdk": {
          "resource": "cases.notes",
          "method": "retrieve_attachment_url",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          },
          {
            "name": "s3_key",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "अटैचमेंट की s3_key, जैसा कि अपलोड द्वारा लौटाया गया है या नोट पर सूचीबद्ध है।",
            "required": true
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/notes/presign/?s3_key=case-notes/c1a5e000-0000-4000-8000-000000000001/evidence.pdf' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.notes.retrieve_attachment_url(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    s3_key=\"your-s3-key\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.notes.retrieveAttachmentUrl(\"c1a5e000-0000-4000-8000-000000000001\", {\n  s3_key: \"your-s3-key\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Notes.RetrieveAttachmentURL(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesNotesRetrieveAttachmentURLParams{\n\tS3Key: \"your-s3-key\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesNotesRetrieveAttachmentUrlParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().notes().retrieveAttachmentUrl(\"c1a5e000-0000-4000-8000-000000000001\", CasesNotesRetrieveAttachmentUrlParams.builder()\n        .s3Key(\"your-s3-key\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->notes->retrieveAttachmentUrl('c1a5e000-0000-4000-8000-000000000001', [\n    's3_key' => 'your-s3-key',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.notes.retrieve_attachment_url(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  s3_key: \"your-s3-key\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Notes.RetrieveAttachmentUrlAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesNotesRetrieveAttachmentUrlParams\n{\n    S3Key = \"your-s3-key\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्री-साइन किया गया URL।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "s3_key": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "filename": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "s3_key अनुपलब्ध है या इस केस से संबंधित नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/links/": {
      "get": {
        "summary": "केस लिंक सूचीबद्ध करें",
        "description": "केस से जुड़े सत्र, व्यावसायिक सत्र और लेन-देन सूचीबद्ध करें।",
        "operationId": "list_case_links",
        "x-didit-sdk": {
          "resource": "cases.links",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/links/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.links.list(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.links.list(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Links.List(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().links().list(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->links->list('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.links.list(\"c1a5e000-0000-4000-8000-000000000001\").each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Links.ListAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "केस लिंक।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CaseLink"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "केस लिंक जोड़ें",
        "description": "केस में कोई सत्र, व्यवसाय सत्र या लेन-देन संलग्न करें। यदि इकाई केस से भिन्न विषय से संबंधित है, तो 400 के साथ अस्वीकृत कर दिया जाता है।",
        "operationId": "create_case_link",
        "x-didit-sdk": {
          "resource": "cases.links",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "entity_type",
                  "entity_uuid"
                ],
                "properties": {
                  "entity_type": {
                    "type": "string",
                    "enum": [
                      "session",
                      "business_session",
                      "transaction"
                    ]
                  },
                  "entity_uuid": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "example": {
                "entity_type": "transaction",
                "entity_uuid": "77000000-0000-4000-8000-000000000077"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/links/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"entity_type\": \"transaction\", \"entity_uuid\": \"77000000-0000-4000-8000-000000000077\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.links.create(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    entity_type=\"transaction\",\n    entity_uuid=\"77000000-0000-4000-8000-000000000077\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.links.create(\"c1a5e000-0000-4000-8000-000000000001\", {\n  entity_type: \"transaction\",\n  entity_uuid: \"77000000-0000-4000-8000-000000000077\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Links.Create(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesLinksCreateParams{\n\tEntityType: \"transaction\",\n\tEntityUUID: \"77000000-0000-4000-8000-000000000077\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesLinksCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().links().create(\"c1a5e000-0000-4000-8000-000000000001\", CasesLinksCreateParams.builder()\n        .entityType(CasesLinksCreateParams.EntityType.of(\"transaction\"))\n        .entityUuid(\"77000000-0000-4000-8000-000000000077\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->links->create('c1a5e000-0000-4000-8000-000000000001', [\n    'entity_type' => 'transaction',\n    'entity_uuid' => '77000000-0000-4000-8000-000000000077',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.links.create(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  entity_type: \"transaction\",\n  entity_uuid: \"77000000-0000-4000-8000-000000000077\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Links.CreateAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesLinksCreateParams\n{\n    EntityType = \"transaction\",\n    EntityUuid = \"77000000-0000-4000-8000-000000000077\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "लिंक बनाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseLink"
                }
              }
            }
          },
          "400": {
            "description": "इकाई केस विषय से भिन्न प्रोफ़ाइल से संबंधित है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/links/{link_uuid}/": {
      "delete": {
        "summary": "केस लिंक हटाएं",
        "description": "केस से किसी लिंक किए गए सत्र, व्यवसाय सत्र या लेन-देन को अलग करें।",
        "operationId": "delete_case_link",
        "x-didit-sdk": {
          "resource": "cases.links",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          },
          {
            "name": "link_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11000000-0000-4000-8000-000000000004"
            },
            "description": "लिंक UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/links/11000000-0000-4000-8000-000000000004/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.links.delete(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    \"11000000-0000-4000-8000-000000000004\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.links.delete(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  \"11000000-0000-4000-8000-000000000004\",\n);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.Links.Delete(ctx, \"c1a5e000-0000-4000-8000-000000000001\", \"11000000-0000-4000-8000-000000000004\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().links().delete(\"c1a5e000-0000-4000-8000-000000000001\", \"11000000-0000-4000-8000-000000000004\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->links->delete('c1a5e000-0000-4000-8000-000000000001', '11000000-0000-4000-8000-000000000004');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.links.delete(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  \"11000000-0000-4000-8000-000000000004\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.Links.DeleteAsync(\"c1a5e000-0000-4000-8000-000000000001\", \"11000000-0000-4000-8000-000000000004\");"
          }
        ],
        "responses": {
          "204": {
            "description": "लिंक हटाया गया।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/events/": {
      "get": {
        "summary": "केस इवेंट सूचीबद्ध करें",
        "description": "केस की केवल-पढ़ने योग्य ऑडिट टाइमलाइन (निर्मित, स्थिति परिवर्तन, असाइनमेंट, समाधान, एस्केलेशन, ट्रांसफर, टैग/प्राथमिकता/नियत तिथि परिवर्तन, एंटिटी कार्रवाइयाँ, और बहुत कुछ)।",
        "operationId": "list_case_events",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "list_events",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "शून्य-आधारित ऑफ़सेट।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/events/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.list_events(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.listEvents(\"c1a5e000-0000-4000-8000-000000000001\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.ListEventsAutoPaging(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesListEventsParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().listEvents(\"c1a5e000-0000-4000-8000-000000000001\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->listEvents('c1a5e000-0000-4000-8000-000000000001') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.list_events(\"c1a5e000-0000-4000-8000-000000000001\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.ListEventsAsync(\"c1a5e000-0000-4000-8000-000000000001\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड इवेंट, नवीनतम पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मेल खाने वाली पंक्तियों की संख्या। 100 तक सटीक, परफ़ॉर्मेंस के लिए उससे अधिक होने पर 100 पर सीमित। अंतिम पेज का पता लगाने के लिए `next` के null होने पर निर्भर रहें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या null।"
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या null।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CaseEvent"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/checklist/": {
      "get": {
        "summary": "केस चेकलिस्ट सूचीबद्ध करें",
        "description": "केस के चेकलिस्ट आइटमों को क्रमित रूप से सूचीबद्ध करें, जिन्हें निर्माण के समय ब्लूप्रिंट के content_config.checklist.items से कॉपी किया गया था।",
        "operationId": "list_case_checklist",
        "x-didit-sdk": {
          "resource": "cases.checklist",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/checklist/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.checklist.list(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.checklist.list(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Checklist.List(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().checklist().list(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->checklist->list('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.checklist.list(\"c1a5e000-0000-4000-8000-000000000001\").each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Checklist.ListAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "चेकलिस्ट आइटम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CaseChecklistItem"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/checklist/{item_uuid}/": {
      "patch": {
        "summary": "चेकलिस्ट आइटम टॉगल करें",
        "description": "चेकलिस्ट आइटम को पूर्ण या अपूर्ण के रूप में चिह्नित करें। किसी भी आइटम के अपूर्ण रहने पर समाधान अवरुद्ध रहता है, जब तक कि ब्लूप्रिंट चेकलिस्ट को वैकल्पिक चिह्नित न करे।",
        "operationId": "toggle_case_checklist_item",
        "x-didit-sdk": {
          "resource": "cases.checklist",
          "method": "toggle_item",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          },
          {
            "name": "item_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c4ec0000-0000-4000-8000-000000000005"
            },
            "description": "चेकलिस्ट आइटम UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "is_completed"
                ],
                "properties": {
                  "is_completed": {
                    "type": "boolean"
                  }
                }
              },
              "example": {
                "is_completed": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/checklist/c4ec0000-0000-4000-8000-000000000005/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"is_completed\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.checklist.toggle_item(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    \"c4ec0000-0000-4000-8000-000000000005\",\n    is_completed=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.checklist.toggleItem(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  \"c4ec0000-0000-4000-8000-000000000005\",\n  {\n    is_completed: true,\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Checklist.ToggleItem(ctx, \"c1a5e000-0000-4000-8000-000000000001\", \"c4ec0000-0000-4000-8000-000000000005\", didit.CasesChecklistToggleItemParams{\n\tIsCompleted: true,\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesChecklistToggleItemParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().checklist().toggleItem(\"c1a5e000-0000-4000-8000-000000000001\", \"c4ec0000-0000-4000-8000-000000000005\", CasesChecklistToggleItemParams.builder()\n        .isCompleted(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->checklist->toggleItem('c1a5e000-0000-4000-8000-000000000001', 'c4ec0000-0000-4000-8000-000000000005', [\n    'is_completed' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.checklist.toggle_item(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  \"c4ec0000-0000-4000-8000-000000000005\",\n  is_completed: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Checklist.ToggleItemAsync(\"c1a5e000-0000-4000-8000-000000000001\", \"c4ec0000-0000-4000-8000-000000000005\", new CasesChecklistToggleItemParams\n{\n    IsCompleted = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया चेकलिस्ट आइटम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseChecklistItem"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/aml/": {
      "get": {
        "summary": "केस AML हिट्स सूचीबद्ध करें",
        "description": "केस के विषय के लिए AML स्क्रीनिंग हिट्स सूचीबद्ध करें। POST /v3/aml/ द्वारा लौटाए गए हिट्स के समान संरचना।",
        "operationId": "list_case_aml_hits",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "list_aml_hits",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/aml/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.list_aml_hits(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.listAmlHits(\"c1a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.ListAMLHits(ctx, \"c1a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().listAmlHits(\"c1a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->listAmlHits('c1a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.list_aml_hits(\"c1a5e000-0000-4000-8000-000000000001\").each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ListAmlHitsAsync(\"c1a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "AML हिट्स।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AMLScreening"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/statistics/": {
      "get": {
        "summary": "केस एनालिटिक्स",
        "description": "तिथि सीमा के लिए समग्र केस एनालिटिक्स (डिफ़ॉल्ट रूप से पिछले 30 दिन; अधिकतम 731 दिन)। चार्ट, तालिकाएँ, कुल योग, असाइनमेंट इवेंट और वर्तमान कतार संख्याएँ समान एप्लिकेशन-स्कोप्ड फ़िल्टर का उपयोग करते हैं। फ़िल्टर वर्तमान केस मानों का उपयोग करते हैं। तिथियाँ प्रत्येक मेट्रिक इवेंट पर लागू होती हैं, इसलिए इस अवधि के दौरान असाइन या हल किए गए पुराने केस शामिल रहते हैं। कतार की गहराई तिथि सीमा से स्वतंत्र है। अमान्य फ़िल्टर 400 लौटाते हैं; अज्ञात ब्लूप्रिंट या असाइनी एक खाली परिणाम लौटाते हैं।",
        "operationId": "get_case_analytics",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "retrieve_statistics",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "रेंज की शुरुआत (सम्मिलित)। डिफ़ॉल्ट 30 दिन पहले है।"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "रेंज की समाप्ति (सम्मिलित)। डिफ़ॉल्ट आज है।"
          },
          {
            "name": "blueprint",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वर्तमान ब्लूप्रिंट UUID द्वारा फ़िल्टर करें।"
          },
          {
            "name": "assigned_to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वर्तमान में असाइन किए गए समीक्षक उपयोगकर्ता UUID द्वारा फ़िल्टर करें।"
          },
          {
            "name": "priority",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "LOW",
                "MEDIUM",
                "HIGH"
              ]
            },
            "description": "वर्तमान केस प्राथमिकता के आधार पर फ़िल्टर करें।"
          },
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "MANUAL",
                "AML_SCREENING",
                "TRANSACTION_RULE",
                "WORKFLOW_BUILDER"
              ]
            },
            "description": "केस निर्माण स्रोत द्वारा फ़िल्टर करें।"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "OPEN",
                "AWAITING_USER",
                "RESOLVED"
              ]
            },
            "description": "वर्तमान केस स्थिति के आधार पर फ़िल्टर करें।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/statistics/?date_from=2026-06-01&date_to=2026-06-30' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.retrieve_statistics()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.retrieveStatistics();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RetrieveStatistics(ctx, didit.CasesRetrieveStatisticsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().retrieveStatistics();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->retrieveStatistics();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.retrieve_statistics\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RetrieveStatisticsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "एनालिटिक्स payload।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "series": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "format": "date"
                          },
                          "created": {
                            "type": "integer"
                          },
                          "reviewed": {
                            "type": "integer"
                          }
                        }
                      }
                    },
                    "tables": {
                      "type": "object",
                      "properties": {
                        "officer": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "description": "डाइमेंशन मान: अधिकारी का ईमेल, \"blueprint_name:uuid\", स्रोत, या स्थिति। अनुपलब्ध डाइमेंशन्स के लिए \"unassigned\"/\"none\"।"
                              },
                              "created": {
                                "type": "integer"
                              },
                              "assigned": {
                                "type": "integer"
                              },
                              "resolved": {
                                "type": "integer"
                              },
                              "threat_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "false_positive_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "unresolved": {
                                "type": "integer"
                              },
                              "reassignment_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "escalation_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_assign_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_resolve_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_handling_hours": {
                                "type": "number",
                                "format": "float"
                              }
                            }
                          }
                        },
                        "blueprint": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "description": "डाइमेंशन मान: अधिकारी का ईमेल, \"blueprint_name:uuid\", स्रोत, या स्थिति। अनुपलब्ध डाइमेंशन्स के लिए \"unassigned\"/\"none\"।"
                              },
                              "created": {
                                "type": "integer"
                              },
                              "assigned": {
                                "type": "integer"
                              },
                              "resolved": {
                                "type": "integer"
                              },
                              "threat_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "false_positive_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "unresolved": {
                                "type": "integer"
                              },
                              "reassignment_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "escalation_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_assign_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_resolve_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_handling_hours": {
                                "type": "number",
                                "format": "float"
                              }
                            }
                          }
                        },
                        "source": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "description": "डाइमेंशन मान: अधिकारी का ईमेल, \"blueprint_name:uuid\", स्रोत, या स्थिति। अनुपलब्ध डाइमेंशन्स के लिए \"unassigned\"/\"none\"।"
                              },
                              "created": {
                                "type": "integer"
                              },
                              "assigned": {
                                "type": "integer"
                              },
                              "resolved": {
                                "type": "integer"
                              },
                              "threat_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "false_positive_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "unresolved": {
                                "type": "integer"
                              },
                              "reassignment_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "escalation_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_assign_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_resolve_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_handling_hours": {
                                "type": "number",
                                "format": "float"
                              }
                            }
                          }
                        },
                        "status": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "key": {
                                "type": "string",
                                "description": "डाइमेंशन मान: अधिकारी का ईमेल, \"blueprint_name:uuid\", स्रोत, या स्थिति। अनुपलब्ध डाइमेंशन्स के लिए \"unassigned\"/\"none\"।"
                              },
                              "created": {
                                "type": "integer"
                              },
                              "assigned": {
                                "type": "integer"
                              },
                              "resolved": {
                                "type": "integer"
                              },
                              "threat_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "false_positive_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "unresolved": {
                                "type": "integer"
                              },
                              "reassignment_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "escalation_rate": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_assign_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_resolve_hours": {
                                "type": "number",
                                "format": "float"
                              },
                              "avg_handling_hours": {
                                "type": "number",
                                "format": "float"
                              }
                            }
                          }
                        }
                      }
                    },
                    "totals": {
                      "type": "object",
                      "properties": {
                        "created": {
                          "type": "integer"
                        },
                        "assigned": {
                          "type": "integer"
                        },
                        "resolved": {
                          "type": "integer"
                        },
                        "threat_rate": {
                          "type": "number",
                          "format": "float"
                        },
                        "false_positive_rate": {
                          "type": "number",
                          "format": "float"
                        },
                        "unresolved": {
                          "type": "integer"
                        },
                        "reassignment_rate": {
                          "type": "number",
                          "format": "float"
                        },
                        "escalation_rate": {
                          "type": "number",
                          "format": "float"
                        },
                        "avg_assign_hours": {
                          "type": "number",
                          "format": "float"
                        },
                        "avg_resolve_hours": {
                          "type": "number",
                          "format": "float"
                        },
                        "avg_handling_hours": {
                          "type": "number",
                          "format": "float"
                        }
                      }
                    },
                    "queue": {
                      "type": "object",
                      "description": "लाइव स्नैपशॉट, दिनांक सीमा के अनुसार स्कोप नहीं किया गया।",
                      "properties": {
                        "open": {
                          "type": "integer"
                        },
                        "overdue": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/bulk/status/": {
      "post": {
        "summary": "केस की स्थिति को बल्क में अपडेट करें",
        "description": "एक ही कॉल में कई केस पर समान स्थिति ट्रांज़िशन लागू करें: OPEN फिर से खोलता है, AWAITING_USER जानकारी का अनुरोध करता है, RESOLVED समाधान करता है (समाधान आवश्यक है)। प्रत्येक केस का स्वतंत्र रूप से मूल्यांकन किया जाता है; गेट विफलताएं (अपूर्ण चेकलिस्ट, अनुपलब्ध आवश्यक नोट) पूरे बैच को रोके बिना प्रति केस रिपोर्ट की जाती हैं।",
        "operationId": "bulk_update_case_status",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "bulk_update_status",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "case_uuids",
                  "status"
                ],
                "properties": {
                  "case_uuids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "OPEN",
                      "AWAITING_USER",
                      "RESOLVED"
                    ]
                  },
                  "resolution": {
                    "type": "string",
                    "enum": [
                      "FALSE_POSITIVE",
                      "VALID_THREAT",
                      "INCONCLUSIVE",
                      "REQUIREMENTS_NOT_MET",
                      "REQUIREMENTS_SATISFIED"
                    ],
                    "description": "आवश्यक है जब स्थिति RESOLVED हो।"
                  },
                  "note": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "example": {
                "case_uuids": [
                  "c1a5e000-0000-4000-8000-000000000001"
                ],
                "status": "RESOLVED",
                "resolution": "FALSE_POSITIVE"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/bulk/status/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"case_uuids\": [\"c1a5e000-0000-4000-8000-000000000001\"], \"status\": \"RESOLVED\", \"resolution\": \"FALSE_POSITIVE\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.bulk_update_status(\n    case_uuids=[\"c1a5e000-0000-4000-8000-000000000001\"],\n    status=\"RESOLVED\",\n    resolution=\"FALSE_POSITIVE\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.bulkUpdateStatus({\n  case_uuids: [\"c1a5e000-0000-4000-8000-000000000001\"],\n  status: \"RESOLVED\",\n  resolution: \"FALSE_POSITIVE\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.BulkUpdateStatus(ctx, didit.CasesBulkUpdateStatusParams{\n\tCaseUUIDs:  []string{\"c1a5e000-0000-4000-8000-000000000001\"},\n\tStatus:     \"RESOLVED\",\n\tResolution: didit.Some(didit.CasesBulkUpdateStatusParamsResolution(\"FALSE_POSITIVE\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CasesBulkUpdateStatusParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().bulkUpdateStatus(CasesBulkUpdateStatusParams.builder()\n        .caseUuids(List.of(\"c1a5e000-0000-4000-8000-000000000001\"))\n        .status(CasesBulkUpdateStatusParams.Status.of(\"RESOLVED\"))\n        .resolution(CasesBulkUpdateStatusParams.Resolution.of(\"FALSE_POSITIVE\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->bulkUpdateStatus([\n    'case_uuids' => ['c1a5e000-0000-4000-8000-000000000001'],\n    'status' => 'RESOLVED',\n    'resolution' => 'FALSE_POSITIVE',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.bulk_update_status(\n  case_uuids: [\"c1a5e000-0000-4000-8000-000000000001\"],\n  status: \"RESOLVED\",\n  resolution: \"FALSE_POSITIVE\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.BulkUpdateStatusAsync(new CasesBulkUpdateStatusParams\n{\n    CaseUuids = new string[] { \"c1a5e000-0000-4000-8000-000000000001\" },\n    Status = \"RESOLVED\",\n    Resolution = new CasesBulkUpdateStatusParamsResolution(\"FALSE_POSITIVE\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रति-केस परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBulkUpdateResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/bulk/assign/": {
      "post": {
        "summary": "केसों को बल्क असाइन करें",
        "description": "एक साथ कई केस असाइन करें (या assignee_user_id: null के साथ अनअसाइन करें)। सभी केस का ब्लूप्रिंट समान होना चाहिए; बेमेल जानकारी पूरे बैच को रोके बिना प्रति केस रिपोर्ट की जाती है।",
        "operationId": "bulk_assign_cases",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "bulk_assign",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Cases"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "case_uuids",
                  "assignee_user_id"
                ],
                "properties": {
                  "case_uuids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1
                  },
                  "assignee_user_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  },
                  "assignee_email": {
                    "type": "string",
                    "format": "email",
                    "nullable": true
                  },
                  "assignee_name": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "example": {
                "case_uuids": [
                  "c1a5e000-0000-4000-8000-000000000001"
                ],
                "assignee_user_id": "9a000000-0000-4000-8000-0000000000aa"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/bulk/assign/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"case_uuids\": [\"c1a5e000-0000-4000-8000-000000000001\"], \"assignee_user_id\": \"9a000000-0000-4000-8000-0000000000aa\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.bulk_assign(\n    case_uuids=[\"c1a5e000-0000-4000-8000-000000000001\"],\n    assignee_user_id=\"9a000000-0000-4000-8000-0000000000aa\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.bulkAssign({\n  case_uuids: [\"c1a5e000-0000-4000-8000-000000000001\"],\n  assignee_user_id: \"9a000000-0000-4000-8000-0000000000aa\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.BulkAssign(ctx, didit.CasesBulkAssignParams{\n\tCaseUUIDs:      []string{\"c1a5e000-0000-4000-8000-000000000001\"},\n\tAssigneeUserID: didit.String(\"9a000000-0000-4000-8000-0000000000aa\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CasesBulkAssignParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().bulkAssign(CasesBulkAssignParams.builder()\n        .caseUuids(List.of(\"c1a5e000-0000-4000-8000-000000000001\"))\n        .assigneeUserId(\"9a000000-0000-4000-8000-0000000000aa\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->bulkAssign([\n    'case_uuids' => ['c1a5e000-0000-4000-8000-000000000001'],\n    'assignee_user_id' => '9a000000-0000-4000-8000-0000000000aa',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.bulk_assign(\n  case_uuids: [\"c1a5e000-0000-4000-8000-000000000001\"],\n  assignee_user_id: \"9a000000-0000-4000-8000-0000000000aa\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.BulkAssignAsync(new CasesBulkAssignParams\n{\n    CaseUuids = new string[] { \"c1a5e000-0000-4000-8000-000000000001\" },\n    AssigneeUserId = \"9a000000-0000-4000-8000-0000000000aa\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रति-केस परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBulkUpdateResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/": {
      "get": {
        "summary": "ब्लूप्रिंट सूचीबद्ध करें",
        "description": "एप्लिकेशन के लिए केस ब्लूप्रिंट सूचीबद्ध करें।",
        "operationId": "list_case_blueprints",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "शून्य-आधारित ऑफ़सेट।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.blueprints.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.blueprints.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.Blueprints.ListAutoPaging(ctx, didit.CasesBlueprintsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().blueprints().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->blueprints->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.blueprints.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.Blueprints.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड ब्लूप्रिंट सूची।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मिलान वाली पंक्तियों की संख्या, परफ़ॉर्मेंस के लिए 100 पर सीमित।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CaseBlueprintListItem"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "ब्लूप्रिंट बनाएं",
        "description": "एक केस ब्लूप्रिंट बनाएँ: सामान्य सेटिंग्स (असाइनमेंट, एस्केलेशन, ट्रांसफर, 4-आईज़ पेयरिंग) और साथ ही content_config, वे छह सेक्शन जो केस पेज को संचालित करते हैं। एक अप्रकाशित ड्राफ्ट बनाने के लिए publish=false सेट करें; पब्लिश इसका पहला लाइव संस्करण बनाता है। कभी प्रकाशित न किए गए ड्राफ्ट को डिस्कार्ड करने से वह हटा दिया जाता है।",
        "operationId": "create_case_blueprint",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "assignee_pool"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 24,
                    "description": "अधिकतम 24 वर्ण, उदाहरण के लिए \"AML investigation\"।"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true
                  },
                  "assignee_pool": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "description": "उपयोगकर्ता UUIDs की सूची। खाली सरणियाँ \"Pick at least one assignee\" के साथ अस्वीकृत कर दी जाती हैं।"
                  },
                  "assignment_method": {
                    "type": "string",
                    "enum": [
                      "MANUAL",
                      "AUTOMATIC"
                    ],
                    "default": "MANUAL"
                  },
                  "max_active_cases": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "description": "स्वचालित-मोड थ्रेशोल्ड: \"इस ब्लूप्रिंट के N से कम केस असाइन किए गए हैं\"।"
                  },
                  "escalation_enabled": {
                    "type": "boolean",
                    "default": false
                  },
                  "escalation_blueprint": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "लक्षित ब्लूप्रिंट UUID। सहेजते समय लागू नहीं किया जाता है, लेकिन जब तक escalation_enabled और escalation_blueprint दोनों सेट नहीं होते हैं, तब तक एस्केलेट कार्रवाई 400 के साथ विफल हो जाती है।"
                  },
                  "transfer_enabled": {
                    "type": "boolean",
                    "default": false
                  },
                  "four_eyes_checker_blueprint": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "इसे सेट करने से 4-eyes समीक्षा सक्षम होती है: इस ब्लूप्रिंट के समाधान चेकर ब्लूप्रिंट की कतार में रखे जाते हैं।"
                  },
                  "require_resolution_note": {
                    "type": "boolean",
                    "default": false
                  },
                  "content_config": {
                    "$ref": "#/components/schemas/CaseContentConfig"
                  },
                  "is_active": {
                    "type": "boolean",
                    "default": true
                  },
                  "default_deadline_hours": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "maximum": 8760,
                    "description": "नए खोले गए केस के लिए डिफ़ॉल्ट समय-सीमा। मौजूदा केस की समय-सीमा अपरिवर्तित रहती है।"
                  },
                  "publish": {
                    "type": "boolean",
                    "writeOnly": true,
                    "default": true,
                    "description": "कभी प्रकाशित न किए गए ड्राफ़्ट को सहेजने के लिए false सेट करें। रिकॉर्ड वर्ज़न 0 पर तब तक निष्क्रिय रहता है जब तक कि ड्राफ़्ट को स्पष्ट रूप से प्रकाशित नहीं किया जाता। इस फ़ील्ड को छोड़ने से मौजूदा इंटीग्रेशन के लिए तत्काल निर्माण सुरक्षित रहता है।"
                  }
                }
              },
              "example": {
                "name": "AML investigation",
                "assignee_pool": [
                  "9a000000-0000-4000-8000-0000000000aa"
                ],
                "assignment_method": "AUTOMATIC",
                "max_active_cases": 15,
                "require_resolution_note": true,
                "content_config": {
                  "aml_control": {
                    "enabled": true,
                    "financial": true,
                    "identity": false
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"AML investigation\", \"assignee_pool\": [\"9a000000-0000-4000-8000-0000000000aa\"], \"assignment_method\": \"AUTOMATIC\", \"max_active_cases\": 15, \"require_resolution_note\": true, \"content_config\": {\"aml_control\": {\"enabled\": true, \"financial\": true, \"identity\": false}}}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.create(\n    name=\"AML investigation\",\n    assignee_pool=[\"9a000000-0000-4000-8000-0000000000aa\"],\n    assignment_method=\"AUTOMATIC\",\n    max_active_cases=15,\n    require_resolution_note=True,\n    content_config={\n        \"aml_control\": {\n            \"enabled\": True,\n            \"financial\": True,\n            \"identity\": False,\n        },\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.create({\n  name: \"AML investigation\",\n  assignee_pool: [\"9a000000-0000-4000-8000-0000000000aa\"],\n  assignment_method: \"AUTOMATIC\",\n  max_active_cases: 15,\n  require_resolution_note: true,\n  content_config: {\n    aml_control: {\n      enabled: true,\n      financial: true,\n      identity: false,\n    },\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.Create(ctx, didit.CasesBlueprintsCreateParams{\n\tName:                  \"AML investigation\",\n\tAssigneePool:          []string{\"9a000000-0000-4000-8000-0000000000aa\"},\n\tAssignmentMethod:      didit.Some(didit.CasesBlueprintsCreateParamsAssignmentMethod(\"AUTOMATIC\")),\n\tMaxActiveCases:        didit.Int(15),\n\tRequireResolutionNote: didit.Bool(true),\n\tContentConfig: didit.Some(didit.CaseContentConfigParam{\n\t\tAMLControl: didit.Some(didit.CaseContentConfigParamAMLControl{\n\t\t\tEnabled:   didit.Bool(true),\n\t\t\tFinancial: didit.Bool(true),\n\t\t\tIdentity:  didit.Bool(false),\n\t\t}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CaseContentConfig;\nimport me.didit.types.CasesBlueprintsCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().create(CasesBlueprintsCreateParams.builder()\n        .name(\"AML investigation\")\n        .assigneePool(List.of(\"9a000000-0000-4000-8000-0000000000aa\"))\n        .assignmentMethod(CasesBlueprintsCreateParams.AssignmentMethod.of(\"AUTOMATIC\"))\n        .maxActiveCases(15L)\n        .requireResolutionNote(true)\n        .contentConfig(CaseContentConfig.builder()\n                .amlControl(CaseContentConfig.AmlControl.builder()\n                        .enabled(true)\n                        .financial(true)\n                        .identity(false)\n                        .build())\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->create([\n    'name' => 'AML investigation',\n    'assignee_pool' => ['9a000000-0000-4000-8000-0000000000aa'],\n    'assignment_method' => 'AUTOMATIC',\n    'max_active_cases' => 15,\n    'require_resolution_note' => true,\n    'content_config' => [\n        'aml_control' => [\n            'enabled' => true,\n            'financial' => true,\n            'identity' => false,\n        ],\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.create(\n  name: \"AML investigation\",\n  assignee_pool: [\"9a000000-0000-4000-8000-0000000000aa\"],\n  assignment_method: \"AUTOMATIC\",\n  max_active_cases: 15,\n  require_resolution_note: true,\n  content_config: {\n    aml_control: {\n      enabled: true,\n      financial: true,\n      identity: false,\n    },\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.CreateAsync(new CasesBlueprintsCreateParams\n{\n    Name = \"AML investigation\",\n    AssigneePool = new string[] { \"9a000000-0000-4000-8000-0000000000aa\" },\n    AssignmentMethod = new CasesBlueprintsCreateParamsAssignmentMethod(\"AUTOMATIC\"),\n    MaxActiveCases = 15,\n    RequireResolutionNote = true,\n    ContentConfig = new CaseContentConfig\n    {\n        AmlControl = new CaseContentConfigAmlControl\n        {\n            Enabled = true,\n            Financial = true,\n            Identity = false,\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "Blueprint बनाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBlueprintDetail"
                }
              }
            }
          },
          "400": {
            "description": "नाम 24 वर्णों से अधिक लंबा है, assignee_pool खाली है, या क्रॉस-रेफ़रंस किया गया ब्लूप्रिंट (एस्केलेशन/चेकर) नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/": {
      "get": {
        "summary": "ब्लूप्रिंट प्राप्त करें",
        "description": "एक ब्लूप्रिंट प्राप्त करें, जिसमें इसके जुड़े हुए निर्माण स्रोत (AML कॉन्फ़िग, लेन-देन नियम, वर्कफ़्लो नोड्स) शामिल हैं और कौन से ब्लूप्रिंट इसमें एस्केलेट होते हैं।",
        "operationId": "get_case_blueprint",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "blueprint_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "b1de0000-0000-4000-8000-000000000002"
            },
            "description": "Blueprint UUID."
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.retrieve(\n    \"b1de0000-0000-4000-8000-000000000002\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.retrieve(\"b1de0000-0000-4000-8000-000000000002\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.Retrieve(ctx, \"b1de0000-0000-4000-8000-000000000002\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().retrieve(\"b1de0000-0000-4000-8000-000000000002\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->retrieve('b1de0000-0000-4000-8000-000000000002');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.retrieve(\"b1de0000-0000-4000-8000-000000000002\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.RetrieveAsync(\"b1de0000-0000-4000-8000-000000000002\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "Blueprint विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBlueprintDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "ब्लूप्रिंट अपडेट करें",
        "description": "ब्लूप्रिंट की सामान्य सेटिंग्स या content_config को आंशिक रूप से अपडेट करें।",
        "operationId": "update_case_blueprint",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "blueprint_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "b1de0000-0000-4000-8000-000000000002"
            },
            "description": "Blueprint UUID."
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "maxLength": 24,
                    "description": "अधिकतम 24 वर्ण, उदाहरण के लिए \"AML investigation\"।"
                  },
                  "description": {
                    "type": "string",
                    "nullable": true
                  },
                  "assignee_pool": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "description": "उपयोगकर्ता UUIDs की सूची। खाली सरणियाँ \"Pick at least one assignee\" के साथ अस्वीकृत कर दी जाती हैं।"
                  },
                  "assignment_method": {
                    "type": "string",
                    "enum": [
                      "MANUAL",
                      "AUTOMATIC"
                    ]
                  },
                  "max_active_cases": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "description": "स्वचालित-मोड थ्रेशोल्ड: \"इस ब्लूप्रिंट के N से कम केस असाइन किए गए हैं\"।"
                  },
                  "escalation_enabled": {
                    "type": "boolean"
                  },
                  "escalation_blueprint": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "लक्षित ब्लूप्रिंट UUID। सहेजते समय लागू नहीं किया जाता है, लेकिन जब तक escalation_enabled और escalation_blueprint दोनों सेट नहीं होते हैं, तब तक एस्केलेट कार्रवाई 400 के साथ विफल हो जाती है।"
                  },
                  "transfer_enabled": {
                    "type": "boolean"
                  },
                  "four_eyes_checker_blueprint": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "इसे सेट करने से 4-eyes समीक्षा सक्षम होती है: इस ब्लूप्रिंट के समाधान चेकर ब्लूप्रिंट की कतार में रखे जाते हैं।"
                  },
                  "require_resolution_note": {
                    "type": "boolean"
                  },
                  "content_config": {
                    "$ref": "#/components/schemas/CaseContentConfig"
                  },
                  "is_active": {
                    "type": "boolean"
                  },
                  "default_deadline_hours": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "maximum": 8760,
                    "description": "नए खोले गए केस के लिए डिफ़ॉल्ट समय-सीमा। मौजूदा केस की समय-सीमा अपरिवर्तित रहती है।"
                  },
                  "expected_version": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "संपादक द्वारा खोला गया संस्करण। एक पुराना संस्करण समीक्षा नीति को बदले बिना 409 लौटाता है।"
                  }
                }
              },
              "example": {
                "transfer_enabled": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"transfer_enabled\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.update(\n    \"b1de0000-0000-4000-8000-000000000002\",\n    transfer_enabled=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.update(\"b1de0000-0000-4000-8000-000000000002\", {\n  transfer_enabled: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.Update(ctx, \"b1de0000-0000-4000-8000-000000000002\", didit.CasesBlueprintsUpdateParams{\n\tTransferEnabled: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesBlueprintsUpdateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().update(\"b1de0000-0000-4000-8000-000000000002\", CasesBlueprintsUpdateParams.builder()\n        .transferEnabled(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->update('b1de0000-0000-4000-8000-000000000002', [\n    'transfer_enabled' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.update(\n  \"b1de0000-0000-4000-8000-000000000002\",\n  transfer_enabled: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.UpdateAsync(\"b1de0000-0000-4000-8000-000000000002\", new CasesBlueprintsUpdateParams\n{\n    TransferEnabled = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया ब्लूप्रिंट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBlueprintDetail"
                }
              }
            }
          },
          "409": {
            "description": "expected_version के बाद से समीक्षा नीति बदल गई है। पुनः प्रयास करने से पहले नवीनतम संस्करण की समीक्षा करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "ब्लूप्रिंट हटाएं",
        "description": "एक ब्लूप्रिंट हटाएं। हटाना हमेशा सफल होता है और ब्लूप्रिंट के केस को प्रभावित नहीं करता है: मौजूदा केस अपने ब्लूप्रिंट संदर्भ को बनाए रखते हैं और इसकी सेटिंग्स उन पर लागू होती रहती हैं। हटाया गया ब्लूप्रिंट अब ब्लूप्रिंट सूचियों में दिखाई नहीं देता है और इसे अब ट्रांसफर लक्ष्य के रूप में नहीं चुना जा सकता है; यदि कोई मेकर ब्लूप्रिंट उस समय हटा दिया जाता है जब कोई समाधान 4-eyes अनुमोदन के लिए लंबित है, तो अस्वीकृत समाधान केस को चेकर ब्लूप्रिंट पर छोड़ देता है।",
        "operationId": "delete_case_blueprint",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "blueprint_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "b1de0000-0000-4000-8000-000000000002"
            },
            "description": "Blueprint UUID."
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/b1de0000-0000-4000-8000-000000000002/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.blueprints.delete(\n    \"b1de0000-0000-4000-8000-000000000002\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.blueprints.delete(\"b1de0000-0000-4000-8000-000000000002\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.Blueprints.Delete(ctx, \"b1de0000-0000-4000-8000-000000000002\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().blueprints().delete(\"b1de0000-0000-4000-8000-000000000002\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->blueprints->delete('b1de0000-0000-4000-8000-000000000002');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.blueprints.delete(\"b1de0000-0000-4000-8000-000000000002\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.Blueprints.DeleteAsync(\"b1de0000-0000-4000-8000-000000000002\");"
          }
        ],
        "responses": {
          "204": {
            "description": "Blueprint हटाया गया।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/": {
      "get": {
        "summary": "ब्लूप्रिंट प्रीसेट सूचीबद्ध करें",
        "description": "चार बिल्ट-इन प्रीसेट (Screening hit, AML investigation, Suspicious activity, KYC review) को उनके content_config और इस विवरण के साथ सूचीबद्ध करें कि क्या प्रत्येक इस एप्लिकेशन पर पहले से इंस्टॉल है।",
        "operationId": "list_case_blueprint_presets",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "list_presets",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/presets/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.list_presets()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.listPresets();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.ListPresets(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().listPresets();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->listPresets();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.list_presets\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.ListPresetsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रीसेट कैटलॉग।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "preset_key": {
                            "type": "string",
                            "enum": [
                              "screening_hit",
                              "aml_investigation",
                              "suspicious_activity",
                              "kyc"
                            ]
                          },
                          "name": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "content_config": {
                            "$ref": "#/components/schemas/CaseContentConfig"
                          },
                          "installed": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/presets/install/": {
      "post": {
        "summary": "ब्लूप्रिंट प्रीसेट इंस्टॉल करें",
        "description": "एक या अधिक प्रीसेट को संपादन योग्य ब्लूप्रिंट के रूप में एप्लिकेशन में कॉपी करें। प्रति preset_key आइडेम्पोटेंट; अभी तक इंस्टॉल नहीं किए गए प्रत्येक प्रीसेट को इंस्टॉल करने के लिए preset_keys को छोड़ दें।",
        "operationId": "install_case_blueprint_presets",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "install_presets",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Blueprints"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "preset_keys": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "nullable": true,
                    "description": "screening_hit, aml_investigation, suspicious_activity, kyc का सबसेट। सभी को स्थापित करने के लिए छोड़ दें।"
                  }
                }
              },
              "example": {
                "preset_keys": [
                  "aml_investigation",
                  "kyc"
                ]
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/blueprints/presets/install/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"preset_keys\": [\"aml_investigation\", \"kyc\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.install_presets(\n    preset_keys=[\"aml_investigation\", \"kyc\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.installPresets({\n  preset_keys: [\"aml_investigation\", \"kyc\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.InstallPresets(ctx, didit.CasesBlueprintsInstallPresetsParams{\n\tPresetKeys: didit.Some([]string{\"aml_investigation\", \"kyc\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CasesBlueprintsInstallPresetsParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().installPresets(CasesBlueprintsInstallPresetsParams.builder()\n        .presetKeys(List.of(\"aml_investigation\", \"kyc\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->installPresets([\n    'preset_keys' => ['aml_investigation', 'kyc'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.install_presets(preset_keys: [\"aml_investigation\", \"kyc\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.InstallPresetsAsync(new CasesBlueprintsInstallPresetsParams\n{\n    PresetKeys = new string[] { \"aml_investigation\", \"kyc\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "एक या अधिक प्रीसेट इंस्टॉल किए गए।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBlueprintPresetInstallResult"
                }
              }
            }
          },
          "200": {
            "description": "इंस्टॉल करने के लिए कोई नया प्रीसेट नहीं है (सभी अनुरोधित प्रीसेट पहले से मौजूद हैं)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseBlueprintPresetInstallResult"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/report-templates/": {
      "get": {
        "summary": "रिपोर्ट टेम्पलेट सूचीबद्ध करें",
        "description": "एप्लिकेशन के लिए FIU रिपोर्ट टेम्पलेट सूचीबद्ध करें।",
        "operationId": "list_report_templates",
        "x-didit-sdk": {
          "resource": "report_templates",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Report Templates"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "शून्य-आधारित ऑफ़सेट।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/report-templates/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.report_templates.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.reportTemplates.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.ReportTemplates.ListAutoPaging(ctx, didit.ReportTemplatesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.reportTemplates().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->reportTemplates->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.report_templates.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.ReportTemplates.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड टेम्पलेट।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "मिलान वाली पंक्तियों की संख्या, परफ़ॉर्मेंस के लिए 100 पर सीमित।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ReportTemplateDetail"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "रिपोर्ट टेम्पलेट बनाएं",
        "description": "एक पुनः प्रयोज्य प्रति-क्षेत्राधिकार, प्रति-रिपोर्ट-प्रकार goAML हेडर टेम्पलेट बनाएँ। यदि field_config से टेम्पलेट-स्तरीय अनिवार्य फ़ील्ड्स (rentity_id, submission_code, currency_code_local) में से कोई भी गायब है, तो 400 के साथ अस्वीकृत कर दिया जाता है; एक अमान्य टेम्पलेट को सहेजा नहीं जा सकता है या रिपोर्ट बनाने के लिए उपयोग नहीं किया जा सकता है। प्रति-फ़ाइलिंग हेडर फ़ील्ड्स (action, submission_date, transactions) को इसके बजाय रिपोर्ट को मान्य/अंतिम रूप देते समय लागू किया जाता है।",
        "operationId": "create_report_template",
        "x-didit-sdk": {
          "resource": "report_templates",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Report Templates"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "jurisdiction",
                  "report_type"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "jurisdiction": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "description": "ISO 3166-1 alpha-2 देश कोड, सहेजने पर अपरकेस किया गया।"
                  },
                  "report_type": {
                    "type": "string",
                    "enum": [
                      "SAR",
                      "STR",
                      "CTR",
                      "TTR",
                      "UTR",
                      "IFT",
                      "CBR",
                      "TFR"
                    ]
                  },
                  "field_config": {
                    "type": "object",
                    "description": "पुनः प्रयोज्य goAML हेडर डिफ़ॉल्ट। टेम्पलेट-स्तरीय अनिवार्य फ़ील्ड: rentity_id, submission_code, और currency_code_local (3-अक्षर)। वैकल्पिक: enabled_fields (किन वैकल्पिक रिपोर्ट ब्लॉकों को शामिल करना है) साथ ही reporting_person, location, reason, और action डिफ़ॉल्ट। प्रति-फ़ाइलिंग हेडर फ़ील्ड (action, submission_date, transactions, jurisdiction) तब लागू होते हैं जब रिपोर्ट सत्यापित या अंतिम रूप दी जाती है, टेम्पलेट पर नहीं।"
                  }
                }
              },
              "example": {
                "name": "US SAR default",
                "jurisdiction": "US",
                "report_type": "SAR",
                "field_config": {
                  "rentity_id": "FIU-US-00123",
                  "submission_code": "E",
                  "currency_code_local": "USD"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/report-templates/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"US SAR default\", \"jurisdiction\": \"US\", \"report_type\": \"SAR\", \"field_config\": {\"rentity_id\": \"FIU-US-00123\", \"submission_code\": \"E\", \"currency_code_local\": \"USD\"}}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.report_templates.create(\n    name=\"US SAR default\",\n    jurisdiction=\"US\",\n    report_type=\"SAR\",\n    field_config={\"rentity_id\": \"FIU-US-00123\", \"submission_code\": \"E\", \"currency_code_local\": \"USD\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.reportTemplates.create({\n  name: \"US SAR default\",\n  jurisdiction: \"US\",\n  report_type: \"SAR\",\n  field_config: { rentity_id: \"FIU-US-00123\", submission_code: \"E\", currency_code_local: \"USD\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.ReportTemplates.Create(ctx, didit.ReportTemplatesCreateParams{\n\tName:         \"US SAR default\",\n\tJurisdiction: \"US\",\n\tReportType:   \"SAR\",\n\tFieldConfig:  didit.Some(map[string]any{\"rentity_id\": \"FIU-US-00123\", \"submission_code\": \"E\", \"currency_code_local\": \"USD\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.ReportTemplatesCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.reportTemplates().create(ReportTemplatesCreateParams.builder()\n        .name(\"US SAR default\")\n        .jurisdiction(\"US\")\n        .reportType(ReportTemplatesCreateParams.ReportType.of(\"SAR\"))\n        .fieldConfig(Map.of(\"rentity_id\", \"FIU-US-00123\", \"submission_code\", \"E\", \"currency_code_local\", \"USD\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->reportTemplates->create([\n    'name' => 'US SAR default',\n    'jurisdiction' => 'US',\n    'report_type' => 'SAR',\n    'field_config' => ['rentity_id' => 'FIU-US-00123', 'submission_code' => 'E', 'currency_code_local' => 'USD'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.report_templates.create(\n  name: \"US SAR default\",\n  jurisdiction: \"US\",\n  report_type: \"SAR\",\n  field_config: { rentity_id: \"FIU-US-00123\", submission_code: \"E\", currency_code_local: \"USD\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.ReportTemplates.CreateAsync(new ReportTemplatesCreateParams\n{\n    Name = \"US SAR default\",\n    Jurisdiction = \"US\",\n    ReportType = \"SAR\",\n    FieldConfig = new Dictionary<string, object> { [\"rentity_id\"] = \"FIU-US-00123\", [\"submission_code\"] = \"E\", [\"currency_code_local\"] = \"USD\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "टेम्पलेट बनाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportTemplateDetail"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य क्षेत्राधिकार, या field_config अनिवार्य-फ़ील्ड सत्यापन में विफल रहता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/report-templates/{template_uuid}/": {
      "get": {
        "summary": "रिपोर्ट टेम्पलेट प्राप्त करें",
        "description": "रिपोर्ट टेम्पलेट प्राप्त करें।",
        "operationId": "get_report_template",
        "x-didit-sdk": {
          "resource": "report_templates",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Report Templates"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "template_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "7ec00000-0000-4000-8000-000000000006"
            },
            "description": "रिपोर्ट टेम्पलेट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/report-templates/7ec00000-0000-4000-8000-000000000006/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.report_templates.retrieve(\n    \"7ec00000-0000-4000-8000-000000000006\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.reportTemplates.retrieve(\"7ec00000-0000-4000-8000-000000000006\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.ReportTemplates.Retrieve(ctx, \"7ec00000-0000-4000-8000-000000000006\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.reportTemplates().retrieve(\"7ec00000-0000-4000-8000-000000000006\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->reportTemplates->retrieve('7ec00000-0000-4000-8000-000000000006');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.report_templates.retrieve(\"7ec00000-0000-4000-8000-000000000006\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.ReportTemplates.RetrieveAsync(\"7ec00000-0000-4000-8000-000000000006\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "टेम्पलेट विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportTemplateDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "रिपोर्ट टेम्पलेट अपडेट करें",
        "description": "रिपोर्ट टेम्पलेट को आंशिक रूप से अपडेट करें। सहेजने पर अनिवार्य goAML फ़ील्ड को पुनः मान्य करता है।",
        "operationId": "update_report_template",
        "x-didit-sdk": {
          "resource": "report_templates",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Report Templates"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "template_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "7ec00000-0000-4000-8000-000000000006"
            },
            "description": "रिपोर्ट टेम्पलेट UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "jurisdiction": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "description": "ISO 3166-1 alpha-2 देश कोड, सहेजने पर अपरकेस किया गया।"
                  },
                  "report_type": {
                    "type": "string",
                    "enum": [
                      "SAR",
                      "STR",
                      "CTR",
                      "TTR",
                      "UTR",
                      "IFT",
                      "CBR",
                      "TFR"
                    ]
                  },
                  "field_config": {
                    "type": "object",
                    "description": "पुनः प्रयोज्य goAML हेडर डिफ़ॉल्ट। टेम्पलेट-स्तरीय अनिवार्य फ़ील्ड: rentity_id, submission_code, और currency_code_local (3-अक्षर)। वैकल्पिक: enabled_fields (किन वैकल्पिक रिपोर्ट ब्लॉकों को शामिल करना है) साथ ही reporting_person, location, reason, और action डिफ़ॉल्ट। प्रति-फ़ाइलिंग हेडर फ़ील्ड (action, submission_date, transactions, jurisdiction) तब लागू होते हैं जब रिपोर्ट सत्यापित या अंतिम रूप दी जाती है, टेम्पलेट पर नहीं।"
                  }
                }
              },
              "example": {
                "field_config": {
                  "rentity_id": "FIU-US-00124"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/report-templates/7ec00000-0000-4000-8000-000000000006/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"field_config\": {\"rentity_id\": \"FIU-US-00124\"}}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.report_templates.update(\n    \"7ec00000-0000-4000-8000-000000000006\",\n    field_config={\"rentity_id\": \"FIU-US-00124\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.reportTemplates.update(\"7ec00000-0000-4000-8000-000000000006\", {\n  field_config: { rentity_id: \"FIU-US-00124\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.ReportTemplates.Update(ctx, \"7ec00000-0000-4000-8000-000000000006\", didit.ReportTemplatesUpdateParams{\n\tFieldConfig: didit.Some(map[string]any{\"rentity_id\": \"FIU-US-00124\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.ReportTemplatesUpdateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.reportTemplates().update(\"7ec00000-0000-4000-8000-000000000006\", ReportTemplatesUpdateParams.builder()\n        .fieldConfig(Map.of(\"rentity_id\", \"FIU-US-00124\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->reportTemplates->update('7ec00000-0000-4000-8000-000000000006', [\n    'field_config' => ['rentity_id' => 'FIU-US-00124'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.report_templates.update(\n  \"7ec00000-0000-4000-8000-000000000006\",\n  field_config: { rentity_id: \"FIU-US-00124\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.ReportTemplates.UpdateAsync(\"7ec00000-0000-4000-8000-000000000006\", new ReportTemplatesUpdateParams\n{\n    FieldConfig = new Dictionary<string, object> { [\"rentity_id\"] = \"FIU-US-00124\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट किया गया टेम्पलेट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportTemplateDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "रिपोर्ट टेम्पलेट हटाएं",
        "description": "एक रिपोर्ट टेम्पलेट हटाएं। इससे पहले ही बनाई जा चुकी रिपोर्ट अप्रभावित रहती हैं।",
        "operationId": "delete_report_template",
        "x-didit-sdk": {
          "resource": "report_templates",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Report Templates"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "template_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "7ec00000-0000-4000-8000-000000000006"
            },
            "description": "रिपोर्ट टेम्पलेट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/report-templates/7ec00000-0000-4000-8000-000000000006/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.report_templates.delete(\n    \"7ec00000-0000-4000-8000-000000000006\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.reportTemplates.delete(\"7ec00000-0000-4000-8000-000000000006\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.ReportTemplates.Delete(ctx, \"7ec00000-0000-4000-8000-000000000006\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.reportTemplates().delete(\"7ec00000-0000-4000-8000-000000000006\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->reportTemplates->delete('7ec00000-0000-4000-8000-000000000006');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.report_templates.delete(\"7ec00000-0000-4000-8000-000000000006\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.ReportTemplates.DeleteAsync(\"7ec00000-0000-4000-8000-000000000006\");"
          }
        ],
        "responses": {
          "204": {
            "description": "टेम्पलेट हटाया गया।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/regulatory-reports/": {
      "get": {
        "summary": "केस के लिए रिपोर्ट सूचीबद्ध करें",
        "description": "केस के लिए जनरेट की गई FIU रिपोर्ट सूचीबद्ध करें।",
        "operationId": "list_case_regulatory_reports",
        "x-didit-sdk": {
          "resource": "cases.regulatory_reports",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "शून्य-आधारित ऑफ़सेट।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/regulatory-reports/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.regulatory_reports.list(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.regulatoryReports.list(\"c1a5e000-0000-4000-8000-000000000001\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.RegulatoryReports.ListAutoPaging(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesRegulatoryReportsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().regulatoryReports().list(\"c1a5e000-0000-4000-8000-000000000001\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->regulatoryReports->list('c1a5e000-0000-4000-8000-000000000001') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.regulatory_reports.list(\"c1a5e000-0000-4000-8000-000000000001\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.RegulatoryReports.ListAsync(\"c1a5e000-0000-4000-8000-000000000001\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "केस के लिए पेजिनेटेड रिपोर्ट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportList"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "केस से रिपोर्ट बनाएं",
        "description": "केस के लिए एक ड्राफ्ट FIU रिपोर्ट बनाएँ: DRAFT स्थिति, वैकल्पिक टेम्पलेट के साथ-साथ केस के विषय, लिंक किए गए लेन-देन और नैरेटिव से स्वतः भरी गई। goAML XML और PDF तैयार करने के लिए मान्य करें और फिर अंतिम रूप दें।",
        "operationId": "create_case_regulatory_report",
        "x-didit-sdk": {
          "resource": "cases.regulatory_reports",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "case_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "c1a5e000-0000-4000-8000-000000000001"
            },
            "description": "केस UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "report_type": {
                    "type": "string",
                    "enum": [
                      "SAR",
                      "STR",
                      "CTR",
                      "TTR",
                      "UTR",
                      "IFT",
                      "CBR",
                      "TFR"
                    ],
                    "description": "आवश्यक है, जब तक कि कोई टेम्पलेट प्रदान न किया गया हो; अन्यथा टेम्पलेट के report_type का उपयोग किया जाता है।"
                  },
                  "jurisdiction": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "description": "आवश्यक है, जब तक कि कोई टेम्पलेट प्रदान न किया गया हो।"
                  },
                  "template": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true,
                    "description": "रिपोर्ट टेम्पलेट UUID; केस से प्राप्त डेटा मर्ज करने से पहले इसका field_config ड्राफ़्ट को सीड करता है।"
                  },
                  "transactions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "nullable": true,
                    "description": "संलग्न करने के लिए लेन-देन; डिफ़ॉल्ट रूप से केस के लिंक किए गए लेन-देन होते हैं।"
                  },
                  "rentity_id": {
                    "type": "string",
                    "nullable": true
                  },
                  "rentity_branch": {
                    "type": "string",
                    "nullable": true
                  },
                  "submission_code": {
                    "type": "string",
                    "enum": [
                      "E",
                      "M"
                    ],
                    "default": "E"
                  },
                  "entity_reference": {
                    "type": "string",
                    "nullable": true
                  },
                  "fiu_ref_number": {
                    "type": "string",
                    "nullable": true
                  },
                  "currency_code_local": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 3,
                    "nullable": true
                  },
                  "submission_date": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "reporting_person": {
                    "type": "object"
                  },
                  "location": {
                    "type": "object"
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true
                  },
                  "action": {
                    "type": "string",
                    "nullable": true
                  },
                  "activity": {
                    "type": "string",
                    "nullable": true
                  },
                  "narrative": {
                    "type": "object",
                    "properties": {
                      "who": {
                        "type": "string"
                      },
                      "what": {
                        "type": "string"
                      },
                      "when": {
                        "type": "string"
                      },
                      "where": {
                        "type": "string"
                      },
                      "why": {
                        "type": "string"
                      },
                      "how": {
                        "type": "string"
                      }
                    }
                  },
                  "report_indicators": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "included_fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "template": "7ec00000-0000-4000-8000-000000000006"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/regulatory-reports/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"template\": \"7ec00000-0000-4000-8000-000000000006\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.regulatory_reports.create(\n    \"c1a5e000-0000-4000-8000-000000000001\",\n    template=\"7ec00000-0000-4000-8000-000000000006\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.regulatoryReports.create(\"c1a5e000-0000-4000-8000-000000000001\", {\n  template: \"7ec00000-0000-4000-8000-000000000006\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RegulatoryReports.Create(ctx, \"c1a5e000-0000-4000-8000-000000000001\", didit.CasesRegulatoryReportsCreateParams{\n\tTemplate: didit.String(\"7ec00000-0000-4000-8000-000000000006\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasesRegulatoryReportsCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().regulatoryReports().create(\"c1a5e000-0000-4000-8000-000000000001\", CasesRegulatoryReportsCreateParams.builder()\n        .template(\"7ec00000-0000-4000-8000-000000000006\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->regulatoryReports->create('c1a5e000-0000-4000-8000-000000000001', [\n    'template' => '7ec00000-0000-4000-8000-000000000006',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.regulatory_reports.create(\n  \"c1a5e000-0000-4000-8000-000000000001\",\n  template: \"7ec00000-0000-4000-8000-000000000006\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RegulatoryReports.CreateAsync(\"c1a5e000-0000-4000-8000-000000000001\", new CasesRegulatoryReportsCreateParams\n{\n    Template = \"7ec00000-0000-4000-8000-000000000006\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "ड्राफ़्ट रिपोर्ट बनाई गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportDetail"
                }
              }
            }
          },
          "400": {
            "description": "संदर्भित टेम्पलेट नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/regulatory-reports/": {
      "get": {
        "summary": "रिपोर्ट सूचीबद्ध करें",
        "description": "एप्लिकेशन-व्यापी FIU रिपोर्ट सूची, वैकल्पिक रूप से स्थिति, report_type, या केस द्वारा फ़िल्टर की गई।",
        "operationId": "list_regulatory_reports",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            },
            "description": "पेज का आकार।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "शून्य-आधारित ऑफ़सेट।"
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "DRAFT",
                "VALIDATED",
                "FINALIZED"
              ]
            },
            "description": "स्थिति के अनुसार फ़िल्टर करें।"
          },
          {
            "name": "report_type",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "SAR",
                "STR",
                "CTR",
                "TTR",
                "UTR",
                "IFT",
                "CBR",
                "TFR"
              ]
            },
            "description": "रिपोर्ट प्रकार द्वारा फ़िल्टर करें।"
          },
          {
            "name": "case",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "इस केस की रिपोर्टों को फ़िल्टर करें।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.regulatory_reports.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.regulatoryReports.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.RegulatoryReports.ListAutoPaging(ctx, didit.RegulatoryReportsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.regulatoryReports().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->regulatoryReports->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.regulatory_reports.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.RegulatoryReports.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "एप्लिकेशन भर में पेजिनेटेड रिपोर्ट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportList"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "स्टैंडअलोन रिपोर्ट बनाएं",
        "description": "स्टैंडअलोन रिपोर्ट्स पेज से एक ड्राफ्ट FIU रिपोर्ट बनाएँ: केस और टेम्पलेट दोनों आवश्यक हैं (केस-स्कोप्ड निर्माण के विपरीत, जिसमें टेम्पलेट छोड़ा जा सकता है)।",
        "operationId": "create_standalone_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "case",
                  "template"
                ],
                "properties": {
                  "case": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "template": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "report_type": {
                    "type": "string",
                    "enum": [
                      "SAR",
                      "STR",
                      "CTR",
                      "TTR",
                      "UTR",
                      "IFT",
                      "CBR",
                      "TFR"
                    ],
                    "description": "आवश्यक है, जब तक कि कोई टेम्पलेट प्रदान न किया गया हो; अन्यथा टेम्पलेट के report_type का उपयोग किया जाता है।"
                  },
                  "jurisdiction": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2,
                    "description": "आवश्यक है, जब तक कि कोई टेम्पलेट प्रदान न किया गया हो।"
                  },
                  "transactions": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "nullable": true,
                    "description": "संलग्न करने के लिए लेन-देन; डिफ़ॉल्ट रूप से केस के लिंक किए गए लेन-देन होते हैं।"
                  },
                  "rentity_id": {
                    "type": "string",
                    "nullable": true
                  },
                  "rentity_branch": {
                    "type": "string",
                    "nullable": true
                  },
                  "submission_code": {
                    "type": "string",
                    "enum": [
                      "E",
                      "M"
                    ],
                    "default": "E"
                  },
                  "entity_reference": {
                    "type": "string",
                    "nullable": true
                  },
                  "fiu_ref_number": {
                    "type": "string",
                    "nullable": true
                  },
                  "currency_code_local": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 3,
                    "nullable": true
                  },
                  "submission_date": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "reporting_person": {
                    "type": "object"
                  },
                  "location": {
                    "type": "object"
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true
                  },
                  "action": {
                    "type": "string",
                    "nullable": true
                  },
                  "activity": {
                    "type": "string",
                    "nullable": true
                  },
                  "narrative": {
                    "type": "object",
                    "properties": {
                      "who": {
                        "type": "string"
                      },
                      "what": {
                        "type": "string"
                      },
                      "when": {
                        "type": "string"
                      },
                      "where": {
                        "type": "string"
                      },
                      "why": {
                        "type": "string"
                      },
                      "how": {
                        "type": "string"
                      }
                    }
                  },
                  "report_indicators": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "included_fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "case": "c1a5e000-0000-4000-8000-000000000001",
                "template": "7ec00000-0000-4000-8000-000000000006"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"case\": \"c1a5e000-0000-4000-8000-000000000001\", \"template\": \"7ec00000-0000-4000-8000-000000000006\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.create(\n    case=\"c1a5e000-0000-4000-8000-000000000001\",\n    template=\"7ec00000-0000-4000-8000-000000000006\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.create({\n  case: \"c1a5e000-0000-4000-8000-000000000001\",\n  template: \"7ec00000-0000-4000-8000-000000000006\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.Create(ctx, didit.RegulatoryReportsCreateParams{\n\tCase:     \"c1a5e000-0000-4000-8000-000000000001\",\n\tTemplate: \"7ec00000-0000-4000-8000-000000000006\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.RegulatoryReportsCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().create(RegulatoryReportsCreateParams.builder()\n        .case_(\"c1a5e000-0000-4000-8000-000000000001\")\n        .template(\"7ec00000-0000-4000-8000-000000000006\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->create([\n    'case' => 'c1a5e000-0000-4000-8000-000000000001',\n    'template' => '7ec00000-0000-4000-8000-000000000006',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.create(\n  case: \"c1a5e000-0000-4000-8000-000000000001\",\n  template: \"7ec00000-0000-4000-8000-000000000006\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.CreateAsync(new RegulatoryReportsCreateParams\n{\n    Case = \"c1a5e000-0000-4000-8000-000000000001\",\n    Template = \"7ec00000-0000-4000-8000-000000000006\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "ड्राफ़्ट रिपोर्ट बनाई गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportDetail"
                }
              }
            }
          },
          "400": {
            "description": "संदर्भित टेम्पलेट नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/": {
      "get": {
        "summary": "रिपोर्ट प्राप्त करें",
        "description": "नियामक रिपोर्ट प्राप्त करें।",
        "operationId": "get_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.retrieve(\n    \"5ec00000-0000-4000-8000-000000000007\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.retrieve(\"5ec00000-0000-4000-8000-000000000007\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.Retrieve(ctx, \"5ec00000-0000-4000-8000-000000000007\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().retrieve(\"5ec00000-0000-4000-8000-000000000007\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->retrieve('5ec00000-0000-4000-8000-000000000007');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.retrieve(\"5ec00000-0000-4000-8000-000000000007\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.RetrieveAsync(\"5ec00000-0000-4000-8000-000000000007\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "रिपोर्ट विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportDetail"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "रिपोर्ट अपडेट करें",
        "description": "ड्राफ्ट या मान्य रिपोर्ट के फ़ील्ड संपादित करें। फ़ाइनलाइज़ की गई रिपोर्ट संपादित नहीं की जा सकतीं (409)।",
        "operationId": "update_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "jurisdiction": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 2
                  },
                  "rentity_id": {
                    "type": "string",
                    "nullable": true
                  },
                  "rentity_branch": {
                    "type": "string",
                    "nullable": true
                  },
                  "submission_code": {
                    "type": "string",
                    "enum": [
                      "E",
                      "M"
                    ],
                    "default": "E"
                  },
                  "entity_reference": {
                    "type": "string",
                    "nullable": true
                  },
                  "fiu_ref_number": {
                    "type": "string",
                    "nullable": true
                  },
                  "currency_code_local": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 3,
                    "nullable": true
                  },
                  "submission_date": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true
                  },
                  "reporting_person": {
                    "type": "object"
                  },
                  "location": {
                    "type": "object"
                  },
                  "reason": {
                    "type": "string",
                    "nullable": true
                  },
                  "action": {
                    "type": "string",
                    "nullable": true
                  },
                  "activity": {
                    "type": "string",
                    "nullable": true
                  },
                  "narrative": {
                    "type": "object",
                    "properties": {
                      "who": {
                        "type": "string"
                      },
                      "what": {
                        "type": "string"
                      },
                      "when": {
                        "type": "string"
                      },
                      "where": {
                        "type": "string"
                      },
                      "why": {
                        "type": "string"
                      },
                      "how": {
                        "type": "string"
                      }
                    }
                  },
                  "report_indicators": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "included_fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "rentity_id": "FIU-US-00123",
                "currency_code_local": "USD"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"rentity_id\": \"FIU-US-00123\", \"currency_code_local\": \"USD\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.update(\n    \"5ec00000-0000-4000-8000-000000000007\",\n    rentity_id=\"FIU-US-00123\",\n    currency_code_local=\"USD\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.update(\"5ec00000-0000-4000-8000-000000000007\", {\n  rentity_id: \"FIU-US-00123\",\n  currency_code_local: \"USD\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.Update(ctx, \"5ec00000-0000-4000-8000-000000000007\", didit.RegulatoryReportsUpdateParams{\n\tRentityID:         didit.String(\"FIU-US-00123\"),\n\tCurrencyCodeLocal: didit.String(\"USD\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.RegulatoryReportsUpdateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().update(\"5ec00000-0000-4000-8000-000000000007\", RegulatoryReportsUpdateParams.builder()\n        .rentityId(\"FIU-US-00123\")\n        .currencyCodeLocal(\"USD\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->update('5ec00000-0000-4000-8000-000000000007', [\n    'rentity_id' => 'FIU-US-00123',\n    'currency_code_local' => 'USD',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.update(\n  \"5ec00000-0000-4000-8000-000000000007\",\n  rentity_id: \"FIU-US-00123\",\n  currency_code_local: \"USD\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.UpdateAsync(\"5ec00000-0000-4000-8000-000000000007\", new RegulatoryReportsUpdateParams\n{\n    RentityId = \"FIU-US-00123\",\n    CurrencyCodeLocal = \"USD\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट की गई रिपोर्ट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportDetail"
                }
              }
            }
          },
          "409": {
            "description": "रिपोर्ट को पहले ही अंतिम रूप दिया जा चुका है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "रिपोर्ट हटाएं",
        "description": "एक नियामक रिपोर्ट को स्थायी रूप से हटाएं। रिपोर्ट, इसका कॉपी किया गया विवरण और कारण, इसके लेन-देन लिंक, और इसके जनरेट किए गए goAML XML और PDF मिटा दिए जाते हैं, जिसमें उन फ़ाइलों का प्रत्येक संग्रहीत संस्करण भी शामिल है। रिपोर्ट सूचियों से गायब हो जाती है और डाउनलोड URL काम करना बंद कर देते हैं। अन्य रिकॉर्ड, जिनमें केस, लेन-देन, लोग और कंपनियां शामिल हैं, हटाए नहीं जाते हैं। इसे पहले जैसा नहीं किया जा सकता (इसे वापस लेने का कोई विकल्प नहीं है)।\n\nड्राफ्ट या मान्य रिपोर्ट को बिना किसी अनुरोध बॉडी के हटाया जा सकता है। अंतिम रूप दी गई रिपोर्ट को हटाने के लिए अनुरोध बॉडी में `confirm_delete: true` की आवश्यकता होती है। यदि रिपोर्ट मौजूद नहीं है, तो अनुरोध `404` लौटाता है; यदि अंतिम रूप दी गई रिपोर्ट बिना पुष्टि के भेजी जाती है, तो यह `400` लौटाता है और कुछ भी नहीं हटाया जाता है।",
        "operationId": "delete_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl (draft report)",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "curl",
            "label": "curl (finalized report)",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"confirm_delete\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.regulatory_reports.delete(\n    \"5ec00000-0000-4000-8000-000000000007\",\n    confirm_delete=True,\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.regulatoryReports.delete(\"5ec00000-0000-4000-8000-000000000007\", {\n  confirm_delete: true,\n});"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.RegulatoryReportsDeleteParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.regulatoryReports().delete(\"5ec00000-0000-4000-8000-000000000007\", RegulatoryReportsDeleteParams.builder()\n        .confirmDelete(true)\n        .build());"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->regulatoryReports->delete('5ec00000-0000-4000-8000-000000000007', [\n    'confirm_delete' => true,\n]);"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.regulatory_reports.delete(\n  \"5ec00000-0000-4000-8000-000000000007\",\n  confirm_delete: true\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.RegulatoryReports.DeleteAsync(\"5ec00000-0000-4000-8000-000000000007\", new RegulatoryReportsDeleteParams\n{\n    ConfirmDelete = true,\n});"
          }
        ],
        "responses": {
          "204": {
            "description": "रिपोर्ट हटा दी गई है, जिसमें इसकी जनरेट की गई फ़ाइलें भी शामिल हैं।"
          },
          "400": {
            "description": "एक फ़ाइनलाइज़ की गई रिपोर्ट बिना `confirm_delete: true` के भेजी गई थी। कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "confirm_delete": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": {
                  "confirm_delete": [
                    "This field is required to delete a finalized report."
                  ]
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी रिपोर्ट नहीं हटा सकती। endpoint के लिए `write:cases` की आवश्यकता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन में रिपोर्ट नहीं मिली।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "रिपोर्ट पहले से ही हटाई जा रही है। इसकी फ़ाइलों को मिटाना समाप्त करने के लिए अनुरोध दोहराएँ।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "This report is being deleted. Retry deleting it to finish erasing its files.",
                  "code": "report_deletion_pending"
                }
              }
            }
          },
          "503": {
            "description": "रिपोर्ट फ़ाइलों को अभी मिटाया नहीं जा सका। रिपोर्ट अभी भी मौजूद है। अनुरोध दोहराएँ।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "The report files could not be erased. Please retry deleting the report.",
                  "code": "report_storage_unavailable"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "description": "केवल फ़ाइनलाइज़ की गई रिपोर्ट के लिए आवश्यक।",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "confirm_delete": {
                    "type": "boolean",
                    "description": "यह पुष्टि करने के लिए true पर सेट करें कि अंतिम रूप दी गई रिपोर्ट और उसकी जनरेट की गई फ़ाइलें स्थायी रूप से हटा दी गई हैं।"
                  }
                },
                "example": {
                  "confirm_delete": true
                }
              },
              "example": {
                "confirm_delete": true
              }
            }
          }
        }
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/validate/": {
      "post": {
        "summary": "रिपोर्ट सत्यापित करें",
        "description": "कोई भी फ़ाइल जनरेट किए बिना, अनिवार्य goAML हेडर फ़ील्ड्स (रिपोर्टिंग निकाय ID, सबमिशन कोड, स्थानीय मुद्रा, की गई कार्रवाई, सबमिशन तिथि), साथ ही कम से कम एक संलग्न लेन-देन और 2-अक्षर के क्षेत्राधिकार के विरुद्ध रिपोर्ट की जांच करें। परिणाम को रिपोर्ट पर भी संग्रहीत करता है: validation_errors और validated_at अपडेट किए जाते हैं, और जिस रिपोर्ट को अंतिम रूप नहीं दिया गया है, उसकी स्थिति VALIDATED (कोई त्रुटि नहीं) या वापस DRAFT (त्रुटियां) पर चली जाती है।",
        "operationId": "validate_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "validate",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/validate/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.validate(\n    \"5ec00000-0000-4000-8000-000000000007\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.validate(\"5ec00000-0000-4000-8000-000000000007\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.Validate(ctx, \"5ec00000-0000-4000-8000-000000000007\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().validate(\"5ec00000-0000-4000-8000-000000000007\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->validate('5ec00000-0000-4000-8000-000000000007');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.validate(\"5ec00000-0000-4000-8000-000000000007\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.ValidateAsync(\"5ec00000-0000-4000-8000-000000000007\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सत्यापन परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "DRAFT",
                        "VALIDATED",
                        "FINALIZED"
                      ]
                    },
                    "is_valid": {
                      "type": "boolean"
                    },
                    "errors": {
                      "type": "array",
                      "description": "मान्य होने पर खाली।",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/finalize/": {
      "post": {
        "summary": "रिपोर्ट को अंतिम रूप दें",
        "description": "पुनः मान्य करें, फिर goAML XML और PDF रेंडर करें और दोनों को S3 पर अपलोड करें। SAR/STR/TFR रिपोर्टों के लिए, यह केस के लेन-देन अलर्ट को भी Pending SAR से SAR filed में स्थानांतरित करता है।",
        "operationId": "finalize_regulatory_report",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "finalize",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/finalize/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.finalize(\n    \"5ec00000-0000-4000-8000-000000000007\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.finalize(\"5ec00000-0000-4000-8000-000000000007\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.Finalize(ctx, \"5ec00000-0000-4000-8000-000000000007\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().finalize_(\"5ec00000-0000-4000-8000-000000000007\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->finalize('5ec00000-0000-4000-8000-000000000007');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.finalize(\"5ec00000-0000-4000-8000-000000000007\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.FinalizeAsync(\"5ec00000-0000-4000-8000-000000000007\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "रिपोर्ट को अंतिम रूप दिया गया; xml_s3_key और pdf_s3_key सेट हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegulatoryReportDetail"
                }
              }
            }
          },
          "400": {
            "description": "रिपोर्ट का सत्यापन विफल रहा।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "field": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "रिपोर्ट फ़ाइनलाइज़ करने योग्य स्थिति में नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/regulatory-reports/{report_uuid}/download-url/": {
      "get": {
        "summary": "रिपोर्ट डाउनलोड URL प्राप्त करें",
        "description": "फ़ाइनलाइज़ की गई रिपोर्ट के goAML XML या PDF के लिए एक प्री-साइन्ड URL जनरेट करें।",
        "operationId": "get_regulatory_report_download_url",
        "x-didit-sdk": {
          "resource": "regulatory_reports",
          "method": "retrieve_download_url",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Regulatory Reports"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "report_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5ec00000-0000-4000-8000-000000000007"
            },
            "description": "रिपोर्ट UUID।"
          },
          {
            "name": "file",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "pdf",
                "xml"
              ],
              "default": "pdf"
            },
            "description": "कौन सी फ़ाइल डाउनलोड करनी है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/regulatory-reports/5ec00000-0000-4000-8000-000000000007/download-url/?file=xml' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.regulatory_reports.retrieve_download_url(\n    \"5ec00000-0000-4000-8000-000000000007\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.regulatoryReports.retrieveDownloadUrl(\"5ec00000-0000-4000-8000-000000000007\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.RegulatoryReports.RetrieveDownloadURL(ctx, \"5ec00000-0000-4000-8000-000000000007\", didit.RegulatoryReportsRetrieveDownloadURLParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.regulatoryReports().retrieveDownloadUrl(\"5ec00000-0000-4000-8000-000000000007\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->regulatoryReports->retrieveDownloadUrl('5ec00000-0000-4000-8000-000000000007');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.regulatory_reports.retrieve_download_url(\"5ec00000-0000-4000-8000-000000000007\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.RegulatoryReports.RetrieveDownloadUrlAsync(\"5ec00000-0000-4000-8000-000000000007\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्री-साइन किया गया डाउनलोड URL।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "download_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "file": {
                      "type": "string",
                      "enum": [
                        "pdf",
                        "xml"
                      ]
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "रिपोर्ट को अभी अंतिम रूप नहीं दिया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/transactions/rules/": {
      "get": {
        "summary": "नियम सूचीबद्ध करें",
        "description": "एप्लिकेशन के लेन-देन निगरानी नियमों को सूचीबद्ध करें: आपके कस्टम नियम और आपके द्वारा इंस्टॉल किए गए कोई भी लाइब्रेरी प्रीसेट। source, category, mode, bundle या फ़्री-टेक्स्ट खोज द्वारा फ़िल्टर करें; `ordering` (run_count, approved_pct, reviewed_pct, declined_pct, latest_triggered_at, title, created_at, source, प्रत्येक वैकल्पिक `-` उपसर्ग के साथ) के अनुसार क्रमित करें।",
        "operationId": "listTransactionRules",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "source",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PRESET",
                "CUSTOM"
              ]
            },
            "description": "PRESET या CUSTOM"
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "नियम श्रेणी के अनुसार फ़िल्टर करें"
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "ACTIVE",
                "DISABLED",
                "TEST"
              ]
            },
            "description": "ACTIVE, DISABLED या TEST"
          },
          {
            "name": "bundle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "बंडल द्वारा प्रीसेट फ़िल्टर करें"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "शीर्षक और विवरण के विरुद्ध केस-इनसेंसिटिव मिलान"
          },
          {
            "name": "ordering",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग किए गए क्रम फ़ील्ड, डिफ़ॉल्ट source,-run_count"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "पेज का आकार"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "पेज ऑफ़सेट"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड नियम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TransactionRuleDetail"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/rules/?source=CUSTOM&ordering=-run_count' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.transactions.rules.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.transactions.rules.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Rules.ListAutoPaging(ctx, didit.TransactionsRulesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.transactions().rules().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->transactions->rules->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.rules.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Transactions.Rules.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "नियम बनाएं",
        "description": "एक CUSTOM लेन-देन निगरानी नियम बनाएं। शीर्षक प्रति एप्लिकेशन अद्वितीय होते हैं (डुप्लिकेट -> 400)। `AWAITING_USER` को लक्षित करने वाली `change_status` कार्रवाई में `workflow_id` होना आवश्यक है। ACTIVE मोड में बनाए गए नियम नए लेन-देन पर तुरंत लागू होते हैं - अनुशंसित वर्कफ़्लो यह है कि TEST मोड में बनाएं, बैकटेस्ट करें, फिर मोड को ACTIVE में बदलें। लाइब्रेरी नियम को बदलने के लिए, इसे एक कॉपी के रूप में बनाएं: `metadata.based_on` (इसकी लाइब्रेरी कुंजी) और `metadata.based_on_rule_uuid` के साथ लाइब्रेरी नियम की परिभाषा भेजें।",
        "operationId": "createTransactionRule",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleCreateRequest"
              },
              "example": {
                "title": "Structuring - inbound (custom)",
                "description": "20+ inbound EUR transfers, all under 10,000 EUR, 30 days",
                "category": "finance",
                "mode": "TEST",
                "evaluation_mode": "ALL",
                "scope": {
                  "transaction_types": [
                    "finance"
                  ],
                  "directions": [
                    "INBOUND"
                  ]
                },
                "conditions": [
                  {
                    "field": "currency",
                    "operator": "eq",
                    "value": "EUR"
                  },
                  {
                    "field": "amount",
                    "operator": "lt",
                    "value": 10000
                  }
                ],
                "aggregation": [
                  {
                    "metric": "count",
                    "operator": "gte",
                    "value": 20,
                    "window": "30d",
                    "filters": {
                      "direction": "INBOUND",
                      "transaction_type": "finance",
                      "subject_vendor_data": "__current__",
                      "currency": "EUR"
                    }
                  },
                  {
                    "metric": "max",
                    "field": "amount",
                    "operator": "lt",
                    "value": 10000,
                    "window": "30d",
                    "filters": {
                      "direction": "INBOUND",
                      "transaction_type": "finance",
                      "subject_vendor_data": "__current__",
                      "currency": "EUR"
                    }
                  }
                ],
                "actions": [
                  {
                    "type": "add_score",
                    "value": 35
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "बनाया गया नियम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleDetail"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि - डुप्लिकेट शीर्षक, अज्ञात ऑपरेटर/मीट्रिक, विकृत विंडो, अमान्य स्कोप दिशा, या workflow_id के बिना AWAITING_USER।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "title": [
                    "A rule with this name already exists."
                  ]
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/transactions/rules/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"title\": \"Structuring - inbound (custom)\", \"description\": \"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\", \"category\": \"finance\", \"mode\": \"TEST\", \"evaluation_mode\": \"ALL\", \"scope\": {\"transaction_types\": [\"finance\"], \"directions\": [\"INBOUND\"]}, \"conditions\": [{\"field\": \"currency\", \"operator\": \"eq\", \"value\": \"EUR\"}, {\"field\": \"amount\", \"operator\": \"lt\", \"value\": 10000}], \"aggregation\": [{\"metric\": \"count\", \"operator\": \"gte\", \"value\": 20, \"window\": \"30d\", \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}}, {\"metric\": \"max\", \"field\": \"amount\", \"operator\": \"lt\", \"value\": 10000, \"window\": \"30d\", \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}}], \"actions\": [{\"type\": \"add_score\", \"value\": 35}]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.create(\n    title=\"Structuring - inbound (custom)\",\n    description=\"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\",\n    category=\"finance\",\n    mode=\"TEST\",\n    evaluation_mode=\"ALL\",\n    scope={\n        \"transaction_types\": [\"finance\"],\n        \"directions\": [\"INBOUND\"],\n    },\n    conditions=[{\n        \"field\": \"currency\",\n        \"operator\": \"eq\",\n        \"value\": \"EUR\",\n    }, {\n        \"field\": \"amount\",\n        \"operator\": \"lt\",\n        \"value\": 10000,\n    }],\n    aggregation=[{\n        \"metric\": \"count\",\n        \"operator\": \"gte\",\n        \"value\": 20.0,\n        \"window\": \"30d\",\n        \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"},\n    }, {\n        \"metric\": \"max\",\n        \"field\": \"amount\",\n        \"operator\": \"lt\",\n        \"value\": 10000.0,\n        \"window\": \"30d\",\n        \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"},\n    }],\n    actions=[{\n        \"type\": \"add_score\",\n        \"value\": 35,\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.create({\n  title: \"Structuring - inbound (custom)\",\n  description: \"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\",\n  category: \"finance\",\n  mode: \"TEST\",\n  evaluation_mode: \"ALL\",\n  scope: {\n    transaction_types: [\"finance\"],\n    directions: [\"INBOUND\"],\n  },\n  conditions: [{\n    field: \"currency\",\n    operator: \"eq\",\n    value: \"EUR\",\n  }, {\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000,\n  }],\n  aggregation: [{\n    metric: \"count\",\n    operator: \"gte\",\n    value: 20.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }, {\n    metric: \"max\",\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }],\n  actions: [{\n    type: \"add_score\",\n    value: 35,\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.Create(ctx, didit.TransactionRuleCreateRequest{\n\tTitle:          \"Structuring - inbound (custom)\",\n\tDescription:    didit.String(\"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\"),\n\tCategory:       \"finance\",\n\tMode:           \"TEST\",\n\tEvaluationMode: didit.Some(didit.TransactionRuleCreateRequestEvaluationMode(\"ALL\")),\n\tScope: didit.Some(didit.TransactionRuleScopeParam{\n\t\tTransactionTypes: didit.Some([]string{\"finance\"}),\n\t\tDirections:       didit.Some([]didit.TransactionRuleScopeDirections{\"INBOUND\"}),\n\t}),\n\tConditions: didit.Some([]didit.TransactionRuleConditionParam{{\n\t\tField:    \"currency\",\n\t\tOperator: \"eq\",\n\t\tValue:    didit.Some[any](\"EUR\"),\n\t}, {\n\t\tField:    \"amount\",\n\t\tOperator: \"lt\",\n\t\tValue:    didit.Some[any](10000),\n\t}}),\n\tAggregation: didit.Some([]didit.TransactionRuleAggregationParam{{\n\t\tMetric:   didit.Some(didit.TransactionRuleAggregationMetric(\"count\")),\n\t\tOperator: didit.Some(didit.TransactionRuleAggregationOperator(\"gte\")),\n\t\tValue:    20.0,\n\t\tWindow:   didit.String(\"30d\"),\n\t\tFilters:  didit.Some(map[string]any{\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}),\n\t}, {\n\t\tMetric:   didit.Some(didit.TransactionRuleAggregationMetric(\"max\")),\n\t\tField:    didit.String(\"amount\"),\n\t\tOperator: didit.Some(didit.TransactionRuleAggregationOperator(\"lt\")),\n\t\tValue:    10000.0,\n\t\tWindow:   didit.String(\"30d\"),\n\t\tFilters:  didit.Some(map[string]any{\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}),\n\t}}),\n\tActions: didit.Some([]didit.TransactionRuleActionParam{{\n\t\tType:  \"add_score\",\n\t\tValue: didit.Some[any](35),\n\t}}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.TransactionRuleAction;\nimport me.didit.types.TransactionRuleActionAddScore;\nimport me.didit.types.TransactionRuleAggregation;\nimport me.didit.types.TransactionRuleCondition;\nimport me.didit.types.TransactionRuleCreateRequest;\nimport me.didit.types.TransactionRuleScope;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().create(TransactionRuleCreateRequest.builder()\n        .title(\"Structuring - inbound (custom)\")\n        .description(\"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\")\n        .category(\"finance\")\n        .mode(TransactionRuleCreateRequest.Mode.of(\"TEST\"))\n        .evaluationMode(TransactionRuleCreateRequest.EvaluationMode.of(\"ALL\"))\n        .scope(TransactionRuleScope.builder()\n                .transactionTypes(List.of(\"finance\"))\n                .directions(List.of(TransactionRuleScope.Directions.of(\"INBOUND\")))\n                .build())\n        .conditions(List.of(\n                TransactionRuleCondition.builder()\n                        .field(\"currency\")\n                        .operator(TransactionRuleCondition.Operator.of(\"eq\"))\n                        .value(\"EUR\")\n                        .build(),\n                TransactionRuleCondition.builder()\n                        .field(\"amount\")\n                        .operator(TransactionRuleCondition.Operator.of(\"lt\"))\n                        .value(10000)\n                        .build()))\n        .aggregation(List.of(\n                TransactionRuleAggregation.builder()\n                        .metric(TransactionRuleAggregation.Metric.of(\"count\"))\n                        .operator(TransactionRuleAggregation.Operator.of(\"gte\"))\n                        .value(20.0)\n                        .window(\"30d\")\n                        .filters(Map.of(\"direction\", \"INBOUND\", \"transaction_type\", \"finance\", \"subject_vendor_data\", \"__current__\", \"currency\", \"EUR\"))\n                        .build(),\n                TransactionRuleAggregation.builder()\n                        .metric(TransactionRuleAggregation.Metric.of(\"max\"))\n                        .field(\"amount\")\n                        .operator(TransactionRuleAggregation.Operator.of(\"lt\"))\n                        .value(10000.0)\n                        .window(\"30d\")\n                        .filters(Map.of(\"direction\", \"INBOUND\", \"transaction_type\", \"finance\", \"subject_vendor_data\", \"__current__\", \"currency\", \"EUR\"))\n                        .build()))\n        .actions(List.of(TransactionRuleAction.ofAddScore(TransactionRuleActionAddScore.builder()\n                .type(TransactionRuleActionAddScore.Type.of(\"add_score\"))\n                .value(35L)\n                .build())))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->create([\n    'title' => 'Structuring - inbound (custom)',\n    'description' => '20+ inbound EUR transfers, all under 10,000 EUR, 30 days',\n    'category' => 'finance',\n    'mode' => 'TEST',\n    'evaluation_mode' => 'ALL',\n    'scope' => [\n        'transaction_types' => ['finance'],\n        'directions' => ['INBOUND'],\n    ],\n    'conditions' => [[\n        'field' => 'currency',\n        'operator' => 'eq',\n        'value' => 'EUR',\n    ], [\n        'field' => 'amount',\n        'operator' => 'lt',\n        'value' => 10000,\n    ]],\n    'aggregation' => [[\n        'metric' => 'count',\n        'operator' => 'gte',\n        'value' => 20.0,\n        'window' => '30d',\n        'filters' => ['direction' => 'INBOUND', 'transaction_type' => 'finance', 'subject_vendor_data' => '__current__', 'currency' => 'EUR'],\n    ], [\n        'metric' => 'max',\n        'field' => 'amount',\n        'operator' => 'lt',\n        'value' => 10000.0,\n        'window' => '30d',\n        'filters' => ['direction' => 'INBOUND', 'transaction_type' => 'finance', 'subject_vendor_data' => '__current__', 'currency' => 'EUR'],\n    ]],\n    'actions' => [[\n        'type' => 'add_score',\n        'value' => 35,\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.create(\n  title: \"Structuring - inbound (custom)\",\n  description: \"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\",\n  category: \"finance\",\n  mode: \"TEST\",\n  evaluation_mode: \"ALL\",\n  scope: {\n    transaction_types: [\"finance\"],\n    directions: [\"INBOUND\"],\n  },\n  conditions: [{\n    field: \"currency\",\n    operator: \"eq\",\n    value: \"EUR\",\n  }, {\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000,\n  }],\n  aggregation: [{\n    metric: \"count\",\n    operator: \"gte\",\n    value: 20.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }, {\n    metric: \"max\",\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }],\n  actions: [{\n    type: \"add_score\",\n    value: 35,\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.CreateAsync(new TransactionRuleCreateRequest\n{\n    Title = \"Structuring - inbound (custom)\",\n    Description = \"20+ inbound EUR transfers, all under 10,000 EUR, 30 days\",\n    Category = \"finance\",\n    Mode = \"TEST\",\n    EvaluationMode = new TransactionRuleCreateRequestEvaluationMode(\"ALL\"),\n    Scope = new TransactionRuleScope\n    {\n        TransactionTypes = new string[] { \"finance\" },\n        Directions = new TransactionRuleScopeDirections[] { \"INBOUND\" },\n    },\n    Conditions = new TransactionRuleCondition[]\n    {\n        new()\n        {\n            Field = \"currency\",\n            Operator = \"eq\",\n            Value = \"EUR\",\n        },\n        new()\n        {\n            Field = \"amount\",\n            Operator = \"lt\",\n            Value = 10000,\n        },\n    },\n    Aggregation = new TransactionRuleAggregation[]\n    {\n        new()\n        {\n            Metric = new TransactionRuleAggregationMetric(\"count\"),\n            Operator = new TransactionRuleAggregationOperator(\"gte\"),\n            Value = 20.0,\n            Window = \"30d\",\n            Filters = new Dictionary<string, object> { [\"direction\"] = \"INBOUND\", [\"transaction_type\"] = \"finance\", [\"subject_vendor_data\"] = \"__current__\", [\"currency\"] = \"EUR\" },\n        },\n        new()\n        {\n            Metric = new TransactionRuleAggregationMetric(\"max\"),\n            Field = \"amount\",\n            Operator = new TransactionRuleAggregationOperator(\"lt\"),\n            Value = 10000.0,\n            Window = \"30d\",\n            Filters = new Dictionary<string, object> { [\"direction\"] = \"INBOUND\", [\"transaction_type\"] = \"finance\", [\"subject_vendor_data\"] = \"__current__\", [\"currency\"] = \"EUR\" },\n        },\n    },\n    Actions = new TransactionRuleAction[]\n    {\n        new()\n        {\n            Type = new TransactionRuleActionType(\"add_score\"),\n            Value = 35,\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/transactions/rules/{rule_uuid}/": {
      "parameters": [
        {
          "name": "rule_uuid",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "description": "सूची या निर्माण से नियम का uuid।"
        }
      ],
      "get": {
        "summary": "नियम प्राप्त करें",
        "description": "एक नियम को उसके संपूर्ण कॉन्फ़िगरेशन और निष्पादन काउंटरों के साथ प्राप्त करें।",
        "operationId": "getTransactionRule",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "नियम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleDetail"
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन पर ऐसा कोई नियम नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/rules/RULE_UUID/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "summary": "नियम अपडेट करें",
        "description": "किसी नियम को आंशिक रूप से अपडेट करें। कस्टम नियम कॉन्फ़िगरेशन के प्रत्येक फ़ील्ड को स्वीकार करते हैं। लाइब्रेरी (PRESET) नियम केवल `mode` स्वीकार करते हैं - इसका उपयोग किसी प्रीसेट को सक्रिय, अक्षम करने या TEST पर स्विच करने के लिए करें; कोई भी अन्य फ़ील्ड 400 लौटाता है, क्योंकि Didit लाइब्रेरी नियमों का रखरखाव करता है और उनके अपडेट स्वचालित रूप से लागू करता है। किसी लाइब्रेरी नियम की शर्तों को बदलने के लिए, लाइब्रेरी नियम की परिभाषा और `metadata.based_on` (लाइब्रेरी कुंजी) और `metadata.based_on_rule_uuid` का उपयोग करके `POST /v3/transactions/rules/` के साथ एक कस्टम प्रतिलिपि बनाएँ, फिर लाइब्रेरी नियम को `mode: DISABLED` के साथ बंद कर दें ताकि लेन-देन दो बार अलर्ट न करे। रोके गए लाइब्रेरी नियम की इंस्टॉल की गई प्रतिलिपि बंद कर दी जाती है: इसके `mode` को `DISABLED` के अलावा कुछ भी सेट करने पर 400 (\"This library rule cannot run yet: its conditions read data the rules engine cannot evaluate.\") उत्तर मिलता है।",
        "operationId": "updateTransactionRule",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleUpdateRequest"
              },
              "example": {
                "mode": "ACTIVE"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "अपडेट किया गया नियम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleDetail"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि, किसी लाइब्रेरी नियम पर गैर-मोड फ़ील्ड, या रोके गए लाइब्रेरी नियम पर DISABLED के अलावा कोई अन्य मोड।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/transactions/rules/RULE_UUID/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"mode\": \"ACTIVE\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    mode=\"ACTIVE\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.update(\"11111111-2222-3333-4444-555555555555\", {\n  mode: \"ACTIVE\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TransactionRuleUpdateRequest{\n\tMode: didit.Some(didit.TransactionRuleUpdateRequestMode(\"ACTIVE\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TransactionRuleUpdateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().update(\"11111111-2222-3333-4444-555555555555\", TransactionRuleUpdateRequest.builder()\n        .mode(TransactionRuleUpdateRequest.Mode.of(\"ACTIVE\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->update('11111111-2222-3333-4444-555555555555', [\n    'mode' => 'ACTIVE',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  mode: \"ACTIVE\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new TransactionRuleUpdateRequest\n{\n    Mode = new TransactionRuleUpdateRequestMode(\"ACTIVE\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "नियम हटाएं",
        "description": "एक CUSTOM नियम हटाएं। हटाना तत्काल और स्थायी होता है: नियम नए लेन-देन के लिए मूल्यांकन करना बंद कर देता है और लिस्टिंग से गायब हो जाता है, जबकि पहले से मूल्यांकित लेन-देन पर नियम के पिछले रन के रिकॉर्ड किए गए परिणाम बने रहते हैं। लाइब्रेरी नियमों को हटाया नहीं जा सकता - इसके बजाय उन्हें इंस्टॉल endpoint के माध्यम से अनइंस्टॉल करें (उन्हें लाइब्रेरी से हमेशा फिर से इंस्टॉल किया जा सकता है)।",
        "operationId": "deleteTransactionRule",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "हटा दिया गया।"
          },
          "400": {
            "description": "यह नियम एक लाइब्रेरी प्रीसेट है - इसके बजाय अनइंस्टॉल करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "detail": "Library rules cannot be deleted. Uninstall them via the rules install endpoint instead."
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन पर ऐसा कोई नियम नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/transactions/rules/RULE_UUID/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.transactions.rules.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.transactions.rules.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Transactions.Rules.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.transactions().rules().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->transactions->rules->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.rules.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Transactions.Rules.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ]
      }
    },
    "/v3/transactions/rules/backtest/": {
      "post": {
        "summary": "बैकटेस्ट नियम कॉन्फ़िगरेशन",
        "description": "कोई नियम बनाए बिना या किसी लेन-देन को प्रभावित किए बिना अपने हाल के लेन-देनों (सबसे हाल के पहले, बैकटेस्ट सीमा तक) के विरुद्ध एक काल्पनिक नियम कॉन्फ़िगरेशन का मूल्यांकन करें। किसी नियम को सक्रिय करने से पहले यह देखने के लिए इसका उपयोग करें कि यह कितनी बार मेल खाया होता और इससे कितने संबंधित पक्ष प्रभावित हुए होते।",
        "operationId": "backtestTransactionRules",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "backtest",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleBacktestRequest"
              },
              "example": {
                "conditions": [
                  {
                    "field": "currency",
                    "operator": "eq",
                    "value": "EUR"
                  },
                  {
                    "field": "amount",
                    "operator": "lt",
                    "value": 10000
                  }
                ],
                "aggregation": [
                  {
                    "metric": "count",
                    "operator": "gte",
                    "value": 20,
                    "window": "30d",
                    "filters": {
                      "direction": "INBOUND",
                      "transaction_type": "finance",
                      "subject_vendor_data": "__current__",
                      "currency": "EUR"
                    }
                  },
                  {
                    "metric": "max",
                    "field": "amount",
                    "operator": "lt",
                    "value": 10000,
                    "window": "30d",
                    "filters": {
                      "direction": "INBOUND",
                      "transaction_type": "finance",
                      "subject_vendor_data": "__current__",
                      "currency": "EUR"
                    }
                  }
                ],
                "evaluation_mode": "ALL",
                "scope": {
                  "transaction_types": [
                    "finance"
                  ],
                  "directions": [
                    "INBOUND"
                  ]
                },
                "period_days": 90
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "बैकटेस्ट आँकड़े।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleBacktestResult"
                },
                "example": {
                  "evaluated": 4820,
                  "matched": 12,
                  "affected_entities": 4,
                  "period_days": 90
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/transactions/rules/backtest/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"conditions\": [{\"field\": \"currency\", \"operator\": \"eq\", \"value\": \"EUR\"}, {\"field\": \"amount\", \"operator\": \"lt\", \"value\": 10000}], \"aggregation\": [{\"metric\": \"count\", \"operator\": \"gte\", \"value\": 20, \"window\": \"30d\", \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}}, {\"metric\": \"max\", \"field\": \"amount\", \"operator\": \"lt\", \"value\": 10000, \"window\": \"30d\", \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}}], \"evaluation_mode\": \"ALL\", \"scope\": {\"transaction_types\": [\"finance\"], \"directions\": [\"INBOUND\"]}, \"period_days\": 90}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.backtest(\n    conditions=[{\n        \"field\": \"currency\",\n        \"operator\": \"eq\",\n        \"value\": \"EUR\",\n    }, {\n        \"field\": \"amount\",\n        \"operator\": \"lt\",\n        \"value\": 10000,\n    }],\n    aggregation=[{\n        \"metric\": \"count\",\n        \"operator\": \"gte\",\n        \"value\": 20.0,\n        \"window\": \"30d\",\n        \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"},\n    }, {\n        \"metric\": \"max\",\n        \"field\": \"amount\",\n        \"operator\": \"lt\",\n        \"value\": 10000.0,\n        \"window\": \"30d\",\n        \"filters\": {\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"},\n    }],\n    evaluation_mode=\"ALL\",\n    scope={\n        \"transaction_types\": [\"finance\"],\n        \"directions\": [\"INBOUND\"],\n    },\n    period_days=90,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.backtest({\n  conditions: [{\n    field: \"currency\",\n    operator: \"eq\",\n    value: \"EUR\",\n  }, {\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000,\n  }],\n  aggregation: [{\n    metric: \"count\",\n    operator: \"gte\",\n    value: 20.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }, {\n    metric: \"max\",\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }],\n  evaluation_mode: \"ALL\",\n  scope: {\n    transaction_types: [\"finance\"],\n    directions: [\"INBOUND\"],\n  },\n  period_days: 90,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.Backtest(ctx, didit.TransactionRuleBacktestRequest{\n\tConditions: didit.Some([]didit.TransactionRuleConditionParam{{\n\t\tField:    \"currency\",\n\t\tOperator: \"eq\",\n\t\tValue:    didit.Some[any](\"EUR\"),\n\t}, {\n\t\tField:    \"amount\",\n\t\tOperator: \"lt\",\n\t\tValue:    didit.Some[any](10000),\n\t}}),\n\tAggregation: didit.Some([]didit.TransactionRuleAggregationParam{{\n\t\tMetric:   didit.Some(didit.TransactionRuleAggregationMetric(\"count\")),\n\t\tOperator: didit.Some(didit.TransactionRuleAggregationOperator(\"gte\")),\n\t\tValue:    20.0,\n\t\tWindow:   didit.String(\"30d\"),\n\t\tFilters:  didit.Some(map[string]any{\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}),\n\t}, {\n\t\tMetric:   didit.Some(didit.TransactionRuleAggregationMetric(\"max\")),\n\t\tField:    didit.String(\"amount\"),\n\t\tOperator: didit.Some(didit.TransactionRuleAggregationOperator(\"lt\")),\n\t\tValue:    10000.0,\n\t\tWindow:   didit.String(\"30d\"),\n\t\tFilters:  didit.Some(map[string]any{\"direction\": \"INBOUND\", \"transaction_type\": \"finance\", \"subject_vendor_data\": \"__current__\", \"currency\": \"EUR\"}),\n\t}}),\n\tEvaluationMode: didit.Some(didit.TransactionRuleBacktestRequestEvaluationMode(\"ALL\")),\n\tScope: didit.Some(didit.TransactionRuleScopeParam{\n\t\tTransactionTypes: didit.Some([]string{\"finance\"}),\n\t\tDirections:       didit.Some([]didit.TransactionRuleScopeDirections{\"INBOUND\"}),\n\t}),\n\tPeriodDays: didit.Int(90),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.TransactionRuleAggregation;\nimport me.didit.types.TransactionRuleBacktestRequest;\nimport me.didit.types.TransactionRuleCondition;\nimport me.didit.types.TransactionRuleScope;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().backtest(TransactionRuleBacktestRequest.builder()\n        .conditions(List.of(\n                TransactionRuleCondition.builder()\n                        .field(\"currency\")\n                        .operator(TransactionRuleCondition.Operator.of(\"eq\"))\n                        .value(\"EUR\")\n                        .build(),\n                TransactionRuleCondition.builder()\n                        .field(\"amount\")\n                        .operator(TransactionRuleCondition.Operator.of(\"lt\"))\n                        .value(10000)\n                        .build()))\n        .aggregation(List.of(\n                TransactionRuleAggregation.builder()\n                        .metric(TransactionRuleAggregation.Metric.of(\"count\"))\n                        .operator(TransactionRuleAggregation.Operator.of(\"gte\"))\n                        .value(20.0)\n                        .window(\"30d\")\n                        .filters(Map.of(\"direction\", \"INBOUND\", \"transaction_type\", \"finance\", \"subject_vendor_data\", \"__current__\", \"currency\", \"EUR\"))\n                        .build(),\n                TransactionRuleAggregation.builder()\n                        .metric(TransactionRuleAggregation.Metric.of(\"max\"))\n                        .field(\"amount\")\n                        .operator(TransactionRuleAggregation.Operator.of(\"lt\"))\n                        .value(10000.0)\n                        .window(\"30d\")\n                        .filters(Map.of(\"direction\", \"INBOUND\", \"transaction_type\", \"finance\", \"subject_vendor_data\", \"__current__\", \"currency\", \"EUR\"))\n                        .build()))\n        .evaluationMode(TransactionRuleBacktestRequest.EvaluationMode.of(\"ALL\"))\n        .scope(TransactionRuleScope.builder()\n                .transactionTypes(List.of(\"finance\"))\n                .directions(List.of(TransactionRuleScope.Directions.of(\"INBOUND\")))\n                .build())\n        .periodDays(90L)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->backtest([\n    'conditions' => [[\n        'field' => 'currency',\n        'operator' => 'eq',\n        'value' => 'EUR',\n    ], [\n        'field' => 'amount',\n        'operator' => 'lt',\n        'value' => 10000,\n    ]],\n    'aggregation' => [[\n        'metric' => 'count',\n        'operator' => 'gte',\n        'value' => 20.0,\n        'window' => '30d',\n        'filters' => ['direction' => 'INBOUND', 'transaction_type' => 'finance', 'subject_vendor_data' => '__current__', 'currency' => 'EUR'],\n    ], [\n        'metric' => 'max',\n        'field' => 'amount',\n        'operator' => 'lt',\n        'value' => 10000.0,\n        'window' => '30d',\n        'filters' => ['direction' => 'INBOUND', 'transaction_type' => 'finance', 'subject_vendor_data' => '__current__', 'currency' => 'EUR'],\n    ]],\n    'evaluation_mode' => 'ALL',\n    'scope' => [\n        'transaction_types' => ['finance'],\n        'directions' => ['INBOUND'],\n    ],\n    'period_days' => 90,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.backtest(\n  conditions: [{\n    field: \"currency\",\n    operator: \"eq\",\n    value: \"EUR\",\n  }, {\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000,\n  }],\n  aggregation: [{\n    metric: \"count\",\n    operator: \"gte\",\n    value: 20.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }, {\n    metric: \"max\",\n    field: \"amount\",\n    operator: \"lt\",\n    value: 10000.0,\n    window: \"30d\",\n    filters: { direction: \"INBOUND\", transaction_type: \"finance\", subject_vendor_data: \"__current__\", currency: \"EUR\" },\n  }],\n  evaluation_mode: \"ALL\",\n  scope: {\n    transaction_types: [\"finance\"],\n    directions: [\"INBOUND\"],\n  },\n  period_days: 90\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.BacktestAsync(new TransactionRuleBacktestRequest\n{\n    Conditions = new TransactionRuleCondition[]\n    {\n        new()\n        {\n            Field = \"currency\",\n            Operator = \"eq\",\n            Value = \"EUR\",\n        },\n        new()\n        {\n            Field = \"amount\",\n            Operator = \"lt\",\n            Value = 10000,\n        },\n    },\n    Aggregation = new TransactionRuleAggregation[]\n    {\n        new()\n        {\n            Metric = new TransactionRuleAggregationMetric(\"count\"),\n            Operator = new TransactionRuleAggregationOperator(\"gte\"),\n            Value = 20.0,\n            Window = \"30d\",\n            Filters = new Dictionary<string, object> { [\"direction\"] = \"INBOUND\", [\"transaction_type\"] = \"finance\", [\"subject_vendor_data\"] = \"__current__\", [\"currency\"] = \"EUR\" },\n        },\n        new()\n        {\n            Metric = new TransactionRuleAggregationMetric(\"max\"),\n            Field = \"amount\",\n            Operator = new TransactionRuleAggregationOperator(\"lt\"),\n            Value = 10000.0,\n            Window = \"30d\",\n            Filters = new Dictionary<string, object> { [\"direction\"] = \"INBOUND\", [\"transaction_type\"] = \"finance\", [\"subject_vendor_data\"] = \"__current__\", [\"currency\"] = \"EUR\" },\n        },\n    },\n    EvaluationMode = new TransactionRuleBacktestRequestEvaluationMode(\"ALL\"),\n    Scope = new TransactionRuleScope\n    {\n        TransactionTypes = new string[] { \"finance\" },\n        Directions = new TransactionRuleScopeDirections[] { \"INBOUND\" },\n    },\n    PeriodDays = 90,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/transactions/rules/library/": {
      "get": {
        "summary": "नियम लाइब्रेरी सूचीबद्ध करें",
        "description": "प्रत्येक प्रविष्टि के पूर्ण कॉन्फ़िगरेशन और इस एप्लिकेशन के लिए एक `is_installed` फ़्लैग के साथ पूरी प्रीसेट नियम लाइब्रेरी (150+ नियम) ब्राउज़ करें। बंडल, श्रेणी या फ़्री-टेक्स्ट खोज द्वारा फ़िल्टर करें। जिस लाइब्रेरी नियम की शर्तें ऐसा डेटा पढ़ती हैं जिसे नियम इंजन अभी मूल्यांकित नहीं कर सकता, उसे तब तक रोक कर रखा जाता है जब तक कि वह निष्पादित न हो सके। रोके गए नियम सूचीबद्ध नहीं होते हैं।",
        "operationId": "listTransactionRuleLibrary",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "list_library",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "bundle",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "बंडल द्वारा फ़िल्टर करें, उदा. finance, aml_ctf, crypto_monitoring, travel_rule"
          },
          {
            "name": "category",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "श्रेणी के अनुसार फ़िल्टर करें"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "शीर्षक और विवरण के विरुद्ध केस-इनसेंसिटिव मिलान"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "पेज का आकार"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "पेज ऑफ़सेट"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड लाइब्रेरी प्रविष्टियाँ।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TransactionRuleLibraryEntry"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/rules/library/?bundle=finance' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.transactions.rules.list_library():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.transactions.rules.listLibrary()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Rules.ListLibraryAutoPaging(ctx, didit.TransactionsRulesListLibraryParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.transactions().rules().listLibrary()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->transactions->rules->listLibrary() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.rules.list_library.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Transactions.Rules.ListLibraryAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/transactions/rules/install/": {
      "post": {
        "summary": "लाइब्रेरी नियम इंस्टॉल करें",
        "description": "`library_keys` या पूरे `bundle` द्वारा एप्लिकेशन पर एक या अधिक प्रीसेट इंस्टॉल करें। लेन-देन निगरानी चालू रहने पर इंस्टॉल किया गया प्रीसेट तुरंत सक्रिय हो जाता है, अन्यथा अक्षम रहता है; पहले से इंस्टॉल की गई कुंजियों को छोड़ दिया जाता है। एक लाइब्रेरी नियम जिसकी शर्तें ऐसे डेटा को पढ़ती हैं जिनका नियम इंजन अभी मूल्यांकन नहीं कर सकता, उसे तब तक रोक कर रखा जाता है जब तक कि वह चल न सके। एक अनुरोध जो `library_keys` में से किसी एक का नाम देता है, वह 400 रिस्पॉन्स देता है और कुछ भी इंस्टॉल नहीं करता है (\"ये लाइब्रेरी नियम अभी नहीं चल सकते: उनकी शर्तों में ऐसा डेटा पढ़ा जाता है जिसका नियम इंजन अभी मूल्यांकन नहीं कर सकता।\" जिसके बाद कुंजियाँ होती हैं), और एक `bundle` इंस्टॉलेशन इसे छोड़ देता है। एक रोक कर रखा गया नियम एक बार उसकी शर्तों का मूल्यांकन किए जाने के बाद अपने आप वापस आ जाता है। एक `library_keys` प्रविष्टि जो लाइब्रेरी में नहीं है, उसे छोड़ दिया जाता है, अस्वीकार नहीं किया जाता।",
        "operationId": "installTransactionRuleLibrary",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "install_library",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleInstallRequest"
              },
              "example": {
                "library_keys": [
                  "structuring-inbound",
                  "structuring-outbound"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "क्या इंस्टॉल किया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleInstallResult"
                },
                "example": {
                  "installed_library_keys": [
                    "structuring-inbound",
                    "structuring-outbound"
                  ],
                  "installed_count": 2
                }
              }
            }
          },
          "400": {
            "description": "न तो library_keys और न ही bundle प्रदान किया गया, `library_keys` एक सूची नहीं है, या एक `library_keys` प्रविष्टि रोकी गई है। एक अज्ञात प्रविष्टि को छोड़ दिया जाता है और उसके बिना 200 रिस्पॉन्स दिया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/transactions/rules/install/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"library_keys\": [\"structuring-inbound\", \"structuring-outbound\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.install_library(\n    library_keys=[\"structuring-inbound\", \"structuring-outbound\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.installLibrary({\n  library_keys: [\"structuring-inbound\", \"structuring-outbound\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.InstallLibrary(ctx, didit.TransactionRuleInstallRequest{\n\tLibraryKeys: didit.Some([]string{\"structuring-inbound\", \"structuring-outbound\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.TransactionRuleInstallRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().installLibrary(TransactionRuleInstallRequest.builder()\n        .libraryKeys(List.of(\"structuring-inbound\", \"structuring-outbound\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->installLibrary([\n    'library_keys' => ['structuring-inbound', 'structuring-outbound'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.install_library(library_keys: [\"structuring-inbound\", \"structuring-outbound\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.InstallLibraryAsync(new TransactionRuleInstallRequest\n{\n    LibraryKeys = new string[] { \"structuring-inbound\", \"structuring-outbound\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "लाइब्रेरी नियम अनइंस्टॉल करें",
        "description": "`library_keys` या पूरे `bundle` द्वारा एप्लिकेशन से इंस्टॉल किए गए प्रीसेट हटाएं। अनइंस्टॉल किए गए प्रीसेट तुरंत मूल्यांकन बंद कर देते हैं और उन्हें लाइब्रेरी से किसी भी समय पुनः इंस्टॉल किया जा सकता है।",
        "operationId": "uninstallTransactionRuleLibrary",
        "x-didit-sdk": {
          "resource": "transactions.rules",
          "method": "uninstall_library",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleInstallRequest"
              },
              "example": {
                "bundle": "responsible_gaming"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "कितने प्रीसेट हटाए गए।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRuleInstallResult"
                },
                "example": {
                  "uninstalled_count": 5
                }
              }
            }
          },
          "400": {
            "description": "न तो library_keys और न ही bundle प्रदान किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/transactions/rules/install/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"bundle\": \"responsible_gaming\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.rules.uninstall_library(\n    bundle=\"responsible_gaming\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.rules.uninstallLibrary({\n  bundle: \"responsible_gaming\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Rules.UninstallLibrary(ctx, didit.TransactionRuleInstallRequest{\n\tBundle: didit.String(\"responsible_gaming\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TransactionRuleInstallRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().rules().uninstallLibrary(TransactionRuleInstallRequest.builder()\n        .bundle(\"responsible_gaming\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->rules->uninstallLibrary([\n    'bundle' => 'responsible_gaming',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.rules.uninstall_library(bundle: \"responsible_gaming\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Rules.UninstallLibraryAsync(new TransactionRuleInstallRequest\n{\n    Bundle = \"responsible_gaming\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/": {
      "get": {
        "summary": "नेटवर्क सूचीबद्ध करें",
        "description": "इस एप्लिकेशन के संगठन के भीतर पहचाने गए धोखाधड़ी नेटवर्क सूचीबद्ध करें, डिफ़ॉल्ट रूप से उच्चतम जोखिम पहले। डिफ़ॉल्ट रूप से खारिज किए गए नेटवर्क बाहर रखे जाते हैं; उन्हें शामिल करने के लिए status पास करें। सैंडबॉक्स एप्लिकेशन में कभी भी नेटवर्क नहीं होते हैं: क्लस्टरिंग सैंडबॉक्स डेटा को पूरी तरह से बाहर रखती है। प्रत्येक रिस्पॉन्स संगठन का `sharing_mode` रखता है और यह भी कि क्या क्रॉस-संगठन सिग्नल इस पर लागू होते हैं (`cross_org_available`, `cross_org_unavailable_reason`)। `kpis` आपके फ़िल्टर से मेल खाने वाले नेटवर्क को एकत्रित करते हैं और `counts` एप्लिकेशन द्वारा देखे जा सकने वाले प्रत्येक नेटवर्क को एकत्रित करते हैं; जब आपको केवल पेज की आवश्यकता हो तो दोनों को छोड़ने के लिए `summary=false` पास करें। इसके लिए पूर्ण-पहुँच API कुंजी, या कंसोल सदस्य के लिए `list:networks` की आवश्यकता होती है।",
        "operationId": "list_networks",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "शामिल करने के लिए स्थितियों की अल्पविराम से अलग की गई सूची: active,in_review,resolved,dismissed। dismissed को बाहर करने के लिए छोड़ दें।"
          },
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "identity",
                "transactions"
              ]
            },
            "description": "`transactions` उन नेटवर्कों को रखता है जिनके सदस्य सभी लेन-देन पक्ष हैं; `identity` अन्य प्रत्येक नेटवर्क को रखता है। दोनों के लिए छोड़ दें। यह `counts.views` और `counts.facets` को भी सीमित करता है। कोई भी अन्य मान 400 लौटाता है।"
          },
          {
            "name": "signal_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग किए गए सिग्नल प्रकार: ip_address,device,face,document_number,phone,email,address।"
          },
          {
            "name": "pattern_type",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग किए गए पैटर्न प्रकार, उदाहरण के लिए exact_same_device,same_email।"
          },
          {
            "name": "risk_band",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "कॉमा से अलग किए गए बैंड: low,medium,high।"
          },
          {
            "name": "min_size",
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "description": "न्यूनतम सदस्य संख्या।"
          },
          {
            "name": "max_size",
            "in": "query",
            "schema": {
              "type": "integer"
            },
            "description": "अधिकतम सदस्य संख्या।"
          },
          {
            "name": "assignee",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "कॉमा से अलग किए गए असाइनी: `unassigned`, सदस्य ईमेल (केस-असंवेदनशील मिलान), या कॉलिंग कंसोल सदस्य के लिए `me`। एक नेटवर्क किसी भी मान से मेल खाता है। `me` के लिए कंसोल सदस्य token आवश्यक है: API कुंजी को 400 `{\"assignee\": [\"\\\"me\\\" needs a user token; an API key has no assignee identity.\"]}` प्राप्त होता है।"
          },
          {
            "name": "priority",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "अल्पविराम से अलग की गई प्राथमिकताएँ: बिना किसी प्राथमिकता वाले नेटवर्क के लिए `low`, `medium`, `high`, या `none`। कोई अन्य मान 400 `{\"priority\": \"Unknown priority: <values>.\"}` लौटाता है।"
          },
          {
            "name": "risk_min",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 100
            },
            "description": "न्यूनतम जोखिम स्कोर, 0 से 100 तक की एक पूर्ण संख्या। ऐसा मान जो पूर्ण संख्या नहीं है, 400 `{\"risk_min\": \"Use a whole number from 0 to 100.\"}` लौटाता है।"
          },
          {
            "name": "has_case",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "description": "`true` उन नेटवर्क को रखता है जिनके लिए आपके एप्लिकेशन ने एक केस खोला है, `false` दूसरों को रखता है। किसी भी अन्य मान को अनदेखा कर दिया जाता है।"
          },
          {
            "name": "date_from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "last_activity_at पर निचली सीमा (ISO 8601 तिथि या दिनांक-समय)।"
          },
          {
            "name": "date_to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "first_activity_at पर ऊपरी सीमा (ISO 8601 दिनांक या डेटटाइम)।"
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "नेटवर्क नाम, सदस्य नामों, network_id (N-0001), और सटीक pattern_type टोकनों में मुक्त-पाठ खोज।"
          },
          {
            "name": "ordering",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "risk_score, -risk_score, last_activity_at, -last_activity_at, first_activity_at, -first_activity_at, network_number, -network_number में से एक। डिफ़ॉल्ट रूप से -risk_score,-last_activity_at है।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 500
            },
            "description": "पेज का आकार, 1-500। डिफ़ॉल्ट 100 है।"
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            },
            "description": "पहले रिकॉर्ड का शून्य-आधारित ऑफ़सेट।"
          },
          {
            "name": "summary",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "`false` केवल पेज और उसकी `count` लौटाता है, बिना `kpis` और `counts` के। डिफ़ॉल्ट रूप से `true`। `true` या `false` के अलावा कोई भी मान 400 लौटाता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/?status=active,in_review&ordering=-risk_score' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.networks.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.networks.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Networks.ListAutoPaging(ctx, didit.NetworksListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.networks().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->networks->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.networks.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Networks.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड नेटवर्क सूची, संगठन के शेयरिंग मोड और क्रॉस-ऑर्गनाइज़ेशन उपलब्धता के साथ, साथ ही `kpis` और `counts` जब तक कि `summary=false` न हो।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "integer",
                      "nullable": true,
                      "description": "अगले पेज का ऑफ़सेट, या अंतिम पेज पर null।"
                    },
                    "previous": {
                      "type": "integer",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NetworkListItem"
                      }
                    },
                    "kpis": {
                      "type": "object",
                      "description": "प्रत्येक कुंजी वर्तमान फ़िल्टर से मेल खाने वाले परिणामों के लिए {value, delta} है। `summary=false` होने पर छोड़ दी जाती है।",
                      "properties": {
                        "active": {
                          "type": "object"
                        },
                        "in_review": {
                          "type": "object"
                        },
                        "applicants_involved": {
                          "type": "object"
                        },
                        "detected_this_period": {
                          "type": "object"
                        },
                        "false_positive_rate": {
                          "type": "object"
                        }
                      }
                    },
                    "counts": {
                      "$ref": "#/components/schemas/NetworkListCounts"
                    },
                    "sharing_mode": {
                      "type": "string",
                      "enum": [
                        "off",
                        "private",
                        "global"
                      ],
                      "description": "संगठन का क्रॉस-संगठन शेयरिंग मोड। केवल `global` ही विभिन्न संगठनों के नेटवर्क की तुलना करता है; `private` और `off` उन्हें संगठन के अपने इतिहास तक ही सीमित रखते हैं।",
                      "example": "global"
                    },
                    "cross_org_available": {
                      "type": "boolean",
                      "description": "क्या क्रॉस-संगठन संकेत इस संगठन पर लागू होते हैं। उन्हें Enterprise प्लान और `global` शेयरिंग मोड दोनों की आवश्यकता होती है।",
                      "example": true
                    },
                    "cross_org_unavailable_reason": {
                      "type": "string",
                      "enum": [
                        "plan",
                        "sharing_mode"
                      ],
                      "nullable": true,
                      "description": "क्रॉस-ऑर्गेनाइज़ेशन सिग्नल क्यों लागू नहीं होते, इस क्रम में जाँचे जाते हैं। `plan`: संगठन के प्लान में क्रॉस-ऑर्गेनाइज़ेशन फ़्रॉड नेटवर्क शामिल नहीं है (इसके लिए Enterprise प्लान की आवश्यकता है), भले ही शेयरिंग मोड कुछ भी हो। `sharing_mode`: प्लान में यह शामिल है, लेकिन शेयरिंग मोड `private` या `off` है। `cross_org_available` के `true` होने पर Null।",
                      "example": null
                    }
                  },
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results",
                    "sharing_mode",
                    "cross_org_available",
                    "cross_org_unavailable_reason"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "एक अमान्य फ़िल्टर, क्रमबद्धता, पेजिनेशन या `summary` मान।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid summary": {
                    "summary": "अमान्य सारांश",
                    "value": {
                      "summary": [
                        "Must be \"true\" or \"false\"."
                      ]
                    }
                  },
                  "Invalid scope": {
                    "summary": "अमान्य स्कोप",
                    "value": {
                      "scope": [
                        "Use identity or transactions."
                      ]
                    }
                  },
                  "Unsupported ordering": {
                    "summary": "असमर्थित क्रमबद्धता",
                    "value": [
                      "Unsupported ordering."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "अनुपलब्ध या अमान्य क्रेडेंशियल",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Networks endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `list:networks` आवश्यक है। जब संगठन के लिए Networks सक्षम नहीं होता है, तो `code: networks_not_entitled` के साथ भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Networks not enabled": {
                    "summary": "नेटवर्क सक्षम नहीं हैं",
                    "value": {
                      "detail": "Networks is disabled for this organization. Contact Didit support if you believe this is an error.",
                      "code": "networks_not_entitled"
                    }
                  },
                  "Restricted API key": {
                    "summary": "प्रतिबंधित API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "No permission": {
                    "summary": "कोई अनुमति नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/": {
      "get": {
        "summary": "नेटवर्क प्राप्त करें",
        "description": "एकल नेटवर्क का पूरा विवरण प्राप्त करें: आंकड़े, धोखाधड़ी टैग और जोखिम सिग्नल, साथ ही संगठन का `sharing_mode` और क्रॉस-संगठन उपलब्धता, नेटवर्क पर आपके एप्लिकेशन के `tags`, सदस्य `outcomes` और पैटर्न स्कोर (`patterns`)। इसके लिए फ़ुल-एक्सेस API कुंजी, या कंसोल सदस्य के लिए `read:networks` की आवश्यकता होती है।",
        "operationId": "get_network",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.retrieve(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.retrieve(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.Retrieve(ctx, \"n3a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().retrieve(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->retrieve('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.retrieve(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.RetrieveAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क विवरण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkDetailResponse"
                },
                "example": {
                  "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "network_id": "N-0042",
                  "name": null,
                  "status": "in_review",
                  "risk": {
                    "score": 82,
                    "band": "high",
                    "bar": 0.82
                  },
                  "pattern_types": [
                    "exact_same_device",
                    "same_email"
                  ],
                  "signal_types": [
                    "device",
                    "email"
                  ],
                  "member_counts": {
                    "total": 3,
                    "users": 3,
                    "businesses": 0,
                    "transaction_parties": 0
                  },
                  "member_status": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "not_completed": 1
                  },
                  "signal_coverage": {
                    "device": {
                      "signals": 1,
                      "subjects": 3,
                      "coverage": 1.0
                    },
                    "email": {
                      "signals": 1,
                      "subjects": 2,
                      "coverage": 0.6667
                    }
                  },
                  "first_activity_at": "2026-10-01T09:12:44Z",
                  "last_activity_at": "2026-10-12T16:03:10Z",
                  "stats": {
                    "members": {
                      "total": 3,
                      "users": 3,
                      "businesses": 0,
                      "transaction_parties": 0
                    },
                    "member_status": {
                      "approved": 1,
                      "declined": 1,
                      "in_review": 0,
                      "not_completed": 1
                    },
                    "signals": {
                      "total": 2,
                      "by_type": {
                        "device": {
                          "signals": 1,
                          "subjects": 3,
                          "coverage": 1.0
                        },
                        "email": {
                          "signals": 1,
                          "subjects": 2,
                          "coverage": 0.6667
                        }
                      }
                    }
                  },
                  "fraud_tags": [],
                  "risk_signals": {
                    "residential_proxy_reuse": {
                      "detected": false,
                      "signal_count": 0,
                      "max_subject_count": 0
                    },
                    "email_intelligence": {
                      "enriched_signal_count": 1,
                      "high_risk_count": 0,
                      "social_profile_count": 0
                    },
                    "phone_intelligence": {
                      "enriched_signal_count": 0,
                      "high_risk_count": 0
                    }
                  },
                  "reviewed_at": "2026-10-12T16:30:00Z",
                  "reviewed_by": "reviewer@example.com",
                  "review_reason": "Shared device across three new accounts.",
                  "notes_count": 0,
                  "sharing_mode": "global",
                  "cross_org_available": true,
                  "cross_org_unavailable_reason": null,
                  "tags": [
                    {
                      "uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "name": "SUSPICIOUS",
                      "color": "#6366F1",
                      "source": "custom",
                      "added_by": null,
                      "added_at": "2026-10-13T08:15:00Z"
                    }
                  ],
                  "outcomes": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "total": 3
                  },
                  "patterns": [
                    {
                      "type": "background",
                      "score": 0.8125,
                      "members": 3,
                      "reason": null,
                      "computed_at": "2026-10-13T08:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "अनुपलब्ध या अमान्य क्रेडेंशियल",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Networks endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `read:networks` आवश्यक है। जब संगठन के लिए Networks सक्षम नहीं होता है, तो `code: networks_not_entitled` के साथ भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Networks not enabled": {
                    "summary": "नेटवर्क सक्षम नहीं हैं",
                    "value": {
                      "detail": "Networks is disabled for this organization. Contact Didit support if you believe this is an error.",
                      "code": "networks_not_entitled"
                    }
                  },
                  "Restricted API key": {
                    "summary": "प्रतिबंधित API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "No permission": {
                    "summary": "कोई अनुमति नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/graph/": {
      "get": {
        "summary": "नेटवर्क ग्राफ़ प्राप्त करें",
        "description": "सब्जेक्ट नोड्स (वेंडर उपयोगकर्ता, वेंडर व्यवसाय, लेन-देन पक्ष) और सिग्नल नोड्स (उन्हें जोड़ने वाले साझा डिवाइस/IP/चेहरा/दस्तावेज़/फ़ोन/ईमेल/पते के मान) के ग्राफ़ के रूप में नेटवर्क प्राप्त करें, जिसमें किनारे सदस्यताओं का प्रतिनिधित्व करते हैं।",
        "operationId": "get_network_graph",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "retrieve_graph",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "depth",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "all"
              ]
            },
            "description": "शामिल करने के लिए फ़ोकस विषय से हॉप्स। डिफ़ॉल्ट रूप से सभी (असीमित)।"
          },
          {
            "name": "focus_kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "vendor_user",
                "vendor_business",
                "transaction_party"
              ]
            },
            "description": "ग्राफ़ को केंद्रित करने के लिए सब्जेक्ट प्रकार। focus_id के साथ प्रदान किया जाना चाहिए; गहराई सीमित होने और दोनों में से किसी के भी प्रदान न किए जाने पर डिफ़ॉल्ट रूप से किसी भी सदस्य पर सेट होता है।"
          },
          {
            "name": "focus_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "ग्राफ़ को केंद्रित करने के लिए सब्जेक्ट UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/graph/?depth=2' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.retrieve_graph(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.retrieveGraph(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RetrieveGraph(ctx, \"n3a5e000-0000-4000-8000-000000000001\", didit.NetworksRetrieveGraphParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().retrieveGraph(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->retrieveGraph('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.retrieve_graph(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.RetrieveGraphAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क ग्राफ़।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkGraph"
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/members/": {
      "get": {
        "summary": "नेटवर्क सदस्य सूचीबद्ध करें",
        "description": "इस नेटवर्क से संबंधित इकाइयों (वेंडर उपयोगकर्ता, वेंडर व्यवसाय, या लेन-देन पक्ष) की सूची बनाएं।",
        "operationId": "list_network_members",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "list_members",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/members/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.list_members(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.listMembers(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.ListMembers(ctx, \"n3a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().listMembers(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->listMembers('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.list_members(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.ListMembersAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क सदस्य। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NetworkMember"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/signals/": {
      "get": {
        "summary": "नेटवर्क सिग्नल सूचीबद्ध करें",
        "description": "उन सिग्नलों (साझा डिवाइस, IP, चेहरा, दस्तावेज़ संख्या, फ़ोन, ईमेल, या पते के मान) की सूची बनाएं जो इस नेटवर्क के सदस्यों को जोड़ते हैं।",
        "operationId": "list_network_signals",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "list_signals",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/signals/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.list_signals(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.listSignals(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.ListSignals(ctx, \"n3a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().listSignals(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->listSignals('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.list_signals(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.ListSignalsAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क सिग्नल। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NetworkSignal"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/": {
      "get": {
        "summary": "नेटवर्क टाइमलाइन प्राप्त करें",
        "description": "`contract` के बिना: नेटवर्क के अपने इवेंट (डिटेक्शन, प्रत्येक सिग्नल का नवीनतम अवलोकन और उसकी समीक्षा), सबसे पुराने पहले और पेजिनेट नहीं किए गए। `limit`, `cursor` और `event_type` को अनदेखा कर दिया जाता है। `contract=2` के साथ: टाइप की गई टाइमलाइन, सबसे नए पहले और cursor द्वारा पेजिनेट की गई। यह जोड़ता है कि सदस्य खातों ने क्या किया (सत्यापन प्रयास, लेन-देन, साइन-इन जिन्हें आप इवेंट API के माध्यम से पोस्ट करते हैं और जिन लाइव नियमों को वे हिट करते हैं) और नेटवर्क के लिए खोले गए केस। `note_added` इवेंट केवल कंसोल सदस्यों को लौटाए जाते हैं, कभी भी API कुंजी को नहीं। इसके लिए पूर्ण-पहुंच API कुंजी, या कंसोल सदस्य के लिए `read:networks` की आवश्यकता होती है।",
        "operationId": "get_network_timeline",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "retrieve_timeline",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "contract",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "2"
              ]
            },
            "description": "`2` टाइप की गई टाइमलाइन लौटाता है। डिफ़ॉल्ट टाइमलाइन के लिए इसे छोड़ दें। कोई भी अन्य मान 400 लौटाता है।"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 100
            },
            "description": "केवल टाइप्ड टाइमलाइन। प्रति पेज इवेंट की संख्या, 1 से 500। डिफ़ॉल्ट रूप से 100।"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "केवल टाइप्ड टाइमलाइन। पिछले पेज का `next_cursor`। अमान्य या खाली कर्सर 400 लौटाता है।"
          },
          {
            "name": "event_type",
            "in": "query",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "maxItems": 20,
              "items": {
                "type": "string",
                "enum": [
                  "network_detected",
                  "signal_observed",
                  "network_active",
                  "network_in_review",
                  "network_resolved",
                  "network_dismissed",
                  "verification_attempt",
                  "transaction",
                  "login",
                  "rule_hit",
                  "case_linked",
                  "note_added"
                ]
              }
            },
            "description": "केवल टाइप्ड टाइमलाइन। रखने के लिए इवेंट प्रकार, दोहराए गए या कॉमा द्वारा अलग किए गए, अधिकतम 20 मान। डिफ़ॉल्ट रूप से सभी प्रकार।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/timeline/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "curl",
            "label": "curl (typed timeline)",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/timeline/?contract=2&limit=50&event_type=verification_attempt,login' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.retrieve_timeline(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.retrieveTimeline(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RetrieveTimeline(ctx, \"n3a5e000-0000-4000-8000-000000000001\", didit.NetworksRetrieveTimelineParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().retrieveTimeline(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->retrieveTimeline('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.retrieve_timeline(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.RetrieveTimelineAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "`contract` के बिना: `{results}`, सबसे पुराने पहले, पेजिनेटेड नहीं। `contract=2` के साथ: `{results, next_cursor}`, सबसे नए पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/NetworkTimeline"
                    },
                    {
                      "$ref": "#/components/schemas/NetworkTimelinePage"
                    }
                  ]
                },
                "examples": {
                  "Default timeline": {
                    "summary": "contract के बिना",
                    "value": {
                      "results": [
                        {
                          "event_type": "network_detected",
                          "occurred_at": "2026-10-01T09:12:44Z",
                          "label": "Network detected",
                          "metadata": {
                            "network_id": "N-0042"
                          }
                        },
                        {
                          "event_type": "signal_observed",
                          "occurred_at": "2026-10-12T16:03:10Z",
                          "label": "device observed",
                          "metadata": {
                            "signal_type": "device",
                            "subject_count": 3,
                            "is_hub": false
                          }
                        },
                        {
                          "event_type": "network_in_review",
                          "occurred_at": "2026-10-12T16:30:00Z",
                          "label": "Network in_review",
                          "metadata": {
                            "reason": "Shared device across three new accounts."
                          }
                        }
                      ]
                    }
                  },
                  "Typed timeline": {
                    "summary": "contract=2 के साथ",
                    "value": {
                      "results": [
                        {
                          "id": "monitoring_event:9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e",
                          "event_type": "login",
                          "occurred_at": "2026-10-12T18:41:02Z",
                          "ingested_at": "2026-10-12T18:41:03Z",
                          "label": "Login",
                          "metadata": {},
                          "account": {
                            "node_id": "vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                            "node_type": "account",
                            "uuid": "5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                            "vendor_data": "user-1042",
                            "display_name": "Alex Example",
                            "ownership": "owned",
                            "route": {
                              "kind": "user",
                              "id": "5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                              "application_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
                            }
                          },
                          "source_ref": {
                            "kind": "monitoring_event",
                            "id": "9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e",
                            "ownership": "owned"
                          },
                          "verification_attempt": null,
                          "transaction": null,
                          "login": {
                            "action": "auth.login",
                            "succeeded": true,
                            "status": "APPROVED",
                            "ip": {
                              "address": "203.0.113.24",
                              "country_code": "ES",
                              "city": "Madrid",
                              "connection_type": null,
                              "is_vpn_or_tor": false,
                              "is_data_center": false
                            },
                            "device": {
                              "fingerprint": "fp_0a1b2c3d",
                              "label": "Chrome · Android"
                            },
                            "is_first_login": false,
                            "is_new_device": true
                          },
                          "rule_hit": null,
                          "case_linked": null,
                          "note_added": null
                        },
                        {
                          "id": "session:1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
                          "event_type": "verification_attempt",
                          "occurred_at": "2026-10-12T16:03:10Z",
                          "ingested_at": "2026-10-12T16:03:10Z",
                          "label": "Verification attempt 2 of 2",
                          "metadata": {},
                          "account": {
                            "node_id": "vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                            "node_type": "account",
                            "uuid": "5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                            "vendor_data": "user-1042",
                            "display_name": "Alex Example",
                            "ownership": "owned",
                            "route": {
                              "kind": "user",
                              "id": "5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f",
                              "application_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
                            }
                          },
                          "source_ref": {
                            "kind": "session",
                            "id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
                            "ownership": "owned",
                            "route": {
                              "kind": "session",
                              "id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
                              "application_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
                            }
                          },
                          "verification_attempt": {
                            "session_id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
                            "session_number": 1287,
                            "attempt": 2,
                            "attempt_count": 2,
                            "status": "Approved",
                            "status_changed_at": "2026-10-12T16:05:41Z",
                            "decline_reasons": []
                          },
                          "transaction": null,
                          "login": null,
                          "rule_hit": null,
                          "case_linked": null,
                          "note_added": null
                        },
                        {
                          "id": "signal_observed:8d7c6b5a-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
                          "event_type": "signal_observed",
                          "occurred_at": "2026-10-12T16:03:10Z",
                          "ingested_at": "2026-10-01T09:12:44Z",
                          "label": "device observed",
                          "metadata": {
                            "signal_type": "device",
                            "subject_count": 3,
                            "is_hub": false
                          },
                          "account": null,
                          "source_ref": null,
                          "verification_attempt": null,
                          "transaction": null,
                          "login": null,
                          "rule_hit": null,
                          "case_linked": null,
                          "note_added": null
                        }
                      ],
                      "next_cursor": "eyJ0IjoiMjAyNi0xMC0xMlQxNjowMzoxMCswMDowMCIsImMiOiIyMDI2LTEwLTAxVDA5OjEyOjQ0KzAwOjAwIiwiciI6MSwidSI6IjhkN2M2YjVhLTRlM2YtNGEyYi05YzFkLTBlOWY4YTdiNmM1ZCJ9"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`contract` मौजूद होने पर: एक अमान्य `contract`, `limit`, `cursor` या `event_type` मान।",
            "content": {
              "application/json": {
                "examples": {
                  "Unsupported contract": {
                    "summary": "असमर्थित कॉन्ट्रैक्ट",
                    "value": {
                      "contract": [
                        "\"3\" is not a valid choice."
                      ]
                    }
                  },
                  "Invalid cursor": {
                    "summary": "अमान्य कर्सर",
                    "value": {
                      "cursor": [
                        "This cursor is not valid. Reload the feed."
                      ]
                    }
                  },
                  "Limit too large": {
                    "summary": "सीमा बहुत बड़ी है",
                    "value": {
                      "limit": [
                        "Ensure this value is less than or equal to 500."
                      ]
                    }
                  },
                  "Unknown event type": {
                    "summary": "अज्ञात इवेंट प्रकार",
                    "value": {
                      "event_type": {
                        "0": [
                          "\"logout\" is not a valid choice."
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "अनुपलब्ध या अमान्य क्रेडेंशियल",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Networks endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `read:networks` आवश्यक है। जब संगठन के लिए Networks सक्षम नहीं होता है, तो `code: networks_not_entitled` के साथ भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Networks not enabled": {
                    "summary": "नेटवर्क सक्षम नहीं हैं",
                    "value": {
                      "detail": "Networks is disabled for this organization. Contact Didit support if you believe this is an error.",
                      "code": "networks_not_entitled"
                    }
                  },
                  "Restricted API key": {
                    "summary": "प्रतिबंधित API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "No permission": {
                    "summary": "कोई अनुमति नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/map/": {
      "get": {
        "summary": "नेटवर्क मैप प्राप्त करें",
        "description": "भौगोलिक बिंदु जहां इस नेटवर्क के सदस्यों के पते/स्थान मिलते हैं, जो इसकी सदस्यताओं को सपोर्ट करने वाले सत्रों, व्यवसाय सत्रों और लेन-देन से प्राप्त होते हैं।",
        "operationId": "get_network_map",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "retrieve_map",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "n3a5e000-0000-4000-8000-000000000001"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/map/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.retrieve_map(\n    \"n3a5e000-0000-4000-8000-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.retrieveMap(\"n3a5e000-0000-4000-8000-000000000001\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RetrieveMap(ctx, \"n3a5e000-0000-4000-8000-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().retrieveMap(\"n3a5e000-0000-4000-8000-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->retrieveMap('n3a5e000-0000-4000-8000-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.retrieve_map(\"n3a5e000-0000-4000-8000-000000000001\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.RetrieveMapAsync(\"n3a5e000-0000-4000-8000-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क मैप।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkMap"
                }
              }
            }
          },
          "404": {
            "description": "नेटवर्क नहीं मिला (या इस एप्लिकेशन को दिखाई नहीं दे रहा है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/sessions/{session_id}/networks/": {
      "get": {
        "summary": "किसी सत्र के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे सत्र का वेंडर उपयोगकर्ता संबंधित है। यह सत्र के vendor_data-लिंक्ड उपयोगकर्ता के माध्यम से निर्धारित होता है।",
        "operationId": "list_session_network_memberships",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "सत्र UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/sessions/aaaaaaaa-0000-4000-8000-000000000001/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.sessions.list_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.sessions.listNetworks(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ListNetworks(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.sessions().listNetworks(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->sessions->listNetworks('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.sessions.list_networks(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ListNetworksAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/business-sessions/{business_session_id}/networks/": {
      "get": {
        "summary": "किसी व्यवसाय सत्र के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे व्यावसायिक सत्र का वेंडर व्यवसाय संबंधित है।",
        "operationId": "list_business_session_network_memberships",
        "x-didit-sdk": {
          "resource": "business_sessions",
          "method": "list_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "business_session_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "व्यवसाय सत्र UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/business-sessions/aaaaaaaa-0000-4000-8000-000000000002/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.business_sessions.list_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businessSessions.listNetworks(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.BusinessSessions.ListNetworks(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businessSessions().listNetworks(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businessSessions->listNetworks('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.business_sessions.list_networks(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.BusinessSessions.ListNetworksAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/users/{vendor_user_uuid}/networks/": {
      "get": {
        "summary": "किसी उपयोगकर्ता के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे कोई वेंडर उपयोगकर्ता संबंधित है।",
        "operationId": "list_user_network_memberships",
        "x-didit-sdk": {
          "resource": "users",
          "method": "list_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "vendor_user_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वेंडर उपयोगकर्ता UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/users/aaaaaaaa-0000-4000-8000-000000000003/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.users.list_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.users.listNetworks(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Users.ListNetworks(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.users().listNetworks(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->users->listNetworks('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.users.list_networks(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Users.ListNetworksAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/businesses/{vendor_business_uuid}/networks/": {
      "get": {
        "summary": "किसी व्यवसाय के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे कोई वेंडर व्यवसाय संबंधित है।",
        "operationId": "list_business_network_memberships",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "list_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "vendor_business_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वेंडर व्यवसाय UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/businesses/aaaaaaaa-0000-4000-8000-000000000004/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.businesses.list_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.businesses.listNetworks(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Businesses.ListNetworks(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.businesses().listNetworks(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->businesses->listNetworks('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.businesses.list_networks(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Businesses.ListNetworksAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/networks/": {
      "get": {
        "summary": "किसी लेन-देन के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे लेन-देन का बैकिंग KYC/KYB विषय संबंधित है (लेन-देन के सत्र या व्यावसायिक सत्र के माध्यम से निर्धारित)।",
        "operationId": "list_transaction_network_memberships",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "list_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "transaction_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "लेन-देन UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/transactions/aaaaaaaa-0000-4000-8000-000000000005/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.transactions.list_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.transactions.listNetworks(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.ListNetworks(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.transactions().listNetworks(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->transactions->listNetworks('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.transactions.list_networks(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.ListNetworksAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/parties/{transaction_party_uuid}/networks/": {
      "get": {
        "summary": "किसी लेन-देन पक्ष के लिए नेटवर्क सूचीबद्ध करें",
        "description": "उन नेटवर्कों को सूचीबद्ध करें जिनसे लेन-देन का कोई पक्ष (प्रेषक, लाभार्थी या प्रतिपक्ष) संबंधित है, जिसे लेन-देन के बैकिंग सत्र के बजाय सीधे पक्ष के माध्यम से निर्धारित किया जाता है।",
        "operationId": "list_transaction_party_network_memberships",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "list_party_networks",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "transaction_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "लेन-देन UUID।"
          },
          {
            "name": "transaction_party_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "लेन-देन पक्ष UUID।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/transactions/aaaaaaaa-0000-4000-8000-000000000005/parties/bbbbbbbb-0000-4000-8000-000000000006/networks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.transactions.list_party_networks(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.transactions.listPartyNetworks(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.ListPartyNetworks(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.transactions().listPartyNetworks(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->transactions->listPartyNetworks('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.transactions.list_party_networks(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.ListPartyNetworksAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "वे नेटवर्क जिनसे यह निकाय संबंधित है। पेजिनेटेड नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityNetworkMembershipList"
                }
              }
            }
          },
          "404": {
            "description": "इकाई इस एप्लिकेशन में नहीं मिली, या देखने के लिए कोई लिंक किया गया विषय नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/biometric-templates/": {
      "get": {
        "summary": "प्रतिधारित बायोमेट्रिक टेम्पलेट सूचीबद्ध करें",
        "description": "एक ऑप्ट-इन एप्लिकेशन सत्र हटाए जाने पर उपयोगकर्ता से जुड़े एक अलग से प्रबंधित, छवि-मुक्त फ़ेस बायोमेट्रिक टेम्पलेट को रखता है (`DELETE /v3/session/{sessionId}/delete/` देखें)। टेम्पलेट बायोमेट्रिक डेटा होते हैं, जिनका `expires_at` सीमित होता है; उनमें कभी भी छवियां, सत्र डेटा या पहचान फ़ील्ड नहीं होते हैं, और उन्हें उपयोगकर्ता हटाए जाने, गोपनीयता मिटाने, समय-सीमा समाप्त होने या स्पष्ट पर्ज पर पर्ज कर दिया जाता है। ये endpoint केवल एप्लिकेशन API कुंजी (`x-api-key`) स्वीकार करते हैं; Business Console उपयोगकर्ता टोकन को `403` के साथ अस्वीकार कर दिया जाता है।\n\nएप्लिकेशन के पास वर्तमान में मौजूद टेम्पलेट्स की एक पेजिनेटेड सूची लौटाता है। पर्ज किए गए टेम्पलेट्स सूचीबद्ध नहीं होते हैं।",
        "operationId": "list_biometric_templates",
        "x-didit-sdk": {
          "resource": "biometric_templates",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Biometric Templates"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "vendor_data",
            "required": false,
            "description": "मालिक उपयोगकर्ता के वर्तमान `vendor_data` पर केस-इनसेंसिटिव सबस्ट्रिंग मिलान।",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "vendor_user_uuid",
            "required": false,
            "description": "स्वामी उपयोगकर्ता पर सटीक मिलान।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "description": "लाइफ़साइकिल स्थिति। हटाए गए टेम्पलेट कभी सूचीबद्ध नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "active",
                "expired",
                "held_out_of_use",
                "purge_pending",
                "purge_failed"
              ]
            }
          },
          {
            "in": "query",
            "name": "source_type",
            "required": false,
            "description": "टेम्पलेट कैसे बनाया गया था।",
            "schema": {
              "type": "string",
              "enum": [
                "session_delete",
                "automatic_retention",
                "backfill"
              ]
            }
          },
          {
            "in": "query",
            "name": "retained_from",
            "required": false,
            "description": "इस समय या इसके बाद बनाए रखे गए टेम्पलेट।",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "retained_to",
            "required": false,
            "description": "इस समय या इससे पहले बनाए रखे गए टेम्पलेट। यह `retained_from` (`400`) से पहले का नहीं होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "ordering",
            "required": false,
            "description": "सॉर्ट क्रम।",
            "schema": {
              "type": "string",
              "enum": [
                "retained_at",
                "-retained_at",
                "expires_at",
                "-expires_at"
              ],
              "default": "-retained_at"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "description": "पेज का आकार।",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "description": "पेजिनेशन ऑफ़सेट।",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड टेम्पलेट।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid",
                            "description": "टेम्पलेट id। रैंडम रूप से जनरेट किया गया; हटाए गए सत्र या उसके चेहरे से व्युत्पन्न नहीं।"
                          },
                          "vendor_user_uuid": {
                            "type": "string",
                            "format": "uuid",
                            "description": "स्वामित्व वाला उपयोगकर्ता।"
                          },
                          "vendor_data": {
                            "type": "string",
                            "nullable": true,
                            "description": "उपयोगकर्ता का वर्तमान `vendor_data`, जो तब रिज़ॉल्व होता है जब आप टेम्पलेट पढ़ते हैं (कभी कॉपी नहीं किया जाता)।"
                          },
                          "source_type": {
                            "type": "string",
                            "enum": [
                              "session_delete",
                              "automatic_retention",
                              "backfill"
                            ],
                            "description": "टेम्पलेट कैसे बनाया गया था: सत्र विलोपन (API या Console), एप्लिकेशन की स्वचालित डेटा प्रतिधारण विंडो, या आपके द्वारा निर्देशित Didit-संचालित बैकफ़िल।"
                          },
                          "provenance_reference": {
                            "type": "string",
                            "format": "uuid",
                            "description": "टेम्पलेट को उसके ऑडिट लॉग से जोड़ने वाला अपारदर्शी संदर्भ। यह हटाए गए सत्र की ID नहीं है और इसे उस सत्र की ID में resolve नहीं किया जा सकता है।"
                          },
                          "retention_policy": {
                            "type": "string",
                            "enum": [
                              "delete_with_session",
                              "retain_until_user_deleted"
                            ],
                            "description": "प्रतिधारण समय पर एप्लिकेशन नीति।"
                          },
                          "retention_override": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "विलोपन पर भेजा गया `retain_face_embeddings` मान, या नीति लागू होने पर `null`।"
                          },
                          "retained_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "expires_at": {
                            "type": "string",
                            "format": "date-time",
                            "description": "टेम्पलेट कब समाप्त होता है और स्वचालित रूप से हटा दिया जाता है। हमेशा सेट रहता है।"
                          },
                          "retained_by": {
                            "type": "string",
                            "nullable": true,
                            "description": "निर्देश देने वाला प्रिंसिपल: API कुंजियों के लिए एप्लिकेशन आईडी, कंसोल कार्रवाइयों के लिए कंसोल सदस्य आईडी, या स्वचालित प्रतिधारण के लिए एक `service:` पहचानकर्ता। कभी भी ईमेल पता नहीं।"
                          },
                          "retained_by_type": {
                            "type": "string",
                            "enum": [
                              "API_KEY",
                              "CONSOLE_USER",
                              "SYSTEM"
                            ]
                          },
                          "instruction_class": {
                            "type": "string",
                            "enum": [
                              "operational_session_delete",
                              "privacy_erasure"
                            ]
                          },
                          "instruction_source": {
                            "type": "string",
                            "enum": [
                              "api",
                              "console",
                              "automatic_retention",
                              "backfill",
                              "privacy_erasure",
                              "explicit_template_purge",
                              "vendor_user_delete",
                              "expiry",
                              "reconciliation",
                              "migration",
                              "system"
                            ]
                          },
                          "instruction_id": {
                            "type": "string",
                            "description": "विलोपन पर भेजा गया `instruction_id`, या Didit द्वारा जनरेट किया गया id।"
                          },
                          "held_out_of_use": {
                            "type": "boolean",
                            "description": "`true` केवल तभी जब कानूनी रोक लागू हो। रोके गए टेम्पलेट को सभी मिलानों से बाहर रखा जाता है।"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "pending",
                              "active",
                              "expired",
                              "held_out_of_use",
                              "purge_pending",
                              "purge_failed",
                              "purged"
                            ],
                            "description": "केवल `active` टेम्पलेट जो होल्ड पर नहीं हैं, जिनकी `expires_at` समाप्त नहीं हुई है, और जिनका उपयोगकर्ता अभी भी मौजूद है, मिलान में भाग लेते हैं।"
                          },
                          "purged_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "One active template": {
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                          "vendor_user_uuid": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f",
                          "vendor_data": "user-42",
                          "source_type": "session_delete",
                          "provenance_reference": "6b1e8d2f-4a3c-4f9e-8c7d-1a2b3c4d5e6f",
                          "retention_policy": "retain_until_user_deleted",
                          "retention_override": null,
                          "retained_at": "2026-08-28T10:15:42.318402Z",
                          "expires_at": "2027-08-28T10:15:42.318402Z",
                          "retained_by": "3c9e2b1f-7d4a-4e8b-9c1d-5f6a7b8c9d0e",
                          "retained_by_type": "API_KEY",
                          "instruction_class": "operational_session_delete",
                          "instruction_source": "api",
                          "instruction_id": "post-approval-cleanup-2026-08",
                          "held_out_of_use": false,
                          "status": "active",
                          "purged_at": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य फ़िल्टर मान, या `retained_from` से पहले का `retained_to`। फ़ील्ड-कीड सत्यापन त्रुटियाँ।",
            "content": {
              "application/json": {
                "examples": {
                  "Bad range": {
                    "value": {
                      "retained_to": [
                        "Must be on or after retained_from."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कंसोल उपयोगकर्ता token, या API कुंजी की अनुमति नहीं है। ये endpoints केवल एप्लिकेशन API कुंजियों को स्वीकार करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/biometric-templates/?vendor_data=user-42&status=active' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.biometric_templates.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.biometricTemplates.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.BiometricTemplates.ListAutoPaging(ctx, didit.BiometricTemplatesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.biometricTemplates().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->biometricTemplates->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.biometric_templates.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.BiometricTemplates.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/biometric-templates/count/": {
      "get": {
        "summary": "प्रतिधारित बायोमेट्रिक टेम्पलेट्स की गणना करें",
        "description": "एक ऑप्ट-इन एप्लिकेशन सत्र हटाए जाने पर उपयोगकर्ता से जुड़े एक अलग से प्रबंधित, छवि-मुक्त फ़ेस बायोमेट्रिक टेम्पलेट को रखता है (`DELETE /v3/session/{sessionId}/delete/` देखें)। टेम्पलेट बायोमेट्रिक डेटा होते हैं, जिनका `expires_at` सीमित होता है; उनमें कभी भी छवियां, सत्र डेटा या पहचान फ़ील्ड नहीं होते हैं, और उन्हें उपयोगकर्ता हटाए जाने, गोपनीयता मिटाने, समय-सीमा समाप्त होने या स्पष्ट पर्ज पर पर्ज कर दिया जाता है। ये endpoint केवल एप्लिकेशन API कुंजी (`x-api-key`) स्वीकार करते हैं; Business Console उपयोगकर्ता token को `403` के साथ अस्वीकार कर दिया जाता है।\n\nसूची endpoint के समान फ़िल्टर से मेल खाने वाले टेम्पलेट्स की संख्या लौटाता है। इसका उपयोग यह जांचने के लिए करें कि `delete_all: true` के साथ फ़िल्टर किया गया बल्क पर्ज किन टेम्पलेट्स को प्रभावित करेगा।",
        "operationId": "count_biometric_templates",
        "x-didit-sdk": {
          "resource": "biometric_templates",
          "method": "count",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Biometric Templates"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "query",
            "name": "vendor_data",
            "required": false,
            "description": "मालिक उपयोगकर्ता के वर्तमान `vendor_data` पर केस-इनसेंसिटिव सबस्ट्रिंग मिलान।",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "vendor_user_uuid",
            "required": false,
            "description": "स्वामी उपयोगकर्ता पर सटीक मिलान।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "description": "लाइफ़साइकिल स्थिति। हटाए गए टेम्पलेट कभी सूचीबद्ध नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "enum": [
                "pending",
                "active",
                "expired",
                "held_out_of_use",
                "purge_pending",
                "purge_failed"
              ]
            }
          },
          {
            "in": "query",
            "name": "source_type",
            "required": false,
            "description": "टेम्पलेट कैसे बनाया गया था।",
            "schema": {
              "type": "string",
              "enum": [
                "session_delete",
                "automatic_retention",
                "backfill"
              ]
            }
          },
          {
            "in": "query",
            "name": "retained_from",
            "required": false,
            "description": "इस समय या इसके बाद बनाए रखे गए टेम्पलेट।",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "retained_to",
            "required": false,
            "description": "इस समय या इससे पहले बनाए रखे गए टेम्पलेट। यह `retained_from` (`400`) से पहले का नहीं होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "गणना।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0
                    }
                  }
                },
                "examples": {
                  "Count": {
                    "value": {
                      "count": 128
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य फ़िल्टर मान, या `retained_from` से पहले का `retained_to`। फ़ील्ड-कीड सत्यापन त्रुटियाँ।",
            "content": {
              "application/json": {
                "examples": {
                  "Bad range": {
                    "value": {
                      "retained_to": [
                        "Must be on or after retained_from."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कंसोल उपयोगकर्ता token, या API कुंजी की अनुमति नहीं है। ये endpoints केवल एप्लिकेशन API कुंजियों को स्वीकार करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/biometric-templates/count/?status=active' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.biometric_templates.count()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.biometricTemplates.count();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.BiometricTemplates.Count(ctx, didit.BiometricTemplatesCountParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.biometricTemplates().count();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->biometricTemplates->count();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.biometric_templates.count\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.BiometricTemplates.CountAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/biometric-templates/{template_uuid}/": {
      "get": {
        "summary": "प्रतिधारित बायोमेट्रिक टेम्पलेट प्राप्त करें",
        "description": "एक ऑप्ट-इन एप्लिकेशन सत्र हटाए जाने पर उपयोगकर्ता से जुड़े एक अलग से प्रबंधित, छवि-मुक्त फ़ेस बायोमेट्रिक टेम्पलेट को रखता है (`DELETE /v3/session/{sessionId}/delete/` देखें)। टेम्पलेट बायोमेट्रिक डेटा होते हैं, जिनका `expires_at` सीमित होता है; उनमें कभी भी छवियां, सत्र डेटा या पहचान फ़ील्ड नहीं होते हैं, और उन्हें उपयोगकर्ता हटाए जाने, गोपनीयता मिटाने, समय-सीमा समाप्त होने या स्पष्ट पर्ज पर पर्ज कर दिया जाता है। ये endpoint केवल एप्लिकेशन API कुंजी (`x-api-key`) स्वीकार करते हैं; Business Console उपयोगकर्ता टोकन को `403` के साथ अस्वीकार कर दिया जाता है।\n\nएक टेम्पलेट लौटाता है। रिस्पॉन्स में कभी भी कोई छवि, वेक्टर, हटाए गए सत्र की id या पहचान डेटा शामिल नहीं होता है।",
        "operationId": "get_biometric_template",
        "x-didit-sdk": {
          "resource": "biometric_templates",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Biometric Templates"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "template_uuid",
            "required": true,
            "description": "टेम्पलेट id, जैसा कि सत्र हटाने वाले endpoints द्वारा `biometric_template_uuid` में, चेहरा खोज मिलान पर `biometric_template_id` में, या सूची endpoint द्वारा लौटाया जाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "टेम्पलेट।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "टेम्पलेट id। रैंडम रूप से जनरेट किया गया; हटाए गए सत्र या उसके चेहरे से व्युत्पन्न नहीं।"
                    },
                    "vendor_user_uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "स्वामित्व वाला उपयोगकर्ता।"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "उपयोगकर्ता का वर्तमान `vendor_data`, जो तब रिज़ॉल्व होता है जब आप टेम्पलेट पढ़ते हैं (कभी कॉपी नहीं किया जाता)।"
                    },
                    "source_type": {
                      "type": "string",
                      "enum": [
                        "session_delete",
                        "automatic_retention",
                        "backfill"
                      ],
                      "description": "टेम्पलेट कैसे बनाया गया था: सत्र विलोपन (API या Console), एप्लिकेशन की स्वचालित डेटा प्रतिधारण विंडो, या आपके द्वारा निर्देशित Didit-संचालित बैकफ़िल।"
                    },
                    "provenance_reference": {
                      "type": "string",
                      "format": "uuid",
                      "description": "टेम्पलेट को उसके ऑडिट लॉग से जोड़ने वाला अपारदर्शी संदर्भ। यह हटाए गए सत्र की ID नहीं है और इसे उस सत्र की ID में resolve नहीं किया जा सकता है।"
                    },
                    "retention_policy": {
                      "type": "string",
                      "enum": [
                        "delete_with_session",
                        "retain_until_user_deleted"
                      ],
                      "description": "प्रतिधारण समय पर एप्लिकेशन नीति।"
                    },
                    "retention_override": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "विलोपन पर भेजा गया `retain_face_embeddings` मान, या नीति लागू होने पर `null`।"
                    },
                    "retained_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "टेम्पलेट कब समाप्त होता है और स्वचालित रूप से हटा दिया जाता है। हमेशा सेट रहता है।"
                    },
                    "retained_by": {
                      "type": "string",
                      "nullable": true,
                      "description": "निर्देश देने वाला प्रिंसिपल: API कुंजियों के लिए एप्लिकेशन आईडी, कंसोल कार्रवाइयों के लिए कंसोल सदस्य आईडी, या स्वचालित प्रतिधारण के लिए एक `service:` पहचानकर्ता। कभी भी ईमेल पता नहीं।"
                    },
                    "retained_by_type": {
                      "type": "string",
                      "enum": [
                        "API_KEY",
                        "CONSOLE_USER",
                        "SYSTEM"
                      ]
                    },
                    "instruction_class": {
                      "type": "string",
                      "enum": [
                        "operational_session_delete",
                        "privacy_erasure"
                      ]
                    },
                    "instruction_source": {
                      "type": "string",
                      "enum": [
                        "api",
                        "console",
                        "automatic_retention",
                        "backfill",
                        "privacy_erasure",
                        "explicit_template_purge",
                        "vendor_user_delete",
                        "expiry",
                        "reconciliation",
                        "migration",
                        "system"
                      ]
                    },
                    "instruction_id": {
                      "type": "string",
                      "description": "विलोपन पर भेजा गया `instruction_id`, या Didit द्वारा जनरेट किया गया id।"
                    },
                    "held_out_of_use": {
                      "type": "boolean",
                      "description": "`true` केवल तभी जब कानूनी रोक लागू हो। रोके गए टेम्पलेट को सभी मिलानों से बाहर रखा जाता है।"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pending",
                        "active",
                        "expired",
                        "held_out_of_use",
                        "purge_pending",
                        "purge_failed",
                        "purged"
                      ],
                      "description": "केवल `active` टेम्पलेट जो होल्ड पर नहीं हैं, जिनकी `expires_at` समाप्त नहीं हुई है, और जिनका उपयोगकर्ता अभी भी मौजूद है, मिलान में भाग लेते हैं।"
                    },
                    "purged_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true
                    }
                  }
                },
                "examples": {
                  "Active template": {
                    "value": {
                      "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                      "vendor_user_uuid": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f",
                      "vendor_data": "user-42",
                      "source_type": "session_delete",
                      "provenance_reference": "6b1e8d2f-4a3c-4f9e-8c7d-1a2b3c4d5e6f",
                      "retention_policy": "retain_until_user_deleted",
                      "retention_override": null,
                      "retained_at": "2026-08-28T10:15:42.318402Z",
                      "expires_at": "2027-08-28T10:15:42.318402Z",
                      "retained_by": "3c9e2b1f-7d4a-4e8b-9c1d-5f6a7b8c9d0e",
                      "retained_by_type": "API_KEY",
                      "instruction_class": "operational_session_delete",
                      "instruction_source": "api",
                      "instruction_id": "post-approval-cleanup-2026-08",
                      "held_out_of_use": false,
                      "status": "active",
                      "purged_at": null
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कंसोल उपयोगकर्ता token, या API कुंजी की अनुमति नहीं है। ये endpoints केवल एप्लिकेशन API कुंजियों को स्वीकार करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात टेम्पलेट, किसी अन्य एप्लिकेशन का टेम्पलेट, या (`GET` पर) हटा दिया गया टेम्पलेट।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Biometric template not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/biometric-templates/9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.biometric_templates.retrieve(\n    \"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.biometricTemplates.retrieve(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.BiometricTemplates.Retrieve(ctx, \"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.biometricTemplates().retrieve(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->biometricTemplates->retrieve('9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.biometric_templates.retrieve(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.BiometricTemplates.RetrieveAsync(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "प्रतिधारित बायोमेट्रिक टेम्पलेट को पर्ज करें",
        "description": "एक ऑप्ट-इन एप्लिकेशन सत्र हटाए जाने पर उपयोगकर्ता से जुड़े एक अलग से प्रबंधित, छवि-मुक्त फ़ेस बायोमेट्रिक टेम्पलेट को रखता है (`DELETE /v3/session/{sessionId}/delete/` देखें)। टेम्पलेट बायोमेट्रिक डेटा होते हैं, जिनका `expires_at` सीमित होता है; उनमें कभी भी छवियां, सत्र डेटा या पहचान फ़ील्ड नहीं होते हैं, और उन्हें उपयोगकर्ता हटाए जाने, गोपनीयता मिटाने, समय-सीमा समाप्त होने या स्पष्ट पर्ज पर पर्ज कर दिया जाता है। ये endpoint केवल एप्लिकेशन API कुंजी (`x-api-key`) स्वीकार करते हैं; Business Console उपयोगकर्ता token को `403` के साथ अस्वीकार कर दिया जाता है।\n\nएक टेम्पलेट को पर्ज करता है: इसे हर प्रकार के मिलान से हटा दिया जाता है और संग्रहीत टेम्पलेट को हटा दिया जाता है। यह अपरिवर्तनीय है और कार्रवाई करने वाले प्रिंसिपल के साथ ऑडिट ट्रेल पर दर्ज किया जाता है।\n\n**पुनः प्रयास सिमेंटिक्स:** Didit पहले संग्रहीत टेम्पलेट को हटाता है और उसके बाद ही टेम्पलेट को पर्ज के रूप में चिह्नित करता है। यदि बायोमेट्रिक स्टोर अनुपलब्ध है, तो कॉल `503` लौटाती है, टेम्पलेट `status: purge_failed` पर चला जाता है और इसे पहले ही मिलान से बाहर कर दिया जाता है; समाप्त करने के लिए उसी कॉल को दोहराएं। पहले से पर्ज किए गए टेम्पलेट के पर्ज को दोहराने पर `already_purged` प्राप्त होता है।\n\nटेम्पलेट संबंधित उपयोगकर्ता के लिए `POST /v3/users/delete/` द्वारा, `deletion_instruction: privacy_erasure` के साथ उस उपयोगकर्ता के सत्रों को हटाए जाने पर, और स्वचालित रूप से `expires_at` पर भी पर्ज किए जाते हैं।",
        "operationId": "purge_biometric_template",
        "x-didit-sdk": {
          "resource": "biometric_templates",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Biometric Templates"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "template_uuid",
            "required": true,
            "description": "टेम्पलेट id, जैसा कि सत्र हटाने वाले endpoints द्वारा `biometric_template_uuid` में, चेहरा खोज मिलान पर `biometric_template_id` में, या सूची endpoint द्वारा लौटाया जाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "पर्ज का परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "outcome": {
                      "type": "string",
                      "enum": [
                        "purged",
                        "already_purged"
                      ]
                    }
                  }
                },
                "examples": {
                  "Purged": {
                    "value": {
                      "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                      "outcome": "purged"
                    }
                  },
                  "Already purged": {
                    "value": {
                      "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                      "outcome": "already_purged"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कंसोल उपयोगकर्ता token, या API कुंजी की अनुमति नहीं है। ये endpoints केवल एप्लिकेशन API कुंजियों को स्वीकार करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात टेम्पलेट, किसी अन्य एप्लिकेशन का टेम्पलेट, या (`GET` पर) हटा दिया गया टेम्पलेट।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Biometric template not found."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "बायोमेट्रिक टेम्पलेट को बनाए रखने या हटाने के दौरान एक बायोमेट्रिक स्टोर अनुपलब्ध था। कुछ भी हटाया नहीं गया है; वही अनुरोध दोहराएं। पुनः प्रयास आइडेम्पोटेंट होते हैं और एक ही टेम्पलेट पर कन्वर्ज होते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Retryable": {
                    "value": {
                      "detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE https://verification.didit.me/v3/biometric-templates/9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.biometric_templates.delete(\n    \"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.biometricTemplates.delete(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.BiometricTemplates.Delete(ctx, \"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.biometricTemplates().delete(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->biometricTemplates->delete('9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.biometric_templates.delete(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.BiometricTemplates.DeleteAsync(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/biometric-templates/delete/": {
      "post": {
        "summary": "प्रतिधारित बायोमेट्रिक टेम्पलेट को बल्क में हटाएं",
        "description": "सत्र हटाए जाने पर एक ऑप्ट-इन एप्लिकेशन उपयोगकर्ता से जुड़ा हुआ, अलग से प्रबंधित और छवि-रहित चेहरे का बायोमेट्रिक टेम्पलेट रखता है (देखें `DELETE /v3/session/{sessionId}/delete/`)। टेम्पलेट सीमित `expires_at` वाले बायोमेट्रिक डेटा होते हैं; इनमें कभी भी छवियां, सत्र डेटा या पहचान फ़ील्ड नहीं होते हैं, और उपयोगकर्ता हटाए जाने, गोपनीयता मिटाए जाने, समाप्ति या स्पष्ट पर्ज पर इन्हें पर्ज कर दिया जाता है। ये endpoint केवल एप्लिकेशन API कुंजी (`x-api-key`) स्वीकार करते हैं; Business Console उपयोगकर्ता token `403` के साथ अस्वीकार कर दिए जाते हैं।\n\nएक निर्दिष्ट id सूची द्वारा या `delete_all: true` के साथ एक ही कॉल में कई टेम्पलेट्स को पर्ज करता है, जिसे वैकल्पिक रूप से सूची endpoint के समान फ़िल्टर द्वारा सीमित किया जा सकता है। टेम्पलेट्स को एक-एक करके पर्ज किया जाता है और प्रत्येक परिणाम `purged` या `already_purged` रिपोर्ट करता है। यदि कोई बायोमेट्रिक स्टोर अनुपलब्ध है, तो कॉल पहले विफल होने वाले टेम्पलेट पर `503` लौटाता है: अनुरोध में पहले पर्ज किए गए टेम्पलेट पर्ज ही रहते हैं, विफल टेम्पलेट `purge_failed` स्थिति में चला जाता है (वह पहले से ही मिलान से बाहर है), और अनुरोध को दोहराने से कार्य पूरा हो जाता है।\n\n**बिना फ़िल्टर के `delete_all: true` एप्लिकेशन के प्रत्येक बायोमेट्रिक टेम्पलेट को पर्ज कर देता है और इसे पूर्ववत नहीं किया जा सकता है।** पहले समान फ़िल्टर के साथ काउंट endpoint चलाएं।",
        "operationId": "bulk_purge_biometric_templates",
        "x-didit-sdk": {
          "resource": "biometric_templates",
          "method": "batch_delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Biometric Templates"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "template_uuids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "description": "पर्ज किए जाने वाले टेम्पलेट। तब तक आवश्यक है जब तक `delete_all` का मान `true` न हो। पहले से पर्ज की गई ID को `already_purged` के रूप में रिपोर्ट किया जाता है।"
                  },
                  "delete_all": {
                    "type": "boolean",
                    "default": false,
                    "description": "जब `true` होता है, तो नीचे दिए गए फ़िल्टर से मेल खाने वाले प्रत्येक टेम्पलेट को हटा देता है (कोई फ़िल्टर न दिए जाने पर एप्लिकेशन के सभी टेम्पलेट)। `template_uuids` को अनदेखा कर दिया जाता है। अपरिवर्तनीय।"
                  },
                  "vendor_data": {
                    "type": "string",
                    "description": "केवल `delete_all` के साथ: स्वामित्व वाले उपयोगकर्ता के `vendor_data` पर केस-इंसेंसिटिव सबस्ट्रिंग मिलान।"
                  },
                  "vendor_user_uuid": {
                    "type": "string",
                    "format": "uuid",
                    "description": "केवल `delete_all` के साथ: स्वामित्व वाले उपयोगकर्ता पर सटीक मिलान।"
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "pending",
                      "active",
                      "expired",
                      "held_out_of_use",
                      "purge_pending",
                      "purge_failed"
                    ],
                    "description": "केवल `delete_all` के साथ।"
                  },
                  "source_type": {
                    "type": "string",
                    "enum": [
                      "session_delete",
                      "automatic_retention",
                      "backfill"
                    ],
                    "description": "केवल `delete_all` के साथ।"
                  },
                  "retained_from": {
                    "type": "string",
                    "format": "date-time",
                    "description": "केवल `delete_all` के साथ।"
                  },
                  "retained_to": {
                    "type": "string",
                    "format": "date-time",
                    "description": "केवल `delete_all` के साथ। `retained_from` से पहले का नहीं होना चाहिए।"
                  }
                }
              },
              "examples": {
                "By id": {
                  "value": {
                    "template_uuids": [
                      "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                      "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
                    ]
                  }
                },
                "Every template of one User": {
                  "value": {
                    "delete_all": true,
                    "vendor_user_uuid": "2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f"
                  }
                },
                "Every template in the application": {
                  "value": {
                    "delete_all": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "प्रति-टेम्पलेट पर्ज परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "outcome": {
                            "type": "string",
                            "enum": [
                              "purged",
                              "already_purged"
                            ]
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Mixed": {
                    "value": {
                      "results": [
                        {
                          "uuid": "9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b",
                          "outcome": "purged"
                        },
                        {
                          "uuid": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
                          "outcome": "already_purged"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि — कुछ भी पर्ज नहीं किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing selector": {
                    "value": {
                      "template_uuids": [
                        "This field is required unless delete_all is true."
                      ]
                    }
                  },
                  "Bad range": {
                    "value": {
                      "retained_to": [
                        "Must be on or after retained_from."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "कंसोल उपयोगकर्ता token, या API कुंजी की अनुमति नहीं है। ये endpoints केवल एप्लिकेशन API कुंजियों को स्वीकार करते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "बायोमेट्रिक टेम्पलेट को बनाए रखने या हटाने के दौरान एक बायोमेट्रिक स्टोर अनुपलब्ध था। कुछ भी हटाया नहीं गया है; वही अनुरोध दोहराएं। पुनः प्रयास आइडेम्पोटेंट होते हैं और एक ही टेम्पलेट पर कन्वर्ज होते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Retryable": {
                    "value": {
                      "detail": "The biometric-template operation could not finish because an external store is unavailable. The operation is retryable."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/biometric-templates/delete/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"delete_all\": true, \"vendor_user_uuid\": \"2f7c1a9e-8b4d-4c6a-9e1f-3d5b7a9c1e2f\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.biometric_templates.batch_delete(\n    template_uuids=[\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.biometricTemplates.batchDelete({\n  template_uuids: [\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.BiometricTemplates.BatchDelete(ctx, didit.BiometricTemplatesBatchDeleteParams{\n\tTemplateUUIDs: didit.Some([]string{\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.BiometricTemplatesBatchDeleteParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.biometricTemplates().batchDelete(BiometricTemplatesBatchDeleteParams.builder()\n        .templateUuids(List.of(\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->biometricTemplates->batchDelete([\n    'template_uuids' => ['9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b', '1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.biometric_templates.batch_delete(template_uuids: [\"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.BiometricTemplates.BatchDeleteAsync(new BiometricTemplatesBatchDeleteParams\n{\n    TemplateUuids = new string[] { \"9d2f4b6e-1c3a-4e8f-b7d5-0a1c2e3f4a5b\", \"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/kyb/shareholders/": {
      "post": {
        "summary": "शेयरधारकों के साथ KYB रजिस्ट्री कंपनी (स्टैंडअलोन)",
        "operationId": "post_v3_kyb_shareholders",
        "x-didit-sdk": {
          "resource": "kyb",
          "method": "list_shareholders",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [],
        "description": "`POST /v3/kyb/search/` द्वारा लौटाए गए किसी एक उम्मीदवार की Lite प्रोफ़ाइल **और प्रत्यक्ष शेयरधारक** (प्राकृतिक व्यक्ति और कॉर्पोरेट संस्थाएं, उनके स्वामित्व बैंड के साथ) प्राप्त करें।\n\n**सर्च के साथ पेयरिंग।** उसी एप्लिकेशन की सर्च द्वारा लौटाया गया उम्मीदवार का `kyb_response_id` ठीक उसी प्रकार पास करें। उस स्तर पर सर्च करें जिसे आप खरीदना चाहते हैं (`POST /v3/kyb/search/` पर `tier`), क्योंकि सर्च उस रजिस्ट्री श्रृंखला पर चलती है जो उस स्तर को सेवा प्रदान करती है और एक खाली Lite सर्च इस बात का प्रमाण नहीं है कि रजिस्ट्री में वह कंपनी मौजूद नहीं है। जब देश का स्वामित्व डेटा किसी अन्य रजिस्ट्री में होता है, तो Didit बिना किसी अतिरिक्त लागत के पंजीकरण संख्या द्वारा कंपनी को वहां फिर से खोज लेता है।\n\n**बिलिंग।** देश की Shareholders कीमत पर बिल किया जाता है - देखें [KYB रजिस्ट्री मूल्य निर्धारण](/hi/getting-started/kyb-registry-pricing)। जब रजिस्ट्री में कंपनी के लिए कोई शेयरधारक रिकॉर्ड नहीं होता है (या देश कोई भी स्वामित्व डेटा प्रदान नहीं करता है) तो इसके बजाय Lite प्रोफ़ाइल डिलीवर की जाती है और बिल की जाती है: `registry_tier_delivered` और `registry_ownership_status` पढ़ें। किसी भी रजिस्ट्री कॉल से पहले बैलेंस को Shareholders कीमत के विरुद्ध जांचा जाता है (कम होने पर `403`)।\n\n**उपलब्धता।** केवल v3। प्रत्येक कॉल एक व्यवसाय सत्र बनाती है (इसकी id `request_id` है)।\n\n**लंबित रिपोर्ट।** जब कोई रिपोर्ट अभी भी तैयार की जा रही हो, या स्वामित्व अनुभाग अभी तक रजिस्ट्री से प्राप्त नहीं हुआ हो, तो endpoint 202 Accepted, kyb_registry.fetch_status=pending, kyb_registry.registry_ownership_status=pending, और registry_tier_delivered=null लौटाता है। request_id को संभाल कर रखें और तब तक GET /v3/session/{request_id}/decision/ को कॉल करके डेटा प्राप्त करते रहें जब तक कि registry_checks[0].company.fetch_status हल न हो जाए। Didit रिपोर्ट को स्वचालित रूप से पूरा करता है और तैयार होने पर डिलीवर किए गए स्तर का शुल्क लेता है। लंबित रहने के दौरान खरीदारी दोबारा न करें; प्रत्येक नया POST एक अलग अनुरोध बनाता है।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KYBRegistryCandidateRequest"
              },
              "example": {
                "kyb_response_id": "69aeeb95febb0f1704042259",
                "vendor_data": "company-1234"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/kyb/shareholders/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"kyb_response_id\": \"69aeeb95febb0f1704042259\",\n    \"vendor_data\": \"company-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.kyb.list_shareholders(\n    kyb_response_id=\"69aeeb95febb0f1704042259\",\n    vendor_data=\"company-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.kyb.listShareholders({\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.KYB.ListShareholders(ctx, didit.KYBRegistryCandidateRequest{\n\tKYBResponseID: \"69aeeb95febb0f1704042259\",\n\tVendorData:    didit.String(\"company-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.KYBRegistryCandidateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.kyb().listShareholders(KYBRegistryCandidateRequest.builder()\n        .kybResponseId(\"69aeeb95febb0f1704042259\")\n        .vendorData(\"company-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->kyb->listShareholders([\n    'kyb_response_id' => '69aeeb95febb0f1704042259',\n    'vendor_data' => 'company-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.kyb.list_shareholders(\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Kyb.ListShareholdersAsync(new KYBRegistryCandidateRequest\n{\n    KybResponseId = \"69aeeb95febb0f1704042259\",\n    VendorData = \"company-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कंपनी रिपोर्ट डिलीवर किए गए स्तर पर लौटाई और बिल की गई। अभी भी तैयार की जा रही स्वामित्व रिपोर्ट 202 लौटा सकती हैं; उनके सहेजे गए निर्णय को पुनः प्राप्त करने के लिए request_id रखें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "इस पुनर्प्राप्ति के लिए बनाए गए व्यवसाय सत्र की Id। यदि रिस्पॉन्स के बाद रजिस्ट्री से जानकारी मिलती है, तो संग्रहीत रिकॉर्ड (कंसोल में दृश्यमान) अपडेट होता रहता है।"
                    },
                    "registry_tier_requested": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo"
                      ],
                      "description": "यह endpoint जो स्तर बेचता है: चुनिंदा के लिए `basic` (Lite), `shareholders`, `ubo`।"
                    },
                    "registry_tier_delivered": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo",
                        null
                      ],
                      "description": "वास्तव में डिलीवर और बिल किया गया स्तर। अनुरोध किए गए स्तर से कम तब होता है जब देश की रजिस्ट्रियों में कोई स्वामित्व डेटा नहीं होता है, या रजिस्ट्री में इस कंपनी के लिए कोई स्वामित्व रिकॉर्ड नहीं होता है।",
                      "nullable": true
                    },
                    "kyb_registry": {
                      "type": "object",
                      "description": "पूर्ण रजिस्ट्री कंपनी प्रोफ़ाइल।",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid",
                          "description": "इस कंपनी रिकॉर्ड के लिए Didit की id।"
                        },
                        "node_id": {
                          "type": "string",
                          "example": "feature_kyb_registry"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "Not Finished",
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "रजिस्ट्री जांच पर Didit का मूल्यांकन (उदा. `In Review` जब कंपनी रजिस्ट्री में सक्रिय नहीं है या स्वामित्व डेटा प्राप्त नहीं किया जा सका)।"
                        },
                        "registry_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "active",
                            "dissolved",
                            "deregistered",
                            "see full details",
                            "authorised",
                            "appointed representative",
                            "unauthorised",
                            "inactive",
                            "no longer authorised",
                            "closed",
                            "struck off",
                            null
                          ],
                          "description": "रजिस्ट्री द्वारा रिपोर्ट की गई कंपनी की सामान्यीकृत स्थिति।"
                        },
                        "data_resolved": {
                          "type": "boolean",
                          "description": "रजिस्ट्री द्वारा पूर्ण प्रोफ़ाइल लौटाने के बाद `true`। `false` जब पोलिंग के बाद भी रजिस्ट्री प्रक्रिया कर रही थी — रजिस्ट्री का समाधान होते ही संग्रहीत रिकॉर्ड स्वचालित रूप से पूरा हो जाता है।"
                        },
                        "company_name": {
                          "type": "string",
                          "example": "Tesco PLC"
                        },
                        "registration_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "00445790"
                        },
                        "country_code": {
                          "type": "string",
                          "description": "ISO 3166-1 alpha-2।",
                          "example": "GB"
                        },
                        "region": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री के क्षेत्रीय होने पर सबडिवीजन कोड (जैसे `US-CA` के लिए `CA`); अन्यथा खाली।"
                        },
                        "company_type": {
                          "type": "string",
                          "nullable": true,
                          "example": "Public Limited Company"
                        },
                        "incorporation_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "1947-11-27"
                        },
                        "registered_address": {
                          "type": "string",
                          "nullable": true,
                          "example": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA"
                        },
                        "tax_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "GB412 8925 93"
                        },
                        "risk_level": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जोखिम स्तर, जब उपलब्ध हो।"
                        },
                        "verification_status": {
                          "type": "string",
                          "enum": [
                            "verified",
                            "failed",
                            "unknown"
                          ],
                          "nullable": true,
                          "description": "क्रॉस-क्षेत्राधिकार सत्यापन स्थिति: जब रजिस्ट्री स्थिति कंपनी के अच्छी स्थिति में होने की पुष्टि करती है (`active`) तो `verified`, जब यह दर्शाती है कि कंपनी अब अच्छी स्थिति में नहीं है (उदाहरण के लिए `dissolved`) तो `failed`, अन्यथा `unknown`। रजिस्ट्री से न आई कंपनी के लिए और चयन के अभी भी `pending` रहने के दौरान `null`।"
                        },
                        "is_from_registry": {
                          "type": "boolean",
                          "description": "इस endpoint के लिए हमेशा `true` — प्रोफ़ाइल आधिकारिक रजिस्ट्री से प्राप्त की गई थी।"
                        },
                        "fetch_status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "resolved"
                          ],
                          "description": "रजिस्ट्री फ़ेच लाइफ़साइकिल। `data_resolved` द्वारा प्रतिबिंबित।"
                        },
                        "alternative_names": {
                          "type": "string",
                          "nullable": true,
                          "description": "वैकल्पिक, व्यापारिक, पूर्व या मूल-भाषा कंपनी के नाम टेक्स्ट के रूप में, जब रिपोर्ट किए गए हों।"
                        },
                        "nature_of_business": {
                          "type": "string",
                          "nullable": true,
                          "description": "गतिविधि विवरण या वर्गीकरण कोड, जब रिपोर्ट किया गया हो।"
                        },
                        "registered_capital": {
                          "type": "string",
                          "nullable": true
                        },
                        "registered_capital_amount": {
                          "type": "string",
                          "nullable": true,
                          "description": "स्ट्रिंग के रूप में दशमलव राशि, जब रिपोर्ट की गई हो।"
                        },
                        "registered_capital_currency": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO 4217 कोड, रिपोर्ट किए जाने पर।"
                        },
                        "website": {
                          "type": "string",
                          "nullable": true,
                          "example": "https://www.tesco.com/"
                        },
                        "email": {
                          "type": "string",
                          "nullable": true,
                          "example": "customer.service@tesco.co.uk"
                        },
                        "phone": {
                          "type": "string",
                          "nullable": true,
                          "example": "03301231688"
                        },
                        "legal_entity_identifier": {
                          "type": "string",
                          "nullable": true,
                          "description": "LEI, जब रिपोर्ट किया गया हो।"
                        },
                        "location_of_registration": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री/क्षेत्राधिकार जहां कंपनी पंजीकृत है, जब रिपोर्ट किया गया हो।"
                        },
                        "vat_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "EU VAT संख्या, जब होस्टेड रजिस्ट्री चरण के दौरान एकत्र की गई हो या बाद में संपादित की गई हो। चयन के समय यह आमतौर पर अभी तक सेट नहीं होती है — VAT और कर पहचान संख्या सत्यापन तब चलता है जब अंतिम उपयोगकर्ता होस्टेड फ़्लो में रजिस्ट्री चरण सबमिट करता है।"
                        },
                        "vat_validation_status": {
                          "type": "string",
                          "enum": [
                            "valid",
                            "invalid",
                            "format_valid",
                            "invalid_format",
                            "could_not_validate",
                            "not_applicable"
                          ],
                          "description": "रजिस्ट्री सबमिट पर VAT संख्या या, यदि कोई नहीं है, तो `tax_number` के सत्यापन का परिणाम। `valid` / `invalid`: देश की आधिकारिक रजिस्ट्री द्वारा तय किया जाता है (EU VIES, नॉर्वे, स्विट्जरलैंड, ब्राजील, कोलंबिया, कोस्टा रिका, इक्वाडोर, पराग्वे; पोलैंड अपने घरेलू VAT रजिस्टर द्वारा भी)। `format_valid` / `invalid_format`: देश के प्रारूप और चेक-डिजिट नियमों द्वारा तय किया जाता है जहाँ किसी रजिस्ट्री से क्वेरी नहीं की जा सकती। `could_not_validate`: रजिस्ट्री अनुपलब्ध थी। `not_applicable`: कोई संख्या नहीं, बिना रजिस्ट्री या नियमों वाला देश, या कोई सैंडबॉक्स सत्र।"
                        },
                        "vat_validated_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "वह संख्या जिसकी जाँच की गई थी, जैसा कि स्रोत इसे जानता है (उदाहरण के लिए फ्रेंच SIREN या डच RSIN से प्राप्त VAT संख्या)। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validation_source": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "eu_vies",
                            "pl_vat_white_list",
                            "no_brreg",
                            "ch_uid_register",
                            "br_receita_federal",
                            "co_rues",
                            "cr_hacienda",
                            "ec_sri",
                            "py_dnit",
                            "format_rules",
                            null
                          ],
                          "description": "वह स्रोत जिसने `vat_validation_status` तय किया: एक आधिकारिक रजिस्ट्री, या `format_rules`। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validated_name": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के साथ पंजीकृत नाम, जब वह इसे प्रकट करता है। केवल तब सेट होता है जब स्थिति `valid` हो।"
                        },
                        "vat_validated_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के पास पंजीकृत पता, यदि वह इसे प्रकट करता है। केवल तभी सेट किया जाता है जब स्थिति `valid` हो।"
                        },
                        "vat_checked_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "जांच का टाइमस्टैम्प। कोई जांच न चलने पर `null`।"
                        },
                        "financial_summary": {
                          "type": "object",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए शेयर/पूंजी विवरण (मुद्रा, कुल शेयर, शेयर वर्ग), जब उपलब्ध हों।"
                        },
                        "officers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string",
                                "example": "MELISSA BETHELL"
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री से प्राप्त रॉ पदनाम (उदा. `Director`, `Secretary`)।"
                              },
                              "role": {
                                "type": "string",
                                "description": "पदनाम से प्राप्त सामान्यीकृत भूमिका। पूर्ण 17-मान मॉडल सेट; इस endpoint पर रजिस्ट्री पार्सिंग आमतौर पर director, non_executive_director, secretary, chairman, या company_officer उत्सर्जित करती है।",
                                "enum": [
                                  "director",
                                  "non_executive_director",
                                  "secretary",
                                  "chairman",
                                  "ubo",
                                  "shareholder",
                                  "representative",
                                  "founder",
                                  "legal_advisor",
                                  "authorized_signatory",
                                  "trustee",
                                  "beneficiary",
                                  "company_officer",
                                  "settlor",
                                  "protector",
                                  "investor",
                                  "other"
                                ]
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "is_active": {
                                "type": "boolean",
                                "description": "`false` जब रजिस्ट्री नियुक्ति को इस्तीफ़ा दिया हुआ चिह्नित करती है।"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending",
                                  null
                                ],
                                "description": "संबंधित KYC सत्र की स्थिति, जब इस अधिकारी के लिए कोई सत्र शुरू किया गया हो। अन्यथा `null`।"
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true,
                                "description": "संबद्ध KYC सत्र का सत्यापन URL, जब कोई मौजूद हो।"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "पहला नाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो; पूरे नाम से अनुमानित नहीं।"
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "कुलनाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो।"
                              },
                              "address": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया अधिकारी का पता।"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "अधिकारी की नियुक्ति की तारीख।",
                                "format": "date"
                              },
                              "termination_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "नियुक्ति समाप्त होने की तारीख, जब रिपोर्ट की गई हो।",
                                "format": "date"
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट की गई पूरी जन्म तिथि। केवल जन्म वर्ष या माह ज्ञात होने पर Null।",
                                "format": "date"
                              },
                              "date_of_birth_year": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 9999,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म वर्ष, जिसमें पूर्ण तिथि अनुपलब्ध होने की स्थिति भी शामिल है।"
                              },
                              "date_of_birth_month": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 12,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म का महीना। केवल वर्ष ज्ञात होने पर Null।"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए निदेशक, सचिव और अन्य अधिकारी।"
                        },
                        "beneficial_owners": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "entity_type": {
                                "type": "string",
                                "enum": [
                                  "person",
                                  "company"
                                ],
                                "description": "क्या स्वामी कोई प्राकृतिक व्यक्ति है या कॉर्पोरेट इकाई।"
                              },
                              "roles": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "सामान्यीकृत भूमिकाएँ (उदा. `ubo`, `shareholder`)।"
                              },
                              "ownership_min_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की निचली सीमा (उदा. `25%`)।"
                              },
                              "ownership_max_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की ऊपरी सीमा।"
                              },
                              "is_active": {
                                "type": "boolean"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending",
                                  null
                                ]
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true
                              },
                              "effective_ownership_percent": {
                                "type": "number",
                                "nullable": true,
                                "description": "पार्स किया गया स्वामित्व प्रतिशत (अधिकतम सीमा, न्यूनतम सीमा पर फ़ॉलबैक)।"
                              },
                              "company_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "registration_number": {
                                "type": "string",
                                "nullable": true
                              },
                              "country_of_birth": {
                                "type": "string",
                                "nullable": true
                              },
                              "email": {
                                "type": "string",
                                "nullable": true
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_min_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_max_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर पूरी जन्म तिथि।",
                                "format": "date"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर नियुक्ति तिथि।",
                                "format": "date"
                              },
                              "shareholding": {
                                "$ref": "#/components/schemas/KYBRegistryShareholding"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए वास्तविक स्वामी / महत्वपूर्ण नियंत्रण वाले व्यक्ति। जब रजिस्ट्री स्वामित्व को उजागर नहीं करती है तो खाली हो सकता है।"
                        },
                        "addresses": {
                          "type": "array",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा उल्लिखित प्रत्येक पता, एक कैनोनिकल स्वरूप में। यदि कोई उल्लिखित नहीं है तो Null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryAddress"
                          }
                        },
                        "industries": {
                          "type": "array",
                          "nullable": true,
                          "description": "वे गतिविधियाँ जिनके तहत रजिस्ट्री कंपनी को वर्गीकृत करती है, एक विहित आकार। जब यह कोई गतिविधि नहीं बताती है तब null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryIndustry"
                          }
                        },
                        "accounts": {
                          "type": "object",
                          "nullable": true,
                          "additionalProperties": true,
                          "description": "रजिस्ट्री फ़ाइलिंग तिथियां, जब उपलब्ध हों। वार्षिक रिटर्न और आम बैठकों के लिए last_annual_return_date और last_agm_date का उपयोग किया जाता है; वे वित्तीय खातों से भिन्न होते हैं।"
                        },
                        "registry_data": {
                          "$ref": "#/components/schemas/KYBRegistryData"
                        },
                        "user_provided_data": {
                          "type": "object",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null` (होस्टेड KYB फ़्लो द्वारा उपयोग किया जाता है जब अंतिम उपयोगकर्ता रजिस्ट्री डेटा संपादित करते हैं)।"
                        },
                        "confirmed_by_user_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "last_console_edit_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "तब सेट किया जाता है जब कोई कंसोल समीक्षक बाद में रिकॉर्ड को संपादित करता है।"
                        },
                        "is_editable": {
                          "type": "boolean",
                          "description": "क्या रजिस्ट्री से प्राप्त डेटा को अभी भी होस्टेड फ़्लो/कंसोल में संपादित किया जा सकता है।"
                        },
                        "registry_tier_delivered": {
                          "type": "string",
                          "enum": [
                            "basic",
                            "shareholders",
                            "ubo",
                            null
                          ],
                          "description": "शीर्ष-स्तरीय `registry_tier_delivered` के समान।",
                          "nullable": true
                        },
                        "registry_ownership_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "not_requested",
                            "delivered",
                            "not_held",
                            "unavailable",
                            "pending",
                            null
                          ],
                          "description": "`delivered` जब स्वामित्व डेटा वापस मिल गया, `not_held` जब स्वामित्व रजिस्ट्री ने उत्तर दिया और इस कंपनी को सूचीबद्ध नहीं करती है (`registry_data.ownership_error` देखें), `unavailable` जब स्वामित्व स्तर का अनुरोध किया गया था लेकिन रजिस्ट्री के पास इस कंपनी के लिए कोई डेटा नहीं था या पूछा नहीं जा सका (`registry_data.ownership_error` देखें), `pending` जब स्वामित्व अनुभाग अभी तक रजिस्ट्री से प्राप्त नहीं हुआ है और Didit अभी भी इसे पूरा कर रहा है, Lite स्तर पर `not_requested`।"
                        },
                        "ownership": {
                          "$ref": "#/components/schemas/KYBRegistryOwnership"
                        },
                        "registry_tier": {
                          "type": "string",
                          "nullable": true,
                          "description": "वर्कफ़्लो द्वारा आदेशित रजिस्ट्री स्तर: `basic`, `shareholders` या `ubo`। `ownership.tier_requested` में भी।"
                        },
                        "registry_monitoring": {
                          "type": "object",
                          "nullable": true,
                          "description": "कंपनी के लिए नवीनतम रजिस्ट्री मॉनिटर, या कोई मौजूद न होने पर `null`।",
                          "properties": {
                            "uuid": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "status": {
                              "type": "string"
                            },
                            "unavailable_reason": {
                              "type": "string",
                              "nullable": true
                            },
                            "enrolled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "cancelled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "last_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "next_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "last_event_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "events_count": {
                              "type": "integer"
                            },
                            "watched_fields": {
                              "description": "कंपनी के वे फ़ील्ड जिन पर मॉनिटर नज़र रखता है।"
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "Resolved company": {
                    "summary": "पूर्ण रजिस्ट्री प्रोफ़ाइल (संक्षिप्तता के लिए अधिकारी सूची छोटी की गई है)",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "f1e2d3c4-b5a6-4789-9c0d-1e2f3a4b5c6d",
                        "node_id": "feature_kyb_registry",
                        "status": "In Review",
                        "registry_status": "active",
                        "data_resolved": true,
                        "company_name": "Tesco PLC",
                        "registration_number": "00445790",
                        "country_code": "GB",
                        "region": "",
                        "company_type": "Public Limited Company",
                        "incorporation_date": "1947-11-27",
                        "registered_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                        "tax_number": "GB412 8925 93",
                        "risk_level": "low risk",
                        "verification_status": "verified",
                        "is_from_registry": true,
                        "fetch_status": "resolved",
                        "alternative_names": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY",
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": "https://www.tesco.com/",
                        "email": "customer.service@tesco.co.uk",
                        "phone": "03301231688",
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {
                          "currency": "Pound (£)",
                          "total_number_of_shares": "8174378721",
                          "meta_detail": {
                            "Class_Of_Share": "Ordinary"
                          }
                        },
                        "officers": [
                          {
                            "uuid": "a1b2c3d4-e5f6-4789-9a0b-1c2d3e4f5a6b",
                            "name": "CHRISTOPHER JON TAYLOR",
                            "designation": "Secretary",
                            "role": "secretary",
                            "nationality": null,
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          },
                          {
                            "uuid": "b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c",
                            "name": "MELISSA BETHELL",
                            "designation": "Director",
                            "role": "director",
                            "nationality": "British",
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          }
                        ],
                        "beneficial_owners": [],
                        "addresses": [
                          {
                            "address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                            "type": "legal_entity_registry_address",
                            "description": "registered office address"
                          }
                        ],
                        "industries": null,
                        "accounts": {
                          "last_account": "26 February 2025",
                          "next_account": "26 February 2026",
                          "due_by_date": "26 August 2026"
                        },
                        "registry_data": {},
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवेलप का उपयोग करती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing kyb_response_id": {
                    "summary": "`kyb_response_id` आवश्यक है",
                    "value": {
                      "kyb_response_id": [
                        "This field is required."
                      ]
                    }
                  },
                  "save_api_request=false rejected": {
                    "summary": "चयन हमेशा बने रहते हैं",
                    "value": {
                      "save_api_request": [
                        "KYB registry select must be saved so billing and retrieval can be tracked."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या प्रदाता कॉल से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "202": {
            "description": "रिपोर्ट स्वीकार कर ली गई है और अभी भी प्रोसेस हो रही है। जब कोई रिपोर्ट अभी भी तैयार की जा रही होती है, तो endpoint 202 Accepted, kyb_registry.fetch_status=pending, और registry_tier_delivered=null लौटाता है। request_id रखें और GET /v3/session/{request_id}/decision/ प्राप्त करें जब तक कि registry_checks[0].company.fetch_status हल न हो जाए। Didit रिपोर्ट को स्वचालित रूप से पूरा करता है और तैयार होने के बाद डिलीवर किए गए स्तर के लिए शुल्क लेता है। जब तक यह लंबित है, खरीदारी को न दोहराएं; प्रत्येक नया POST एक अलग अनुरोध बनाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1v3~1kyb~1shareholders~1/post/responses/200/content/application~1json/schema"
                },
                "examples": {
                  "Pending (registry still resolving)": {
                    "summary": "स्वामित्व रिपोर्ट अभी भी प्रोसेस हो रही है; सहेजे गए निर्णय को प्राप्त करें",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "7c0a4f7e-2b1d-4f6a-9c3e-8d5b2a1f0e9d",
                        "node_id": "feature_kyb_registry",
                        "status": "Not Finished",
                        "registry_status": null,
                        "data_resolved": false,
                        "company_name": "Example Holdings Limited",
                        "registration_number": "12345678",
                        "country_code": "HK",
                        "region": null,
                        "company_type": null,
                        "incorporation_date": null,
                        "registered_address": null,
                        "tax_number": null,
                        "risk_level": null,
                        "verification_status": null,
                        "is_from_registry": true,
                        "fetch_status": "pending",
                        "alternative_names": null,
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": null,
                        "email": null,
                        "phone": null,
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {},
                        "officers": [],
                        "beneficial_owners": [],
                        "addresses": null,
                        "industries": null,
                        "accounts": null,
                        "registry_data": {},
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true,
                        "registry_tier_delivered": null,
                        "registry_ownership_status": "pending"
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00",
                      "registry_tier_delivered": null,
                      "registry_tier_requested": "shareholders"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/kyb/ubo/": {
      "post": {
        "summary": "वास्तविक स्वामियों के साथ KYB रजिस्ट्री कंपनी (स्टैंडअलोन)",
        "operationId": "post_v3_kyb_ubo",
        "x-didit-sdk": {
          "resource": "kyb",
          "method": "list_ubos",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [],
        "description": "`POST /v3/kyb/search/` द्वारा लौटाए गए किसी एक उम्मीदवार की Lite प्रोफ़ाइल, प्रत्यक्ष शेयरधारक **और स्वामित्व श्रृंखला के माध्यम से निर्धारित अंतिम वास्तविक स्वामी** (`registry_data.ubo_resolution` में कॉर्पोरेट पैरेंट श्रृंखला शामिल होती है) प्राप्त करें।\n\n**सर्च के साथ पेयरिंग।** उसी एप्लिकेशन की सर्च द्वारा लौटाया गया उम्मीदवार का `kyb_response_id` ठीक उसी प्रकार पास करें। उस स्तर पर सर्च करें जिसे आप खरीदना चाहते हैं (`POST /v3/kyb/search/` पर `tier`), क्योंकि सर्च उस रजिस्ट्री श्रृंखला पर चलती है जो उस स्तर को सेवा प्रदान करती है और एक खाली Lite सर्च इस बात का प्रमाण नहीं है कि रजिस्ट्री में वह कंपनी मौजूद नहीं है। जब देश का स्वामित्व डेटा किसी अन्य रजिस्ट्री में होता है, तो Didit बिना किसी अतिरिक्त लागत के पंजीकरण संख्या द्वारा कंपनी को वहां फिर से खोज लेता है।\n\n**बिलिंग।** देश की UBO कीमत पर बिल किया जाता है - देखें [KYB रजिस्ट्री मूल्य निर्धारण](/hi/getting-started/kyb-registry-pricing)। डिलीवर किया गया स्तर वह उच्चतम स्तर होता है जिसे देश और रजिस्ट्री प्रदान कर सकते हैं: Shareholders जब हल की गई रिपोर्ट में किसी प्राकृतिक व्यक्ति को वास्तविक स्वामी के रूप में नामित नहीं किया गया हो, Lite जब कोई स्वामित्व रिकॉर्ड ही न हो; `registry_tier_delivered` दर्शाता है कि किस स्तर का बिल लिया गया था। किसी भी रजिस्ट्री कॉल से पहले बैलेंस को UBO कीमत के विरुद्ध जांचा जाता है (कम होने पर `403`)।\n\n**उपलब्धता।** केवल v3। प्रत्येक कॉल एक व्यवसाय सत्र बनाती है (इसकी id `request_id` है)।\n\n**लंबित रिपोर्ट।** जब कोई रिपोर्ट अभी भी तैयार की जा रही हो, या स्वामित्व अनुभाग अभी तक रजिस्ट्री से प्राप्त नहीं हुआ हो, तो endpoint 202 Accepted, kyb_registry.fetch_status=pending, kyb_registry.registry_ownership_status=pending, और registry_tier_delivered=null लौटाता है। request_id को संभाल कर रखें और तब तक GET /v3/session/{request_id}/decision/ को कॉल करके डेटा प्राप्त करते रहें जब तक कि registry_checks[0].company.fetch_status हल न हो जाए। Didit रिपोर्ट को स्वचालित रूप से पूरा करता है और तैयार होने पर डिलीवर किए गए स्तर का शुल्क लेता है। लंबित रहने के दौरान खरीदारी दोबारा न करें; प्रत्येक नया POST एक अलग अनुरोध बनाता है।",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KYBRegistryCandidateRequest"
              },
              "example": {
                "kyb_response_id": "69aeeb95febb0f1704042259",
                "vendor_data": "company-1234"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/kyb/ubo/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"kyb_response_id\": \"69aeeb95febb0f1704042259\",\n    \"vendor_data\": \"company-1234\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.kyb.list_ubos(\n    kyb_response_id=\"69aeeb95febb0f1704042259\",\n    vendor_data=\"company-1234\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.kyb.listUbos({\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.KYB.ListUBOs(ctx, didit.KYBRegistryCandidateRequest{\n\tKYBResponseID: \"69aeeb95febb0f1704042259\",\n\tVendorData:    didit.String(\"company-1234\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.KYBRegistryCandidateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.kyb().listUbos(KYBRegistryCandidateRequest.builder()\n        .kybResponseId(\"69aeeb95febb0f1704042259\")\n        .vendorData(\"company-1234\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->kyb->listUbos([\n    'kyb_response_id' => '69aeeb95febb0f1704042259',\n    'vendor_data' => 'company-1234',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.kyb.list_ubos(\n  kyb_response_id: \"69aeeb95febb0f1704042259\",\n  vendor_data: \"company-1234\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Kyb.ListUbosAsync(new KYBRegistryCandidateRequest\n{\n    KybResponseId = \"69aeeb95febb0f1704042259\",\n    VendorData = \"company-1234\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कंपनी रिपोर्ट डिलीवर किए गए स्तर पर लौटाई और बिल की गई। अभी भी तैयार की जा रही स्वामित्व रिपोर्ट 202 लौटा सकती हैं; उनके सहेजे गए निर्णय को पुनः प्राप्त करने के लिए request_id रखें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "इस पुनर्प्राप्ति के लिए बनाए गए व्यवसाय सत्र की Id। यदि रिस्पॉन्स के बाद रजिस्ट्री से जानकारी मिलती है, तो संग्रहीत रिकॉर्ड (कंसोल में दृश्यमान) अपडेट होता रहता है।"
                    },
                    "registry_tier_requested": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo"
                      ],
                      "description": "यह endpoint जो स्तर बेचता है: चुनिंदा के लिए `basic` (Lite), `shareholders`, `ubo`।"
                    },
                    "registry_tier_delivered": {
                      "type": "string",
                      "enum": [
                        "basic",
                        "shareholders",
                        "ubo",
                        null
                      ],
                      "description": "वास्तव में डिलीवर और बिल किया गया स्तर। अनुरोध किए गए स्तर से कम तब होता है जब देश की रजिस्ट्रियों में कोई स्वामित्व डेटा नहीं होता है, जब रजिस्ट्री में इस कंपनी के लिए कोई स्वामित्व रिकॉर्ड नहीं होता है, या जब `ubo` अनुरोध की रिज़ॉल्व की गई रिपोर्ट किसी भी प्राकृतिक व्यक्ति को वास्तविक स्वामी के रूप में नामित नहीं करती है।",
                      "nullable": true
                    },
                    "kyb_registry": {
                      "type": "object",
                      "description": "पूर्ण रजिस्ट्री कंपनी प्रोफ़ाइल।",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid",
                          "description": "इस कंपनी रिकॉर्ड के लिए Didit की id।"
                        },
                        "node_id": {
                          "type": "string",
                          "example": "feature_kyb_registry"
                        },
                        "status": {
                          "type": "string",
                          "enum": [
                            "Not Finished",
                            "Approved",
                            "Declined",
                            "In Review"
                          ],
                          "description": "रजिस्ट्री जांच पर Didit का मूल्यांकन (उदा. `In Review` जब कंपनी रजिस्ट्री में सक्रिय नहीं है या स्वामित्व डेटा प्राप्त नहीं किया जा सका)।"
                        },
                        "registry_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "active",
                            "dissolved",
                            "deregistered",
                            "see full details",
                            "authorised",
                            "appointed representative",
                            "unauthorised",
                            "inactive",
                            "no longer authorised",
                            "closed",
                            "struck off",
                            null
                          ],
                          "description": "रजिस्ट्री द्वारा रिपोर्ट की गई कंपनी की सामान्यीकृत स्थिति।"
                        },
                        "data_resolved": {
                          "type": "boolean",
                          "description": "रजिस्ट्री द्वारा पूर्ण प्रोफ़ाइल लौटाने के बाद `true`। `false` जब पोलिंग के बाद भी रजिस्ट्री प्रक्रिया कर रही थी — रजिस्ट्री का समाधान होते ही संग्रहीत रिकॉर्ड स्वचालित रूप से पूरा हो जाता है।"
                        },
                        "company_name": {
                          "type": "string",
                          "example": "Tesco PLC"
                        },
                        "registration_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "00445790"
                        },
                        "country_code": {
                          "type": "string",
                          "description": "ISO 3166-1 alpha-2।",
                          "example": "GB"
                        },
                        "region": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री के क्षेत्रीय होने पर सबडिवीजन कोड (जैसे `US-CA` के लिए `CA`); अन्यथा खाली।"
                        },
                        "company_type": {
                          "type": "string",
                          "nullable": true,
                          "example": "Public Limited Company"
                        },
                        "incorporation_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "example": "1947-11-27"
                        },
                        "registered_address": {
                          "type": "string",
                          "nullable": true,
                          "example": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA"
                        },
                        "tax_number": {
                          "type": "string",
                          "nullable": true,
                          "example": "GB412 8925 93"
                        },
                        "risk_level": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जोखिम स्तर, जब उपलब्ध हो।"
                        },
                        "verification_status": {
                          "type": "string",
                          "enum": [
                            "verified",
                            "failed",
                            "unknown"
                          ],
                          "nullable": true,
                          "description": "क्रॉस-क्षेत्राधिकार सत्यापन स्थिति: जब रजिस्ट्री स्थिति कंपनी के अच्छी स्थिति में होने की पुष्टि करती है (`active`) तो `verified`, जब यह दर्शाती है कि कंपनी अब अच्छी स्थिति में नहीं है (उदाहरण के लिए `dissolved`) तो `failed`, अन्यथा `unknown`। रजिस्ट्री से न आई कंपनी के लिए और चयन के अभी भी `pending` रहने के दौरान `null`।"
                        },
                        "is_from_registry": {
                          "type": "boolean",
                          "description": "इस endpoint के लिए हमेशा `true` — प्रोफ़ाइल आधिकारिक रजिस्ट्री से प्राप्त की गई थी।"
                        },
                        "fetch_status": {
                          "type": "string",
                          "enum": [
                            "pending",
                            "resolved"
                          ],
                          "description": "रजिस्ट्री फ़ेच लाइफ़साइकिल। `data_resolved` द्वारा प्रतिबिंबित।"
                        },
                        "alternative_names": {
                          "type": "string",
                          "nullable": true,
                          "description": "वैकल्पिक, व्यापारिक, पूर्व या मूल-भाषा कंपनी के नाम टेक्स्ट के रूप में, जब रिपोर्ट किए गए हों।"
                        },
                        "nature_of_business": {
                          "type": "string",
                          "nullable": true,
                          "description": "गतिविधि विवरण या वर्गीकरण कोड, जब रिपोर्ट किया गया हो।"
                        },
                        "registered_capital": {
                          "type": "string",
                          "nullable": true
                        },
                        "registered_capital_amount": {
                          "type": "string",
                          "nullable": true,
                          "description": "स्ट्रिंग के रूप में दशमलव राशि, जब रिपोर्ट की गई हो।"
                        },
                        "registered_capital_currency": {
                          "type": "string",
                          "nullable": true,
                          "description": "ISO 4217 कोड, रिपोर्ट किए जाने पर।"
                        },
                        "website": {
                          "type": "string",
                          "nullable": true,
                          "example": "https://www.tesco.com/"
                        },
                        "email": {
                          "type": "string",
                          "nullable": true,
                          "example": "customer.service@tesco.co.uk"
                        },
                        "phone": {
                          "type": "string",
                          "nullable": true,
                          "example": "03301231688"
                        },
                        "legal_entity_identifier": {
                          "type": "string",
                          "nullable": true,
                          "description": "LEI, जब रिपोर्ट किया गया हो।"
                        },
                        "location_of_registration": {
                          "type": "string",
                          "nullable": true,
                          "description": "रजिस्ट्री/क्षेत्राधिकार जहां कंपनी पंजीकृत है, जब रिपोर्ट किया गया हो।"
                        },
                        "vat_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "EU VAT संख्या, जब होस्टेड रजिस्ट्री चरण के दौरान एकत्र की गई हो या बाद में संपादित की गई हो। चयन के समय यह आमतौर पर अभी तक सेट नहीं होती है — VAT और कर पहचान संख्या सत्यापन तब चलता है जब अंतिम उपयोगकर्ता होस्टेड फ़्लो में रजिस्ट्री चरण सबमिट करता है।"
                        },
                        "vat_validation_status": {
                          "type": "string",
                          "enum": [
                            "valid",
                            "invalid",
                            "format_valid",
                            "invalid_format",
                            "could_not_validate",
                            "not_applicable"
                          ],
                          "description": "रजिस्ट्री सबमिट पर VAT संख्या या, यदि कोई नहीं है, तो `tax_number` के सत्यापन का परिणाम। `valid` / `invalid`: देश की आधिकारिक रजिस्ट्री द्वारा तय किया जाता है (EU VIES, नॉर्वे, स्विट्जरलैंड, ब्राजील, कोलंबिया, कोस्टा रिका, इक्वाडोर, पराग्वे; पोलैंड अपने घरेलू VAT रजिस्टर द्वारा भी)। `format_valid` / `invalid_format`: देश के प्रारूप और चेक-डिजिट नियमों द्वारा तय किया जाता है जहाँ किसी रजिस्ट्री से क्वेरी नहीं की जा सकती। `could_not_validate`: रजिस्ट्री अनुपलब्ध थी। `not_applicable`: कोई संख्या नहीं, बिना रजिस्ट्री या नियमों वाला देश, या कोई सैंडबॉक्स सत्र।"
                        },
                        "vat_validated_number": {
                          "type": "string",
                          "nullable": true,
                          "description": "वह संख्या जिसकी जाँच की गई थी, जैसा कि स्रोत इसे जानता है (उदाहरण के लिए फ्रेंच SIREN या डच RSIN से प्राप्त VAT संख्या)। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validation_source": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "eu_vies",
                            "pl_vat_white_list",
                            "no_brreg",
                            "ch_uid_register",
                            "br_receita_federal",
                            "co_rues",
                            "cr_hacienda",
                            "ec_sri",
                            "py_dnit",
                            "format_rules",
                            null
                          ],
                          "description": "वह स्रोत जिसने `vat_validation_status` तय किया: एक आधिकारिक रजिस्ट्री, या `format_rules`। कोई जाँच न चलने पर `null`।"
                        },
                        "vat_validated_name": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के साथ पंजीकृत नाम, जब वह इसे प्रकट करता है। केवल तब सेट होता है जब स्थिति `valid` हो।"
                        },
                        "vat_validated_address": {
                          "type": "string",
                          "nullable": true,
                          "description": "नंबर को सत्यापित करने वाले स्रोत के पास पंजीकृत पता, यदि वह इसे प्रकट करता है। केवल तभी सेट किया जाता है जब स्थिति `valid` हो।"
                        },
                        "vat_checked_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "जांच का टाइमस्टैम्प। कोई जांच न चलने पर `null`।"
                        },
                        "financial_summary": {
                          "type": "object",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए शेयर/पूंजी विवरण (मुद्रा, कुल शेयर, शेयर वर्ग), जब उपलब्ध हों।"
                        },
                        "officers": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string",
                                "example": "MELISSA BETHELL"
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री से प्राप्त रॉ पदनाम (उदा. `Director`, `Secretary`)।"
                              },
                              "role": {
                                "type": "string",
                                "description": "पदनाम से प्राप्त सामान्यीकृत भूमिका। पूर्ण 17-मान मॉडल सेट; इस endpoint पर रजिस्ट्री पार्सिंग आमतौर पर director, non_executive_director, secretary, chairman, या company_officer उत्सर्जित करती है।",
                                "enum": [
                                  "director",
                                  "non_executive_director",
                                  "secretary",
                                  "chairman",
                                  "ubo",
                                  "shareholder",
                                  "representative",
                                  "founder",
                                  "legal_advisor",
                                  "authorized_signatory",
                                  "trustee",
                                  "beneficiary",
                                  "company_officer",
                                  "settlor",
                                  "protector",
                                  "investor",
                                  "other"
                                ]
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "is_active": {
                                "type": "boolean",
                                "description": "`false` जब रजिस्ट्री नियुक्ति को इस्तीफ़ा दिया हुआ चिह्नित करती है।"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending",
                                  null
                                ],
                                "description": "संबंधित KYC सत्र की स्थिति, जब इस अधिकारी के लिए कोई सत्र शुरू किया गया हो। अन्यथा `null`।"
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true,
                                "description": "संबद्ध KYC सत्र का सत्यापन URL, जब कोई मौजूद हो।"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "पहला नाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो; पूरे नाम से अनुमानित नहीं।"
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true,
                                "description": "कुलनाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो।"
                              },
                              "address": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया अधिकारी का पता।"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "अधिकारी की नियुक्ति की तारीख।",
                                "format": "date"
                              },
                              "termination_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "नियुक्ति समाप्त होने की तारीख, जब रिपोर्ट की गई हो।",
                                "format": "date"
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट की गई पूरी जन्म तिथि। केवल जन्म वर्ष या माह ज्ञात होने पर Null।",
                                "format": "date"
                              },
                              "date_of_birth_year": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 9999,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म वर्ष, जिसमें पूर्ण तिथि अनुपलब्ध होने की स्थिति भी शामिल है।"
                              },
                              "date_of_birth_month": {
                                "type": "integer",
                                "nullable": true,
                                "minimum": 1,
                                "maximum": 12,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म का महीना। केवल वर्ष ज्ञात होने पर Null।"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए निदेशक, सचिव और अन्य अधिकारी।"
                        },
                        "beneficial_owners": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "uuid": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "name": {
                                "type": "string"
                              },
                              "first_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "last_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "entity_type": {
                                "type": "string",
                                "enum": [
                                  "person",
                                  "company"
                                ],
                                "description": "क्या स्वामी कोई प्राकृतिक व्यक्ति है या कॉर्पोरेट इकाई।"
                              },
                              "roles": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "सामान्यीकृत भूमिकाएँ (उदा. `ubo`, `shareholder`)।"
                              },
                              "ownership_min_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की निचली सीमा (उदा. `25%`)।"
                              },
                              "ownership_max_shares": {
                                "type": "string",
                                "nullable": true,
                                "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व बैंड की ऊपरी सीमा।"
                              },
                              "is_active": {
                                "type": "boolean"
                              },
                              "kyc_status": {
                                "type": "string",
                                "nullable": true,
                                "enum": [
                                  "Approved",
                                  "Declined",
                                  "Pending",
                                  null
                                ]
                              },
                              "kyc_session_url": {
                                "type": "string",
                                "nullable": true
                              },
                              "effective_ownership_percent": {
                                "type": "number",
                                "nullable": true,
                                "description": "पार्स किया गया स्वामित्व प्रतिशत (अधिकतम सीमा, न्यूनतम सीमा पर फ़ॉलबैक)।"
                              },
                              "company_name": {
                                "type": "string",
                                "nullable": true
                              },
                              "registration_number": {
                                "type": "string",
                                "nullable": true
                              },
                              "country_of_birth": {
                                "type": "string",
                                "nullable": true
                              },
                              "email": {
                                "type": "string",
                                "nullable": true
                              },
                              "nationality": {
                                "type": "string",
                                "nullable": true
                              },
                              "designation": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_min_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "voting_max_shares": {
                                "type": "string",
                                "nullable": true
                              },
                              "date_of_birth": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर पूरी जन्म तिथि।",
                                "format": "date"
                              },
                              "appointment_date": {
                                "type": "string",
                                "nullable": true,
                                "description": "रिपोर्ट किए जाने पर नियुक्ति तिथि।",
                                "format": "date"
                              },
                              "shareholding": {
                                "$ref": "#/components/schemas/KYBRegistryShareholding"
                              }
                            }
                          },
                          "description": "रजिस्ट्री से निकाले गए वास्तविक स्वामी / महत्वपूर्ण नियंत्रण वाले व्यक्ति। जब रजिस्ट्री स्वामित्व को उजागर नहीं करती है तो खाली हो सकता है।"
                        },
                        "addresses": {
                          "type": "array",
                          "nullable": true,
                          "description": "रजिस्ट्री द्वारा उल्लिखित प्रत्येक पता, एक कैनोनिकल स्वरूप में। यदि कोई उल्लिखित नहीं है तो Null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryAddress"
                          }
                        },
                        "industries": {
                          "type": "array",
                          "nullable": true,
                          "description": "वे गतिविधियाँ जिनके तहत रजिस्ट्री कंपनी को वर्गीकृत करती है, एक विहित आकार। जब यह कोई गतिविधि नहीं बताती है तब null।",
                          "items": {
                            "$ref": "#/components/schemas/KYBRegistryIndustry"
                          }
                        },
                        "accounts": {
                          "type": "object",
                          "nullable": true,
                          "additionalProperties": true,
                          "description": "रजिस्ट्री फ़ाइलिंग तिथियां, जब उपलब्ध हों। वार्षिक रिटर्न और आम बैठकों के लिए last_annual_return_date और last_agm_date का उपयोग किया जाता है; वे वित्तीय खातों से भिन्न होते हैं।"
                        },
                        "registry_data": {
                          "$ref": "#/components/schemas/KYBRegistryData"
                        },
                        "user_provided_data": {
                          "type": "object",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null` (होस्टेड KYB फ़्लो द्वारा उपयोग किया जाता है जब अंतिम उपयोगकर्ता रजिस्ट्री डेटा संपादित करते हैं)।"
                        },
                        "confirmed_by_user_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "इस endpoint पर हमेशा `null`।"
                        },
                        "last_console_edit_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true,
                          "description": "तब सेट किया जाता है जब कोई कंसोल समीक्षक बाद में रिकॉर्ड को संपादित करता है।"
                        },
                        "is_editable": {
                          "type": "boolean",
                          "description": "क्या रजिस्ट्री से प्राप्त डेटा को अभी भी होस्टेड फ़्लो/कंसोल में संपादित किया जा सकता है।"
                        },
                        "registry_tier_delivered": {
                          "type": "string",
                          "enum": [
                            "basic",
                            "shareholders",
                            "ubo",
                            null
                          ],
                          "description": "शीर्ष-स्तरीय `registry_tier_delivered` के समान।",
                          "nullable": true
                        },
                        "registry_ownership_status": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "not_requested",
                            "delivered",
                            "not_held",
                            "unavailable",
                            "pending",
                            null
                          ],
                          "description": "`delivered` जब स्वामित्व डेटा वापस मिल गया, `not_held` जब स्वामित्व रजिस्ट्री ने उत्तर दिया और इस कंपनी को सूचीबद्ध नहीं करती है (`registry_data.ownership_error` देखें), `unavailable` जब स्वामित्व स्तर का अनुरोध किया गया था लेकिन रजिस्ट्री के पास इस कंपनी के लिए कोई डेटा नहीं था या पूछा नहीं जा सका (`registry_data.ownership_error` देखें), `pending` जब स्वामित्व अनुभाग अभी तक रजिस्ट्री से प्राप्त नहीं हुआ है और Didit अभी भी इसे पूरा कर रहा है, Lite स्तर पर `not_requested`।"
                        },
                        "ownership": {
                          "$ref": "#/components/schemas/KYBRegistryOwnership"
                        },
                        "registry_tier": {
                          "type": "string",
                          "nullable": true,
                          "description": "वर्कफ़्लो द्वारा आदेशित रजिस्ट्री स्तर: `basic`, `shareholders` या `ubo`। `ownership.tier_requested` में भी।"
                        },
                        "registry_monitoring": {
                          "type": "object",
                          "nullable": true,
                          "description": "कंपनी के लिए नवीनतम रजिस्ट्री मॉनिटर, या कोई मौजूद न होने पर `null`।",
                          "properties": {
                            "uuid": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "status": {
                              "type": "string"
                            },
                            "unavailable_reason": {
                              "type": "string",
                              "nullable": true
                            },
                            "enrolled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "cancelled_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "last_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "next_bill_date": {
                              "type": "string",
                              "format": "date",
                              "nullable": true
                            },
                            "last_event_at": {
                              "type": "string",
                              "format": "date-time",
                              "nullable": true
                            },
                            "events_count": {
                              "type": "integer"
                            },
                            "watched_fields": {
                              "description": "कंपनी के वे फ़ील्ड जिन पर मॉनिटर नज़र रखता है।"
                            }
                          }
                        }
                      }
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true,
                      "description": "आपके द्वारा भेजे गए `metadata` का इको।"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "examples": {
                  "Resolved company": {
                    "summary": "पूर्ण रजिस्ट्री प्रोफ़ाइल (संक्षिप्तता के लिए अधिकारी सूची छोटी की गई है)",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "f1e2d3c4-b5a6-4789-9c0d-1e2f3a4b5c6d",
                        "node_id": "feature_kyb_registry",
                        "status": "In Review",
                        "registry_status": "active",
                        "data_resolved": true,
                        "company_name": "Tesco PLC",
                        "registration_number": "00445790",
                        "country_code": "GB",
                        "region": "",
                        "company_type": "Public Limited Company",
                        "incorporation_date": "1947-11-27",
                        "registered_address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                        "tax_number": "GB412 8925 93",
                        "risk_level": "low risk",
                        "verification_status": "verified",
                        "is_from_registry": true,
                        "fetch_status": "resolved",
                        "alternative_names": "TESCO STORES (HOLDINGS) PUBLIC LIMITED COMPANY",
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": "https://www.tesco.com/",
                        "email": "customer.service@tesco.co.uk",
                        "phone": "03301231688",
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {
                          "currency": "Pound (£)",
                          "total_number_of_shares": "8174378721",
                          "meta_detail": {
                            "Class_Of_Share": "Ordinary"
                          }
                        },
                        "officers": [
                          {
                            "uuid": "a1b2c3d4-e5f6-4789-9a0b-1c2d3e4f5a6b",
                            "name": "CHRISTOPHER JON TAYLOR",
                            "designation": "Secretary",
                            "role": "secretary",
                            "nationality": null,
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          },
                          {
                            "uuid": "b2c3d4e5-f6a7-4890-8b1c-2d3e4f5a6b7c",
                            "name": "MELISSA BETHELL",
                            "designation": "Director",
                            "role": "director",
                            "nationality": "British",
                            "is_active": true,
                            "kyc_status": null,
                            "kyc_session_url": null
                          }
                        ],
                        "beneficial_owners": [],
                        "addresses": [
                          {
                            "address": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA",
                            "type": "legal_entity_registry_address",
                            "description": "registered office address"
                          }
                        ],
                        "industries": null,
                        "accounts": {
                          "last_account": "26 February 2025",
                          "next_account": "26 February 2026",
                          "due_by_date": "26 August 2026"
                        },
                        "registry_data": {
                          "ubo_resolution": {
                            "parent_chain": [],
                            "subsidiaries": [],
                            "unresolved": []
                          }
                        },
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड-स्तरीय समस्याएं DRF के मानक एनवेलप का उपयोग करती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing kyb_response_id": {
                    "summary": "`kyb_response_id` आवश्यक है",
                    "value": {
                      "kyb_response_id": [
                        "This field is required."
                      ]
                    }
                  },
                  "save_api_request=false rejected": {
                    "summary": "चयन हमेशा बने रहते हैं",
                    "value": {
                      "save_api_request": [
                        "KYB registry select must be saved so billing and retrieval can be tracked."
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुमति अस्वीकृत। तब लौटाया जाता है जब `x-api-key` हेडर अनुपलब्ध हो, और तब भी जब कॉल करने वाले संगठन का बैलेंस कॉल को कवर नहीं कर सकता; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। अनुपलब्ध कुंजी `{\"detail\": ...}` के साथ `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। क्रेडिट की कमी किसी भी स्क्रीनिंग या प्रदाता कॉल से पहले `{\"error\": ...}` के साथ `403` लौटाती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य/निरस्त है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Not enough credits": {
                    "summary": "संगठन का बैलेंस कॉल को कवर नहीं कर सकता",
                    "value": {
                      "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई। POST/PATCH/DELETE endpoints प्रति मिनट प्रति API कुंजी 300 राइट अनुरोधों का बजट साझा करते हैं (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)। रिस्पॉन्स में `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` और `Retry-After` हेडर होते हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Write rate limit exceeded": {
                    "summary": "वर्तमान मिनट में 300 से अधिक राइट अनुरोध",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "202": {
            "description": "रिपोर्ट स्वीकार कर ली गई है और अभी भी प्रोसेस हो रही है। जब कोई रिपोर्ट अभी भी तैयार की जा रही होती है, तो endpoint 202 Accepted, kyb_registry.fetch_status=pending, और registry_tier_delivered=null लौटाता है। request_id रखें और GET /v3/session/{request_id}/decision/ प्राप्त करें जब तक कि registry_checks[0].company.fetch_status हल न हो जाए। Didit रिपोर्ट को स्वचालित रूप से पूरा करता है और तैयार होने के बाद डिलीवर किए गए स्तर के लिए शुल्क लेता है। जब तक यह लंबित है, खरीदारी को न दोहराएं; प्रत्येक नया POST एक अलग अनुरोध बनाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1v3~1kyb~1ubo~1/post/responses/200/content/application~1json/schema"
                },
                "examples": {
                  "Pending (registry still resolving)": {
                    "summary": "स्वामित्व रिपोर्ट अभी भी प्रोसेस हो रही है; सहेजे गए निर्णय को प्राप्त करें",
                    "value": {
                      "request_id": "9d4f2c7a-1b3e-4a5c-8d6f-0e9a8b7c6d5e",
                      "kyb_registry": {
                        "uuid": "7c0a4f7e-2b1d-4f6a-9c3e-8d5b2a1f0e9d",
                        "node_id": "feature_kyb_registry",
                        "status": "Not Finished",
                        "registry_status": null,
                        "data_resolved": false,
                        "company_name": "Example Holdings Limited",
                        "registration_number": "12345678",
                        "country_code": "HK",
                        "region": null,
                        "company_type": null,
                        "incorporation_date": null,
                        "registered_address": null,
                        "tax_number": null,
                        "risk_level": null,
                        "verification_status": null,
                        "is_from_registry": true,
                        "fetch_status": "pending",
                        "alternative_names": null,
                        "nature_of_business": null,
                        "registered_capital": null,
                        "registered_capital_amount": null,
                        "registered_capital_currency": null,
                        "website": null,
                        "email": null,
                        "phone": null,
                        "legal_entity_identifier": null,
                        "location_of_registration": null,
                        "financial_summary": {},
                        "officers": [],
                        "beneficial_owners": [],
                        "addresses": null,
                        "industries": null,
                        "accounts": null,
                        "registry_data": {},
                        "user_provided_data": null,
                        "confirmed_by_user_at": null,
                        "last_console_edit_at": null,
                        "is_editable": true,
                        "registry_tier_delivered": null,
                        "registry_ownership_status": "pending"
                      },
                      "vendor_data": "company-1234",
                      "metadata": null,
                      "created_at": "2026-06-11T10:45:00.000000+00:00",
                      "registry_tier_delivered": null,
                      "registry_tier_requested": "ubo"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/id-verification/wallets/": {
      "get": {
        "operationId": "list_wallets",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "description": "प्रत्येक Digital ID वॉलेट अपने स्टार्ट endpoint, देशों, आवश्यक फ़ील्ड और क्या यह एप्लिकेशन अभी इस एनवायरनमेंट में इसे शुरू कर सकता है, के साथ। सूचीबद्ध होने का अर्थ लाइव होना नहीं है।",
        "summary": "डिजिटल ID वॉलेट सूचीबद्ध करें",
        "tags": [
          "Digital ID wallets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletCatalogResponse"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं (x-api-key या Authorization: Bearer)।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request GET \\\n  --url https://verification.didit.me/v3/id-verification/wallets/ \\\n  --header 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.list()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.list();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.List(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().list();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->list();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.list\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.ListAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/id-verification/wallets/verifications/{request_id}/": {
      "get": {
        "operationId": "get_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "retrieve_verification",
          "auth": "api_key",
          "server": true
        },
        "description": "वॉलेट सत्यापन की स्थिति और परिणाम: सत्यापित होने पर सामान्यीकृत पहचान और वॉलेट की अपनी विशेषताएं, अस्वीकृत होने पर त्रुटि कोड, लंबित होने पर अगली कार्रवाई। expires_at पार कर चुके सत्यापन को टाइमआउट माना जाता है।",
        "summary": "वॉलेट सत्यापन प्राप्त करें",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वह request_id जो start endpoint ने लौटाया था।",
            "required": true
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "ftn",
                      "name": "Finnish Trust Network",
                      "issuing_authority": "Finnish banks and mobile operators (FTN)"
                    },
                    "country": "FIN",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं (x-api-key या Authorization: Bearer)।"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि not_found: इस एप्लिकेशन के किसी भी वॉलेट सत्यापन में यह request_id नहीं है।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request GET \\\n  --url https://verification.didit.me/v3/id-verification/wallets/verifications/REQUEST_ID/ \\\n  --header 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.retrieve_verification(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.retrieveVerification(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.RetrieveVerification(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().retrieveVerification(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->retrieveVerification('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.retrieve_verification(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.RetrieveVerificationAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/id-verification/wallets/verifications/{request_id}/poll/": {
      "post": {
        "operationId": "poll_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "poll_verification",
          "auth": "api_key",
          "server": true
        },
        "description": "Smart-ID और Mobile-ID: प्रदाता से पूछें कि क्या उपयोगकर्ता ने पुष्टि की, अस्वीकार किया या प्रॉम्प्ट की समय-सीमा समाप्त होने दी, और पुष्टि करने पर हस्ताक्षरित पहचान को सत्यापित करें। रीडायरेक्ट वॉलेट उपयोगकर्ता के ब्राउज़र के माध्यम से पूर्ण होते हैं, इसलिए उनके लिए यह केवल सत्यापन को वापस पढ़ता है। इसके बाद सत्यापन की स्थिति जैसी होती है, उसी का उत्तर देता है।",
        "summary": "वॉलेट सत्यापन को पोल करें",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वह request_id जो start endpoint ने लौटाया था।",
            "required": true
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "smart_id",
                      "name": "Smart-ID",
                      "issuing_authority": "SK ID Solutions"
                    },
                    "country": "EST",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "in_app",
                    "simulated": true,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "confirm_in_app",
                      "verification_code": "1234",
                      "poll_interval_seconds": 2
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं (x-api-key या Authorization: Bearer)।"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि not_found: इस एप्लिकेशन के किसी भी वॉलेट सत्यापन में यह request_id नहीं है।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/verifications/REQUEST_ID/poll/ \\\n  --header 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.poll_verification(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.pollVerification(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.PollVerification(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().pollVerification(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->pollVerification('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.poll_verification(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.PollVerificationAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/id-verification/wallets/verifications/{request_id}/cancel/": {
      "post": {
        "operationId": "cancel_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "cancel_verification",
          "auth": "api_key",
          "server": true
        },
        "description": "लंबित सत्यापन वापस लें: इसे रद्द के रूप में अस्वीकृत कर दिया जाता है और कभी बिल नहीं किया जाता है। निर्णय हो चुके सत्यापन को बिना किसी बदलाव के वापस कर दिया जाता है। Smart-ID और Mobile-ID: साइन-इन की जाँच कर रहे पोल के दौरान आने वाला रद्दीकरण उस पोल के लिए कुछ सेकंड प्रतीक्षा करता है, फिर उसे अस्वीकृत कर देता है, या यदि उपयोगकर्ता पहले ही पुष्टि कर चुका है तो इसे सत्यापित के रूप में लौटाता है। जिस सत्यापन को उपयोगकर्ता अभी पूरा कर रहा है उसे रद्द नहीं किया जा सकता है (Retry-After के साथ 409 verification_in_progress): इसके परिणाम को पढ़ने के लिए उतने सेकंड बाद पुनः प्रयास करें।",
        "summary": "वॉलेट सत्यापन रद्द करें",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वह request_id जो start endpoint ने लौटाया था।",
            "required": true
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "ftn",
                      "name": "Finnish Trust Network",
                      "issuing_authority": "Finnish banks and mobile operators (FTN)"
                    },
                    "country": "FIN",
                    "status": "Declined",
                    "outcome": "cancelled",
                    "error": "cancelled_by_customer",
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": null,
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं (x-api-key या Authorization: Bearer)।"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि not_found: इस एप्लिकेशन के किसी भी वॉलेट सत्यापन में यह request_id नहीं है।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि verification_in_progress: उपयोगकर्ता अभी इस साइन-इन को पूरा कर रहा है। Retry-After हेडर बताता है कि पुनः प्रयास कब करना है; पुनः प्रयास तय किया गया सत्यापन लौटाता है।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/verifications/REQUEST_ID/cancel/ \\\n  --header 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.cancel_verification(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.cancelVerification(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.CancelVerification(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().cancelVerification(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->cancelVerification('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.cancel_verification(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.CancelVerificationAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/id-verification/wallets/mitid/": {
      "post": {
        "operationId": "start_mitid_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_mitid",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के MitID साइन-इन (Danish Agency for Digital Government; DNK) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के साथ वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "MitID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMitidWalletVerificationStartRequest"
              },
              "example": {
                "country": "DNK",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMitidWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMitidWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "mitid",
                      "name": "MitID",
                      "issuing_authority": "Danish Agency for Digital Government"
                    },
                    "country": "DNK",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/mitid/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"DNK\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_mitid(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"DNK\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startMitid({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"DNK\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartMitid(ctx, didit.IDWalletsStartMitidParams{\n\tBody: didit.DigitalIDWalletAPIMitidWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIMitidWalletVerificationStartCountryEnum(\"DNK\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiMitidWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiMitidWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startMitid(DigitalIdWalletApiMitidWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiMitidWalletVerificationStartCountryEnum.of(\"DNK\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startMitid([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'DNK',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_mitid(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"DNK\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartMitidAsync(new DigitalIdWalletApiMitidWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiMitidWalletVerificationStartCountryEnum(\"DNK\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "mitid"
      }
    },
    "/v3/id-verification/wallets/bankid-se/": {
      "post": {
        "operationId": "start_bankid_se_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_bankid_se",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के BankID (SWE) साइन-इन (Finansiell ID-Teknik / बैंक कंसोर्टियम; SWE) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "BankID (SWE) सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidSeWalletVerificationStartRequest"
              },
              "example": {
                "country": "SWE",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidSeWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidSeWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "bankid_se",
                      "name": "BankID",
                      "issuing_authority": "Finansiell ID-Teknik / bank consortium"
                    },
                    "country": "SWE",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/bankid-se/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"SWE\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_bankid_se(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"SWE\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startBankidSe({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"SWE\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartBankidSe(ctx, didit.IDWalletsStartBankidSeParams{\n\tBody: didit.DigitalIDWalletAPIBankidSeWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryEe9enum(\"SWE\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiBankidSeWalletVerificationStartRequest;\nimport me.didit.types.DigitalIdWalletApiCountryEe9Enum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startBankidSe(DigitalIdWalletApiBankidSeWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryEe9Enum.of(\"SWE\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startBankidSe([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'SWE',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_bankid_se(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"SWE\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartBankidSeAsync(new DigitalIdWalletApiBankidSeWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryEe9Enum(\"SWE\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "bankid_se"
      }
    },
    "/v3/id-verification/wallets/bankid-no/": {
      "post": {
        "operationId": "start_bankid_no_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_bankid_no",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के BankID (NOR) साइन-इन (BankID BankAxept AS; NOR) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "BankID (NOR) सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidNoWalletVerificationStartRequest"
              },
              "example": {
                "country": "NOR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidNoWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidNoWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "bankid_no",
                      "name": "BankID",
                      "issuing_authority": "BankID BankAxept AS"
                    },
                    "country": "NOR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/bankid-no/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"NOR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_bankid_no(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"NOR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startBankidNo({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartBankidNo(ctx, didit.IDWalletsStartBankidNoParams{\n\tBody: didit.DigitalIDWalletAPIBankidNoWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryAfcEnum(\"NOR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiBankidNoWalletVerificationStartRequest;\nimport me.didit.types.DigitalIdWalletApiCountryAfcEnum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startBankidNo(DigitalIdWalletApiBankidNoWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryAfcEnum.of(\"NOR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startBankidNo([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'NOR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_bankid_no(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartBankidNoAsync(new DigitalIdWalletApiBankidNoWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryAfcEnum(\"NOR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "bankid_no"
      }
    },
    "/v3/id-verification/wallets/vipps/": {
      "post": {
        "operationId": "start_vipps_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_vipps",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना Vipps साइन-इन (Vipps MobilePay / BankID NO; NOR) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "Vipps सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiVippsWalletVerificationStartRequest"
              },
              "example": {
                "country": "NOR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiVippsWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiVippsWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "vipps",
                      "name": "Vipps",
                      "issuing_authority": "Vipps MobilePay / BankID NO"
                    },
                    "country": "NOR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/vipps/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"NOR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_vipps(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"NOR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startVipps({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartVipps(ctx, didit.IDWalletsStartVippsParams{\n\tBody: didit.DigitalIDWalletAPIVippsWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryAfcEnum(\"NOR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiCountryAfcEnum;\nimport me.didit.types.DigitalIdWalletApiVippsWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startVipps(DigitalIdWalletApiVippsWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryAfcEnum.of(\"NOR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startVipps([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'NOR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_vipps(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartVippsAsync(new DigitalIdWalletApiVippsWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryAfcEnum(\"NOR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "vipps"
      }
    },
    "/v3/id-verification/wallets/buypass/": {
      "post": {
        "operationId": "start_buypass_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_buypass",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Buypass ID साइन-इन (Buypass AS; NOR) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Buypass ID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBuypassWalletVerificationStartRequest"
              },
              "example": {
                "country": "NOR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBuypassWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBuypassWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "buypass",
                      "name": "Buypass ID",
                      "issuing_authority": "Buypass AS"
                    },
                    "country": "NOR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/buypass/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"NOR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_buypass(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"NOR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startBuypass({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartBuypass(ctx, didit.IDWalletsStartBuypassParams{\n\tBody: didit.DigitalIDWalletAPIBuypassWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryAfcEnum(\"NOR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiBuypassWalletVerificationStartRequest;\nimport me.didit.types.DigitalIdWalletApiCountryAfcEnum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startBuypass(DigitalIdWalletApiBuypassWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryAfcEnum.of(\"NOR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startBuypass([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'NOR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_buypass(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NOR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartBuypassAsync(new DigitalIdWalletApiBuypassWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryAfcEnum(\"NOR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "buypass"
      }
    },
    "/v3/id-verification/wallets/itsme/": {
      "post": {
        "operationId": "start_itsme_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_itsme",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के itsme साइन-इन (बेल्जियन मोबाइल ID; BEL, LUX, NLD) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL आता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता request_id और result जोड़कर return_url पर वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, कभी भी URL से नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो कभी भी प्रदाता से संपर्क नहीं करता है।",
        "summary": "itsme सत्यापन शुरू करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiItsmeWalletVerificationStartRequest"
              },
              "example": {
                "country": "BEL",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiItsmeWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiItsmeWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "itsme",
                      "name": "itsme",
                      "issuing_authority": "Belgian Mobile ID"
                    },
                    "country": "BEL",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/itsme/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"BEL\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_itsme(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"BEL\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startItsme({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"BEL\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartItsme(ctx, didit.IDWalletsStartItsmeParams{\n\tBody: didit.DigitalIDWalletAPIItsmeWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.DigitalIDWalletAPIItsmeWalletVerificationStartCountryEnum(\"BEL\"),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiItsmeWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiItsmeWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startItsme(DigitalIdWalletApiItsmeWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiItsmeWalletVerificationStartCountryEnum.of(\"BEL\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startItsme([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'BEL',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_itsme(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"BEL\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartItsmeAsync(new DigitalIdWalletApiItsmeWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = \"BEL\",\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "itsme"
      }
    },
    "/v3/id-verification/wallets/idin/": {
      "post": {
        "operationId": "start_idin_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_idin",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के iDIN साइन-इन (डच बैंकों (Currence iDIN); NLD) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL आता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता request_id और result जोड़कर return_url पर वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, कभी भी URL से नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो कभी भी प्रदाता से संपर्क नहीं करता है।",
        "summary": "iDIN सत्यापन शुरू करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdinWalletVerificationStartRequest"
              },
              "example": {
                "country": "NLD",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdinWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdinWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "idin",
                      "name": "iDIN",
                      "issuing_authority": "Dutch banks (Currence iDIN)"
                    },
                    "country": "NLD",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/idin/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"NLD\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_idin(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"NLD\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startIdin({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NLD\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartIdin(ctx, didit.IDWalletsStartIdinParams{\n\tBody: didit.DigitalIDWalletAPIIdinWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIIdinWalletVerificationStartCountryEnum(\"NLD\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiIdinWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiIdinWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startIdin(DigitalIdWalletApiIdinWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiIdinWalletVerificationStartCountryEnum.of(\"NLD\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startIdin([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'NLD',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_idin(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"NLD\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartIdinAsync(new DigitalIdWalletApiIdinWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiIdinWalletVerificationStartCountryEnum(\"NLD\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "idin"
      }
    },
    "/v3/id-verification/wallets/ftn/": {
      "post": {
        "operationId": "start_ftn_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_ftn",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Finnish Trust Network साइन-इन (फ़िनलैंड के बैंक और मोबाइल ऑपरेटर (FTN); FIN) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के साथ वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Finnish Trust Network सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFtnWalletVerificationStartRequest"
              },
              "example": {
                "country": "FIN",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFtnWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFtnWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "ftn",
                      "name": "Finnish Trust Network",
                      "issuing_authority": "Finnish banks and mobile operators (FTN)"
                    },
                    "country": "FIN",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/ftn/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"FIN\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_ftn(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"FIN\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startFtn({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"FIN\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartFtn(ctx, didit.IDWalletsStartFtnParams{\n\tBody: didit.DigitalIDWalletAPIFtnWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIFtnWalletVerificationStartCountryEnum(\"FIN\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiFtnWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiFtnWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startFtn(DigitalIdWalletApiFtnWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiFtnWalletVerificationStartCountryEnum.of(\"FIN\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startFtn([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'FIN',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_ftn(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"FIN\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartFtnAsync(new DigitalIdWalletApiFtnWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiFtnWalletVerificationStartCountryEnum(\"FIN\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "ftn"
      }
    },
    "/v3/id-verification/wallets/personalausweis/": {
      "post": {
        "operationId": "start_personalausweis_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_personalausweis",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना Personalausweis साइन-इन (Bundesministerium des Innern (eID); DEU) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "Personalausweis सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest"
              },
              "example": {
                "country": "DEU",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "personalausweis",
                      "name": "Personalausweis",
                      "issuing_authority": "Bundesministerium des Innern (eID)"
                    },
                    "country": "DEU",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/personalausweis/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"DEU\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_personalausweis(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"DEU\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startPersonalausweis({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"DEU\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartPersonalausweis(ctx, didit.IDWalletsStartPersonalausweisParams{\n\tBody: didit.DigitalIDWalletAPIPersonalausweisWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIPersonalausweisWalletVerificationStartCountryEnum(\"DEU\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiPersonalausweisWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startPersonalausweis(DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiPersonalausweisWalletVerificationStartCountryEnum.of(\"DEU\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startPersonalausweis([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'DEU',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_personalausweis(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"DEU\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartPersonalausweisAsync(new DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiPersonalausweisWalletVerificationStartCountryEnum(\"DEU\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "personalausweis"
      }
    },
    "/v3/id-verification/wallets/frejaid/": {
      "post": {
        "operationId": "start_frejaid_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_frejaid",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Freja eID साइन-इन (Freja eID Group; SWE) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के साथ वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Freja eID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFrejaidWalletVerificationStartRequest"
              },
              "example": {
                "country": "SWE",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFrejaidWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFrejaidWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "frejaid",
                      "name": "Freja eID",
                      "issuing_authority": "Freja eID Group"
                    },
                    "country": "SWE",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/frejaid/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"SWE\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_frejaid(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"SWE\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startFrejaid({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"SWE\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartFrejaid(ctx, didit.IDWalletsStartFrejaidParams{\n\tBody: didit.DigitalIDWalletAPIFrejaidWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryEe9enum(\"SWE\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiCountryEe9Enum;\nimport me.didit.types.DigitalIdWalletApiFrejaidWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startFrejaid(DigitalIdWalletApiFrejaidWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryEe9Enum.of(\"SWE\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startFrejaid([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'SWE',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_frejaid(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"SWE\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartFrejaidAsync(new DigitalIdWalletApiFrejaidWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryEe9Enum(\"SWE\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "frejaid"
      }
    },
    "/v3/id-verification/wallets/uae-pass/": {
      "post": {
        "operationId": "start_uae_pass_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_uae_pass",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना UAE PASS साइन-इन (UAE Digital Government Authority; ARE) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "UAE PASS सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiUaePassWalletVerificationStartRequest"
              },
              "example": {
                "country": "ARE",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiUaePassWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiUaePassWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "uae_pass",
                      "name": "UAE PASS",
                      "issuing_authority": "UAE Digital Government Authority"
                    },
                    "country": "ARE",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/uae-pass/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"ARE\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_uae_pass(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"ARE\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startUaePass({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"ARE\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartUaePass(ctx, didit.IDWalletsStartUaePassParams{\n\tBody: didit.DigitalIDWalletAPIUaePassWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIUaePassWalletVerificationStartCountryEnum(\"ARE\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiUaePassWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiUaePassWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startUaePass(DigitalIdWalletApiUaePassWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiUaePassWalletVerificationStartCountryEnum.of(\"ARE\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startUaePass([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'ARE',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_uae_pass(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"ARE\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartUaePassAsync(new DigitalIdWalletApiUaePassWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiUaePassWalletVerificationStartCountryEnum(\"ARE\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "uae_pass"
      }
    },
    "/v3/id-verification/wallets/govbr/": {
      "post": {
        "operationId": "start_govbr_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_govbr",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना gov.br साइन-इन (Governo Federal do Brasil; BRA) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "gov.br सत्यापन शुरू करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovbrWalletVerificationStartRequest"
              },
              "example": {
                "country": "BRA",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovbrWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovbrWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "govbr",
                      "name": "gov.br",
                      "issuing_authority": "Governo Federal do Brasil"
                    },
                    "country": "BRA",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/govbr/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"BRA\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_govbr(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"BRA\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startGovbr({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"BRA\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartGovbr(ctx, didit.IDWalletsStartGovbrParams{\n\tBody: didit.DigitalIDWalletAPIGovbrWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIGovbrWalletVerificationStartCountryEnum(\"BRA\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiGovbrWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiGovbrWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startGovbr(DigitalIdWalletApiGovbrWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiGovbrWalletVerificationStartCountryEnum.of(\"BRA\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startGovbr([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'BRA',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_govbr(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"BRA\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartGovbrAsync(new DigitalIdWalletApiGovbrWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiGovbrWalletVerificationStartCountryEnum(\"BRA\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "govbr"
      }
    },
    "/v3/id-verification/wallets/oneid/": {
      "post": {
        "operationId": "start_oneid_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_oneid",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना OneID साइन-इन (OneID (UK बैंक-सत्यापित पहचान); GBR) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "OneID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiOneidWalletVerificationStartRequest"
              },
              "example": {
                "country": "GBR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiOneidWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiOneidWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "oneid",
                      "name": "OneID",
                      "issuing_authority": "OneID (UK bank-verified identity)"
                    },
                    "country": "GBR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/oneid/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"GBR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_oneid(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"GBR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startOneid({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"GBR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartOneid(ctx, didit.IDWalletsStartOneidParams{\n\tBody: didit.DigitalIDWalletAPIOneidWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountry520enum(\"GBR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiCountry520Enum;\nimport me.didit.types.DigitalIdWalletApiOneidWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startOneid(DigitalIdWalletApiOneidWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountry520Enum.of(\"GBR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startOneid([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'GBR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_oneid(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"GBR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartOneidAsync(new DigitalIdWalletApiOneidWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountry520Enum(\"GBR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "oneid"
      }
    },
    "/v3/id-verification/wallets/govuk-wallet/": {
      "post": {
        "operationId": "start_govuk_wallet_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_govuk_wallet",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के GOV.UK Wallet साइन-इन (UK Government Digital Service; GBR) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के साथ वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "GOV.UK Wallet सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovukWalletWalletVerificationStartRequest"
              },
              "example": {
                "country": "GBR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovukWalletWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovukWalletWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "govuk_wallet",
                      "name": "GOV.UK Wallet",
                      "issuing_authority": "UK Government Digital Service"
                    },
                    "country": "GBR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/govuk-wallet/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"GBR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_govuk_wallet(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"GBR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startGovukWallet({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"GBR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartGovukWallet(ctx, didit.IDWalletsStartGovukWalletParams{\n\tBody: didit.DigitalIDWalletAPIGovukWalletWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountry520enum(\"GBR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiCountry520Enum;\nimport me.didit.types.DigitalIdWalletApiGovukWalletWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startGovukWallet(DigitalIdWalletApiGovukWalletWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountry520Enum.of(\"GBR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startGovukWallet([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'GBR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_govuk_wallet(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"GBR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartGovukWalletAsync(new DigitalIdWalletApiGovukWalletWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountry520Enum(\"GBR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "govuk_wallet"
      }
    },
    "/v3/id-verification/wallets/smart-id/": {
      "post": {
        "operationId": "start_smart_id_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_smart_id",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना Smart-ID साइन-इन (SK ID Solutions; EST, LVA, LTU, BEL) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=confirm_in_app के साथ उपयोगकर्ता को दिखाने के लिए तुलना कोड होता है; उपयोगकर्ता इसकी पुष्टि करता है और ऐप में अपना PIN दर्ज करता है (PIN कभी भी एकत्र न करें)। हर poll_interval_seconds पर POST /v3/id-verification/wallets/verifications/{request_id}/poll/ को पोल करें, या webhook पर निर्भर रहें: Didit बैकग्राउंड में भी पोल करता है। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "Smart-ID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiSmartIdWalletVerificationStartRequest"
              },
              "example": {
                "country": "EST",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "personal_code": "00000000000"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiSmartIdWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiSmartIdWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "smart_id",
                      "name": "Smart-ID",
                      "issuing_authority": "SK ID Solutions"
                    },
                    "country": "EST",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "in_app",
                    "simulated": true,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "confirm_in_app",
                      "verification_code": "1234",
                      "poll_interval_seconds": 2
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/smart-id/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"EST\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"personal_code\": \"00000000000\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_smart_id(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"EST\",\n    personal_code=\"00000000000\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startSmartId({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  personal_code: \"00000000000\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartSmartID(ctx, didit.IDWalletsStartSmartIDParams{\n\tBody: didit.DigitalIDWalletAPISmartIDWalletVerificationStartRequest{\n\t\tVendorData:   didit.String(\"your-customer-reference\"),\n\t\tMetadata:     didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:      didit.DigitalIDWalletAPISmartIDWalletVerificationStartCountryEnum(\"EST\"),\n\t\tPersonalCode: \"00000000000\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiSmartIdWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startSmartId(DigitalIdWalletApiSmartIdWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum.of(\"EST\"))\n        .personalCode(\"00000000000\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startSmartId([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'EST',\n    'personal_code' => '00000000000',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_smart_id(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  personal_code: \"00000000000\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartSmartIdAsync(new DigitalIdWalletApiSmartIdWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = \"EST\",\n    PersonalCode = \"00000000000\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "smart_id"
      }
    },
    "/v3/id-verification/wallets/mobile-id/": {
      "post": {
        "operationId": "start_mobile_id_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_mobile_id",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Mobile-ID साइन-इन (राष्ट्रीय मोबाइल ऑपरेटरों के साथ SK ID Solutions; EST, LTU) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में उपयोगकर्ता को दिखाने के लिए तुलना कोड के साथ next_action.type=confirm_in_app शामिल होता है; उपयोगकर्ता इसकी पुष्टि करता है और ऐप में अपना PIN दर्ज करता है (PIN कभी एकत्र न करें)। प्रत्येक poll_interval_seconds पर POST /v3/id-verification/wallets/verifications/{request_id}/poll/ को पोल करें, या webhook पर भरोसा करें: Didit बैकग्राउंड में भी पोल करता है। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Mobile-ID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMobileIdWalletVerificationStartRequest"
              },
              "example": {
                "country": "EST",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "personal_code": "00000000000",
                "phone_number": "+37200000000"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMobileIdWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMobileIdWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "mobile_id",
                      "name": "Mobile-ID",
                      "issuing_authority": "SK ID Solutions with the national mobile operators"
                    },
                    "country": "EST",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "in_app",
                    "simulated": true,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "confirm_in_app",
                      "verification_code": "1234",
                      "poll_interval_seconds": 2
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/mobile-id/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"EST\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"personal_code\": \"00000000000\",\n  \"phone_number\": \"+37200000000\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_mobile_id(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"EST\",\n    personal_code=\"00000000000\",\n    phone_number=\"+37200000000\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startMobileId({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  personal_code: \"00000000000\",\n  phone_number: \"+37200000000\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartMobileID(ctx, didit.IDWalletsStartMobileIDParams{\n\tBody: didit.DigitalIDWalletAPIMobileIDWalletVerificationStartRequest{\n\t\tVendorData:   didit.String(\"your-customer-reference\"),\n\t\tMetadata:     didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:      didit.DigitalIDWalletAPIMobileIDWalletVerificationStartCountryEnum(\"EST\"),\n\t\tPersonalCode: \"00000000000\",\n\t\tPhoneNumber:  \"+37200000000\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiMobileIdWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startMobileId(DigitalIdWalletApiMobileIdWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum.of(\"EST\"))\n        .personalCode(\"00000000000\")\n        .phoneNumber(\"+37200000000\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startMobileId([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'EST',\n    'personal_code' => '00000000000',\n    'phone_number' => '+37200000000',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_mobile_id(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  personal_code: \"00000000000\",\n  phone_number: \"+37200000000\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartMobileIdAsync(new DigitalIdWalletApiMobileIdWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = \"EST\",\n    PersonalCode = \"00000000000\",\n    PhoneNumber = \"+37200000000\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "mobile_id"
      }
    },
    "/v3/id-verification/wallets/idcard-ee/": {
      "post": {
        "operationId": "start_idcard_ee_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_idcard_ee",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के एस्टोनियाई ID कार्ड साइन-इन (Police and Border Guard Board (Estonia); EST) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Estonian ID-card सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdcardEeWalletVerificationStartRequest"
              },
              "example": {
                "country": "EST",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdcardEeWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdcardEeWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "idcard_ee",
                      "name": "Estonian ID-card",
                      "issuing_authority": "Police and Border Guard Board (Estonia)"
                    },
                    "country": "EST",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/idcard-ee/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"EST\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_idcard_ee(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"EST\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startIdcardEe({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartIdcardEe(ctx, didit.IDWalletsStartIdcardEeParams{\n\tBody: didit.DigitalIDWalletAPIIdcardEeWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIIdcardEeWalletVerificationStartCountryEnum(\"EST\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiIdcardEeWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiIdcardEeWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startIdcardEe(DigitalIdWalletApiIdcardEeWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiIdcardEeWalletVerificationStartCountryEnum.of(\"EST\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startIdcardEe([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'EST',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_idcard_ee(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"EST\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartIdcardEeAsync(new DigitalIdWalletApiIdcardEeWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiIdcardEeWalletVerificationStartCountryEnum(\"EST\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "idcard_ee"
      }
    },
    "/v3/id-verification/wallets/eparaksts-mobile/": {
      "post": {
        "operationId": "start_eparaksts_mobile_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_eparaksts_mobile",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना eParaksts mobile साइन-इन (LVRTC (Latvian State Radio and Television Centre); LVA) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "eParaksts मोबाइल सत्यापन शुरू करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest"
              },
              "example": {
                "country": "LVA",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "eparaksts_mobile",
                      "name": "eParaksts mobile",
                      "issuing_authority": "LVRTC (Latvian State Radio and Television Centre)"
                    },
                    "country": "LVA",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/eparaksts-mobile/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"LVA\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_eparaksts_mobile(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"LVA\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startEparakstsMobile({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"LVA\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartEparakstsMobile(ctx, didit.IDWalletsStartEparakstsMobileParams{\n\tBody: didit.DigitalIDWalletAPIEparakstsMobileWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIEparakstsMobileWalletVerificationStartCountryEnum(\"LVA\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiEparakstsMobileWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startEparakstsMobile(DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiEparakstsMobileWalletVerificationStartCountryEnum.of(\"LVA\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startEparakstsMobile([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'LVA',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_eparaksts_mobile(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"LVA\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartEparakstsMobileAsync(new DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiEparakstsMobileWalletVerificationStartCountryEnum(\"LVA\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "eparaksts_mobile"
      }
    },
    "/v3/id-verification/wallets/bankid-cz/": {
      "post": {
        "operationId": "start_bankid_cz_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_bankid_cz",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Bank iD साइन-इन (Bankovní identita, a.s.; CZE) प्रारंभ करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस आता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, कभी भी URL से नहीं। सैंडबॉक्स एप्लिकेशनों को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो कभी भी प्रदाता से संपर्क नहीं करता है।",
        "summary": "Bank iD सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidCzWalletVerificationStartRequest"
              },
              "example": {
                "country": "CZE",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidCzWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiBankidCzWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "bankid_cz",
                      "name": "Bank iD",
                      "issuing_authority": "Bankovní identita, a.s."
                    },
                    "country": "CZE",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/bankid-cz/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"CZE\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_bankid_cz(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"CZE\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startBankidCz({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"CZE\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartBankidCz(ctx, didit.IDWalletsStartBankidCzParams{\n\tBody: didit.DigitalIDWalletAPIBankidCzWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryE2dEnum(\"CZE\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiBankidCzWalletVerificationStartRequest;\nimport me.didit.types.DigitalIdWalletApiCountryE2dEnum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startBankidCz(DigitalIdWalletApiBankidCzWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryE2dEnum.of(\"CZE\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startBankidCz([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'CZE',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_bankid_cz(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"CZE\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartBankidCzAsync(new DigitalIdWalletApiBankidCzWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryE2dEnum(\"CZE\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "bankid_cz"
      }
    },
    "/v3/id-verification/wallets/mojeid/": {
      "post": {
        "operationId": "start_mojeid_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_mojeid",
          "auth": "api_key",
          "server": true
        },
        "description": "किसी भी वर्कफ़्लो के बिना MojeID साइन-इन (CZ.NIC; CZE) शुरू करें। बिलिंग केवल एक बार की जाती है, केवल तब जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के बाद वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता है।",
        "summary": "MojeID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMojeidWalletVerificationStartRequest"
              },
              "example": {
                "country": "CZE",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMojeidWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiMojeidWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "mojeid",
                      "name": "MojeID",
                      "issuing_authority": "CZ.NIC"
                    },
                    "country": "CZE",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/mojeid/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"CZE\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_mojeid(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"CZE\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startMojeid({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"CZE\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartMojeid(ctx, didit.IDWalletsStartMojeidParams{\n\tBody: didit.DigitalIDWalletAPIMojeidWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPICountryE2dEnum(\"CZE\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiCountryE2dEnum;\nimport me.didit.types.DigitalIdWalletApiMojeidWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startMojeid(DigitalIdWalletApiMojeidWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiCountryE2dEnum.of(\"CZE\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startMojeid([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'CZE',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_mojeid(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"CZE\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartMojeidAsync(new DigitalIdWalletApiMojeidWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiCountryE2dEnum(\"CZE\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "mojeid"
      }
    },
    "/v3/id-verification/wallets/diia/": {
      "post": {
        "operationId": "start_diia_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_diia",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Diia साइन-इन (Ministry of Digital Transformation of Ukraine; UKR) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Diia सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiDiiaWalletVerificationStartRequest"
              },
              "example": {
                "country": "UKR",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiDiiaWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiDiiaWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "diia",
                      "name": "Diia",
                      "issuing_authority": "Ministry of Digital Transformation of Ukraine"
                    },
                    "country": "UKR",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/diia/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"UKR\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_diia(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"UKR\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startDiia({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"UKR\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartDiia(ctx, didit.IDWalletsStartDiiaParams{\n\tBody: didit.DigitalIDWalletAPIDiiaWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIDiiaWalletVerificationStartCountryEnum(\"UKR\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiDiiaWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiDiiaWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startDiia(DigitalIdWalletApiDiiaWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiDiiaWalletVerificationStartCountryEnum.of(\"UKR\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startDiia([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'UKR',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_diia(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"UKR\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartDiiaAsync(new DigitalIdWalletApiDiiaWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiDiiaWalletVerificationStartCountryEnum(\"UKR\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "diia"
      }
    },
    "/v3/id-verification/wallets/franceconnect/": {
      "post": {
        "operationId": "start_franceconnect_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_franceconnect",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के FranceConnect साइन-इन (DINUM (फ़्रांसीसी राज्य); FRA) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता return_url पर request_id और result जुड़ने के साथ वापस लौटता है। परिणाम GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "FranceConnect सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFranceconnectWalletVerificationStartRequest"
              },
              "example": {
                "country": "FRA",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFranceconnectWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiFranceconnectWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "franceconnect",
                      "name": "FranceConnect",
                      "issuing_authority": "DINUM (French state)"
                    },
                    "country": "FRA",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/franceconnect/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"FRA\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_franceconnect(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"FRA\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startFranceconnect({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"FRA\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartFranceconnect(ctx, didit.IDWalletsStartFranceconnectParams{\n\tBody: didit.DigitalIDWalletAPIFranceconnectWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIFranceconnectWalletVerificationStartCountryEnum(\"FRA\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiFranceconnectWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiFranceconnectWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startFranceconnect(DigitalIdWalletApiFranceconnectWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiFranceconnectWalletVerificationStartCountryEnum.of(\"FRA\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startFranceconnect([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'FRA',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_franceconnect(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"FRA\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartFranceconnectAsync(new DigitalIdWalletApiFranceconnectWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiFranceconnectWalletVerificationStartCountryEnum(\"FRA\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "franceconnect"
      }
    },
    "/v3/id-verification/wallets/audkenni/": {
      "post": {
        "operationId": "start_audkenni_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_audkenni",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Auðkenni साइन-इन (Auðkenni (Icelandic electronic ID); ISL) प्रारंभ करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ वह URL होता है जिस पर उपयोगकर्ता के ब्राउज़र को भेजना है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस आता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, कभी भी URL से नहीं। सैंडबॉक्स एप्लिकेशनों को एक नियतात्मक सिमुलेशन (simulated: true) मिलता है जो कभी भी प्रदाता से संपर्क नहीं करता है।",
        "summary": "Auðkenni सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiAudkenniWalletVerificationStartRequest"
              },
              "example": {
                "country": "ISL",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiAudkenniWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiAudkenniWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "audkenni",
                      "name": "Auðkenni",
                      "issuing_authority": "Auðkenni (Icelandic electronic ID)"
                    },
                    "country": "ISL",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/audkenni/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"ISL\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_audkenni(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"ISL\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startAudkenni({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"ISL\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartAudkenni(ctx, didit.IDWalletsStartAudkenniParams{\n\tBody: didit.DigitalIDWalletAPIAudkenniWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIAudkenniWalletVerificationStartCountryEnum(\"ISL\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiAudkenniWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiAudkenniWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startAudkenni(DigitalIdWalletApiAudkenniWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiAudkenniWalletVerificationStartCountryEnum.of(\"ISL\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startAudkenni([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'ISL',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_audkenni(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"ISL\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartAudkenniAsync(new DigitalIdWalletApiAudkenniWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiAudkenniWalletVerificationStartCountryEnum(\"ISL\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "audkenni"
      }
    },
    "/v3/id-verification/wallets/connectid/": {
      "post": {
        "operationId": "start_connectid_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_connectid",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के ConnectID साइन-इन (Australian Payments Plus; AUS) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "ConnectID सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiConnectidWalletVerificationStartRequest"
              },
              "example": {
                "country": "AUS",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiConnectidWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiConnectidWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "connectid",
                      "name": "ConnectID",
                      "issuing_authority": "Australian Payments Plus"
                    },
                    "country": "AUS",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/connectid/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"AUS\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_connectid(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"AUS\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startConnectid({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"AUS\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartConnectid(ctx, didit.IDWalletsStartConnectidParams{\n\tBody: didit.DigitalIDWalletAPIConnectidWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.Some(didit.DigitalIDWalletAPIConnectidWalletVerificationStartCountryEnum(\"AUS\")),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiConnectidWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiConnectidWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startConnectid(DigitalIdWalletApiConnectidWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiConnectidWalletVerificationStartCountryEnum.of(\"AUS\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startConnectid([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'AUS',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_connectid(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"AUS\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartConnectidAsync(new DigitalIdWalletApiConnectidWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = new DigitalIdWalletApiConnectidWalletVerificationStartCountryEnum(\"AUS\"),\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "connectid"
      }
    },
    "/v3/id-verification/wallets/eudi/": {
      "post": {
        "operationId": "start_eudi_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_eudi",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के EUDI Wallet साइन-इन (उपयोगकर्ता का अपना सदस्य देश; जारीकर्ता प्रत्येक देश के अनुसार अलग होता है; AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR) शुरू करें। केवल पहचान सत्यापित होने पर, एक बार बिल किया जाता है। रिस्पॉन्स में next_action.type=redirect के साथ उपयोगकर्ता के ब्राउज़र को भेजने के लिए URL शामिल होता है; उपयोगकर्ता request_id और result जुड़ने के साथ return_url पर वापस लौटता है। परिणाम को GET /v3/id-verification/wallets/verifications/{request_id}/ से या webhook से पढ़ें, URL से कभी नहीं। सैंडबॉक्स एप्लिकेशन को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) प्राप्त होता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "EUDI Wallet सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEudiWalletVerificationStartRequest"
              },
              "example": {
                "country": "AUT",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "return_url": "https://app.example.com/identity/complete"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEudiWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiEudiWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "eudi",
                      "name": "EUDI Wallet",
                      "issuing_authority": "The user's own member state; the issuer differs per country"
                    },
                    "country": "AUT",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "redirect",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "redirect",
                      "url": "https://wallet.example.com/authorize"
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/eudi/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"AUT\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"return_url\": \"https://app.example.com/identity/complete\"\n}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.id_wallets.start_eudi(\n    vendor_data=\"your-customer-reference\",\n    metadata={\"reference\": \"example\"},\n    country=\"AUT\",\n    return_url=\"https://app.example.com/identity/complete\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.idWallets.startEudi({\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"AUT\",\n  return_url: \"https://app.example.com/identity/complete\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.IDWallets.StartEudi(ctx, didit.IDWalletsStartEudiParams{\n\tBody: didit.DigitalIDWalletAPIEudiWalletVerificationStartRequest{\n\t\tVendorData: didit.String(\"your-customer-reference\"),\n\t\tMetadata:   didit.Some(map[string]any{\"reference\": \"example\"}),\n\t\tCountry:    didit.DigitalIDWalletAPIEudiWalletVerificationStartCountryEnum(\"AUT\"),\n\t\tReturnURL:  \"https://app.example.com/identity/complete\",\n\t},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartCountryEnum;\nimport me.didit.types.DigitalIdWalletApiEudiWalletVerificationStartRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.idWallets().startEudi(DigitalIdWalletApiEudiWalletVerificationStartRequest.builder()\n        .vendorData(\"your-customer-reference\")\n        .metadata(Map.of(\"reference\", \"example\"))\n        .country(DigitalIdWalletApiEudiWalletVerificationStartCountryEnum.of(\"AUT\"))\n        .returnUrl(\"https://app.example.com/identity/complete\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->idWallets->startEudi([\n    'vendor_data' => 'your-customer-reference',\n    'metadata' => ['reference' => 'example'],\n    'country' => 'AUT',\n    'return_url' => 'https://app.example.com/identity/complete',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.id_wallets.start_eudi(\n  vendor_data: \"your-customer-reference\",\n  metadata: { reference: \"example\" },\n  country: \"AUT\",\n  return_url: \"https://app.example.com/identity/complete\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.IdWallets.StartEudiAsync(new DigitalIdWalletApiEudiWalletVerificationStartRequest\n{\n    VendorData = \"your-customer-reference\",\n    Metadata = new Dictionary<string, object> { [\"reference\"] = \"example\" },\n    Country = \"AUT\",\n    ReturnUrl = \"https://app.example.com/identity/complete\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-wallet-id": "eudi"
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/teams/": {
      "get": {
        "summary": "समीक्षा टीमें सूचीबद्ध करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `list:cases` की आवश्यकता होती है।",
        "operationId": "list_case_teams",
        "x-didit-sdk": {
          "resource": "cases.teams",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CaseReviewTeam"
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "मिलान संख्या, अधिकतम 100 तक सीमित। सीमा से आगे जारी रखने के लिए next का अनुसरण करें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.teams.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.teams.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.Teams.ListAutoPaging(ctx, didit.CasesTeamsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().teams().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->teams->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.teams.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.Teams.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "समीक्षा टीम बनाएं",
        "description": "अनुरोधित एप्लिकेशन के लिए `write:cases` की आवश्यकता होती है।",
        "operationId": "create_case_teams",
        "x-didit-sdk": {
          "resource": "cases.teams",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "responses": {
          "201": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseReviewTeam"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseReviewTeamCreate"
              },
              "example": {
                "name": "AML analysts",
                "members": [
                  {
                    "user_id": "9a000000-0000-4000-8000-0000000000aa",
                    "capacity": 10
                  }
                ]
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.teams.create(\n    name=\"AML analysts\",\n    members=[{\n        \"user_id\": \"9a000000-0000-4000-8000-0000000000aa\",\n        \"capacity\": 10,\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.teams.create({\n  name: \"AML analysts\",\n  members: [{\n    user_id: \"9a000000-0000-4000-8000-0000000000aa\",\n    capacity: 10,\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Teams.Create(ctx, didit.CaseReviewTeamCreate{\n\tName: \"AML analysts\",\n\tMembers: []didit.CaseReviewTeamMemberParam{{\n\t\tUserID:   \"9a000000-0000-4000-8000-0000000000aa\",\n\t\tCapacity: didit.Int(10),\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CaseReviewTeamCreate;\nimport me.didit.types.CaseReviewTeamMember;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().teams().create(CaseReviewTeamCreate.builder()\n        .name(\"AML analysts\")\n        .members(List.of(CaseReviewTeamMember.builder()\n                .userId(\"9a000000-0000-4000-8000-0000000000aa\")\n                .capacity(10L)\n                .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->teams->create([\n    'name' => 'AML analysts',\n    'members' => [[\n        'user_id' => '9a000000-0000-4000-8000-0000000000aa',\n        'capacity' => 10,\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.teams.create(\n  name: \"AML analysts\",\n  members: [{\n    user_id: \"9a000000-0000-4000-8000-0000000000aa\",\n    capacity: 10,\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Teams.CreateAsync(new CaseReviewTeamCreate\n{\n    Name = \"AML analysts\",\n    Members = new CaseReviewTeamMember[]\n    {\n        new()\n        {\n            UserId = \"9a000000-0000-4000-8000-0000000000aa\",\n            Capacity = 10,\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/fraud/checks/{check_id}/": {
      "get": {
        "operationId": "root_retrieve",
        "x-didit-sdk": {
          "resource": "fraud_checks",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "description": "पहले बनाई गई जांच को उसकी `check_id` द्वारा प्राप्त करें।",
        "summary": "फ़्रॉड चेक प्राप्त करें",
        "parameters": [
          {
            "in": "path",
            "name": "check_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudCheckResponse"
                }
              }
            },
            "description": ""
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudClientCredentialsErrorMessage"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Fraud Check"
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.fraud_checks.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.fraudChecks.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.fraudChecks().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->fraudChecks->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.fraud_checks.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.FraudChecks.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/": {
      "get": {
        "operationId": "organization_application_cases_requests_list",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "परिणामों को क्रमित करते समय किस फ़ील्ड का उपयोग करना है।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "प्रति पेज लौटाए जाने वाले परिणामों की संख्या।",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "प्रारंभिक इंडेक्स जहाँ से परिणाम वापस करने हैं।",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingPaginatedCaseRequestList"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.requests.list(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.requests.list(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.Requests.ListAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasesRequestsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().requests().list(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->requests->list('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.requests.list(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.Requests.ListAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "operationId": "organization_application_cases_requests_create",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestConfirmRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestConfirmRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestConfirmRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "400": {
            "description": "अमान्य इनपुट, असमर्थित उद्देश्य, अनुपलब्ध सत्यापित संपर्क या मौजूदा अपरिवर्तनीय रिस्पॉन्स।"
          },
          "409": {
            "description": "पूर्वावलोकन बदल गया या उसकी समय-सीमा समाप्त हो गई। पुष्टि करने से पहले पुनः पूर्वावलोकन करें।"
          },
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseRequest"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "15 मिनट के भीतर सटीक हस्ताक्षरित पूर्वावलोकन की पुष्टि करें। केवल निश्चित टेम्पलेट और केस विषय से संबंधित OTP-सत्यापित संपर्क स्वीकार किए जाते हैं। अनुरोध ID पुनः प्रयासों को आइडेम्पोटेंट बनाती है। डिलीवरी कतारबद्ध है; SENT, SIMULATED और UNKNOWN अलग-अलग परिणाम हैं। एक कार्रवाई योग्य अनुरोध केस को Awaiting user पर सेट करता है। एक समीक्षा अपडेट इसकी स्थिति को अपरिवर्तित छोड़ देता है।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.requests.create(\n    \"11111111-2222-3333-4444-555555555555\",\n    contact_id=\"11111111-2222-3333-4444-555555555555\",\n    purpose=\"identity_document\",\n    request_id=\"11111111-2222-3333-4444-555555555555\",\n    expires_at=\"2026-01-15T10:00:00Z\",\n    preview_token=\"your-preview-token\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requests.create(\"11111111-2222-3333-4444-555555555555\", {\n  contact_id: \"11111111-2222-3333-4444-555555555555\",\n  purpose: \"identity_document\",\n  request_id: \"11111111-2222-3333-4444-555555555555\",\n  expires_at: \"2026-01-15T10:00:00Z\",\n  preview_token: \"your-preview-token\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Requests.Create(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CustomerMessagingCaseRequestConfirmRequest{\n\tContactID:    \"11111111-2222-3333-4444-555555555555\",\n\tPurpose:      didit.CustomerMessagingPurposeEnum(\"identity_document\"),\n\tRequestID:    \"11111111-2222-3333-4444-555555555555\",\n\tExpiresAt:    time.Date(2026, 1, 15, 10, 0, 0, 0, time.UTC),\n\tPreviewToken: \"your-preview-token\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.OffsetDateTime;\nimport me.didit.Didit;\nimport me.didit.types.CustomerMessagingCaseRequestConfirmRequest;\nimport me.didit.types.CustomerMessagingPurposeEnum;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requests().create(\"11111111-2222-3333-4444-555555555555\", CustomerMessagingCaseRequestConfirmRequest.builder()\n        .contactId(\"11111111-2222-3333-4444-555555555555\")\n        .purpose(CustomerMessagingPurposeEnum.of(\"identity_document\"))\n        .requestId(\"11111111-2222-3333-4444-555555555555\")\n        .expiresAt(OffsetDateTime.parse(\"2026-01-15T10:00:00Z\"))\n        .previewToken(\"your-preview-token\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requests->create('11111111-2222-3333-4444-555555555555', [\n    'contact_id' => '11111111-2222-3333-4444-555555555555',\n    'purpose' => 'identity_document',\n    'request_id' => '11111111-2222-3333-4444-555555555555',\n    'expires_at' => '2026-01-15T10:00:00Z',\n    'preview_token' => 'your-preview-token',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.requests.create(\n  \"11111111-2222-3333-4444-555555555555\",\n  contact_id: \"11111111-2222-3333-4444-555555555555\",\n  purpose: \"identity_document\",\n  request_id: \"11111111-2222-3333-4444-555555555555\",\n  expires_at: \"2026-01-15T10:00:00Z\",\n  preview_token: \"your-preview-token\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Requests.CreateAsync(\"11111111-2222-3333-4444-555555555555\", new CustomerMessagingCaseRequestConfirmRequest\n{\n    ContactId = \"11111111-2222-3333-4444-555555555555\",\n    Purpose = \"identity_document\",\n    RequestId = \"11111111-2222-3333-4444-555555555555\",\n    ExpiresAt = DateTimeOffset.Parse(\"2026-01-15T10:00:00Z\"),\n    PreviewToken = \"your-preview-token\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/fraud/checks/": {
      "post": {
        "operationId": "create_fraud_check",
        "x-didit-sdk": {
          "resource": "fraud_checks",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "description": "एक या अधिक टाइप किए गए पहचानकर्ता सबमिट करें और एक ही रिस्पॉन्स में सामान्यीकरण, ताज़ा संवर्धन, आधिकारिक सत्यापन (जहाँ देश और पहचानकर्ता प्रकार समर्थित हैं), स्वतंत्र जोखिम आयाम और अनुशंसा प्राप्त करें।\n\nये प्रोफ़ाइल पहचानकर्ता जांच का समर्थन करती हैं। सेल्फ़ी-आधारित पहचान बाइंडिंग (`biometric_identity`) के लिए प्रोफ़ाइल संस्करण `2026-09-14.2` और ब्राज़ीलियाई CPF की आवश्यकता होती है; यह केवल उपयोगकर्ता की सहमति से और जब आपके संगठन के पास इसका अधिकार हो तभी चलता है। पूर्व संस्करण इसे `not_available_in_profile_version` के रूप में रिपोर्ट करते हैं। जो मॉड्यूल नहीं चल सकते, उन्हें एक निश्चित कारण के साथ छोड़ दिया गया (skipped) रिपोर्ट किया जाता है; जो स्रोत उत्तर नहीं दे सका, उसे कभी भी पहचान बेमेल के रूप में रिपोर्ट नहीं किया जाता है।",
        "summary": "फ़्रॉड चेक चलाएं",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              },
              "example": {
                "client_reference": "review-attempt-001",
                "subject": {
                  "identifiers": [
                    {
                      "type": "email",
                      "value": "applicant@example.com"
                    }
                  ],
                  "attributes": {
                    "first_name": "Alex",
                    "last_name": "Example"
                  }
                },
                "checks": {
                  "include": [
                    "networks_same_org",
                    "networks_cross_org",
                    "email_risk"
                  ]
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudCheckResponse"
                }
              }
            },
            "description": ""
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudClientCredentialsErrorMessage"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": ""
          },
          "409": {
            "description": "टकराव, बिना किसी शुल्क के वापस किया गया: `client_reference` का पहले से ही एक अलग अनुरोध बॉडी के साथ उपयोग किया गया था; समान `client_reference` वाली एक जांच अभी भी चल रही है (समान संदर्भ के साथ `Retry-After` सेकंड के बाद पुनः प्रयास करें); या जिस सत्यापन में यह जांच रिकॉर्ड होती है, उसे जांच पूरी होने से पहले हटा दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "error"
                  ]
                },
                "examples": {
                  "different_body": {
                    "summary": "संदर्भ का उपयोग भिन्न बॉडी के साथ पुनः किया गया",
                    "value": {
                      "error": "client_reference has already been used with a different request body."
                    }
                  },
                  "still_running": {
                    "summary": "इस संदर्भ के साथ एक जाँच अभी भी चल रही है",
                    "value": {
                      "error": "A check with this client_reference is already running. Retry with the same reference later."
                    }
                  },
                  "verification_deleted": {
                    "summary": "जाँच पूरी होने से पहले सत्यापन हटा दिया गया था",
                    "value": {
                      "error": "This verification was deleted before the check completed."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड, जो तब भेजे जाते हैं जब उसी `client_reference` के साथ एक जाँच अभी भी चल रही हो।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "tags": [
          "Fraud Check"
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.fraud_checks.create(\n    client_reference=\"review-attempt-001\",\n    subject={\n        \"identifiers\": [{\n            \"type\": \"email\",\n            \"value\": \"applicant@example.com\",\n        }],\n        \"attributes\": {\n            \"first_name\": \"Alex\",\n            \"last_name\": \"Example\",\n        },\n    },\n    checks={\n        \"include\": [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.fraudChecks.create({\n  client_reference: \"review-attempt-001\",\n  subject: {\n    identifiers: [{\n      type: \"email\",\n      value: \"applicant@example.com\",\n    }],\n    attributes: {\n      first_name: \"Alex\",\n      last_name: \"Example\",\n    },\n  },\n  checks: {\n    include: [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Create(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.FraudCheckAttributesRequest;\nimport me.didit.types.FraudCheckIdentifierRequest;\nimport me.didit.types.FraudCheckModuleSelectionRequest;\nimport me.didit.types.FraudCheckRequestRequest;\nimport me.didit.types.FraudCheckSubjectRequest;\nimport me.didit.types.FraudExcludeEnum;\nimport me.didit.types.FraudTypeEnum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.fraudChecks().create(FraudCheckRequestRequest.builder()\n        .clientReference(\"review-attempt-001\")\n        .subject(FraudCheckSubjectRequest.builder()\n                .identifiers(List.of(FraudCheckIdentifierRequest.builder()\n                        .type(FraudTypeEnum.of(\"email\"))\n                        .value(\"applicant@example.com\")\n                        .build()))\n                .attributes(FraudCheckAttributesRequest.builder()\n                        .firstName(\"Alex\")\n                        .lastName(\"Example\")\n                        .build())\n                .build())\n        .checks(FraudCheckModuleSelectionRequest.builder()\n                .include(List.of(FraudExcludeEnum.of(\"networks_same_org\"), FraudExcludeEnum.of(\"networks_cross_org\"), FraudExcludeEnum.of(\"email_risk\")))\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->fraudChecks->create([\n    'client_reference' => 'review-attempt-001',\n    'subject' => [\n        'identifiers' => [[\n            'type' => 'email',\n            'value' => 'applicant@example.com',\n        ]],\n        'attributes' => [\n            'first_name' => 'Alex',\n            'last_name' => 'Example',\n        ],\n    ],\n    'checks' => [\n        'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.fraud_checks.create(\n  client_reference: \"review-attempt-001\",\n  subject: {\n    identifiers: [{\n      type: \"email\",\n      value: \"applicant@example.com\",\n    }],\n    attributes: {\n      first_name: \"Alex\",\n      last_name: \"Example\",\n    },\n  },\n  checks: {\n    include: [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.FraudChecks.CreateAsync(new FraudCheckRequestRequest\n{\n    ClientReference = \"review-attempt-001\",\n    Subject = new()\n    {\n        Identifiers = new FraudCheckIdentifierRequest[]\n        {\n            new()\n            {\n                Type = \"email\",\n                Value = \"applicant@example.com\",\n            },\n        },\n        Attributes = new FraudCheckAttributesRequest\n        {\n            FirstName = \"Alex\",\n            LastName = \"Example\",\n        },\n    },\n    Checks = new FraudCheckModuleSelectionRequest\n    {\n        Include = new FraudExcludeEnum[] { \"networks_same_org\", \"networks_cross_org\", \"email_risk\" },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/cancel/": {
      "post": {
        "operationId": "organization_application_cases_requests_cancel_create",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "cancel",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "request_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseRequest"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "400": {
            "description": "अमान्य इनपुट, असमर्थित उद्देश्य, अनुपलब्ध सत्यापित संपर्क या मौजूदा अपरिवर्तनीय रिस्पॉन्स।"
          },
          "409": {
            "description": "पूर्वावलोकन बदल गया या उसकी समय-सीमा समाप्त हो गई। पुष्टि करने से पहले पुनः पूर्वावलोकन करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.requests.cancel(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requests.cancel(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Requests.Cancel(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requests().cancel(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requests->cancel('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.requests.cancel(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Requests.CancelAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/options/": {
      "get": {
        "operationId": "organization_application_cases_requests_options_retrieve",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "retrieve_options",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseRequestOptions"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.requests.retrieve_options(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requests.retrieveOptions(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Requests.RetrieveOptions(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requests().retrieveOptions(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requests->retrieveOptions('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.requests.retrieve_options(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Requests.RetrieveOptionsAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/attachment/": {
      "get": {
        "operationId": "organization_application_cases_requests_attachment_retrieve",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "retrieve_attachment",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "request_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\ncontent = client.cases.requests.retrieve_attachment(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nwith open(\"download.png\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst content = await didit.cases.requests.retrieveAttachment(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nawait writeFile(\"download.png\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresp, err := client.Cases.Requests.RetrieveAttachment(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.png\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().requests().retrieveAttachment(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\n        .writeTo(Path.of(\"download.png\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$content = $didit->cases->requests->retrieveAttachment('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');\n$content->saveTo('download.png');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ncontent = didit.cases.requests.retrieve_attachment(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nFile.binwrite(\"download.png\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar content = await client.Cases.Requests.RetrieveAttachmentAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nawait content.SaveToAsync(\"download.png\");"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/history/": {
      "get": {
        "operationId": "list_case_routing_rule_history",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "list_history",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "record_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "परिणामों को क्रमित करते समय किस फ़ील्ड का उपयोग करना है।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "प्रति पेज लौटाए जाने वाले परिणामों की संख्या।",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "प्रारंभिक इंडेक्स जहाँ से परिणाम वापस करने हैं।",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "tags": [
          "Case Assignment"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutingPublicationPaginatedPolicyRevisionList"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "केस एक्सेस आवश्यक है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.routing_rules.list_history(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.routingRules.listHistory(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.RoutingRules.ListHistoryAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasesRoutingRulesListHistoryParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().routingRules().listHistory(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->routingRules->listHistory('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.routing_rules.list_history(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.RoutingRules.ListHistoryAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/resubmission-preview/": {
      "post": {
        "summary": "पुनः सबमिशन ईमेल का पूर्वावलोकन करें",
        "description": "उस ईमेल को रेंडर करें जो सत्र को बदले बिना, जाँच रीसेट किए बिना, इसकी समाप्ति को बढ़ाए बिना, जाँच चलाए बिना या मेल भेजे बिना KYC या KYB पुनः सबमिशन के साथ जाएगा। इसके लिए `write:sessions` विशेषाधिकार (एक स्कोप्ड API कुंजी को निर्णयों के लिए राइट एक्सेस की आवश्यकता होती है) और `Approved`, `Declined`, `In Review`, `Kyc Expired` या `Abandoned` स्थिति में एक सत्र की आवश्यकता होती है। सर्वर चयनित वर्कफ़्लो चरणों को मान्य करता है और लागू सत्यापित व्हाइट लेबल प्रेषक और ब्रांडिंग के साथ इसके निश्चित अनुवादित टेम्पलेट को रेंडर करता है। अनुरोध कोई विषय (subject), संदेश मुख्य भाग (body) या कार्रवाई URL सेट नहीं कर सकता है।\n\n`email_address` वैकल्पिक है। इसके बिना, ईमेल व्यक्ति के अपने पते पर जाता है: वह पता जिसे उन्होंने फ़्लो के ईमेल सत्यापन चरण में सत्यापित किया था, अन्यथा वह जो सत्र बनाए जाने पर `contact_details` में दिया गया था। आपके द्वारा पास किया गया पता प्राथमिकता पाता है (`recipient_source: request`)। जब कोई पता ज्ञात नहीं होता है और आप कोई पता पास नहीं करते हैं, तो `recipient` और `preview_token` खाली स्ट्रिंग होते हैं और कोई ईमेल नहीं भेजा जा सकता है।\n\nरिस्पॉन्स में प्राप्तकर्ता और यह कहाँ से आता है, प्रेषक, विषय, HTML, भाषा, समाधान किए गए चरण, क्या पुष्टि करने पर ईमेल भेजा जाता है (`will_be_sent`, `not_sent_reason`) और एक हस्ताक्षरित `preview_token` शामिल होता है। `requires_user_action` `false` होता है जब प्रत्येक चयनित चरण व्यक्ति के बिना चलता है: पुनः सबमिशन तब अपने आप समाप्त हो जाता है और कोई ईमेल नहीं भेजा जाता है (`not_sent_reason: no_user_action`)।\n\nयह पूर्वावलोकन सत्र स्थिति को आरक्षित नहीं करता है या डिलीवरी को अधिकृत नहीं करता है। इसकी समीक्षा करने के बाद, `new_status: Resubmitted`, उन्हीं `nodes_to_resubmit` और `email_language` जिन्हें आपने पूर्वावलोकन किया था, `send_email: true`, `email_address` को `recipient` पर सेट करके और `email_preview_token` को `preview_token` पर सेट करके [Update Session Status](/hi/sessions-api/update-status) को कॉल करें। रसीद 15 मिनट के बाद समाप्त हो जाती है। जब रसीद प्रदान की जाती है, तो बदले गए इनपुट, संदेश सामग्री, प्रेषक या सत्र स्थिति किसी भी म्यूटेशन या भेजने से पहले `409` लौटाते हैं। मौजूदा इंटीग्रेशन रसीद छोड़ सकते हैं। टकराव के बाद पूर्वावलोकन को पुन: जनरेट करें। रिस्पॉन्स को संवेदनशील सत्यापन सामग्री के रूप में मानें; रिस्पॉन्स `Cache-Control: no-store` का उपयोग करते हैं। HTML को हमेशा सैंडबॉक्स्ड फ़्रेम में रेंडर करें, सीधे अपने एप्लिकेशन DOM में कभी नहीं।",
        "operationId": "post_v3_session_resubmission_preview",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "preview_resubmission",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "अपडेट किए जाने वाले सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है — सेवा दोनों सत्र प्रकारों में ID को रिज़ॉल्व करती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "nodes_to_resubmit": {
                    "type": "array",
                    "description": "पुनः सबमिशन के समान सत्यापन, चयन और वर्कफ़्लो क्रम का उपयोग करते हुए पूर्वावलोकन के चरण। पुनः सबमिशन की आवश्यकता वाले रिकॉर्ड किए गए प्रयासों को ऑटो-सेलेक्ट करने के लिए इसे छोड़ दें।",
                    "items": {
                      "type": "object",
                      "required": [
                        "node_id",
                        "feature"
                      ],
                      "properties": {
                        "node_id": {
                          "type": "string",
                          "description": "सत्र के वर्कफ़्लो परिभाषा में प्रदर्शित नोड पहचानकर्ता (उदाहरण के लिए `feature_ocr`, `feature_liveness`)।",
                          "example": "feature_ocr"
                        },
                        "feature": {
                          "type": "string",
                          "description": "नोड का सुविधा प्रकार। उपनाम `ID_VERIFICATION`, `POA`, `PHONE`, और `EMAIL` सर्वर-साइड पर `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, और `EMAIL_VERIFICATION` में सामान्यीकृत हो जाते हैं। `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, और `KYB` स्कीमा सत्यापन पास करते हैं लेकिन हमेशा उदाहरणों में दिखाए गए बिज़नेस-नियम `400` के साथ अस्वीकार कर दिए जाते हैं।",
                          "enum": [
                            "OCR",
                            "OCR_BACK",
                            "NFC",
                            "AML",
                            "FACE",
                            "LIVENESS",
                            "FACE_MATCH",
                            "IP_ANALYSIS",
                            "AGE_ESTIMATION",
                            "PROOF_OF_ADDRESS",
                            "PHONE_VERIFICATION",
                            "EMAIL_VERIFICATION",
                            "FACE_SEARCH",
                            "DATABASE_VALIDATION",
                            "QUESTIONNAIRE",
                            "DOCUMENT_AI",
                            "KYB_DOCUMENTS",
                            "ID_VERIFICATION",
                            "POA",
                            "PHONE",
                            "EMAIL",
                            "KYB_REGISTRY",
                            "KYB_KEY_PEOPLE",
                            "KYB",
                            "GEOLOCATION"
                          ],
                          "example": "OCR"
                        }
                      }
                    }
                  },
                  "email_address": {
                    "type": "string",
                    "format": "email",
                    "description": "वैकल्पिक। व्यक्ति के अपने पते के बजाय इस पते पर ईमेल भेजें। इसके बिना, प्राप्तकर्ता वह पता होता है जिसे व्यक्ति ने फ़्लो में सत्यापित किया था, अन्यथा `contact_details` में दिया गया पता होता है। इस कॉल द्वारा कोई ईमेल नहीं भेजा जाता है।",
                    "example": "user@example.com"
                  },
                  "email_language": {
                    "type": "string",
                    "description": "सूचना ईमेल के लिए भाषा। स्कीमा स्तर पर किसी भी स्ट्रिंग को स्वीकार करता है; असमर्थित कोड बिना किसी सूचना के अंग्रेज़ी (`en`) पर फ़ालबैक हो जाते हैं।",
                    "default": "en",
                    "example": "en"
                  }
                }
              },
              "examples": {
                "Person's Own Address": {
                  "summary": "व्यक्ति के अपने पते के लिए पते का प्रमाण पुनः सबमिशन का पूर्वावलोकन करें",
                  "value": {
                    "nodes_to_resubmit": [
                      {
                        "node_id": "feature_poa_1",
                        "feature": "POA"
                      }
                    ],
                    "email_language": "en"
                  }
                },
                "Named Recipient": {
                  "summary": "आपके द्वारा निर्दिष्ट पते के लिए ईमेल का पूर्वावलोकन करें",
                  "value": {
                    "nodes_to_resubmit": [
                      {
                        "node_id": "feature_ocr",
                        "feature": "OCR"
                      }
                    ],
                    "email_address": "person@example.com",
                    "email_language": "en"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "केवल पूर्वावलोकन। सत्र अपरिवर्तित रहता है और कोई ईमेल नहीं भेजा जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "recipient",
                    "recipient_source",
                    "sender",
                    "sender_name",
                    "sender_email",
                    "sender_kind",
                    "subject",
                    "html",
                    "text",
                    "language",
                    "will_be_sent",
                    "not_sent_reason",
                    "preview_token",
                    "nodes_to_resubmit",
                    "requires_user_action"
                  ],
                  "properties": {
                    "recipient": {
                      "type": "string",
                      "description": "वह पता जिस पर ईमेल जाता है। जब व्यक्ति के लिए कोई पता ज्ञात नहीं होता है तो एक खाली स्ट्रिंग: तब कोई ईमेल नहीं भेजा जा सकता है और `preview_token` भी खाली होता है। पुष्टि करते समय इसे `email_address` के रूप में पास करें।",
                      "example": "person@example.com"
                    },
                    "recipient_source": {
                      "type": "string",
                      "enum": [
                        "email_verification",
                        "contact_details",
                        "request",
                        ""
                      ],
                      "description": "`recipient` कहाँ से आता है। `request`: आपके द्वारा पास किया गया `email_address`। `email_verification`: वह पता जिसे व्यक्ति ने फ़्लो के ईमेल सत्यापन चरण में सत्यापित किया था। `contact_details`: सत्र निर्माण के समय `contact_details` में दिया गया पता। कोई पता न होने पर एक रिक्त स्ट्रिंग।",
                      "example": "email_verification"
                    },
                    "sender": {
                      "type": "string",
                      "description": "वह `From` हेडर जिसके साथ ईमेल जाता है।",
                      "example": "Example App <no-reply@mail.example.com>"
                    },
                    "sender_name": {
                      "type": "string",
                      "description": "`sender` का डिस्प्ले नाम वाला भाग।",
                      "example": "Example App"
                    },
                    "sender_email": {
                      "type": "string",
                      "format": "email",
                      "description": "`sender` का पता वाला भाग।",
                      "example": "no-reply@mail.example.com"
                    },
                    "sender_kind": {
                      "type": "string",
                      "enum": [
                        "customer",
                        "didit"
                      ],
                      "description": "`customer`: ईमेल आपके एप्लिकेशन के सत्यापित प्रेषक डोमेन (व्हाइट लेबल) से जाता है। `didit`: यह Didit के अपने प्रेषक से जाता है।",
                      "example": "customer"
                    },
                    "subject": {
                      "type": "string",
                      "description": "विषय पंक्ति ठीक वैसे ही जैसे भेजी गई है।",
                      "example": "Action Required: Complete your verification in Example App"
                    },
                    "html": {
                      "type": "string",
                      "description": "ईमेल का HTML ठीक उसी रूप में जैसा वह भेजा गया है, जिसमें उसका लोगो डेटा URL के रूप में एम्बेडेड है। इसे सैंडबॉक्स किए गए फ़्रेम में रेंडर करें, कभी भी सीधे अपने एप्लिकेशन DOM में नहीं।",
                      "example": "<!DOCTYPE html><html><body>...</body></html>"
                    },
                    "text": {
                      "type": "string",
                      "description": "एक संक्षिप्त पूर्वावलोकन के लिए व्यक्ति के Messages थ्रेड के अनुसार ईमेल के शब्द प्लेन टेक्स्ट के रूप में (HTML वही ईमेल रहता है जो व्यक्ति को प्राप्त होता है)।",
                      "example": "Almost there\n\nSome steps need to be completed again.\nHere’s what to fix:\n\nhttps://verify.didit.me/session/abc123"
                    },
                    "language": {
                      "type": "string",
                      "description": "ईमेल जिस भाषा में लिखा गया है। यदि आपके द्वारा अनुरोधित `email_language` उपलब्ध नहीं है, तो अंग्रेज़ी (`en`) का उपयोग किया जाता है।",
                      "example": "en"
                    },
                    "will_be_sent": {
                      "type": "boolean",
                      "description": "क्या `send_email: true` के साथ परिवर्तन की पुष्टि करने पर यह ईमेल भेजा जाता है। `not_sent_reason` सेट होने पर `false`।",
                      "example": true
                    },
                    "not_sent_reason": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "no_user_action",
                        "no_recipient",
                        "sandbox",
                        null
                      ],
                      "description": "पुष्टि करने पर कोई ईमेल क्यों नहीं भेजा जाएगा, या भेजे जाने पर `null`। `no_user_action`: प्रत्येक चयनित चरण व्यक्ति के बिना चलता है, इसलिए पुनः सबमिशन अपने आप समाप्त हो जाता है और कोई ईमेल नहीं जाता है। `no_recipient`: व्यक्ति के लिए कोई पता ज्ञात नहीं है और आपने कोई पता पास नहीं किया है। `sandbox`: एक सैंडबॉक्स सत्र जिसके प्राप्तकर्ता ने सैंडबॉक्स ईमेल डिलीवरी का विकल्प नहीं चुना है, इसलिए भेजना केवल सिम्युलेट किया जाता है।",
                      "example": null
                    },
                    "nodes_to_resubmit": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "node_id",
                          "feature"
                        ],
                        "properties": {
                          "node_id": {
                            "type": "string",
                            "description": "सत्र के वर्कफ़्लो परिभाषा में प्रदर्शित नोड पहचानकर्ता (उदाहरण के लिए `feature_ocr`, `feature_liveness`)।",
                            "example": "feature_ocr"
                          },
                          "feature": {
                            "type": "string",
                            "description": "नोड का सुविधा प्रकार। उपनाम `ID_VERIFICATION`, `POA`, `PHONE`, और `EMAIL` सर्वर-साइड पर `OCR`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, और `EMAIL_VERIFICATION` में सामान्यीकृत हो जाते हैं। `KYB_REGISTRY`, `KYB_KEY_PEOPLE`, और `KYB` स्कीमा सत्यापन पास करते हैं लेकिन हमेशा उदाहरणों में दिखाए गए बिज़नेस-नियम `400` के साथ अस्वीकार कर दिए जाते हैं।",
                            "enum": [
                              "OCR",
                              "OCR_BACK",
                              "NFC",
                              "AML",
                              "FACE",
                              "LIVENESS",
                              "FACE_MATCH",
                              "IP_ANALYSIS",
                              "AGE_ESTIMATION",
                              "PROOF_OF_ADDRESS",
                              "PHONE_VERIFICATION",
                              "EMAIL_VERIFICATION",
                              "FACE_SEARCH",
                              "DATABASE_VALIDATION",
                              "QUESTIONNAIRE",
                              "DOCUMENT_AI",
                              "KYB_DOCUMENTS",
                              "ID_VERIFICATION",
                              "POA",
                              "PHONE",
                              "EMAIL",
                              "KYB_REGISTRY",
                              "KYB_KEY_PEOPLE",
                              "KYB",
                              "GEOLOCATION"
                            ],
                            "example": "OCR"
                          }
                        }
                      }
                    },
                    "requires_user_action": {
                      "type": "boolean",
                      "description": "क्या कम से कम एक चयनित जांच के लिए उपयोगकर्ता इंटरैक्शन की आवश्यकता होती है। यह अंतिम वर्कफ़्लो परिणाम का पूर्वानुमान नहीं लगाता है।"
                    },
                    "preview_token": {
                      "type": "string",
                      "description": "इस सटीक ईमेल के लिए हस्ताक्षरित रसीद, जो 15 मिनट के लिए मान्य है। इसे [Update Session Status](/hi/sessions-api/update-status) में `email_preview_token` के रूप में पास करें। जब कोई प्राप्तकर्ता नहीं होता है तो यह एक खाली स्ट्रिंग होती है।",
                      "example": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                    }
                  }
                },
                "examples": {
                  "Will Be Sent": {
                    "summary": "डिफ़ॉल्ट प्राप्तकर्ता: फ़्लो में सत्यापित पता",
                    "value": {
                      "recipient": "person@example.com",
                      "recipient_source": "email_verification",
                      "sender": "Example App <no-reply@mail.example.com>",
                      "sender_name": "Example App",
                      "sender_email": "no-reply@mail.example.com",
                      "sender_kind": "customer",
                      "subject": "Action Required: Complete your verification in Example App",
                      "html": "<!DOCTYPE html><html><body>...</body></html>",
                      "language": "en",
                      "will_be_sent": true,
                      "not_sent_reason": null,
                      "nodes_to_resubmit": [
                        {
                          "node_id": "feature_poa_1",
                          "feature": "PROOF_OF_ADDRESS"
                        }
                      ],
                      "requires_user_action": true,
                      "preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                    }
                  },
                  "No User Action": {
                    "summary": "केवल बैकएंड चरण चुने गए हैं, इसलिए कोई ईमेल नहीं भेजा जाता है",
                    "value": {
                      "recipient": "person@example.com",
                      "recipient_source": "contact_details",
                      "sender": "Example App <no-reply@mail.example.com>",
                      "sender_name": "Example App",
                      "sender_email": "no-reply@mail.example.com",
                      "sender_kind": "customer",
                      "subject": "Action Required: Complete your verification in Example App",
                      "html": "<!DOCTYPE html><html><body>...</body></html>",
                      "language": "en",
                      "will_be_sent": false,
                      "not_sent_reason": "no_user_action",
                      "nodes_to_resubmit": [
                        {
                          "node_id": "feature_aml",
                          "feature": "AML"
                        }
                      ],
                      "requires_user_action": false,
                      "preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                    }
                  }
                }
              }
            },
            "headers": {
              "Cache-Control": {
                "description": "हमेशा `no-store`: पूर्वावलोकन में सत्यापन सामग्री होती है और इसे कैश नहीं किया जाना चाहिए।",
                "schema": {
                  "type": "string",
                  "example": "no-store"
                }
              }
            }
          },
          "400": {
            "description": "सत्र उस स्थिति में नहीं है जिसे यह endpoint स्वीकार करता है, यह पहले से ही `Resubmitted` है, चयनित चरणों को पुनः सबमिट नहीं किया जा सकता है, या कोई फ़ील्ड अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Wrong Current Status": {
                    "summary": "सत्र ऐसी स्थिति में नहीं है जिसे यह endpoint स्वीकार करता है",
                    "value": {
                      "detail": "Only sessions with status Approved, Declined, In Review, Kyc Expired, Abandoned, Resubmitted can be updated. Current status: In Progress"
                    }
                  },
                  "Already Resubmitted": {
                    "summary": "सत्र पहले से ही Resubmitted है",
                    "value": [
                      "The new status is the same as the current status."
                    ]
                  },
                  "Nothing To Resubmit": {
                    "summary": "स्वतः-चयन को ऐसा कोई चरण नहीं मिला जिसे पुनः सबमिट करने की आवश्यकता हो",
                    "value": {
                      "nodes_to_resubmit": "No features found that need resubmission. All features are already approved."
                    }
                  },
                  "Invalid Email": {
                    "summary": "email_address एक ईमेल पता नहीं है",
                    "value": {
                      "email_address": [
                        "Enter a valid email address."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, कॉलर के पास `write:sessions` विशेषाधिकार नहीं है, स्कोप्ड API कुंजी के पास इस endpoint के लिए आवश्यक एक्सेस नहीं है, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "कॉलर के पास write:sessions की कमी है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "इस एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई KYC या KYB सत्र मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "पुनः सबमिट करने वाले सभी चरण केवल बैकएंड वाले हैं (AML, DATABASE_VALIDATION, IP_ANALYSIS), और सत्र को पिछले 30 सेकंड के भीतर केवल बैकएंड वाले चरणों के लिए पहले ही पुनः सबमिट किया जा चुका है, इसलिए Update Session Status पुनः सबमिशन को अस्वीकार कर देगा। `Retry-After` के अंतराल के बाद पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Backend-only resubmit throttled": {
                    "value": {
                      "detail": "This session was already resubmitted for backend-only features within the last 30 seconds; repeating it cannot change the outcome. Wait before resubmitting again."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.preview_resubmission(\n    \"11111111-2222-3333-4444-555555555555\",\n    nodes_to_resubmit=[{\n        \"node_id\": \"feature_poa_1\",\n        \"feature\": \"POA\",\n    }],\n    email_language=\"en\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.previewResubmission(\"11111111-2222-3333-4444-555555555555\", {\n  nodes_to_resubmit: [{\n    node_id: \"feature_poa_1\",\n    feature: \"POA\",\n  }],\n  email_language: \"en\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.PreviewResubmission(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsPreviewResubmissionParams{\n\tNodesToResubmit: didit.Some([]didit.SessionsPreviewResubmissionParamsNodesToResubmit{{\n\t\tNodeID:  \"feature_poa_1\",\n\t\tFeature: \"POA\",\n\t}}),\n\tEmailLanguage: didit.String(\"en\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SessionsPreviewResubmissionParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().previewResubmission(\"11111111-2222-3333-4444-555555555555\", SessionsPreviewResubmissionParams.builder()\n        .nodesToResubmit(List.of(SessionsPreviewResubmissionParams.NodesToResubmit.builder()\n                .nodeId(\"feature_poa_1\")\n                .feature(SessionsPreviewResubmissionParams.NodesToResubmit.Feature.of(\"POA\"))\n                .build()))\n        .emailLanguage(\"en\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->previewResubmission('11111111-2222-3333-4444-555555555555', [\n    'nodes_to_resubmit' => [[\n        'node_id' => 'feature_poa_1',\n        'feature' => 'POA',\n    ]],\n    'email_language' => 'en',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.preview_resubmission(\n  \"11111111-2222-3333-4444-555555555555\",\n  nodes_to_resubmit: [{\n    node_id: \"feature_poa_1\",\n    feature: \"POA\",\n  }],\n  email_language: \"en\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.PreviewResubmissionAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsPreviewResubmissionParams\n{\n    NodesToResubmit = new SessionsPreviewResubmissionParamsNodesToResubmit[]\n    {\n        new()\n        {\n            NodeId = \"feature_poa_1\",\n            Feature = \"POA\",\n        },\n    },\n    EmailLanguage = \"en\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/": {
      "get": {
        "summary": "राउटिंग नियम प्राप्त करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `read:cases` की आवश्यकता होती है।",
        "operationId": "retrieve_case_routing_rules",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "record_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseRoutingRule"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          },
          "404": {
            "description": "इस एप्लिकेशन में रिकॉर्ड नहीं मिला।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "summary": "राउटिंग नियम अपडेट करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `write:cases` की आवश्यकता होती है।",
        "operationId": "update_case_routing_rules",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "record_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseRoutingRule"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          },
          "404": {
            "description": "इस एप्लिकेशन में रिकॉर्ड नहीं मिला।"
          },
          "409": {
            "description": "राउटिंग नियम expected_version के बाद से बदल गया है। पुनः प्रयास करने से पहले नवीनतम नियम की समीक्षा करें।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseRoutingRuleUpdate"
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    name=\"your-name\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.update(\"11111111-2222-3333-4444-555555555555\", {\n  name: \"your-name\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CaseRoutingRuleUpdate{\n\tName: didit.String(\"your-name\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseRoutingRuleUpdate;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().update(\"11111111-2222-3333-4444-555555555555\", CaseRoutingRuleUpdate.builder()\n        .name(\"your-name\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->update('11111111-2222-3333-4444-555555555555', [\n    'name' => 'your-name',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  name: \"your-name\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new CaseRoutingRuleUpdate\n{\n    Name = \"your-name\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/case-requests/{request_uuid}/": {
      "get": {
        "operationId": "case_requests_retrieve",
        "x-didit-sdk": {
          "resource": "case_requests",
          "method": "retrieve",
          "auth": "device_token",
          "server": false
        },
        "parameters": [
          {
            "in": "path",
            "name": "request_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseRequestPublic"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "CaseRequestToken": []
          }
        ],
        "description": "इसके अनुरोध-विशिष्ट token का उपयोग करके किसी एक ग्राहक अनुरोध को एक्सेस करें। कोई निजी केस निष्कर्ष, मूल पहचान डेटा या प्राप्तकर्ता का पता नहीं लौटाया जाता है। कार्रवाई योग्य अनुरोध सात दिनों के बाद समाप्त हो जाते हैं। रद्दीकरण या केस समाधान लिंक को अमान्य कर देता है। रिस्पॉन्स अपरिवर्तनीय होते हैं और समीक्षक मूल्यांकन के लिए साक्ष्य बने रहते हैं; वे कभी भी किसी स्रोत सत्यापन को स्वीकृत या अपडेट नहीं करते हैं।"
      },
      "post": {
        "operationId": "case_requests_create",
        "x-didit-sdk": {
          "resource": "case_requests",
          "method": "respond",
          "auth": "device_token",
          "server": false
        },
        "parameters": [
          {
            "in": "path",
            "name": "request_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseCustomerResponseRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseCustomerResponseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseCustomerResponseResult"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "400": {
            "description": "अमान्य इनपुट, असमर्थित उद्देश्य, अनुपलब्ध सत्यापित संपर्क या मौजूदा अपरिवर्तनीय रिस्पॉन्स।"
          },
          "409": {
            "description": "पूर्वावलोकन बदल गया या उसकी समय-सीमा समाप्त हो गई। पुष्टि करने से पहले पुनः पूर्वावलोकन करें।"
          }
        },
        "security": [
          {
            "CaseRequestToken": []
          }
        ],
        "description": "इसके अनुरोध-विशिष्ट token का उपयोग करके किसी एक ग्राहक अनुरोध को एक्सेस करें। कोई निजी केस निष्कर्ष, मूल पहचान डेटा या प्राप्तकर्ता का पता नहीं लौटाया जाता है। कार्रवाई योग्य अनुरोध सात दिनों के बाद समाप्त हो जाते हैं। रद्दीकरण या केस समाधान लिंक को अमान्य कर देता है। रिस्पॉन्स अपरिवर्तनीय होते हैं और समीक्षक मूल्यांकन के लिए साक्ष्य बने रहते हैं; वे कभी भी किसी स्रोत सत्यापन को स्वीकृत या अपडेट नहीं करते हैं।"
      }
    },
    "/v3/fraud/checks/plan/": {
      "post": {
        "operationId": "plan_create",
        "x-didit-sdk": {
          "resource": "fraud_checks",
          "method": "plan",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना निष्पादित किए, बिना सत्र बनाए या बिलिंग के चयनित जांचों को सत्यापित करें और उनकी कीमत का अनुमान लगाएं।",
        "summary": "धोखाधड़ी जांच की योजना बनाएं",
        "tags": [
          "Fraud Check"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              },
              "example": {
                "client_reference": "review-attempt-001",
                "subject": {
                  "identifiers": [
                    {
                      "type": "email",
                      "value": "applicant@example.com"
                    }
                  ],
                  "attributes": {
                    "first_name": "Alex",
                    "last_name": "Example"
                  }
                },
                "checks": {
                  "include": [
                    "networks_same_org",
                    "networks_cross_org",
                    "email_risk"
                  ]
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/FraudCheckRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudCheckPlan"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FraudBadRequestErrorMessage"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.fraud_checks.plan(\n    client_reference=\"review-attempt-001\",\n    subject={\n        \"identifiers\": [{\n            \"type\": \"email\",\n            \"value\": \"applicant@example.com\",\n        }],\n        \"attributes\": {\n            \"first_name\": \"Alex\",\n            \"last_name\": \"Example\",\n        },\n    },\n    checks={\n        \"include\": [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.fraudChecks.plan({\n  client_reference: \"review-attempt-001\",\n  subject: {\n    identifiers: [{\n      type: \"email\",\n      value: \"applicant@example.com\",\n    }],\n    attributes: {\n      first_name: \"Alex\",\n      last_name: \"Example\",\n    },\n  },\n  checks: {\n    include: [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.FraudChecks.Plan(ctx, didit.FraudCheckRequestRequest{\n\tClientReference: didit.String(\"review-attempt-001\"),\n\tSubject: didit.FraudCheckSubjectRequest{\n\t\tIdentifiers: []didit.FraudCheckIdentifierRequest{{\n\t\t\tType:  didit.FraudTypeEnum(\"email\"),\n\t\t\tValue: \"applicant@example.com\",\n\t\t}},\n\t\tAttributes: didit.Some(didit.FraudCheckAttributesRequest{\n\t\t\tFirstName: didit.String(\"Alex\"),\n\t\t\tLastName:  didit.String(\"Example\"),\n\t\t}),\n\t},\n\tChecks: didit.Some(didit.FraudCheckModuleSelectionRequest{\n\t\tInclude: didit.Some([]didit.FraudExcludeEnum{didit.FraudExcludeEnum(\"networks_same_org\"), didit.FraudExcludeEnum(\"networks_cross_org\"), didit.FraudExcludeEnum(\"email_risk\")}),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.FraudCheckAttributesRequest;\nimport me.didit.types.FraudCheckIdentifierRequest;\nimport me.didit.types.FraudCheckModuleSelectionRequest;\nimport me.didit.types.FraudCheckRequestRequest;\nimport me.didit.types.FraudCheckSubjectRequest;\nimport me.didit.types.FraudExcludeEnum;\nimport me.didit.types.FraudTypeEnum;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.fraudChecks().plan(FraudCheckRequestRequest.builder()\n        .clientReference(\"review-attempt-001\")\n        .subject(FraudCheckSubjectRequest.builder()\n                .identifiers(List.of(FraudCheckIdentifierRequest.builder()\n                        .type(FraudTypeEnum.of(\"email\"))\n                        .value(\"applicant@example.com\")\n                        .build()))\n                .attributes(FraudCheckAttributesRequest.builder()\n                        .firstName(\"Alex\")\n                        .lastName(\"Example\")\n                        .build())\n                .build())\n        .checks(FraudCheckModuleSelectionRequest.builder()\n                .include(List.of(FraudExcludeEnum.of(\"networks_same_org\"), FraudExcludeEnum.of(\"networks_cross_org\"), FraudExcludeEnum.of(\"email_risk\")))\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->fraudChecks->plan([\n    'client_reference' => 'review-attempt-001',\n    'subject' => [\n        'identifiers' => [[\n            'type' => 'email',\n            'value' => 'applicant@example.com',\n        ]],\n        'attributes' => [\n            'first_name' => 'Alex',\n            'last_name' => 'Example',\n        ],\n    ],\n    'checks' => [\n        'include' => ['networks_same_org', 'networks_cross_org', 'email_risk'],\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.fraud_checks.plan(\n  client_reference: \"review-attempt-001\",\n  subject: {\n    identifiers: [{\n      type: \"email\",\n      value: \"applicant@example.com\",\n    }],\n    attributes: {\n      first_name: \"Alex\",\n      last_name: \"Example\",\n    },\n  },\n  checks: {\n    include: [\"networks_same_org\", \"networks_cross_org\", \"email_risk\"],\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.FraudChecks.PlanAsync(new FraudCheckRequestRequest\n{\n    ClientReference = \"review-attempt-001\",\n    Subject = new()\n    {\n        Identifiers = new FraudCheckIdentifierRequest[]\n        {\n            new()\n            {\n                Type = \"email\",\n                Value = \"applicant@example.com\",\n            },\n        },\n        Attributes = new FraudCheckAttributesRequest\n        {\n            FirstName = \"Alex\",\n            LastName = \"Example\",\n        },\n    },\n    Checks = new FraudCheckModuleSelectionRequest\n    {\n        Include = new FraudExcludeEnum[] { \"networks_same_org\", \"networks_cross_org\", \"email_risk\" },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/": {
      "get": {
        "summary": "राउटिंग नियम सूचीबद्ध करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `list:cases` की आवश्यकता होती है।",
        "operationId": "list_case_routing_rules",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/CaseRoutingRule"
                      }
                    },
                    "count": {
                      "type": "integer",
                      "description": "मिलान संख्या, अधिकतम 100 तक सीमित। सीमा से आगे जारी रखने के लिए next का अनुसरण करें।"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.routing_rules.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.routingRules.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.RoutingRules.ListAutoPaging(ctx, didit.CasesRoutingRulesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().routingRules().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->routingRules->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.routing_rules.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.RoutingRules.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "summary": "राउटिंग नियम बनाएं",
        "description": "अनुरोधित एप्लिकेशन के लिए `write:cases` की आवश्यकता होती है। अप्रकाशित ड्राफ़्ट बनाने के लिए publish=false सेट करें; प्रकाशित करें इसका पहला लाइव संस्करण बनाता है। कभी प्रकाशित न किए गए ड्राफ़्ट को खारिज करने से वह डिलीट हो जाता है।",
        "operationId": "create_case_routing_rules",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "responses": {
          "201": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseRoutingRule"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseRoutingRuleCreate"
              },
              "example": {
                "name": "AML screening alerts",
                "conditions": [
                  {
                    "field": "source",
                    "operator": "equals",
                    "value": "AML_SCREENING"
                  }
                ],
                "blueprint": "b1de0000-0000-4000-8000-000000000002"
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.create(\n    name=\"AML screening alerts\",\n    conditions=[{\n        \"field\": \"source\",\n        \"operator\": \"equals\",\n        \"value\": \"AML_SCREENING\",\n    }],\n    blueprint=\"b1de0000-0000-4000-8000-000000000002\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.create({\n  name: \"AML screening alerts\",\n  conditions: [{\n    field: \"source\",\n    operator: \"equals\",\n    value: \"AML_SCREENING\",\n  }],\n  blueprint: \"b1de0000-0000-4000-8000-000000000002\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.Create(ctx, didit.CaseRoutingRuleCreate{\n\tName: \"AML screening alerts\",\n\tConditions: []didit.CaseRoutingConditionParam{{\n\t\tField:    \"source\",\n\t\tOperator: \"equals\",\n\t\tValue:    \"AML_SCREENING\",\n\t}},\n\tBlueprint: \"b1de0000-0000-4000-8000-000000000002\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.CaseRoutingCondition;\nimport me.didit.types.CaseRoutingRuleCreate;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().create(CaseRoutingRuleCreate.builder()\n        .name(\"AML screening alerts\")\n        .conditions(List.of(CaseRoutingCondition.builder()\n                .field(CaseRoutingCondition.Field.of(\"source\"))\n                .operator(CaseRoutingCondition.Operator.of(\"equals\"))\n                .value(CaseRoutingCondition.Value.ofString(\"AML_SCREENING\"))\n                .build()))\n        .blueprint(\"b1de0000-0000-4000-8000-000000000002\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->create([\n    'name' => 'AML screening alerts',\n    'conditions' => [[\n        'field' => 'source',\n        'operator' => 'equals',\n        'value' => 'AML_SCREENING',\n    ]],\n    'blueprint' => 'b1de0000-0000-4000-8000-000000000002',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.create(\n  name: \"AML screening alerts\",\n  conditions: [{\n    field: \"source\",\n    operator: \"equals\",\n    value: \"AML_SCREENING\",\n  }],\n  blueprint: \"b1de0000-0000-4000-8000-000000000002\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.CreateAsync(new CaseRoutingRuleCreate\n{\n    Name = \"AML screening alerts\",\n    Conditions = new CaseRoutingCondition[]\n    {\n        new()\n        {\n            Field = \"source\",\n            Operator = \"equals\",\n            Value = \"AML_SCREENING\",\n        },\n    },\n    Blueprint = \"b1de0000-0000-4000-8000-000000000002\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/publish/": {
      "post": {
        "operationId": "publish_case_routing_rule",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "publish",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "record_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Assignment"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftPreconditionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftPreconditionRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftPreconditionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutingPublicationCaseRoutingRule"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "केस एक्सेस आवश्यक है।"
          },
          "409": {
            "description": "प्रकाशित संस्करण या ड्राफ्ट संशोधन बदल गया है। पुनः प्रयास करने से पहले पुनः लोड करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.publish(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=0,\n    expected_revision=\"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.publish(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.Publish(ctx, \"11111111-2222-3333-4444-555555555555\", didit.RoutingPublicationPolicyDraftPreconditionRequest{\n\tExpectedVersion:  0,\n\tExpectedRevision: didit.String(\"11111111-2222-3333-4444-555555555555\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.RoutingPublicationPolicyDraftPreconditionRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().publish(\"11111111-2222-3333-4444-555555555555\", RoutingPublicationPolicyDraftPreconditionRequest.builder()\n        .expectedVersion(0L)\n        .expectedRevision(\"11111111-2222-3333-4444-555555555555\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->publish('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 0,\n    'expected_revision' => '11111111-2222-3333-4444-555555555555',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.publish(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.PublishAsync(\"11111111-2222-3333-4444-555555555555\", new RoutingPublicationPolicyDraftPreconditionRequest\n{\n    ExpectedVersion = 0,\n    ExpectedRevision = \"11111111-2222-3333-4444-555555555555\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/publish/": {
      "post": {
        "operationId": "publish_case_blueprint",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "publish",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "blueprint_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftPreconditionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftPreconditionRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftPreconditionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CasePublicationCaseBlueprint"
                }
              }
            },
            "description": ""
          },
          "409": {
            "description": "प्रकाशित संस्करण या सहेजा गया ड्राफ़्ट संशोधन बदल गया। पुनः प्रयास करने से पहले पुनः लोड करें।"
          },
          "403": {
            "description": "आवश्यक केस अनुमति अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.publish(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=0,\n    expected_revision=\"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.publish(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.Publish(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasePublicationPolicyDraftPreconditionRequest{\n\tExpectedVersion:  0,\n\tExpectedRevision: didit.String(\"11111111-2222-3333-4444-555555555555\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasePublicationPolicyDraftPreconditionRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().publish(\"11111111-2222-3333-4444-555555555555\", CasePublicationPolicyDraftPreconditionRequest.builder()\n        .expectedVersion(0L)\n        .expectedRevision(\"11111111-2222-3333-4444-555555555555\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->publish('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 0,\n    'expected_revision' => '11111111-2222-3333-4444-555555555555',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.publish(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.PublishAsync(\"11111111-2222-3333-4444-555555555555\", new CasePublicationPolicyDraftPreconditionRequest\n{\n    ExpectedVersion = 0,\n    ExpectedRevision = \"11111111-2222-3333-4444-555555555555\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/preview/": {
      "post": {
        "operationId": "organization_application_cases_requests_preview_create",
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "preview",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestPreviewRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestPreviewRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CustomerMessagingCaseRequestPreviewRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerMessagingCaseRequestPreviewResponse"
                }
              }
            },
            "description": ""
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "400": {
            "description": "अमान्य इनपुट, असमर्थित उद्देश्य, अनुपलब्ध सत्यापित संपर्क या मौजूदा अपरिवर्तनीय रिस्पॉन्स।"
          },
          "409": {
            "description": "पूर्वावलोकन बदल गया या उसकी समय-सीमा समाप्त हो गई। पुष्टि करने से पहले पुनः पूर्वावलोकन करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "केस को भेजे या बदले बिना प्रोडक्शन ईमेल रेंडर करें। सटीक प्राप्तकर्ता, प्रेषक, विषय, बॉडी और एक हस्ताक्षरित preview_token लौटाता है। 15 मिनट के भीतर पुष्टि करने के लिए वही contact_id, purpose, language, request_id, expires_at और preview_token भेजें।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.requests.preview(\n    \"11111111-2222-3333-4444-555555555555\",\n    contact_id=\"11111111-2222-3333-4444-555555555555\",\n    purpose=\"identity_document\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requests.preview(\"11111111-2222-3333-4444-555555555555\", {\n  contact_id: \"11111111-2222-3333-4444-555555555555\",\n  purpose: \"identity_document\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Requests.Preview(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CustomerMessagingCaseRequestPreviewRequest{\n\tContactID: \"11111111-2222-3333-4444-555555555555\",\n\tPurpose:   didit.CustomerMessagingPurposeEnum(\"identity_document\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CustomerMessagingCaseRequestPreviewRequest;\nimport me.didit.types.CustomerMessagingPurposeEnum;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requests().preview(\"11111111-2222-3333-4444-555555555555\", CustomerMessagingCaseRequestPreviewRequest.builder()\n        .contactId(\"11111111-2222-3333-4444-555555555555\")\n        .purpose(CustomerMessagingPurposeEnum.of(\"identity_document\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requests->preview('11111111-2222-3333-4444-555555555555', [\n    'contact_id' => '11111111-2222-3333-4444-555555555555',\n    'purpose' => 'identity_document',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.requests.preview(\n  \"11111111-2222-3333-4444-555555555555\",\n  contact_id: \"11111111-2222-3333-4444-555555555555\",\n  purpose: \"identity_document\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Requests.PreviewAsync(\"11111111-2222-3333-4444-555555555555\", new CustomerMessagingCaseRequestPreviewRequest\n{\n    ContactId = \"11111111-2222-3333-4444-555555555555\",\n    Purpose = \"identity_document\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/action-receipts/": {
      "get": {
        "operationId": "action_receipts_retrieve",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "list_action_receipts",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "maximum": 1000000,
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseActionCaseActionReceiptPage"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "विषय-कार्रवाई रसीदें सूचीबद्ध करें, नवीनतम पहले, प्रति पृष्ठ अधिकतम 20 परिणामों के साथ। अगले पृष्ठ के लिए next_offset का उपयोग करें। इनपुट नोट टेक्स्ट इतिहास में प्रदर्शित नहीं किया जाता है।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.list_action_receipts(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.listActionReceipts(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.ListActionReceipts(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasesListActionReceiptsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().listActionReceipts(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->listActionReceipts('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.list_action_receipts(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ListActionReceiptsAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/notes/{note_uuid}/": {
      "delete": {
        "operationId": "delete_network_note",
        "x-didit-sdk": {
          "resource": "networks.notes",
          "method": "delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "summary": "अपना नेटवर्क नोट हटाएं",
        "description": "write:networks और नोट के प्रमाणित लेखक की आवश्यकता होती है। विलोपन अपरिवर्तनीय है। जुड़े हुए खाते और सत्यापन डेटा अप्रभावित रहते हैं।",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "note_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Bearer <token> के रूप में कंसोल उपयोगकर्ता एक्सेस token।"
          }
        ],
        "responses": {
          "204": {
            "description": "नोट हटा दिया गया।"
          },
          "401": {
            "description": "प्रमाणीकरण आवश्यक है।"
          },
          "403": {
            "description": "अनुमति या Networks एक्सेस मौजूद नहीं है।"
          },
          "404": {
            "description": "नेटवर्क या नोट इस एप्लिकेशन को दिखाई नहीं दे रहा है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\nclient = Didit()\n\nclient.networks.notes.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n    extra_headers={\"Authorization\": \"Bearer YOUR_CONSOLE_USER_TOKEN\"},\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nconst didit = new Didit({\n  fetch: (url, init) => {\n    const headers = new Headers(init?.headers);\n    headers.set(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\");\n    return fetch(url, { ...init, headers });\n  },\n});\n\nawait didit.networks.notes.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nclient := didit.NewClient()\n\nif err := client.Networks.Notes.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", didit.NetworksNotesDeleteParams{\n\tAuthorization: \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n}); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.core.RequestOptions;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nDidit client = new Didit();\n\nclient.networks().notes().delete(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", RequestOptions.builder()\n        .header(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\")\n        .build());"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\n$didit = new DiditClient();\n\n$didit->networks->notes->delete('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555', [\n    'authorization' => 'Bearer YOUR_CONSOLE_USER_TOKEN',\n]);"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\ndidit = Didit::Client.new\n\ndidit.networks.notes.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n  request_options: { extra_headers: { \"Authorization\" => \"Bearer YOUR_CONSOLE_USER_TOKEN\" } }\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nusing var client = new DiditClient();\n\nawait client.Networks.Notes.DeleteAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\", requestOptions: new RequestOptions\n{\n    Headers = new Dictionary<string, string>\n    {\n        [\"Authorization\"] = \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n    },\n});"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/action-receipts/{receipt_uuid}/retry/": {
      "post": {
        "operationId": "action_receipts_retry_create",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "retry_action_receipt",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "receipt_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseActionCaseActionReceipt"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "इसके सहेजे गए इनपुट का उपयोग करके केवल इस विषय पर की गई विफल कार्रवाई का पुनः प्रयास करें। वर्तमान लेखन अनुमति की जाँच की जाती है। लागू की गई कार्रवाइयां फिर से निष्पादित किए बिना अपनी रसीद लौटाती हैं। केस बंद होना स्वतंत्र है।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.retry_action_receipt(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.retryActionReceipt(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RetryActionReceipt(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().retryActionReceipt(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->retryActionReceipt('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.retry_action_receipt(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RetryActionReceiptAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/draft/": {
      "get": {
        "operationId": "get_case_blueprint_draft",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "retrieve_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "blueprint_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CasePublicationPolicyDraftResponse"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "आवश्यक केस अनुमति अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.retrieve_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.retrieveDraft(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.RetrieveDraft(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().retrieveDraft(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->retrieveDraft('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.retrieve_draft(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.RetrieveDraftAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "put": {
        "operationId": "save_case_blueprint_draft",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "save_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "blueprint_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftWriteRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftWriteRequest"
              },
              "example": {
                "expected_version": 1,
                "expected_revision": "4e5f0000-0000-4000-8000-000000000003",
                "changes": {
                  "max_active_cases": 20
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftWriteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CasePublicationPolicyDraft"
                }
              }
            },
            "description": ""
          },
          "409": {
            "description": "प्रकाशित संस्करण या सहेजा गया ड्राफ़्ट संशोधन बदल गया। पुनः प्रयास करने से पहले पुनः लोड करें।"
          },
          "403": {
            "description": "आवश्यक केस अनुमति अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.blueprints.save_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=1,\n    expected_revision=\"4e5f0000-0000-4000-8000-000000000003\",\n    changes={\"max_active_cases\": 20},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.blueprints.saveDraft(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 1,\n  expected_revision: \"4e5f0000-0000-4000-8000-000000000003\",\n  changes: { max_active_cases: 20 },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Blueprints.SaveDraft(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasePublicationPolicyDraftWriteRequest{\n\tExpectedVersion:  1,\n\tExpectedRevision: didit.String(\"4e5f0000-0000-4000-8000-000000000003\"),\n\tChanges:          map[string]any{\"max_active_cases\": 20},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.CasePublicationPolicyDraftWriteRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().blueprints().saveDraft(\"11111111-2222-3333-4444-555555555555\", CasePublicationPolicyDraftWriteRequest.builder()\n        .expectedVersion(1L)\n        .expectedRevision(\"4e5f0000-0000-4000-8000-000000000003\")\n        .changes(Map.of(\"max_active_cases\", 20))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->blueprints->saveDraft('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 1,\n    'expected_revision' => '4e5f0000-0000-4000-8000-000000000003',\n    'changes' => ['max_active_cases' => 20],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.blueprints.save_draft(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 1,\n  expected_revision: \"4e5f0000-0000-4000-8000-000000000003\",\n  changes: { max_active_cases: 20 }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Blueprints.SaveDraftAsync(\"11111111-2222-3333-4444-555555555555\", new CasePublicationPolicyDraftWriteRequest\n{\n    ExpectedVersion = 1,\n    ExpectedRevision = \"4e5f0000-0000-4000-8000-000000000003\",\n    Changes = new Dictionary<string, object> { [\"max_active_cases\"] = 20 },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "operationId": "discard_case_blueprint_draft",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "discard_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "blueprint_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "204": {
            "description": "कोई रिस्पॉन्स बॉडी नहीं"
          },
          "409": {
            "description": "प्रकाशित संस्करण या सहेजा गया ड्राफ़्ट संशोधन बदल गया। पुनः प्रयास करने से पहले पुनः लोड करें।"
          },
          "403": {
            "description": "आवश्यक केस अनुमति अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CasePublicationPolicyDraftPreconditionRequest"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.blueprints.discard_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=0,\n    expected_revision=\"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.blueprints.discardDraft(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\",\n});"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.Blueprints.DiscardDraft(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasePublicationPolicyDraftPreconditionRequest{\n\tExpectedVersion:  0,\n\tExpectedRevision: didit.String(\"11111111-2222-3333-4444-555555555555\"),\n}); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CasePublicationPolicyDraftPreconditionRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().blueprints().discardDraft(\"11111111-2222-3333-4444-555555555555\", CasePublicationPolicyDraftPreconditionRequest.builder()\n        .expectedVersion(0L)\n        .expectedRevision(\"11111111-2222-3333-4444-555555555555\")\n        .build());"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->blueprints->discardDraft('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 0,\n    'expected_revision' => '11111111-2222-3333-4444-555555555555',\n]);"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.blueprints.discard_draft(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.Blueprints.DiscardDraftAsync(\"11111111-2222-3333-4444-555555555555\", new CasePublicationPolicyDraftPreconditionRequest\n{\n    ExpectedVersion = 0,\n    ExpectedRevision = \"11111111-2222-3333-4444-555555555555\",\n});"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/": {
      "get": {
        "summary": "समीक्षा टीम प्राप्त करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `read:cases` की आवश्यकता होती है।",
        "operationId": "retrieve_case_teams",
        "x-didit-sdk": {
          "resource": "cases.teams",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "record_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseReviewTeam"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          },
          "404": {
            "description": "इस एप्लिकेशन में रिकॉर्ड नहीं मिला।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.teams.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.teams.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Teams.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().teams().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->teams->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.teams.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Teams.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "summary": "समीक्षा टीम अपडेट करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `write:cases` की आवश्यकता होती है।",
        "operationId": "update_case_teams",
        "x-didit-sdk": {
          "resource": "cases.teams",
          "method": "update",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "record_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseReviewTeam"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          },
          "404": {
            "description": "इस एप्लिकेशन में रिकॉर्ड नहीं मिला।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseReviewTeamUpdate"
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.teams.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    name=\"your-name\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.teams.update(\"11111111-2222-3333-4444-555555555555\", {\n  name: \"your-name\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Teams.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CaseReviewTeamUpdate{\n\tName: didit.String(\"your-name\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseReviewTeamUpdate;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().teams().update(\"11111111-2222-3333-4444-555555555555\", CaseReviewTeamUpdate.builder()\n        .name(\"your-name\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->teams->update('11111111-2222-3333-4444-555555555555', [\n    'name' => 'your-name',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.teams.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  name: \"your-name\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Teams.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new CaseReviewTeamUpdate\n{\n    Name = \"your-name\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/report/": {
      "get": {
        "operationId": "download_network_report",
        "x-didit-sdk": {
          "resource": "networks",
          "method": "download_report",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "summary": "नेटवर्क साक्ष्य रिपोर्ट डाउनलोड करें",
        "description": "वर्तमान संगठन नेटवर्क, इसके देखे गए खाता कनेक्शन, सिग्नल संदर्भ और समीक्षा स्थिति का PDF डाउनलोड करें। read:networks आवश्यक है। वैश्विक इंटेलिजेंस और निजी विश्लेषक नोट्स शामिल नहीं हैं। प्रत्येक खाता और सिग्नल सूची 500 प्रविष्टियों तक सीमित है और अपूर्ण होने पर रिपोर्ट में इसका उल्लेख होता है। अनुरोध नेटवर्क स्थिति को नहीं बदलता है। त्रुटियाँ JSON के रूप में लौटाई जाती हैं।",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Bearer <token> के रूप में कंसोल उपयोगकर्ता एक्सेस token।"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क साक्ष्य रिपोर्ट। Cache-Control: no-store.",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "प्रमाणीकरण आवश्यक है।"
          },
          "403": {
            "description": "अनुमति या Networks एक्सेस मौजूद नहीं है।"
          },
          "404": {
            "description": "नेटवर्क या नोट इस एप्लिकेशन को दिखाई नहीं दे रहा है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\nclient = Didit()\n\ncontent = client.networks.download_report(\n    \"11111111-2222-3333-4444-555555555555\",\n    extra_headers={\"Authorization\": \"Bearer YOUR_CONSOLE_USER_TOKEN\"},\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nconst didit = new Didit({\n  fetch: (url, init) => {\n    const headers = new Headers(init?.headers);\n    headers.set(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\");\n    return fetch(url, { ...init, headers });\n  },\n});\n\nconst content = await didit.networks.downloadReport(\"11111111-2222-3333-4444-555555555555\");\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nclient := didit.NewClient()\n\nresp, err := client.Networks.DownloadReport(ctx, \"11111111-2222-3333-4444-555555555555\", didit.NetworksDownloadReportParams{\n\tAuthorization: \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.core.RequestOptions;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nDidit client = new Didit();\n\nclient.networks().downloadReport(\"11111111-2222-3333-4444-555555555555\", RequestOptions.builder()\n        .header(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\")\n        .build())\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\n$didit = new DiditClient();\n\n$content = $didit->networks->downloadReport('11111111-2222-3333-4444-555555555555', [\n    'authorization' => 'Bearer YOUR_CONSOLE_USER_TOKEN',\n]);\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\ndidit = Didit::Client.new\n\ncontent = didit.networks.download_report(\n  \"11111111-2222-3333-4444-555555555555\",\n  request_options: { extra_headers: { \"Authorization\" => \"Bearer YOUR_CONSOLE_USER_TOKEN\" } }\n)\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nusing var client = new DiditClient();\n\nvar content = await client.Networks.DownloadReportAsync(\"11111111-2222-3333-4444-555555555555\", requestOptions: new RequestOptions\n{\n    Headers = new Dictionary<string, string>\n    {\n        [\"Authorization\"] = \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n    },\n});\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/notes/": {
      "get": {
        "operationId": "list_network_notes",
        "x-didit-sdk": {
          "resource": "networks.notes",
          "method": "list",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "summary": "निजी नेटवर्क नोट्स सूचीबद्ध करें",
        "description": "read:networks वाले कंसोल उपयोगकर्ता एप्लिकेशन को दिखाई देने वाले नेटवर्क पर नोट्स पढ़ सकते हैं। नोट्स संगठन के भीतर ही रहते हैं और साझा इंटेलिजेंस में योगदान नहीं किए जाते हैं। नवीनतम नोट्स पहले दिखाई देते हैं।",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Bearer <token> के रूप में कंसोल उपयोगकर्ता एक्सेस token।"
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "नोट्स का एक पेज। संख्या 100 तक सीमित है; आगे बढ़ने के लिए next का उपयोग करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/NetworkNote"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "प्रमाणीकरण आवश्यक है।"
          },
          "403": {
            "description": "अनुमति या Networks एक्सेस मौजूद नहीं है।"
          },
          "404": {
            "description": "नेटवर्क या नोट इस एप्लिकेशन को दिखाई नहीं दे रहा है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\nclient = Didit()\n\nfor item in client.networks.notes.list(\n    \"11111111-2222-3333-4444-555555555555\",\n    extra_headers={\"Authorization\": \"Bearer YOUR_CONSOLE_USER_TOKEN\"},\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nconst didit = new Didit({\n  fetch: (url, init) => {\n    const headers = new Headers(init?.headers);\n    headers.set(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\");\n    return fetch(url, { ...init, headers });\n  },\n});\n\nfor await (const item of didit.networks.notes.list(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nclient := didit.NewClient()\n\niter := client.Networks.Notes.ListAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.NetworksNotesListParams{\n\tAuthorization: \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.core.RequestOptions;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nDidit client = new Didit();\n\nfor (var item : client.networks().notes().list(\"11111111-2222-3333-4444-555555555555\", RequestOptions.builder()\n        .header(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\")\n        .build())) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\n$didit = new DiditClient();\n\nforeach ($didit->networks->notes->list('11111111-2222-3333-4444-555555555555', [\n    'authorization' => 'Bearer YOUR_CONSOLE_USER_TOKEN',\n]) as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\ndidit = Didit::Client.new\n\ndidit.networks.notes.list(\n  \"11111111-2222-3333-4444-555555555555\",\n  request_options: { extra_headers: { \"Authorization\" => \"Bearer YOUR_CONSOLE_USER_TOKEN\" } }\n).auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Networks.Notes.ListAsync(\"11111111-2222-3333-4444-555555555555\", requestOptions: new RequestOptions\n{\n    Headers = new Dictionary<string, string>\n    {\n        [\"Authorization\"] = \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n    },\n}))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      },
      "post": {
        "operationId": "create_network_note",
        "x-didit-sdk": {
          "resource": "networks.notes",
          "method": "create",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Networks"
        ],
        "summary": "एक निजी नेटवर्क नोट जोड़ें",
        "description": "write:networks वाले कंसोल उपयोगकर्ता की आवश्यकता होती है। लेखक को प्रमाणित उपयोगकर्ता से असाइन किया जाता है। प्रत्येक नोट के लिए एक नया यादृच्छिक UUID client_reference प्रदान करें; डुप्लिकेट से बचने के लिए किसी अनिश्चित रिस्पॉन्स के बाद उसी बॉडी और संदर्भ का पुनः प्रयास करें। किसी अन्य बॉडी, लेखक या नेटवर्क के लिए संदर्भ का पुन: उपयोग करने पर 409 वापस आता है। नेटवर्क मर्ज होने पर नोट बची हुई जांच के साथ जुड़े रहते हैं।",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "नेटवर्क UUID।"
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Bearer <token> के रूप में कंसोल उपयोगकर्ता एक्सेस token।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "comment",
                  "client_reference"
                ],
                "properties": {
                  "comment": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 10000
                  },
                  "client_reference": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "सहेजा गया निजी नोट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkNote"
                }
              }
            }
          },
          "200": {
            "description": "सहेजा गया निजी नोट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkNote"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य या खाली नोट।"
          },
          "409": {
            "description": "संदर्भ का उपयोग पहले ही किसी अन्य नोट के लिए किया जा चुका है।"
          },
          "401": {
            "description": "प्रमाणीकरण आवश्यक है।"
          },
          "403": {
            "description": "अनुमति या Networks एक्सेस मौजूद नहीं है।"
          },
          "404": {
            "description": "नेटवर्क या नोट इस एप्लिकेशन को दिखाई नहीं दे रहा है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\nclient = Didit()\n\nresult = client.networks.notes.create(\n    \"11111111-2222-3333-4444-555555555555\",\n    comment=\"your-comment\",\n    client_reference=\"11111111-2222-3333-4444-555555555555\",\n    extra_headers={\"Authorization\": \"Bearer YOUR_CONSOLE_USER_TOKEN\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nconst didit = new Didit({\n  fetch: (url, init) => {\n    const headers = new Headers(init?.headers);\n    headers.set(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\");\n    return fetch(url, { ...init, headers });\n  },\n});\n\nconst result = await didit.networks.notes.create(\"11111111-2222-3333-4444-555555555555\", {\n  comment: \"your-comment\",\n  client_reference: \"11111111-2222-3333-4444-555555555555\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nclient := didit.NewClient()\n\nresult, err := client.Networks.Notes.Create(ctx, \"11111111-2222-3333-4444-555555555555\", didit.NetworksNotesCreateParams{\n\tComment:         \"your-comment\",\n\tClientReference: \"11111111-2222-3333-4444-555555555555\",\n\tAuthorization:   \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.core.RequestOptions;\nimport me.didit.types.NetworksNotesCreateParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nDidit client = new Didit();\n\nvar result = client.networks().notes().create(\"11111111-2222-3333-4444-555555555555\", NetworksNotesCreateParams.builder()\n        .comment(\"your-comment\")\n        .clientReference(\"11111111-2222-3333-4444-555555555555\")\n        .build(), RequestOptions.builder()\n        .header(\"Authorization\", \"Bearer YOUR_CONSOLE_USER_TOKEN\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\n$didit = new DiditClient();\n\n$result = $didit->networks->notes->create('11111111-2222-3333-4444-555555555555', [\n    'comment' => 'your-comment',\n    'client_reference' => '11111111-2222-3333-4444-555555555555',\n    'authorization' => 'Bearer YOUR_CONSOLE_USER_TOKEN',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\n# Also needs a console user's access token.\ndidit = Didit::Client.new\n\nresult = didit.networks.notes.create(\n  \"11111111-2222-3333-4444-555555555555\",\n  comment: \"your-comment\",\n  client_reference: \"11111111-2222-3333-4444-555555555555\",\n  request_options: { extra_headers: { \"Authorization\" => \"Bearer YOUR_CONSOLE_USER_TOKEN\" } }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n// Also needs a console user's access token.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.Notes.CreateAsync(\"11111111-2222-3333-4444-555555555555\", new NetworksNotesCreateParams\n{\n    Comment = \"your-comment\",\n    ClientReference = \"11111111-2222-3333-4444-555555555555\",\n}, requestOptions: new RequestOptions\n{\n    Headers = new Dictionary<string, string>\n    {\n        [\"Authorization\"] = \"Bearer YOUR_CONSOLE_USER_TOKEN\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/draft/": {
      "get": {
        "operationId": "get_case_routing_rule_draft",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "retrieve_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "record_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Assignment"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutingPublicationPolicyDraftResponse"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "केस एक्सेस आवश्यक है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.retrieve_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.retrieveDraft(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.RetrieveDraft(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().retrieveDraft(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->retrieveDraft('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.retrieve_draft(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.RetrieveDraftAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "put": {
        "operationId": "save_case_routing_rule_draft",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "save_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "record_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Assignment"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftWriteRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftWriteRequest"
              },
              "example": {
                "expected_version": 1,
                "expected_revision": "4e5f0000-0000-4000-8000-000000000003",
                "changes": {
                  "priority": 10
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftWriteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RoutingPublicationPolicyDraft"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "केस एक्सेस आवश्यक है।"
          },
          "409": {
            "description": "प्रकाशित संस्करण या ड्राफ्ट संशोधन बदल गया है। पुनः प्रयास करने से पहले पुनः लोड करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.save_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=1,\n    expected_revision=\"4e5f0000-0000-4000-8000-000000000003\",\n    changes={\"priority\": 10},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.saveDraft(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 1,\n  expected_revision: \"4e5f0000-0000-4000-8000-000000000003\",\n  changes: { priority: 10 },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.SaveDraft(ctx, \"11111111-2222-3333-4444-555555555555\", didit.RoutingPublicationPolicyDraftWriteRequest{\n\tExpectedVersion:  1,\n\tExpectedRevision: didit.String(\"4e5f0000-0000-4000-8000-000000000003\"),\n\tChanges:          map[string]any{\"priority\": 10},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.RoutingPublicationPolicyDraftWriteRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().saveDraft(\"11111111-2222-3333-4444-555555555555\", RoutingPublicationPolicyDraftWriteRequest.builder()\n        .expectedVersion(1L)\n        .expectedRevision(\"4e5f0000-0000-4000-8000-000000000003\")\n        .changes(Map.of(\"priority\", 10))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->saveDraft('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 1,\n    'expected_revision' => '4e5f0000-0000-4000-8000-000000000003',\n    'changes' => ['priority' => 10],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.save_draft(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 1,\n  expected_revision: \"4e5f0000-0000-4000-8000-000000000003\",\n  changes: { priority: 10 }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.SaveDraftAsync(\"11111111-2222-3333-4444-555555555555\", new RoutingPublicationPolicyDraftWriteRequest\n{\n    ExpectedVersion = 1,\n    ExpectedRevision = \"4e5f0000-0000-4000-8000-000000000003\",\n    Changes = new Dictionary<string, object> { [\"priority\"] = 10 },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "operationId": "discard_case_routing_rule_draft",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "discard_draft",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "record_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Assignment"
        ],
        "responses": {
          "204": {
            "description": "कोई रिस्पॉन्स बॉडी नहीं"
          },
          "403": {
            "description": "केस एक्सेस आवश्यक है।"
          },
          "409": {
            "description": "प्रकाशित संस्करण या ड्राफ्ट संशोधन बदल गया है। पुनः प्रयास करने से पहले पुनः लोड करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraftPreconditionRequest"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.cases.routing_rules.discard_draft(\n    \"11111111-2222-3333-4444-555555555555\",\n    expected_version=0,\n    expected_revision=\"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.cases.routingRules.discardDraft(\"11111111-2222-3333-4444-555555555555\", {\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\",\n});"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nif err := client.Cases.RoutingRules.DiscardDraft(ctx, \"11111111-2222-3333-4444-555555555555\", didit.RoutingPublicationPolicyDraftPreconditionRequest{\n\tExpectedVersion:  0,\n\tExpectedRevision: didit.String(\"11111111-2222-3333-4444-555555555555\"),\n}); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.RoutingPublicationPolicyDraftPreconditionRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.cases().routingRules().discardDraft(\"11111111-2222-3333-4444-555555555555\", RoutingPublicationPolicyDraftPreconditionRequest.builder()\n        .expectedVersion(0L)\n        .expectedRevision(\"11111111-2222-3333-4444-555555555555\")\n        .build());"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->cases->routingRules->discardDraft('11111111-2222-3333-4444-555555555555', [\n    'expected_version' => 0,\n    'expected_revision' => '11111111-2222-3333-4444-555555555555',\n]);"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.routing_rules.discard_draft(\n  \"11111111-2222-3333-4444-555555555555\",\n  expected_version: 0,\n  expected_revision: \"11111111-2222-3333-4444-555555555555\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Cases.RoutingRules.DiscardDraftAsync(\"11111111-2222-3333-4444-555555555555\", new RoutingPublicationPolicyDraftPreconditionRequest\n{\n    ExpectedVersion = 0,\n    ExpectedRevision = \"11111111-2222-3333-4444-555555555555\",\n});"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/duplicates/": {
      "post": {
        "operationId": "duplicates_create",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "find_duplicates",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Case Management"
        ],
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/CaseDuplicateCaseDuplicateQueryRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseDuplicateCaseDuplicateQueryRequest"
              },
              "example": {
                "subject": {
                  "type": "user",
                  "uuid": "5b9a0000-0000-4000-8000-00000000f00d"
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/CaseDuplicateCaseDuplicateQueryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseDuplicateCaseDuplicatePage"
                }
              }
            },
            "description": ""
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "मैन्युअल केस निर्माण से पहले किसी विषय या स्वामित्व वाले स्रोत रिकॉर्ड के लिए मौजूदा केसों की समीक्षा करें। खुली और हल की गई दोनों जांचें लौटाई जाती हैं। प्रत्येक पेज में अधिकतम 20 केस होते हैं; अगले पेज का अनुरोध करने के लिए next_offset का उपयोग करें।",
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.find_duplicates(\n    subject={\n        \"type\": \"user\",\n        \"uuid\": \"5b9a0000-0000-4000-8000-00000000f00d\",\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.findDuplicates({\n  subject: {\n    type: \"user\",\n    uuid: \"5b9a0000-0000-4000-8000-00000000f00d\",\n  },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.FindDuplicates(ctx, didit.CaseDuplicateCaseDuplicateQueryRequest{\n\tSubject: didit.Some(didit.CaseDuplicateCaseSubjectInputRequest{\n\t\tType: didit.CaseDuplicateTypeEnum(\"user\"),\n\t\tUUID: \"5b9a0000-0000-4000-8000-00000000f00d\",\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseDuplicateCaseDuplicateQueryRequest;\nimport me.didit.types.CaseDuplicateCaseSubjectInputRequest;\nimport me.didit.types.CaseDuplicateTypeEnum;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().findDuplicates(CaseDuplicateCaseDuplicateQueryRequest.builder()\n        .subject(CaseDuplicateCaseSubjectInputRequest.builder()\n                .type(CaseDuplicateTypeEnum.of(\"user\"))\n                .uuid(\"5b9a0000-0000-4000-8000-00000000f00d\")\n                .build())\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->findDuplicates([\n    'subject' => [\n        'type' => 'user',\n        'uuid' => '5b9a0000-0000-4000-8000-00000000f00d',\n    ],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.find_duplicates(\n  subject: {\n    type: \"user\",\n    uuid: \"5b9a0000-0000-4000-8000-00000000f00d\",\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.FindDuplicatesAsync(new CaseDuplicateCaseDuplicateQueryRequest\n{\n    Subject = new CaseDuplicateCaseSubjectInputRequest\n    {\n        Type = \"user\",\n        Uuid = \"5b9a0000-0000-4000-8000-00000000f00d\",\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/preview/": {
      "post": {
        "summary": "टेस्ट केस रूटिंग",
        "description": "अनुरोधित एप्लिकेशन के लिए `read:cases` की आवश्यकता होती है। वर्तमान समीक्षक एक्सेस, उपलब्धता, कौशल और क्षमता के आधार पर वर्तमान नियमों या प्रदान किए गए ड्राफ़्ट का मूल्यांकन करता है। यह ड्राफ़्ट को सहेजता नहीं है और न ही समीक्षक क्षमता आरक्षित करता है।",
        "operationId": "preview_case_routing",
        "x-didit-sdk": {
          "resource": "cases.routing_rules",
          "method": "preview",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseRoutingPreview"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CaseRoutingPreviewRequest"
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.routing_rules.preview(\n    source=\"MANUAL\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.routingRules.preview({\n  source: \"MANUAL\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.RoutingRules.Preview(ctx, didit.CaseRoutingPreviewRequest{\n\tSource: \"MANUAL\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.CaseRoutingPreviewRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().routingRules().preview(CaseRoutingPreviewRequest.builder()\n        .source(CaseRoutingPreviewRequest.Source.of(\"MANUAL\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->routingRules->preview([\n    'source' => 'MANUAL',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.routing_rules.preview(source: \"MANUAL\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.RoutingRules.PreviewAsync(new CaseRoutingPreviewRequest\n{\n    Source = \"MANUAL\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/reviewers/": {
      "get": {
        "summary": "योग्य केस समीक्षक सूचीबद्ध करें",
        "description": "अनुरोधित एप्लिकेशन के लिए `list:cases` की आवश्यकता होती है।",
        "operationId": "list_case_reviewers",
        "x-didit-sdk": {
          "resource": "cases",
          "method": "list_reviewers",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Case Assignment"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "responses": {
          "200": {
            "description": "सफल",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "user_id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "email": {
                            "type": "string",
                            "format": "email"
                          },
                          "name": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य इनपुट।"
          },
          "403": {
            "description": "अपर्याप्त अनुमति।"
          },
          "503": {
            "description": "समीक्षक की पहुंच सत्यापित नहीं की जा सकी। बाद में पुनः प्रयास करें।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.list_reviewers()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.listReviewers();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.ListReviewers(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().listReviewers();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->listReviewers();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.list_reviewers\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.ListReviewersAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/blueprints/{blueprint_uuid}/history/": {
      "get": {
        "operationId": "list_case_blueprint_history",
        "x-didit-sdk": {
          "resource": "cases.blueprints",
          "method": "list_history",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "blueprint_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "परिणामों को क्रमित करते समय किस फ़ील्ड का उपयोग करना है।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "प्रति पेज लौटाए जाने वाले परिणामों की संख्या।",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "प्रारंभिक इंडेक्स जहाँ से परिणाम वापस करने हैं।",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "tags": [
          "Case Management"
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CasePublicationPaginatedPolicyRevisionList"
                }
              }
            },
            "description": ""
          },
          "403": {
            "description": "आवश्यक केस अनुमति अनुपलब्ध है।"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nfor item in client.cases.blueprints.list_history(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nfor await (const item of didit.cases.blueprints.listHistory(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\niter := client.Cases.Blueprints.ListHistoryAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.CasesBlueprintsListHistoryParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nfor (var item : client.cases().blueprints().listHistory(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\nforeach ($didit->cases->blueprints->listHistory('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.cases.blueprints.list_history(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Cases.Blueprints.ListHistoryAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/signatures/{nodeId}/documents/{documentId}/file/": {
      "get": {
        "summary": "हस्ताक्षरित दस्तावेज़ डाउनलोड करें",
        "description": "ई-हस्ताक्षर चरण के किसी एक दस्तावेज़ का हस्ताक्षरित PDF डाउनलोड करें। निर्णय में `signatures[].documents[]` के `signed_file` पथ का उपयोग करें। PDF में वह दस्तावेज़ होता है जो हस्ताक्षरकर्ता को दिखाया गया था, जिस पर उनके फ़ील्ड मान अंकित किए गए थे और साक्ष्य पृष्ठ (जब तक कि `signature_evidence_page` बंद न हो)। Advanced (AES) PDF में इसके टाइमस्टैम्प के साथ PAdES हस्ताक्षर भी होता है; Simple PDF में कोई डिजिटल हस्ताक्षर, सील या टाइमस्टैम्प नहीं होता है। Didit फ़ाइल को वापस करने से पहले `sha256_signed` के विरुद्ध इसकी जाँच करता है।\n\nउपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) सत्रों के लिए काम करता है। `read:sessions` आवश्यक है; आपकी API कुंजी काम करती है। [ई-हस्ताक्षर रिपोर्ट](/hi/core-technology/electronic-signature/report-electronic-signature#हस्ताक्षरित-दस्तावेज़-डाउनलोड-करें) देखें।",
        "operationId": "get_v3_session_signature_document_file",
        "x-didit-sdk": {
          "resource": "sessions.signatures",
          "method": "download_document",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "nodeId",
            "in": "path",
            "required": true,
            "description": "ई-हस्ताक्षर चरण: `signatures[]` में आइटम का `node_id`।",
            "schema": {
              "type": "string",
              "example": "feature_signature"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "required": true,
            "description": "`signatures[].documents[]` में दस्तावेज़ का `id`।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "हस्ताक्षरित PDF।",
            "headers": {
              "Content-Disposition": {
                "description": "फ़ाइल नाम के साथ अटैचमेंट।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"agreement-signed.pdf\""
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, या ऐसा क्रेडेंशियल है जो इस सत्र को पढ़ नहीं सकता। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "You do not have permission to perform this action."
                }
              }
            }
          },
          "404": {
            "description": "कोई हस्ताक्षरित दस्तावेज़ मेल नहीं खाता: सत्र, चरण या दस्तावेज़ मौजूद नहीं है, हटा दिया गया था, या अभी तक हस्ताक्षरित नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not signed yet": {
                    "summary": "हस्ताक्षरकर्ता ने हस्ताक्षर नहीं किए हैं",
                    "value": {
                      "code": "signature_not_signed",
                      "detail": "signature_not_signed"
                    }
                  },
                  "Unknown document": {
                    "summary": "इस चरण में ऐसा कोई दस्तावेज़ नहीं है",
                    "value": {
                      "code": "signature_not_found",
                      "detail": "signature_not_found"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "संग्रहीत फ़ाइल अब इसके रिकॉर्ड किए गए SHA-256 से मेल नहीं खाती। कुछ भी वापस नहीं किया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Changed file": {
                    "summary": "स्टोर की गई फ़ाइल अपने हैश से मेल नहीं खाती",
                    "value": {
                      "code": "signature_document_changed",
                      "detail": "signature_document_changed"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.signatures.download_document(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"feature_signature\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.signatures.downloadDocument(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.Signatures.DownloadDocument(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().signatures().downloadDocument(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->signatures->downloadDocument('11111111-2222-3333-4444-555555555555', 'feature_signature', '11111111-2222-3333-4444-555555555555');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.signatures.download_document(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.Signatures.DownloadDocumentAsync(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/signatures/{nodeId}/evidence/": {
      "get": {
        "summary": "हस्ताक्षर साक्ष्य डाउनलोड करें",
        "description": "हस्ताक्षरकर्ता का साक्ष्य PDF डाउनलोड करें: स्तर और प्रारूप, हस्ताक्षरकर्ता, IP पता, प्रत्येक दस्तावेज़ अपने मूल SHA-256 और फ़ील्ड मानों के साथ, और प्रत्येक हस्ताक्षरित फ़ाइल का SHA-256, साथ ही Advanced (AES) हस्ताक्षर के लिए, सत्यापित पहचान सत्र, कोड पुष्टिकरण, प्रमाणपत्र और टाइमस्टैम्प। `signatures[]` में हस्ताक्षरकर्ता के आइटम के `evidence_file` पथ का उपयोग करें।\n\nजब किसी व्यवसाय सत्यापन (KYB) चरण में कई हस्ताक्षरकर्ता हों, तो हमेशा `signature_id` पास करें: इसके बिना, रूट चरण के हस्ताक्षरकर्ताओं में से किसी एक को चुन लेता है। `read:sessions` आवश्यक है; आपकी API कुंजी काम करती है।",
        "operationId": "get_v3_session_signature_evidence",
        "x-didit-sdk": {
          "resource": "sessions.signatures",
          "method": "download_evidence",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "nodeId",
            "in": "path",
            "required": true,
            "description": "ई-हस्ताक्षर चरण: `signatures[]` में आइटम का `node_id`।",
            "schema": {
              "type": "string",
              "example": "feature_signature"
            }
          },
          {
            "name": "signature_id",
            "in": "query",
            "required": false,
            "description": "`signatures[]` में हस्ताक्षरकर्ता के आइटम का `id`।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "साक्ष्य PDF।",
            "headers": {
              "Content-Disposition": {
                "description": "फ़ाइल नाम के साथ अटैचमेंट।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"signature-evidence.pdf\""
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, या ऐसा क्रेडेंशियल है जो इस सत्र को पढ़ नहीं सकता। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "You do not have permission to perform this action."
                }
              }
            }
          },
          "404": {
            "description": "कोई साक्ष्य मेल नहीं खाता: सत्र, चरण या हस्ताक्षरकर्ता मौजूद नहीं है, हटा दिया गया था, या उसने हस्ताक्षर नहीं किए हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not signed yet": {
                    "summary": "हस्ताक्षरकर्ता ने हस्ताक्षर नहीं किए हैं",
                    "value": {
                      "code": "signature_not_signed",
                      "detail": "signature_not_signed"
                    }
                  },
                  "Unknown signer": {
                    "summary": "इस चरण में ऐसा कोई हस्ताक्षर नहीं है",
                    "value": {
                      "code": "signature_not_found",
                      "detail": "signature_not_found"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "संग्रहीत फ़ाइल अब इसके रिकॉर्ड किए गए SHA-256 से मेल नहीं खाती। कुछ भी वापस नहीं किया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Changed file": {
                    "summary": "स्टोर की गई फ़ाइल अपने हैश से मेल नहीं खाती",
                    "value": {
                      "code": "signature_document_changed",
                      "detail": "signature_document_changed"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.signatures.download_evidence(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"feature_signature\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.signatures.downloadEvidence(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n);\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.Signatures.DownloadEvidence(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", didit.SessionsSignaturesDownloadEvidenceParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().signatures().downloadEvidence(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->signatures->downloadEvidence('11111111-2222-3333-4444-555555555555', 'feature_signature');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.signatures.download_evidence(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\"\n)\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.Signatures.DownloadEvidenceAsync(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/signatures/{nodeId}/fields/{fieldId}/image/": {
      "get": {
        "summary": "हस्ताक्षर छवि डाउनलोड करें",
        "description": "हस्ताक्षरकर्ता द्वारा किसी फ़ील्ड पर लागू किया गया हस्ताक्षर या आद्याक्षर PNG के रूप में डाउनलोड करें। `signatures[].documents[].fields[]` में फ़ील्ड के `image_url` का उपयोग करें। `read:sessions` आवश्यक है; आपकी API कुंजी काम करती है।",
        "operationId": "get_v3_session_signature_field_image",
        "x-didit-sdk": {
          "resource": "sessions.signatures",
          "method": "download_field_image",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "nodeId",
            "in": "path",
            "required": true,
            "description": "ई-हस्ताक्षर चरण: `signatures[]` में आइटम का `node_id`।",
            "schema": {
              "type": "string",
              "example": "feature_signature"
            }
          },
          {
            "name": "fieldId",
            "in": "path",
            "required": true,
            "description": "इस हस्ताक्षरकर्ता की प्रति पर फ़ील्ड, जैसा कि फ़ील्ड के `image_url` में है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "छवि।",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "संग्रहीत छवि अब इसके रिकॉर्ड किए गए SHA-256 से मेल नहीं खाती।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "code": "signature_document_changed",
                  "detail": "signature_document_changed"
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, या ऐसा क्रेडेंशियल है जो इस सत्र को पढ़ नहीं सकता। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "You do not have permission to perform this action."
                }
              }
            }
          },
          "404": {
            "description": "कोई छवि मेल नहीं खाती: सत्र, चरण या फ़ील्ड मौजूद नहीं है, हटा दिया गया था, या उस पर कोई लागू हस्ताक्षर या आद्याक्षर नहीं हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown field": {
                    "summary": "ऐसी कोई फ़ील्ड नहीं है",
                    "value": {
                      "code": "signature_field_not_found",
                      "detail": "signature_field_not_found"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.signatures.download_field_image(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"feature_signature\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nwith open(\"download.png\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.signatures.downloadFieldImage(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nawait writeFile(\"download.png\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.Signatures.DownloadFieldImage(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.png\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().signatures().downloadFieldImage(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\")\n        .writeTo(Path.of(\"download.png\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->signatures->downloadFieldImage('11111111-2222-3333-4444-555555555555', 'feature_signature', '11111111-2222-3333-4444-555555555555');\n$content->saveTo('download.png');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.signatures.download_field_image(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nFile.binwrite(\"download.png\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.Signatures.DownloadFieldImageAsync(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", \"11111111-2222-3333-4444-555555555555\");\nawait content.SaveToAsync(\"download.png\");"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/signatures/{nodeId}/validate/": {
      "post": {
        "summary": "हस्ताक्षर पुनः सत्यापित करें",
        "description": "ई-हस्ताक्षर चरण के हस्ताक्षरित दस्तावेज़ों की पुनः जांच करें। Didit प्रत्येक हस्ताक्षरित PDF को फिर से पढ़ता है, उसके SHA-256 की जांच करता है और एक उन्नत (AES) हस्ताक्षर के लिए, PAdES हस्ताक्षर, प्रमाणपत्र, निरसन डेटा और टाइमस्टैम्प को मान्य करता है (एक सरल हस्ताक्षर में कोई डिजिटल हस्ताक्षर नहीं होता है, इसलिए केवल फ़ाइल अखंडता की जांच की जाती है), फिर परिणाम को प्रत्येक हस्ताक्षरकर्ता के `validation` में सहेजता है और अपडेट किए गए आइटम लौटाता है। कुछ भी दोबारा हस्ताक्षरित नहीं किया जाता है। किसी एक हस्ताक्षरकर्ता की जांच करने के लिए `signature_id` भेजें; इसके बिना, चरण के प्रत्येक हस्ताक्षरकर्ता की जांच की जाती है, और यदि उनमें से किसी ने हस्ताक्षर नहीं किए हैं तो कॉल विफल हो जाती है।\n\n`write:sessions` की आवश्यकता है; आपकी API कुंजी काम करती है। कंसोल में यह **Validate again** बटन है।",
        "operationId": "post_v3_session_signature_validate",
        "x-didit-sdk": {
          "resource": "sessions.signatures",
          "method": "validate",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "nodeId",
            "in": "path",
            "required": true,
            "description": "ई-हस्ताक्षर चरण: `signatures[]` में आइटम का `node_id`।",
            "schema": {
              "type": "string",
              "example": "feature_signature"
            }
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "signature_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "`signatures[]` में एक हस्ताक्षरकर्ता के आइटम का `id`।"
                  }
                }
              },
              "example": {
                "signature_id": "0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "जाँचे गए हस्ताक्षरकर्ता, उनके अद्यतन `validation` के साथ।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "signatures": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SignatureResult"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक संग्रहीत हस्ताक्षरित PDF अब हस्ताक्षर किए जाने के समय रिकॉर्ड किए गए SHA-256 से मेल नहीं खाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Document changed": {
                    "summary": "हस्ताक्षरित फ़ाइल अब अपने हैश से मेल नहीं खाती",
                    "value": {
                      "code": "signature_document_changed",
                      "detail": "signature_document_changed"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, या ऐसा क्रेडेंशियल है जो इस सत्र को पढ़ नहीं सकता। अनुपलब्ध कुंजी `403` लौटाती है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "You do not have permission to perform this action."
                }
              }
            }
          },
          "404": {
            "description": "कोई हस्ताक्षर मेल नहीं खाता: सत्र, चरण या हस्ताक्षरकर्ता मौजूद नहीं है या हटा दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown signer": {
                    "summary": "इस चरण में ऐसा कोई हस्ताक्षर नहीं है",
                    "value": {
                      "code": "signature_not_found",
                      "detail": "signature_not_found"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "चरण के एक हस्ताक्षरकर्ता ने हस्ताक्षर नहीं किए हैं, इसलिए सत्यापित करने के लिए कुछ भी नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string"
                    },
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not signed": {
                    "summary": "एक हस्ताक्षरकर्ता ने अभी तक हस्ताक्षर नहीं किए हैं",
                    "value": {
                      "code": "signature_not_signed",
                      "detail": "signature_not_signed"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.signatures.validate(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"feature_signature\",\n    signature_id=\"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.signatures.validate(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  {\n    signature_id: \"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\",\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Signatures.Validate(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", didit.SessionsSignaturesValidateParams{\n\tSignatureID: didit.String(\"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsSignaturesValidateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().signatures().validate(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", SessionsSignaturesValidateParams.builder()\n        .signatureId(\"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->signatures->validate('11111111-2222-3333-4444-555555555555', 'feature_signature', [\n    'signature_id' => '0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.signatures.validate(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"feature_signature\",\n  signature_id: \"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Signatures.ValidateAsync(\"11111111-2222-3333-4444-555555555555\", \"feature_signature\", new SessionsSignaturesValidateParams\n{\n    SignatureId = \"0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/document-ai/{sessionId}/documents/{documentUuid}/": {
      "patch": {
        "summary": "एक Document AI दस्तावेज़ अपडेट करें",
        "description": "एक KYC या KYB सत्र पर, Document AI द्वारा एक अपलोड किए गए दस्तावेज़ से निकाले गए फ़ील्ड को सही करें, इसकी समीक्षा स्थिति सेट करें, या दोनों करें। `extracted_data` एक JSON ऑब्जेक्ट होना चाहिए और इसे कुंजी दर कुंजी मर्ज किया जाता है: आपके द्वारा भेजी गई कुंजी संग्रहीत मान को बदल देती है (`null` के रूप में भेजी गई कुंजी `null` के रूप में संग्रहीत होती है) और जो कुंजियाँ आप छोड़ देते हैं वे अपने मान बनाए रखती हैं। दस्तावेज़ की स्थिति सत्र निर्णय में इसके वर्कफ़्लो नोड के Document AI परिणाम को फ़ीड करती है; सत्र स्थिति की स्वयं पुनर्गणना नहीं की जाती है। प्रत्येक सफल कॉल, जिसमें कुछ भी नहीं बदलने वाली कॉल भी शामिल है, `manual_review` ट्रिगर के साथ एक `data.updated` [webhook](https://docs.didit.me/hi/integration/webhooks) भेजती है। एक स्कोप्ड API कुंजी को `decisions: write` की आवश्यकता होती है; [Document AI](https://docs.didit.me/hi/core-technology/document-ai/overview) देखें।",
        "operationId": "patch_v3_document_ai_document",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_document_ai_data",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है: सर्वर दोनों सत्र प्रकारों में ID को रिज़ॉल्व करता है। यह एक सही प्रारूप वाला UUID होना चाहिए; गलत प्रारूप वाला मान रूट से मेल नहीं खाता है और एक HTML `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "documentUuid",
            "in": "path",
            "required": true,
            "description": "Document AI दस्तावेज़ का UUID (`GET /v3/session/{sessionId}/decision/` में `document_ai_documents[].items[].uuid`)। यह पाथ के सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "44444444-5555-6666-7777-888888888888"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "extracted_data": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "फ़ील्ड कुंजियाँ (दस्तावेज़ के लिए आपके द्वारा कॉन्फ़िगर की गई कुंजियाँ) और उनके सही किए गए मान। एक JSON ऑब्जेक्ट होना चाहिए; संग्रहीत डेटा में कुंजी दर कुंजी मर्ज किया जाता है। `null` भेजने के बजाय इसे छोड़ दें, जिससे `400` वापस आता है।",
                    "example": {
                      "invoice_number": "INV-2026-0042"
                    }
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "Approved",
                      "Declined",
                      "In Review",
                      "Not Finished"
                    ],
                    "description": "दस्तावेज़ की नई समीक्षा स्थिति।",
                    "example": "Approved"
                  }
                }
              },
              "example": {
                "extracted_data": {
                  "invoice_number": "INV-2026-0042"
                },
                "status": "Approved"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/document-ai/11111111-2222-3333-4444-555555555555/documents/44444444-5555-6666-7777-888888888888/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"extracted_data\": {\"invoice_number\": \"INV-2026-0042\"}, \"status\": \"Approved\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_document_ai_data(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"44444444-5555-6666-7777-888888888888\",\n    extracted_data={\"invoice_number\": \"INV-2026-0042\"},\n    status=\"Approved\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateDocumentAiData(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"44444444-5555-6666-7777-888888888888\",\n  {\n    extracted_data: { invoice_number: \"INV-2026-0042\" },\n    status: \"Approved\",\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateDocumentAiData(ctx, \"11111111-2222-3333-4444-555555555555\", \"44444444-5555-6666-7777-888888888888\", didit.SessionsUpdateDocumentAiDataParams{\n\tExtractedData: didit.Some(map[string]any{\"invoice_number\": \"INV-2026-0042\"}),\n\tStatus:        didit.Some(didit.SessionsUpdateDocumentAiDataParamsStatus(\"Approved\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsUpdateDocumentAiDataParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateDocumentAiData(\"11111111-2222-3333-4444-555555555555\", \"44444444-5555-6666-7777-888888888888\", SessionsUpdateDocumentAiDataParams.builder()\n        .extractedData(Map.of(\"invoice_number\", \"INV-2026-0042\"))\n        .status(SessionsUpdateDocumentAiDataParams.Status.of(\"Approved\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateDocumentAiData('11111111-2222-3333-4444-555555555555', '44444444-5555-6666-7777-888888888888', [\n    'extracted_data' => ['invoice_number' => 'INV-2026-0042'],\n    'status' => 'Approved',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_document_ai_data(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"44444444-5555-6666-7777-888888888888\",\n  extracted_data: { invoice_number: \"INV-2026-0042\" },\n  status: \"Approved\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateDocumentAiDataAsync(\"11111111-2222-3333-4444-555555555555\", \"44444444-5555-6666-7777-888888888888\", new SessionsUpdateDocumentAiDataParams\n{\n    ExtractedData = new Dictionary<string, object> { [\"invoice_number\"] = \"INV-2026-0042\" },\n    Status = new SessionsUpdateDocumentAiDataParamsStatus(\"Approved\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "दस्तावेज़ अपडेट किया गया। मर्ज के बाद दस्तावेज़ लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "uuid",
                    "document_key",
                    "original_filename",
                    "file_url",
                    "status",
                    "extracted_data"
                  ],
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "दस्तावेज़ पहचानकर्ता।"
                    },
                    "document_key": {
                      "type": "string",
                      "description": "कॉन्फ़िगर किया गया दस्तावेज़ जिससे यह अपलोड संबंधित है।"
                    },
                    "original_filename": {
                      "type": "string",
                      "nullable": true,
                      "description": "फ़ाइल नाम जिसके साथ दस्तावेज़ अपलोड किया गया था।"
                    },
                    "file_url": {
                      "type": "string",
                      "nullable": true,
                      "description": "अपलोड की गई फ़ाइल का स्टोरेज पाथ। यह कोई डाउनलोड लिंक नहीं है: फ़ाइल डाउनलोड करने के लिए सत्र निर्णय से प्री-साइन्ड `file_url` पढ़ें।"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "Not Finished",
                        "Approved",
                        "Declined",
                        "In Review",
                        "Resub Requested"
                      ],
                      "description": "दस्तावेज़ की समीक्षा स्थिति।"
                    },
                    "extracted_data": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "मर्ज के बाद सभी निकाले गए फ़ील्ड, जिन्हें फ़ील्ड कुंजी द्वारा व्यवस्थित किया गया है।"
                    }
                  }
                },
                "example": {
                  "uuid": "44444444-5555-6666-7777-888888888888",
                  "document_key": "invoice",
                  "original_filename": "invoice-2026-09.pdf",
                  "file_url": "document_ai/11111111-2222-3333-4444-555555555555-66666666-7777-8888-9999-000000000000.pdf",
                  "status": "Approved",
                  "extracted_data": {
                    "invoice_number": "INV-2026-0042",
                    "total_amount": 1250.0,
                    "issue_date": "2026-09-01"
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि, दस्तावेज़ देखे जाने से पहले जांची गई: `status` अनुमत मानों में से एक नहीं है, या `extracted_data` को `null` के रूप में भेजा गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid status": {
                    "summary": "status enum में नहीं है",
                    "value": {
                      "status": [
                        "\"Rejected\" is not a valid choice."
                      ]
                    }
                  },
                  "Null extracted_data": {
                    "summary": "extracted_data null है",
                    "value": {
                      "extracted_data": [
                        "This field may not be null."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है, या इस UUID वाला कोई वर्तमान दस्तावेज़ इससे संबंधित नहीं है। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी की सीमाओं से बाहर है (कुछ क्षण पहले हटाए गए सत्र के लिए भी लौटाया जाता है)",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Unknown document": {
                    "summary": "documentUuid सत्र से संबंधित नहीं है",
                    "value": {
                      "detail": "Document AI document not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/aml/dataset-freshness/": {
      "get": {
        "summary": "AML डेटासेट की ताज़गी प्राप्त करें",
        "description": "[सतत AML निगरानी](https://docs.didit.me/hi/core-technology/aml-screening/continuous-monitoring-aml-screening#यह-प्रमाणित-करना-कि-निगरानी-चली-थी) के लिए ऑडिट साक्ष्य के रूप में रिपोर्ट करें कि AML स्क्रीनिंग के पीछे के डेटासेट प्रति स्रोत फ़ैमिली (`sanctions`, `pep`, `warnings`, `adverse_media`) कितने अद्यतित हैं। यह उत्तर पूरे प्लेटफ़ॉर्म पर लागू होता है: पाथ में कोई सत्र नहीं, बॉडी में कोई ग्राहक डेटा नहीं, प्रत्येक एप्लिकेशन के लिए समान उत्तर।\n\nस्वीकृत कुंजी के लिए हमेशा `200`। पहले `availability` की जाँच करें: जब यह `available` नहीं होता है, तो `dataset_freshness` `null` होता है। तिथियों का अनुमान कभी नहीं लगाया जाता है: जिस फ़ैमिली के डेटासेट ने किसी तिथि की रिपोर्ट नहीं की है, वह `sources` से अनुपस्थित है, और ऐसी फ़ैमिली जहां केवल कुछ डेटासेट ने तिथि की रिपोर्ट की है, उसमें `oldest_updated_at: null` होता है। रीडिंग तब ली जाती है जब सतत निगरानी चलती है, प्रत्येक कॉल पर नहीं; `captured_at` बताता है कि कब ली गई।\n\nएक स्कोप्ड API कुंजी को `sessions: read` की आवश्यकता होती है; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint को कॉल नहीं कर सकती है। कोई शुल्क नहीं लिया जाता है।",
        "operationId": "get_aml_dataset_freshness",
        "x-didit-sdk": {
          "resource": "aml",
          "method": "retrieve_dataset_freshness",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "parameters": [],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/aml/dataset-freshness/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.aml.retrieve_dataset_freshness()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.aml.retrieveDatasetFreshness();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.AML.RetrieveDatasetFreshness(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.aml().retrieveDatasetFreshness();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->aml->retrieveDatasetFreshness();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.aml.retrieve_dataset_freshness\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Aml.RetrieveDatasetFreshnessAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नवीनतम डेटासेट फ्रेशनेस रीडिंग, या कारण के साथ `null`।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "dataset_freshness",
                    "availability"
                  ],
                  "properties": {
                    "dataset_freshness": {
                      "allOf": [
                        {
                          "$ref": "#/components/schemas/AMLDatasetFreshness"
                        }
                      ],
                      "nullable": true,
                      "description": "नवीनतम रीडिंग, या `availability` के `available` न होने पर `null`।"
                    },
                    "availability": {
                      "type": "string",
                      "enum": [
                        "available",
                        "not_configured",
                        "not_yet_collected"
                      ],
                      "description": "रीडिंग मौजूद होने पर `available`; इस एनवायरनमेंट में डेटासेट तिथियां एकत्र नहीं होने पर `not_configured`; संग्रह सेट होने पर लेकिन अभी तक कोई रीडिंग मौजूद नहीं होने पर `not_yet_collected`।"
                    }
                  }
                },
                "examples": {
                  "Available": {
                    "value": {
                      "dataset_freshness": {
                        "captured_at": "2026-10-17T06:00:12.345678+00:00",
                        "provider": "aml_data_source",
                        "catalog_version": "20261017054500-abc",
                        "sources": {
                          "sanctions": {
                            "last_updated_at": "2026-10-17T04:10:00+00:00",
                            "oldest_updated_at": "2026-10-15T22:30:00+00:00",
                            "dataset_count": 48,
                            "dated_dataset_count": 48
                          },
                          "pep": {
                            "last_updated_at": "2026-10-16T23:05:00+00:00",
                            "oldest_updated_at": null,
                            "dataset_count": 12,
                            "dated_dataset_count": 11
                          }
                        }
                      },
                      "availability": "available"
                    }
                  },
                  "Not collected yet": {
                    "value": {
                      "dataset_freshness": null,
                      "availability": "not_yet_collected"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। एक अनुपलब्ध कुंजी को सामान्य संदेश मिलता है; एक गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without sessions read": {
                    "value": {
                      "detail": "This API key has no read access to sessions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/lists/": {
      "get": {
        "summary": "सूचियाँ सूचीबद्ध करें",
        "description": "एप्लिकेशन की सूचियाँ लौटाता है, नवीनतम पहले: सिस्टम सूचियाँ जो Didit प्रदान करता है (प्रति प्रविष्टि प्रकार एक ब्लॉकलिस्ट, **High Risk Countries** कस्टम सूची, और कोई भी सिस्टम allowlist) और आपके द्वारा बनाई गई allowlists और कस्टम सूचियाँ। `list_type` और `entry_type` के साथ फ़िल्टर करें; हटाई गई सूचियाँ कभी दिखाई नहीं देती हैं। परिणाम `limit` और `offset` के साथ पेजिनेटेड होते हैं। एक स्कोप्ड API कुंजी के लिए `workflows: read` आवश्यक है। प्रत्येक सूची प्रकार क्या करता है, इसके लिए [सूचियाँ](https://docs.didit.me/hi/management-api/lists/overview) देखें।",
        "operationId": "list_lists",
        "x-didit-sdk": {
          "resource": "lists",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_type",
            "in": "query",
            "required": false,
            "description": "केवल इस प्रकार की सूचियाँ।",
            "schema": {
              "type": "string",
              "enum": [
                "blocklist",
                "allowlist",
                "custom"
              ]
            }
          },
          {
            "name": "entry_type",
            "in": "query",
            "required": false,
            "description": "केवल इस प्रविष्टि प्रकार की सूचियाँ।",
            "schema": {
              "type": "string",
              "enum": [
                "face",
                "document",
                "phone",
                "email",
                "ip_address",
                "device_fingerprint",
                "wallet_address",
                "bank_account",
                "country",
                "user",
                "business",
                "key"
              ]
            }
          },
          {
            "name": "ordering",
            "in": "query",
            "required": false,
            "description": "सॉर्ट क्रम: `-created_at` (सबसे नए पहले, डिफ़ॉल्ट) या `created_at` (सबसे पुराने पहले)।",
            "schema": {
              "type": "string",
              "enum": [
                "-created_at",
                "created_at"
              ],
              "default": "-created_at"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "पेज का आकार। डिफ़ॉल्ट 50 है। 1000000 से अधिक मान `400` लौटाता है; शून्य, ऋणात्मक या गैर-संख्यात्मक मान 50 पर वापस आ जाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "लौटाए जाने वाले पहले आइटम का शून्य-आधारित इंडेक्स। `next` का अनुसरण करना बेहतर है। 1000000 से अधिक का मान `400` लौटाता है; ऋणात्मक या गैर-संख्यात्मक मान 0 पर वापस चला जाता है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/lists/?list_type=blocklist' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.lists.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.lists.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Lists.ListAutoPaging(ctx, didit.ListsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.lists().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->lists->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.lists.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Lists.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "सूचियों का एक पेज।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "फ़िल्टर से मेल खाने वाली सूचियों की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ComplianceList"
                      }
                    }
                  }
                },
                "examples": {
                  "Lists": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "22222222-3333-4444-5555-666666666666",
                          "name": "Trusted office IPs",
                          "description": "Office egress ranges",
                          "list_type": "allowlist",
                          "entry_type": "ip_address",
                          "is_system": false,
                          "entry_count": 3,
                          "last_entry_added_at": "2026-10-02T08:15:27.501334Z",
                          "created_at": "2026-09-30T13:20:45.889120Z",
                          "updated_at": "2026-09-30T13:20:45.889120Z"
                        },
                        {
                          "uuid": "11111111-2222-3333-4444-555555555555",
                          "name": "Face Blocklist",
                          "description": "Blocked biometric faces. When a face matching an entry in this list is detected during liveness verification, the session will be automatically declined.",
                          "list_type": "blocklist",
                          "entry_type": "face",
                          "is_system": true,
                          "entry_count": 12,
                          "last_entry_added_at": "2026-10-09T16:42:03.118204Z",
                          "created_at": "2026-01-14T10:02:11.402917Z",
                          "updated_at": "2026-01-14T10:02:11.402917Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक क्वेरी पैरामीटर अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown list type": {
                    "value": {
                      "list_type": [
                        "\"denylist\" is not a valid choice."
                      ]
                    }
                  },
                  "Unsupported ordering": {
                    "value": {
                      "ordering": [
                        "\"name\" is not a valid choice."
                      ]
                    }
                  },
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: read` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no read access to workflows."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "प्रति API कुंजी प्रति मिनट 600 अनुरोधों की साझा पढ़ने की सीमा पार हो गई। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "एक सूची बनाएँ",
        "description": "उस एप्लिकेशन में एक अनुमति सूची या एक कस्टम सूची बनाता है जिससे API कुंजी संबंधित है। ब्लॉकलिस्ट नहीं बनाई जा सकती हैं: Didit प्रति प्रविष्टि प्रकार एक सिस्टम ब्लॉकलिस्ट प्रदान करता है, और आप [Create a list entry](https://docs.didit.me/hi/management-api/lists/create-entry) के साथ इसमें जोड़ते हैं। `entry_type` निर्माण के बाद नहीं बदल सकता है और यह तय करता है कि प्रविष्टि मानों को कैसे मान्य और मिलान किया जाए। अनुमति सूची की प्रविष्टियां मेल खाने वाले आइटमों को विश्वसनीय के रूप में चिह्नित करती हैं (उदाहरण के लिए, एक फ़ेस अनुमति सूची डुप्लिकेट-फ़ेस कार्रवाई को छोड़ देती है) और कभी भी ब्लॉकलिस्ट मिलान को ओवरराइड नहीं करती हैं; `value_type: \"list\"` के साथ किसी वर्कफ़्लो या लेन-देन नियम शर्त से किसी भी सूची को संदर्भित करें। स्कोप्ड API कुंजी के लिए `workflows: write` की आवश्यकता होती है।",
        "operationId": "create_list",
        "x-didit-sdk": {
          "resource": "lists",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "name",
                  "list_type",
                  "entry_type"
                ],
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "सूची का नाम। यह एप्लिकेशन की हर दूसरी सूची के नाम से भिन्न होना चाहिए, जिसमें सिस्टम सूचियाँ भी शामिल हैं।"
                  },
                  "description": {
                    "type": "string",
                    "default": "",
                    "description": "वैकल्पिक फ़्री-टेक्स्ट विवरण।"
                  },
                  "list_type": {
                    "type": "string",
                    "enum": [
                      "allowlist",
                      "custom"
                    ],
                    "description": "`allowlist` या `custom`। `blocklist` को `400` के साथ अस्वीकार कर दिया जाता है।"
                  },
                  "entry_type": {
                    "type": "string",
                    "enum": [
                      "face",
                      "document",
                      "phone",
                      "email",
                      "ip_address",
                      "device_fingerprint",
                      "wallet_address",
                      "bank_account",
                      "country",
                      "user",
                      "business",
                      "key"
                    ],
                    "description": "सूची में क्या समाहित है: `face`, `document` (दस्तावेज़ संख्या), `phone`, `email`, `ip_address` (IP पता या CIDR रेंज), `device_fingerprint`, `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` या `business` (आपका `vendor_data`), या `key` (कोई भी स्ट्रिंग)। यह तय करता है कि प्रविष्टि मानों को कैसे मान्य और मिलान किया जाता है। बाद में बदला नहीं जा सकता।"
                  }
                }
              },
              "examples": {
                "IP allowlist": {
                  "value": {
                    "name": "Trusted office IPs",
                    "description": "Office egress ranges",
                    "list_type": "allowlist",
                    "entry_type": "ip_address"
                  }
                },
                "Custom country list": {
                  "value": {
                    "name": "Enhanced due diligence countries",
                    "list_type": "custom",
                    "entry_type": "country"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/lists/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"name\": \"Trusted office IPs\",\n    \"description\": \"Office egress ranges\",\n    \"list_type\": \"allowlist\",\n    \"entry_type\": \"ip_address\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.lists.create(\n    name=\"Trusted office IPs\",\n    description=\"Office egress ranges\",\n    list_type=\"allowlist\",\n    entry_type=\"ip_address\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.lists.create({\n  name: \"Trusted office IPs\",\n  description: \"Office egress ranges\",\n  list_type: \"allowlist\",\n  entry_type: \"ip_address\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Create(ctx, didit.ListsCreateParams{\n\tName:        \"Trusted office IPs\",\n\tDescription: didit.String(\"Office egress ranges\"),\n\tListType:    \"allowlist\",\n\tEntryType:   \"ip_address\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.ListsCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.lists().create(ListsCreateParams.builder()\n        .name(\"Trusted office IPs\")\n        .description(\"Office egress ranges\")\n        .listType(ListsCreateParams.ListType.of(\"allowlist\"))\n        .entryType(ListsCreateParams.EntryType.of(\"ip_address\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->lists->create([\n    'name' => 'Trusted office IPs',\n    'description' => 'Office egress ranges',\n    'list_type' => 'allowlist',\n    'entry_type' => 'ip_address',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.lists.create(\n  name: \"Trusted office IPs\",\n  description: \"Office egress ranges\",\n  list_type: \"allowlist\",\n  entry_type: \"ip_address\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Lists.CreateAsync(new ListsCreateParams\n{\n    Name = \"Trusted office IPs\",\n    Description = \"Office egress ranges\",\n    ListType = \"allowlist\",\n    EntryType = \"ip_address\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "सूची बनाई गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComplianceList"
                },
                "examples": {
                  "New allowlist": {
                    "value": {
                      "uuid": "22222222-3333-4444-5555-666666666666",
                      "name": "Trusted office IPs",
                      "description": "Office egress ranges",
                      "list_type": "allowlist",
                      "entry_type": "ip_address",
                      "is_system": false,
                      "entry_count": 0,
                      "last_entry_added_at": null,
                      "created_at": "2026-10-12T09:15:44.031876Z",
                      "updated_at": "2026-10-12T09:15:44.031876Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Blocklist refused": {
                    "value": {
                      "list_type": [
                        "Cannot create additional blocklist lists. System blocklists are auto-created for each application."
                      ]
                    }
                  },
                  "Duplicate name": {
                    "value": {
                      "name": [
                        "A list with this name already exists for this application."
                      ]
                    }
                  },
                  "Missing fields": {
                    "value": {
                      "name": [
                        "This field is required."
                      ],
                      "list_type": [
                        "This field is required."
                      ],
                      "entry_type": [
                        "This field is required."
                      ]
                    }
                  },
                  "Unknown entry type": {
                    "value": {
                      "entry_type": [
                        "\"iban\" is not a valid choice."
                      ]
                    }
                  },
                  "Name too long": {
                    "value": {
                      "name": [
                        "Ensure this field has no more than 255 characters."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/lists/{list_uuid}/": {
      "get": {
        "summary": "एक सूची प्राप्त करें",
        "description": "एप्लिकेशन की एक सूची, उसकी प्रविष्टि गणना और उसकी नवीनतम प्रविष्टि कब जोड़ी गई थी, इसके साथ लौटाता है। किसी अन्य एप्लिकेशन की सूची, या जिसे हटा दिया गया था, `404` लौटाती है। यह केवल सूची लौटाता है: इसके मानों को [सूची प्रविष्टियाँ सूचीबद्ध करें](https://docs.didit.me/hi/management-api/lists/list-entries) से पढ़ें। एक स्कोप्ड API कुंजी के लिए `workflows: read` आवश्यक है।",
        "operationId": "get_list",
        "x-didit-sdk": {
          "resource": "lists",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "सूची का UUID, जैसा कि List lists या Create a list द्वारा लौटाया गया है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.lists.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.lists.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.lists().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->lists->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.lists.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Lists.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सूची।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComplianceList"
                },
                "examples": {
                  "System face blocklist": {
                    "value": {
                      "uuid": "11111111-2222-3333-4444-555555555555",
                      "name": "Face Blocklist",
                      "description": "Blocked biometric faces. When a face matching an entry in this list is detected during liveness verification, the session will be automatically declined.",
                      "list_type": "blocklist",
                      "entry_type": "face",
                      "is_system": true,
                      "entry_count": 12,
                      "last_entry_added_at": "2026-10-09T16:42:03.118204Z",
                      "created_at": "2026-01-14T10:02:11.402917Z",
                      "updated_at": "2026-01-14T10:02:11.402917Z"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: read` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no read access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No List matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "प्रति API कुंजी प्रति मिनट 600 अनुरोधों की साझा पढ़ने की सीमा पार हो गई। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "एक सूची अपडेट करें",
        "description": "किसी सूची का नाम बदलता है या उसका विवरण बदलता है। केवल `name` और `description` पढ़े जाते हैं; किसी भी अन्य फ़ील्ड को अनदेखा कर दिया जाता है, इसलिए `list_type` और `entry_type` उन मानों को बनाए रखते हैं जिनके साथ वे बनाए गए थे। सिस्टम सूचियों को संशोधित नहीं किया जा सकता है और वे `400` लौटाती हैं। रिस्पॉन्स में केवल `name` और `description` शामिल होते हैं: पूरी सूची के लिए [सूची प्राप्त करें](https://docs.didit.me/hi/management-api/lists/get) को कॉल करें। स्कोप्ड API कुंजी के लिए `workflows: write` की आवश्यकता होती है।",
        "operationId": "update_list",
        "x-didit-sdk": {
          "resource": "lists",
          "method": "update",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "सूची का UUID, जैसा कि List lists या Create a list द्वारा लौटाया गया है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "नया नाम। एप्लिकेशन की हर दूसरी सूची के नाम से भिन्न होना चाहिए।"
                  },
                  "description": {
                    "type": "string",
                    "description": "नया विवरण। इसे हटाने के लिए एक खाली स्ट्रिंग भेजें।"
                  }
                }
              },
              "examples": {
                "Rename": {
                  "value": {
                    "name": "Trusted office and VPN IPs"
                  }
                },
                "Rename and describe": {
                  "value": {
                    "name": "Trusted office and VPN IPs",
                    "description": "Office egress ranges and the corporate VPN"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\": \"Trusted office and VPN IPs\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.lists.update(\n    \"11111111-2222-3333-4444-555555555555\",\n    name=\"Trusted office and VPN IPs\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.lists.update(\"11111111-2222-3333-4444-555555555555\", {\n  name: \"Trusted office and VPN IPs\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.ListsUpdateParams{\n\tName: didit.String(\"Trusted office and VPN IPs\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.ListsUpdateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.lists().update(\"11111111-2222-3333-4444-555555555555\", ListsUpdateParams.builder()\n        .name(\"Trusted office and VPN IPs\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->lists->update('11111111-2222-3333-4444-555555555555', [\n    'name' => 'Trusted office and VPN IPs',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.lists.update(\n  \"11111111-2222-3333-4444-555555555555\",\n  name: \"Trusted office and VPN IPs\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Lists.UpdateAsync(\"11111111-2222-3333-4444-555555555555\", new ListsUpdateParams\n{\n    Name = \"Trusted office and VPN IPs\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सूची अपडेट की गई। केवल संपादन योग्य फ़ील्ड लौटाए जाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "name",
                    "description"
                  ],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "अपडेट के बाद सूची का नाम।"
                    },
                    "description": {
                      "type": "string",
                      "description": "अपडेट के बाद सूची का विवरण।"
                    }
                  }
                },
                "examples": {
                  "Renamed": {
                    "value": {
                      "name": "Trusted office and VPN IPs",
                      "description": "Office egress ranges"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सूची एक सिस्टम सूची है, या बॉडी अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "System list": {
                    "value": {
                      "non_field_errors": [
                        "System lists cannot be modified."
                      ]
                    }
                  },
                  "Duplicate name": {
                    "value": {
                      "name": [
                        "A list with this name already exists for this application."
                      ]
                    }
                  },
                  "Blank name": {
                    "value": {
                      "name": [
                        "This field may not be blank."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No List matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "delete": {
        "summary": "एक सूची हटाएं",
        "description": "अनुमति सूची या कस्टम सूची को उसकी प्रविष्टियों के साथ हटाता है। हटाना अपरिवर्तनीय है: सूची और उसकी प्रविष्टियां अब किसी भी रीड में दिखाई नहीं देती हैं, और वर्कफ़्लो और लेन-देन नियम शर्तें जो सूची को संदर्भित करती हैं, वे तब से इसे एक खाली सूची के रूप में मूल्यांकित करती हैं। पहले से मूल्यांकित सत्र और लेन-देन अपने परिणाम बनाए रखते हैं, और नाम का पुनः उपयोग नई सूची के लिए किया जा सकता है। सिस्टम सूचियों को हटाया नहीं जा सकता और वे `400` लौटाती हैं; किसी सूची को खाली करने के लिए, [उसकी प्रविष्टियां हटाएं](https://docs.didit.me/hi/management-api/lists/delete-entry)। एक स्कोप्ड API कुंजी को `workflows: write` की आवश्यकता होती है।",
        "operationId": "delete_list",
        "x-didit-sdk": {
          "resource": "lists",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "सूची का UUID, जैसा कि List lists या Create a list द्वारा लौटाया गया है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.lists.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.lists.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Lists.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.lists().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->lists->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.lists.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Lists.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ],
        "responses": {
          "204": {
            "description": "सूची और इसकी प्रविष्टियाँ हटा दी गईं। कोई बॉडी नहीं।"
          },
          "400": {
            "description": "सूची एक सिस्टम सूची है।",
            "content": {
              "application/json": {
                "examples": {
                  "System list": {
                    "value": {
                      "detail": "System lists cannot be deleted."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे पहले ही हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No List matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/lists/{list_uuid}/entries/": {
      "get": {
        "summary": "सूची प्रविष्टियाँ सूचीबद्ध करें",
        "description": "एक सूची की वर्तमान प्रविष्टियाँ लौटाता है, नवीनतम पहले। `search` केस की परवाह किए बिना किसी प्रविष्टि के `value` या `display_label` के हिस्से से मेल खाता है, और `reference_session_id` परिणामों को एक व्यक्ति सत्यापन सत्र से ली गई प्रविष्टियों तक सीमित करता है। `metadata` में इमेज URL अल्पकालिक हस्ताक्षरित URL होते हैं जो प्रत्येक कॉल पर पुनः जारी किए जाते हैं; बिना `media: read` वाली एक स्कोप्ड API कुंजी को उनके स्थान पर `null` प्राप्त होता है। एक स्कोप्ड API कुंजी के लिए `workflows: read` आवश्यक है।",
        "operationId": "list_list_entries",
        "x-didit-sdk": {
          "resource": "lists.entries",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "सूची का UUID, जैसा कि List lists या Create a list द्वारा लौटाया गया है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "केस-इनसेंसिटिव टेक्स्ट जो प्रविष्टि के `value` या `display_label` में होना चाहिए।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference_session_id",
            "in": "query",
            "required": false,
            "description": "केवल इस व्यक्ति के सत्यापन सत्र से ली गई प्रविष्टियाँ, उदाहरण के लिए यह देखने के लिए कि इसके कौन से चेहरे पहले से सूचीबद्ध हैं।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "पेज का आकार। डिफ़ॉल्ट 50 है। 1000000 से अधिक मान `400` लौटाता है; शून्य, ऋणात्मक या गैर-संख्यात्मक मान 50 पर वापस आ जाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "लौटाए जाने वाले पहले आइटम का शून्य-आधारित इंडेक्स। `next` का अनुसरण करना बेहतर है। 1000000 से अधिक का मान `400` लौटाता है; ऋणात्मक या गैर-संख्यात्मक मान 0 पर वापस चला जाता है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/entries/?search=example.com' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.lists.entries.list(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.lists.entries.list(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Lists.Entries.ListAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.ListsEntriesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.lists().entries().list(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->lists->entries->list('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.lists.entries.list(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Lists.Entries.ListAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रविष्टियों का एक पेज, सबसे नई पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "फ़िल्टर से मेल खाने वाली प्रविष्टियों की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ComplianceListEntry"
                      }
                    }
                  }
                },
                "examples": {
                  "Entries": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff",
                          "value": "X1234567",
                          "display_label": "Jane Doe - X1234567",
                          "comment": "",
                          "added_by": "api",
                          "reference_session_id": "33333333-4444-5555-6666-777777777777",
                          "reference_session_number": 1042,
                          "reference_session_type": "kyc",
                          "reference_object_uuid": "66666666-7777-8888-9999-000000000000",
                          "metadata": {
                            "full_name": "Jane Doe",
                            "issuing_state": "ESP",
                            "document_type": "ID",
                            "region": "",
                            "document_number": "X1234567"
                          },
                          "created_at": "2026-10-12T10:06:12.774915Z"
                        },
                        {
                          "uuid": "eeeeeeee-ffff-0000-1111-222222222222",
                          "value": "y7654321",
                          "display_label": "",
                          "comment": "Reported by a partner",
                          "added_by": "api",
                          "reference_session_id": null,
                          "reference_session_number": null,
                          "reference_session_type": null,
                          "reference_object_uuid": null,
                          "metadata": null,
                          "created_at": "2026-10-03T07:48:30.552810Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक क्वेरी पैरामीटर अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid session id": {
                    "value": {
                      "reference_session_id": [
                        "Must be a valid UUID."
                      ]
                    }
                  },
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: read` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no read access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "List not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "प्रति API कुंजी प्रति मिनट 600 अनुरोधों की साझा पढ़ने की सीमा पार हो गई। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "एक सूची प्रविष्टि बनाएँ",
        "description": "किसी सूची में तीन तरीकों में से किसी एक से एक प्रविष्टि जोड़ता है: `value` द्वारा; `reference_session_id` वाले सत्यापन सत्र से, जहाँ Didit सत्र में सूची के प्रविष्टि प्रकार के सबसे हालिया रिकॉर्ड से मान पढ़ता है और प्रविष्टि को उससे लिंक करता है; या किसी लेन-देन, उपयोगकर्ता या व्यवसाय की ओर वापस इंगित करने वाले `reference_object_uuid` और `metadata.reference_type` के साथ `value` द्वारा। सिस्टम फ़ेस, दस्तावेज़, फ़ोन और ईमेल ब्लॉकलिस्ट पर, सत्र से पढ़े गए रिकॉर्ड को ब्लॉकलिस्टेड के रूप में भी फ़्लैग किया जाता है, जिससे नए मेल खाने वाले सत्र अस्वीकृत हो जाते हैं; सिस्टम उपयोगकर्ता और व्यवसाय ब्लॉकलिस्ट पर, मेल खाने वाले उपयोगकर्ताओं या व्यवसायों को `BLOCKED` पर सेट किया जाता है। पहले ही समाप्त हो चुके सत्र और लेन-देन नहीं बदले जाते हैं। स्कोप्ड API कुंजी को `workflows: write` की आवश्यकता होती है। प्रत्येक मोड के लिए [सूची प्रविष्टि बनाएँ](https://docs.didit.me/hi/management-api/lists/create-entry) देखें।",
        "operationId": "create_list_entry",
        "x-didit-sdk": {
          "resource": "lists.entries",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "जिस सूची में जोड़ना है उसका UUID। ऐसे चेहरे के लिए जो आपके पास केवल एक छवि के रूप में है, इसके बजाय Upload a face to a list का उपयोग करें।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "`value`, `reference_session_id`, या दोनों भेजें। कौन से फ़ील्ड लागू होते हैं यह सूची के `entry_type` पर निर्भर करता है।",
                "properties": {
                  "value": {
                    "type": "string",
                    "description": "सूचीबद्ध करने योग्य मान, जिसे सूची के `entry_type` के विरुद्ध मान्य किया गया है: `email` एक मान्य ईमेल पता; `phone` एक मान्य अंतर्राष्ट्रीय नंबर, जो E.164 में संग्रहीत है; `ip_address` एक IP पता या CIDR रेंज (उदाहरण के लिए `10.0.0.0/8`); `device_fingerprint` अक्षरों, अंकों, `-`, `_`, `:` और `.` में से कम से कम 8 वर्ण (एक ब्लॉकलिस्ट उस फ़िंगरप्रिंट को अस्वीकार कर देती है जिसे कई अलग-अलग डिवाइसों ने रिपोर्ट किया है); `country` एक ISO 3166-1 alpha-2 या alpha-3 कोड, जो alpha-3 के रूप में संग्रहीत है; `user` और `business` `vendor_data`; कोई अन्य प्रकार एक गैर-रिक्त स्ट्रिंग। फ़ोन नंबरों और देश कोडों को छोड़कर लोअरकेस में संग्रहीत किया जाता है, और एक सूची प्रत्येक मान को एक बार रखती है (केस-असंवेदनशील)। जब तक `reference_session_id` नहीं भेजा जाता तब तक आवश्यक है; दस्तावेज़-कैप्चर `face_image_source` के साथ इसे खाली छोड़ दिया जाना चाहिए।"
                  },
                  "reference_session_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "आपके एप्लिकेशन का एक व्यक्ति या व्यवसाय सत्यापन सत्र जिससे मान लिया जाना है। Didit सूची के प्रविष्टि प्रकार (`face`, `document`, `phone`, `email`, `ip_address` या `device_fingerprint`) से संबंधित सत्र के सबसे हालिया रिकॉर्ड को पढ़ता है, प्रविष्टि को सत्र और उस रिकॉर्ड से लिंक करता है, और दस्तावेज़ों के लिए `display_label` और `metadata` भरता है। `device_fingerprint` ब्लॉकलिस्ट के लिए, ऐसा सत्र जिसमें केवल डिवाइस-क्लास फ़िंगरप्रिंट है, या जो एक से अधिक डिवाइस पर पूरा किया गया था, अस्वीकार कर दिया जाता है: सटीक फ़िंगरप्रिंट को `value` के रूप में भेजें। अन्य प्रविष्टि प्रकारों के लिए, या जब सत्र में ऐसा कोई रिकॉर्ड न हो, तो `value` भी भेजें; तब आपका `value` संग्रहीत किया जाता है और प्रविष्टि अभी भी सत्र से लिंक रहती है।"
                  },
                  "reference_object_uuid": {
                    "type": "string",
                    "format": "uuid",
                    "description": "उस रिकॉर्ड का UUID जिसके लिए प्रविष्टि है, जब यह किसी सत्र से नहीं आती है: लेन-देन का UUID, या किसी उपयोगकर्ता या व्यवसाय का `didit_internal_id`। इसे `metadata.reference_type` के साथ जोड़ें। जब `reference_session_id` कोई रिकॉर्ड प्रदान करता है, तो इसे सत्र के रिकॉर्ड से बदल दिया जाता है।"
                  },
                  "face_image_source": {
                    "type": "string",
                    "enum": [
                      "liveness",
                      "front_image_camera_front",
                      "back_image_camera_front"
                    ],
                    "default": "liveness",
                    "description": "`reference_session_id` वाली फ़ेस सूचियाँ: सत्र की किन छवियों से चेहरा लिया गया है। `liveness` (डिफ़ॉल्ट) लाइवनेस सेल्फ़ी है। `front_image_camera_front` और `back_image_camera_front` वे सेल्फ़ी हैं जो सामने वाले कैमरे ने तब ली थीं जब उपयोगकर्ता ने अपने दस्तावेज़ के आगे या पीछे के हिस्से की तस्वीर खींची थी: इन्हें केवल सिस्टम फ़ेस ब्लॉकलिस्ट पर स्वीकार किया जाता है, `reference_session_id` और एक खाली `value` के साथ। प्रत्येक सेल्फ़ी को एक बार जोड़ा जा सकता है और इसमें एक स्पष्ट चेहरा दिखना चाहिए।"
                  },
                  "reference_node_id": {
                    "type": "string",
                    "nullable": true,
                    "maxLength": 100,
                    "description": "दस्तावेज़-कैप्चर `face_image_source` के साथ: पहचान सत्यापन नोड जिसकी सेल्फ़ी का उपयोग किया जाना है, एक से अधिक पहचान सत्यापन नोड वाले वर्कफ़्लो के लिए। डिफ़ॉल्ट रूप से सबसे हालिया पहचान सत्यापन जिसमें वह छवि है। `liveness` के साथ अस्वीकृत।"
                  },
                  "display_label": {
                    "type": "string",
                    "maxLength": 512,
                    "description": "मानव-पठनीय लेबल। खाली होने पर, Didit जहाँ संभव हो सत्र से इसे प्राप्त करता है (उदाहरण के लिए धारक का नाम और दस्तावेज़ संख्या)।"
                  },
                  "comment": {
                    "type": "string",
                    "description": "मुक्त-पाठ नोट, जैसे सूचीबद्ध करने का कारण।"
                  },
                  "metadata": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "प्रविष्टि के साथ संग्रहीत और संग्रहीत रूप में ही लौटाया गया फ़्री-फ़ॉर्म JSON। `reference_type` और `reference_id` का उपयोग करें ताकि कंसोल वापस स्रोत से लिंक हो सके। `reference_image_url` और `front_image_url` केवल Didit द्वारा सेट किए जाते हैं और यदि आप उन्हें भेजते हैं तो उन्हें छोड़ दिया जाता है। किसी सत्र से पढ़ी गई प्रविष्टि के लिए, Didit की कुंजियों को आपकी कुंजियों के साथ मर्ज कर दिया जाता है।",
                    "properties": {
                      "reference_type": {
                        "type": "string",
                        "enum": [
                          "transaction",
                          "vendor_user",
                          "vendor_business"
                        ],
                        "description": "`reference_object_uuid` किस ओर इंगित करता है।"
                      },
                      "reference_id": {
                        "type": "string",
                        "description": "स्रोत रिकॉर्ड का पहचानकर्ता।"
                      }
                    }
                  }
                }
              },
              "examples": {
                "By value": {
                  "value": {
                    "value": "+14155552671",
                    "comment": "Reported fraud"
                  }
                },
                "From a session": {
                  "value": {
                    "reference_session_id": "33333333-4444-5555-6666-777777777777"
                  }
                },
                "Face from a document-capture selfie": {
                  "value": {
                    "reference_session_id": "33333333-4444-5555-6666-777777777777",
                    "face_image_source": "front_image_camera_front"
                  }
                },
                "From a transaction": {
                  "value": {
                    "value": "0x52908400098527886E0F7030069857D2E4169EE7",
                    "reference_object_uuid": "55555555-6666-7777-8888-999999999999",
                    "comment": "Linked to a chargeback",
                    "metadata": {
                      "reference_type": "transaction",
                      "reference_id": "55555555-6666-7777-8888-999999999999"
                    }
                  }
                },
                "Country": {
                  "value": {
                    "value": "PRK",
                    "comment": "Sanctioned jurisdiction"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/entries/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"value\": \"+14155552671\", \"comment\": \"Reported fraud\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.lists.entries.create(\n    \"11111111-2222-3333-4444-555555555555\",\n    value=\"+14155552671\",\n    comment=\"Reported fraud\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.lists.entries.create(\"11111111-2222-3333-4444-555555555555\", {\n  value: \"+14155552671\",\n  comment: \"Reported fraud\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Entries.Create(ctx, \"11111111-2222-3333-4444-555555555555\", didit.ListsEntriesCreateParams{\n\tValue:   didit.String(\"+14155552671\"),\n\tComment: didit.String(\"Reported fraud\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.ListsEntriesCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.lists().entries().create(\"11111111-2222-3333-4444-555555555555\", ListsEntriesCreateParams.builder()\n        .value(\"+14155552671\")\n        .comment(\"Reported fraud\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->lists->entries->create('11111111-2222-3333-4444-555555555555', [\n    'value' => '+14155552671',\n    'comment' => 'Reported fraud',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.lists.entries.create(\n  \"11111111-2222-3333-4444-555555555555\",\n  value: \"+14155552671\",\n  comment: \"Reported fraud\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Lists.Entries.CreateAsync(\"11111111-2222-3333-4444-555555555555\", new ListsEntriesCreateParams\n{\n    Value = \"+14155552671\",\n    Comment = \"Reported fraud\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "एंट्री बनाई गई थी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComplianceListEntry"
                },
                "examples": {
                  "By value": {
                    "value": {
                      "uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                      "value": "+14155552671",
                      "display_label": "",
                      "comment": "Reported fraud",
                      "added_by": "api",
                      "reference_session_id": null,
                      "reference_session_number": null,
                      "reference_session_type": null,
                      "reference_object_uuid": null,
                      "metadata": null,
                      "created_at": "2026-10-12T10:04:51.220391Z"
                    }
                  },
                  "Document from a session": {
                    "value": {
                      "uuid": "bbbbbbbb-cccc-dddd-eeee-ffffffffffff",
                      "value": "X1234567",
                      "display_label": "Jane Doe - X1234567",
                      "comment": "",
                      "added_by": "api",
                      "reference_session_id": "33333333-4444-5555-6666-777777777777",
                      "reference_session_number": 1042,
                      "reference_session_type": "kyc",
                      "reference_object_uuid": "66666666-7777-8888-9999-000000000000",
                      "metadata": {
                        "full_name": "Jane Doe",
                        "issuing_state": "ESP",
                        "document_type": "ID",
                        "region": "",
                        "document_number": "X1234567"
                      },
                      "created_at": "2026-10-12T10:06:12.774915Z"
                    }
                  },
                  "From a transaction": {
                    "value": {
                      "uuid": "dddddddd-eeee-ffff-0000-111111111111",
                      "value": "0x52908400098527886e0f7030069857d2e4169ee7",
                      "display_label": "",
                      "comment": "Linked to a chargeback",
                      "added_by": "api",
                      "reference_session_id": null,
                      "reference_session_number": null,
                      "reference_session_type": null,
                      "reference_object_uuid": "55555555-6666-7777-8888-999999999999",
                      "metadata": {
                        "reference_type": "transaction",
                        "reference_id": "55555555-6666-7777-8888-999999999999"
                      },
                      "created_at": "2026-10-12T10:20:40.117062Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है, मान पहले से ही सूची में है, या सत्र मान प्रदान नहीं कर सकता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Nothing to list": {
                    "value": {
                      "value": [
                        "Either 'value' or 'reference_session_id' must be provided."
                      ]
                    }
                  },
                  "Duplicate value": {
                    "value": {
                      "value": [
                        "An entry with this value already exists in this list."
                      ]
                    }
                  },
                  "Invalid phone": {
                    "value": {
                      "value": [
                        "Invalid phone number. Provide a valid international number (e.g. +1234567890)."
                      ]
                    }
                  },
                  "Invalid IP": {
                    "value": {
                      "value": [
                        "Invalid IP address or CIDR range (e.g. 192.168.1.1 or 10.0.0.0/24)."
                      ]
                    }
                  },
                  "Invalid country": {
                    "value": {
                      "value": [
                        "Invalid country code: XX. Provide a valid ISO 3166-1 alpha-2 or alpha-3 country code."
                      ]
                    }
                  },
                  "Device-class fingerprint": {
                    "value": {
                      "value": [
                        "This value is a device-class fingerprint: several distinct devices have reported it, so blocklisting it would decline unrelated people. Block the user by document, face, email or phone instead."
                      ]
                    }
                  },
                  "Unknown session": {
                    "value": {
                      "reference_session_id": [
                        "Session not found or does not belong to this application."
                      ]
                    }
                  },
                  "No data in session": {
                    "value": {
                      "value": [
                        "Either provide a 'value' or ensure the session contains data for this entry type."
                      ]
                    }
                  },
                  "Selfie on another list": {
                    "value": {
                      "face_image_source": [
                        "A document-capture selfie can only be added to the face blocklist."
                      ]
                    }
                  },
                  "No clear face in selfie": {
                    "value": {
                      "face_image_source": [
                        "No clear face was found in this selfie, so it cannot be blocklisted."
                      ]
                    }
                  },
                  "Selfie already listed": {
                    "value": {
                      "face_image_source": [
                        "This selfie is already in the blocklist."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "List not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          },
          "503": {
            "description": "दस्तावेज़-कैप्चर सेल्फ़ी का चेहरा विश्लेषण अस्थायी रूप से अनुपलब्ध है। कुछ भी नहीं जोड़ा गया; बाद में पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Unavailable": {
                    "value": {
                      "detail": "Service temporarily unavailable. Please try again later."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/lists/{list_uuid}/entries/{entry_uuid}/": {
      "delete": {
        "summary": "एक सूची प्रविष्टि हटाएं",
        "description": "सिस्टम सूचियों सहित, किसी सूची से एक प्रविष्टि हटाता है। प्रविष्टि तुरंत मेल खाना बंद कर देती है, और हटाना अपरिवर्तनीय है: मान को फिर से सूचीबद्ध करने के लिए, एक नई प्रविष्टि बनाएं। सिस्टम फ़ेस, दस्तावेज़, फ़ोन या ईमेल ब्लॉकलिस्ट पर, वह रिकॉर्ड जिसे प्रविष्टि दर्शाती है, अब ब्लॉकलिस्ट के रूप में चिह्नित नहीं किया जाता है; सिस्टम उपयोगकर्ता या व्यवसाय ब्लॉकलिस्ट पर, एप्लिकेशन के ऐसे उपयोगकर्ता या व्यवसाय जिनका `vendor_data` प्रविष्टि के मान के बराबर है (या जिनका `didit_internal_id` इसके `reference_object_uuid` के बराबर है) और जो `BLOCKED` हैं, वे `ACTIVE` पर वापस आ जाते हैं। जो सत्र और लेन-देन पहले ही समाप्त हो चुके हैं, वे अपनी स्थिति बनाए रखते हैं। एक स्कोप्ड API कुंजी को `workflows: write` की आवश्यकता होती है।",
        "operationId": "delete_list_entry",
        "x-didit-sdk": {
          "resource": "lists.entries",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "उस सूची का UUID जिसमें यह प्रविष्टि शामिल है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "entry_uuid",
            "in": "path",
            "required": true,
            "description": "प्रविष्टि का UUID, जैसा कि सूची प्रविष्टियाँ सूचीबद्ध करें या सूची प्रविष्टि बनाएँ द्वारा लौटाया गया है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/entries/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.lists.entries.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.lists.entries.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Lists.Entries.Delete(ctx, \"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.lists().entries().delete(\"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->lists->entries->delete('11111111-2222-3333-4444-555555555555', 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.lists.entries.delete(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Lists.Entries.DeleteAsync(\"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\");"
          }
        ],
        "responses": {
          "204": {
            "description": "एंट्री हटा दी गई थी। कोई बॉडी नहीं।"
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस सूची में इस UUID वाली कोई प्रविष्टि मौजूद नहीं है, सूची API कुंजी के एप्लिकेशन में नहीं है या हटा दी गई थी, या प्रविष्टि पहले ही हटा दी गई थी।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No ListEntry matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/lists/{list_uuid}/entries/face-upload/": {
      "post": {
        "summary": "सूची में चेहरा अपलोड करें",
        "description": "base64-एनकोडेड JPEG या PNG छवि से किसी चेहरे को फ़ेस ब्लॉकलिस्ट या फ़ेस अलावलिस्ट में जोड़ता है, उस स्थिति के लिए जब आपके पास संदर्भित करने के लिए कोई सत्यापन सत्र नहीं होता है। Didit छवि में चेहरों का पता लगाता है, सबसे बड़े चेहरे का उपयोग करता है, और एक प्रविष्टि बनाता है जिसका `value` और `reference_object_uuid` नए चेहरे का UUID होता है। ब्लॉकलिस्ट किया गया चेहरा उन नए सत्रों को अस्वीकृत कर देता है जिनका चेहरा मेल खाता है; अलावलिस्ट किया गया चेहरा डुप्लिकेट-फ़ेस कार्रवाई को छोड़ देता है और ब्लॉकलिस्ट मिलान को कभी भी ओवरराइड नहीं करता है। सैंडबॉक्स एप्लिकेशन में छवि का विश्लेषण नहीं किया जाता है और प्रविष्टि किसी से मेल नहीं खाती है। एक स्कोप्ड API कुंजी के लिए `workflows: write` की आवश्यकता होती है। किसी मौजूदा सत्र से चेहरे को सूचीबद्ध करने के लिए, इसके बजाय `reference_session_id` के साथ [एक सूची प्रविष्टि बनाएँ](https://docs.didit.me/hi/management-api/lists/create-entry) का उपयोग करें।",
        "operationId": "upload_list_entry_face",
        "x-didit-sdk": {
          "resource": "lists.entries",
          "method": "upload_face",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Lists"
        ],
        "parameters": [
          {
            "name": "list_uuid",
            "in": "path",
            "required": true,
            "description": "`entry_type: face` और `list_type: blocklist` या `allowlist` वाली सूची का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image"
                ],
                "properties": {
                  "image": {
                    "type": "string",
                    "format": "byte",
                    "description": "Base64-एन्कोडेड JPEG या PNG, डीकोड होने के बाद अधिकतम 2 MB, जिसमें साफ़ तौर पर दिखाई देने वाला चेहरा हो। बिना किसी `data:image/...;base64,` प्रीफ़िक्स के केवल सामान्य base64 स्ट्रिंग भेजें।"
                  },
                  "comment": {
                    "type": "string",
                    "default": "",
                    "description": "वैकल्पिक फ़्री-टेक्स्ट नोट, जैसे कि लिस्टिंग का कारण।"
                  }
                }
              },
              "examples": {
                "Face image": {
                  "value": {
                    "image": "/9j/4AAQSkZJRgABAQAAAQABAAD...",
                    "comment": "Known fraud attempt"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/entries/face-upload/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d \"{\\\"image\\\": \\\"$(base64 < face.jpg | tr -d '\\n')\\\", \\\"comment\\\": \\\"Known fraud attempt\\\"}\""
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.lists.entries.upload_face(\n    \"11111111-2222-3333-4444-555555555555\",\n    image=\"/9j/4AAQSkZJRgABAQAAAQABAAD...\",\n    comment=\"Known fraud attempt\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.lists.entries.uploadFace(\"11111111-2222-3333-4444-555555555555\", {\n  image: \"/9j/4AAQSkZJRgABAQAAAQABAAD...\",\n  comment: \"Known fraud attempt\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Entries.UploadFace(ctx, \"11111111-2222-3333-4444-555555555555\", didit.ListsEntriesUploadFaceParams{\n\tImage:   \"/9j/4AAQSkZJRgABAQAAAQABAAD...\",\n\tComment: didit.String(\"Known fraud attempt\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.ListsEntriesUploadFaceParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.lists().entries().uploadFace(\"11111111-2222-3333-4444-555555555555\", ListsEntriesUploadFaceParams.builder()\n        .image(\"/9j/4AAQSkZJRgABAQAAAQABAAD...\")\n        .comment(\"Known fraud attempt\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->lists->entries->uploadFace('11111111-2222-3333-4444-555555555555', [\n    'image' => '/9j/4AAQSkZJRgABAQAAAQABAAD...',\n    'comment' => 'Known fraud attempt',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.lists.entries.upload_face(\n  \"11111111-2222-3333-4444-555555555555\",\n  image: \"/9j/4AAQSkZJRgABAQAAAQABAAD...\",\n  comment: \"Known fraud attempt\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Lists.Entries.UploadFaceAsync(\"11111111-2222-3333-4444-555555555555\", new ListsEntriesUploadFaceParams\n{\n    Image = \"/9j/4AAQSkZJRgABAQAAAQABAAD...\",\n    Comment = \"Known fraud attempt\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "चेहरा प्रविष्टि बनाई गई थी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComplianceListEntry"
                },
                "examples": {
                  "Uploaded face": {
                    "value": {
                      "uuid": "cccccccc-dddd-eeee-ffff-000000000000",
                      "value": "44444444-5555-6666-7777-888888888888",
                      "display_label": "Manually uploaded face",
                      "comment": "Known fraud attempt",
                      "added_by": "api",
                      "reference_session_id": null,
                      "reference_session_number": null,
                      "reference_session_type": null,
                      "reference_object_uuid": "44444444-5555-6666-7777-888888888888",
                      "metadata": {
                        "reference_image_url": "https://media.example.com/faces/reference.jpg?expires=1760263938&signature=3f9a1c"
                      },
                      "created_at": "2026-10-12T10:12:18.904467Z"
                    }
                  },
                  "Sandbox application": {
                    "value": {
                      "uuid": "cccccccc-dddd-eeee-ffff-000000000000",
                      "value": "44444444-5555-6666-7777-888888888888",
                      "display_label": "Sandbox face entry",
                      "comment": "Known fraud attempt",
                      "added_by": "api",
                      "reference_session_id": null,
                      "reference_session_number": null,
                      "reference_session_type": null,
                      "reference_object_uuid": "44444444-5555-6666-7777-888888888888",
                      "metadata": {
                        "sandbox": true
                      },
                      "created_at": "2026-10-12T10:12:18.904467Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सूची फ़ेस अपलोड स्वीकार नहीं करती है, या छवि गायब, अमान्य, बहुत बड़ी है या कोई उपयोग योग्य चेहरा नहीं दिखाती है। कोई प्रविष्टि नहीं बनाई गई।",
            "content": {
              "application/json": {
                "examples": {
                  "Not a face list": {
                    "value": {
                      "detail": "Face upload is only available for face-type lists."
                    }
                  },
                  "Custom face list": {
                    "value": {
                      "detail": "Face upload is only available for face blocklists and allowlists."
                    }
                  },
                  "Missing image": {
                    "value": {
                      "image": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid base64": {
                    "value": {
                      "image": [
                        "Invalid base64 encoding."
                      ]
                    }
                  },
                  "Too large": {
                    "value": {
                      "image": [
                        "Image exceeds maximum size of 2 MB."
                      ]
                    }
                  },
                  "Unreadable image": {
                    "value": {
                      "image": "Invalid image. Provide a valid base64-encoded JPG or PNG."
                    }
                  },
                  "No face": {
                    "value": {
                      "image": "No face detected in the image. Please upload a clear photo with a visible face."
                    }
                  },
                  "No usable face": {
                    "value": {
                      "image": "Could not extract face embedding. Try a different image."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "API कुंजी के एप्लिकेशन में इस UUID वाली कोई सूची मौजूद नहीं है, या इसे हटा दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "List not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          },
          "503": {
            "description": "चेहरा विश्लेषण अस्थायी रूप से अनुपलब्ध है। कोई प्रविष्टि नहीं बनाई गई; बाद में पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Unavailable": {
                    "value": {
                      "detail": "Service temporarily unavailable. Please try again later."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/blocklist/": {
      "get": {
        "summary": "ब्लॉकलिस्ट किए गए आइटम सूचीबद्ध करें",
        "description": "एप्लिकेशन के उन सत्यापन सत्रों के चेहरों, पहचान दस्तावेज़ों, फ़ोन नंबरों और ईमेल पतों का एक पेजिनेटेड फ़ीड लौटाता है जो वर्तमान में ब्लॉकलिस्ट में हैं, नवीनतम `blocklisted_at` पहले; `item_type` के साथ फ़िल्टर करें। हटाए गए सत्रों के आइटम शामिल नहीं हैं। यह फ़ीड किसी सत्र से ब्लॉकलिस्ट किए गए रिकॉर्ड्स को कवर करता है ([ब्लॉकलिस्ट में सत्र आइटम जोड़ें](https://docs.didit.me/hi/management-api/blocklist/add) के साथ, कंसोल से, या किसी सत्र से बनाई गई सूची प्रविष्टि द्वारा); सूची में मैन्युअल रूप से जोड़े गए मान, अपलोड किए गए चेहरे, दस्तावेज़-कैप्चर सेल्फ़ी से प्राप्त चेहरे और अन्य प्रविष्टि प्रकारों को [सूची प्रविष्टियों की सूची देखें](https://docs.didit.me/hi/management-api/lists/list-entries) के साथ पढ़ा जाता है। `face_image` और `front_image` अल्पकालिक हस्ताक्षरित URL हैं, और `media: read` के बिना स्कोप्ड API कुंजी को `null` प्राप्त होता है। एक स्कोप्ड API कुंजी के लिए `workflows: read` आवश्यक है।",
        "operationId": "list_blocklist_items",
        "x-didit-sdk": {
          "resource": "blocklist",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Blocklist"
        ],
        "parameters": [
          {
            "name": "item_type",
            "in": "query",
            "required": false,
            "description": "केवल इस प्रकार के आइटम। छोड़े जाने पर, प्रत्येक प्रकार लौटाया जाता है।",
            "schema": {
              "type": "string",
              "enum": [
                "face",
                "document",
                "phone",
                "email"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "पेज का आकार। डिफ़ॉल्ट 50 है। 1000000 से अधिक मान `400` लौटाता है; शून्य, ऋणात्मक या गैर-संख्यात्मक मान 50 पर वापस आ जाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "लौटाए जाने वाले पहले आइटम का शून्य-आधारित इंडेक्स। `next` का अनुसरण करना बेहतर है। 1000000 से अधिक का मान `400` लौटाता है; ऋणात्मक या गैर-संख्यात्मक मान 0 पर वापस चला जाता है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/blocklist/?item_type=document' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.blocklist.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.blocklist.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Blocklist.ListAutoPaging(ctx, didit.BlocklistListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.blocklist().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->blocklist->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.blocklist.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Blocklist.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "ब्लॉकलिस्ट किए गए आइटमों का एक पेज, सबसे नए पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "फ़िल्टर से मेल खाने वाले ब्लॉकलिस्ट किए गए आइटम की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/BlocklistedItem"
                      }
                    }
                  }
                },
                "examples": {
                  "Mixed feed": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "type": "document",
                          "session_id": "33333333-4444-5555-6666-777777777777",
                          "session_number": 1042,
                          "blocklisted_at": "2026-10-12T10:06:12.701553Z",
                          "face_image": null,
                          "document_type": "ID",
                          "document_number": "X1234567",
                          "front_image": "https://media.example.com/documents/front.jpg?expires=1760263938&signature=8b2e47",
                          "phone_number": null,
                          "country_code": null,
                          "email": null
                        },
                        {
                          "type": "phone",
                          "session_id": "77777777-8888-9999-0000-111111111111",
                          "session_number": 1017,
                          "blocklisted_at": "2026-10-08T15:31:09.400127Z",
                          "face_image": null,
                          "document_type": null,
                          "document_number": null,
                          "front_image": null,
                          "phone_number": "+14155552671",
                          "country_code": "US",
                          "email": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक क्वेरी पैरामीटर अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown item type": {
                    "value": {
                      "item_type": [
                        "\"wallet\" is not a valid choice."
                      ]
                    }
                  },
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: read` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no read access to workflows."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "प्रति API कुंजी प्रति मिनट 600 अनुरोधों की साझा पढ़ने की सीमा पार हो गई। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Rate limited": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/blocklist/add/": {
      "post": {
        "summary": "ब्लॉकलिस्ट में सत्र आइटम जोड़ें",
        "description": "एप्लिकेशन के एक व्यक्ति सत्यापन सत्र के चेहरे, पहचान दस्तावेज़, फ़ोन नंबर या ईमेल पते को ब्लॉकलिस्ट करता है। प्रत्येक चयनित प्रकार के लिए, Didit सत्र का सबसे हालिया रिकॉर्ड लेता है, इसे ब्लॉकलिस्टेड के रूप में चिह्नित करता है और सत्र से जुड़ी एक प्रविष्टि को संबंधित सिस्टम ब्लॉकलिस्ट (`added_by: \"api\"`) में जोड़ता है, ताकि मेल खाने वाले चेहरे, दस्तावेज़ संख्या, फ़ोन नंबर या ईमेल पते वाले नए सत्र अस्वीकृत हो जाएं। प्रत्येक चयनित आइटम की पहले जांच की जाती है, इसलिए यदि कोई गायब है तो कुछ भी ब्लॉकलिस्ट नहीं किया जाता है; पहले से सूचीबद्ध आइटम के लिए कॉल दोहराने से उसकी एकल प्रविष्टि बनी रहती है और `blocklisted_at` रीफ़्रेश हो जाता है। सत्र स्वयं और जो सत्र पहले ही समाप्त हो चुके हैं, वे नहीं बदलते हैं। सीमित दायरे वाली API कुंजी के लिए `workflows: write` की आवश्यकता होती है।",
        "operationId": "add_to_blocklist",
        "x-didit-sdk": {
          "resource": "blocklist",
          "method": "add",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Blocklist"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "session_id"
                ],
                "description": "कम से कम एक `blocklist_*` फ़्लैग `true` होना चाहिए।",
                "properties": {
                  "session_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "आपके एप्लिकेशन का एक व्यक्ति सत्यापन सत्र। हटाए गए सत्र अस्वीकार कर दिए जाते हैं।"
                  },
                  "blocklist_face": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के चेहरे को ब्लॉकलिस्ट करें।"
                  },
                  "blocklist_document": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के पहचान दस्तावेज़ को ब्लॉकलिस्ट करें। दस्तावेज़ के लिए उसके जारीकर्ता राज्य, दस्तावेज़ प्रकार, दस्तावेज़ संख्या और पूरे नाम की आवश्यकता होती है।"
                  },
                  "blocklist_phone": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के फ़ोन नंबर को ब्लॉकलिस्ट करें।"
                  },
                  "blocklist_email": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के ईमेल पते को ब्लॉकलिस्ट करें।"
                  }
                }
              },
              "examples": {
                "Face and document": {
                  "value": {
                    "session_id": "33333333-4444-5555-6666-777777777777",
                    "blocklist_face": true,
                    "blocklist_document": true
                  }
                },
                "Phone only": {
                  "value": {
                    "session_id": "33333333-4444-5555-6666-777777777777",
                    "blocklist_phone": true
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/blocklist/add/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"session_id\": \"33333333-4444-5555-6666-777777777777\",\n    \"blocklist_face\": true,\n    \"blocklist_document\": true\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.blocklist.add(\n    session_id=\"33333333-4444-5555-6666-777777777777\",\n    blocklist_face=True,\n    blocklist_document=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.blocklist.add({\n  session_id: \"33333333-4444-5555-6666-777777777777\",\n  blocklist_face: true,\n  blocklist_document: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Blocklist.Add(ctx, didit.BlocklistAddParams{\n\tSessionID:         \"33333333-4444-5555-6666-777777777777\",\n\tBlocklistFace:     didit.Bool(true),\n\tBlocklistDocument: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BlocklistAddParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.blocklist().add(BlocklistAddParams.builder()\n        .sessionId(\"33333333-4444-5555-6666-777777777777\")\n        .blocklistFace(true)\n        .blocklistDocument(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->blocklist->add([\n    'session_id' => '33333333-4444-5555-6666-777777777777',\n    'blocklist_face' => true,\n    'blocklist_document' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.blocklist.add(\n  session_id: \"33333333-4444-5555-6666-777777777777\",\n  blocklist_face: true,\n  blocklist_document: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Blocklist.AddAsync(new BlocklistAddParams\n{\n    SessionId = \"33333333-4444-5555-6666-777777777777\",\n    BlocklistFace = true,\n    BlocklistDocument = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "चयनित आइटम ब्लॉकलिस्ट कर दिए गए थे।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "हमेशा `Successfully updated blocklist.`"
                    }
                  }
                },
                "examples": {
                  "Blocklisted": {
                    "value": {
                      "message": "Successfully updated blocklist."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है, सत्र इस एप्लिकेशन का सत्यापन सत्र नहीं है, या इसमें चयनित प्रकार का कोई रिकॉर्ड नहीं है। कुछ भी ब्लॉकलिस्ट नहीं किया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown session": {
                    "value": {
                      "non_field_errors": [
                        "Session not found"
                      ]
                    }
                  },
                  "No item selected": {
                    "value": {
                      "non_field_errors": [
                        "Must specify at least one item to blocklist"
                      ]
                    }
                  },
                  "No face record": {
                    "value": {
                      "non_field_errors": [
                        "Session does not have a face record"
                      ]
                    }
                  },
                  "Incomplete document": {
                    "value": {
                      "non_field_errors": [
                        "To blocklist a document, the document must have an issuing state, document type, document number and full name"
                      ]
                    }
                  },
                  "Invalid session id": {
                    "value": {
                      "session_id": [
                        "Must be a valid UUID."
                      ]
                    }
                  },
                  "Missing session id": {
                    "value": {
                      "session_id": [
                        "This field is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/blocklist/remove/": {
      "post": {
        "summary": "सत्र आइटमों को ब्लॉकलिस्ट से हटाएं",
        "description": "एप्लिकेशन के किसी एक व्यक्ति सत्यापन सत्र के चेहरे, पहचान दस्तावेज़, फ़ोन नंबर या ईमेल पते पर लगे ब्लॉक को हटाता है। प्रत्येक चयनित प्रकार के लिए, Didit सत्र का सबसे हालिया रिकॉर्ड लेता है, इसके ब्लॉकलिस्ट किए गए फ़्लैग को हटाता है और उस रिकॉर्ड से बनाई गई सिस्टम ब्लॉकलिस्ट प्रविष्टियों को हटा देता है, ताकि यह अब नए सत्रों को अस्वीकार न करे। मान द्वारा किसी सूची में जोड़ी गई प्रविष्टियों को छुआ नहीं जाता है: उन्हें [List list entries](https://docs.didit.me/hi/management-api/lists/list-entries) से ढूंढें और [Delete a list entry](https://docs.didit.me/hi/management-api/lists/delete-entry) से हटाएं। ऐसे रिकॉर्ड को अनब्लॉक करना जो ब्लॉकलिस्टेड नहीं है सफल रहता है और कुछ भी नहीं बदलता है, और जो सत्र पहले ही समाप्त हो चुके हैं उन्हें बदला नहीं जाता है। स्कोप्ड API कुंजी के लिए `workflows: write` की आवश्यकता होती है।",
        "operationId": "remove_from_blocklist",
        "x-didit-sdk": {
          "resource": "blocklist",
          "method": "remove",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Blocklist"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "session_id"
                ],
                "description": "कम से कम एक `unblock_*` फ़्लैग `true` होना चाहिए।",
                "properties": {
                  "session_id": {
                    "type": "string",
                    "format": "uuid",
                    "description": "आपके एप्लिकेशन का एक व्यक्ति सत्यापन सत्र। हटाए गए सत्र अस्वीकार कर दिए जाते हैं।"
                  },
                  "unblock_face": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के चेहरे पर लगा ब्लॉक हटाएं।"
                  },
                  "unblock_document": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के पहचान दस्तावेज़ पर लगा ब्लॉक हटाएं।"
                  },
                  "unblock_phone": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के फ़ोन नंबर पर लगा ब्लॉक हटाएं।"
                  },
                  "unblock_email": {
                    "type": "boolean",
                    "default": false,
                    "description": "सत्र के ईमेल पते पर लगा ब्लॉक हटाएं।"
                  }
                }
              },
              "examples": {
                "Face and document": {
                  "value": {
                    "session_id": "33333333-4444-5555-6666-777777777777",
                    "unblock_face": true,
                    "unblock_document": true
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/blocklist/remove/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"session_id\": \"33333333-4444-5555-6666-777777777777\",\n    \"unblock_face\": true,\n    \"unblock_document\": true\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.blocklist.remove(\n    session_id=\"33333333-4444-5555-6666-777777777777\",\n    unblock_face=True,\n    unblock_document=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.blocklist.remove({\n  session_id: \"33333333-4444-5555-6666-777777777777\",\n  unblock_face: true,\n  unblock_document: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Blocklist.Remove(ctx, didit.BlocklistRemoveParams{\n\tSessionID:       \"33333333-4444-5555-6666-777777777777\",\n\tUnblockFace:     didit.Bool(true),\n\tUnblockDocument: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.BlocklistRemoveParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.blocklist().remove(BlocklistRemoveParams.builder()\n        .sessionId(\"33333333-4444-5555-6666-777777777777\")\n        .unblockFace(true)\n        .unblockDocument(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->blocklist->remove([\n    'session_id' => '33333333-4444-5555-6666-777777777777',\n    'unblock_face' => true,\n    'unblock_document' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.blocklist.remove(\n  session_id: \"33333333-4444-5555-6666-777777777777\",\n  unblock_face: true,\n  unblock_document: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Blocklist.RemoveAsync(new BlocklistRemoveParams\n{\n    SessionId = \"33333333-4444-5555-6666-777777777777\",\n    UnblockFace = true,\n    UnblockDocument = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "चयनित आइटमों पर लगा ब्लॉक हटा दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "हमेशा `Successfully removed from blocklist.`"
                    }
                  }
                },
                "examples": {
                  "Unblocked": {
                    "value": {
                      "message": "Successfully removed from blocklist."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है, सत्र इस एप्लिकेशन का सत्यापन सत्र नहीं है, या इसमें चयनित प्रकार का कोई रिकॉर्ड नहीं है। कुछ भी नहीं बदला गया।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown session": {
                    "value": {
                      "non_field_errors": [
                        "Session not found"
                      ]
                    }
                  },
                  "No item selected": {
                    "value": {
                      "non_field_errors": [
                        "Must specify at least one item to unblock"
                      ]
                    }
                  },
                  "No email record": {
                    "value": {
                      "non_field_errors": [
                        "Session does not have an email record"
                      ]
                    }
                  },
                  "Invalid session id": {
                    "value": {
                      "session_id": [
                        "Must be a valid UUID."
                      ]
                    }
                  },
                  "Missing session id": {
                    "value": {
                      "session_id": [
                        "This field is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। अन्य प्रमाणीकरण विफलताओं पर `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "`x-api-key` हेडर अनुपस्थित है (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), या किसी स्कोप्ड API कुंजी में `workflows: write` की कमी है या इसका उपयोग इसकी अनुमति सूची से बाहर के किसी IP पते से किया गया है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without workflows access": {
                    "value": {
                      "detail": "This API key has no write access to workflows."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/": {
      "get": {
        "summary": "webhook कॉन्फ़िगरेशन प्राप्त करें",
        "description": "एक कॉल में एप्लिकेशन की webhook सेटिंग्स लौटाएं: प्रत्येक [webhook गंतव्य](https://docs.didit.me/hi/management-api/webhook/list-destinations) अपने साइनिंग सीक्रेट के साथ, वे इवेंट प्रकार जिन्हें कोई गंतव्य सब्सक्राइब कर सकता है, एप्लिकेशन-स्तरीय (लीगेसी) webhook URL, संस्करण और सीक्रेट, डेटा और बायोमेट्रिक-टेम्पलेट प्रतिधारण नीति, और Digital ID वॉलेट रिटर्न होस्ट्स। Didit गंतव्यों पर webhook डिलीवर करता है और प्रत्येक webhook पर उसकी अपनी `secret_shared_key` से हस्ताक्षर किए जाते हैं; शीर्ष-स्तरीय `webhook_url`, `webhook_version` और `secret_shared_key` का उपयोग केवल तभी किया जाता है जब कोई गंतव्य सक्षम न हो, और वह भी केवल `status.updated` और `data.updated` के लिए। रिस्पॉन्स में साइनिंग सीक्रेट शामिल होते हैं, इसलिए इसे लॉग और क्लाइंट-साइड कोड से बाहर रखें। स्कोप्ड API कुंजी को `webhooks: read` की आवश्यकता होती है।",
        "operationId": "get_webhook_config",
        "x-didit-sdk": {
          "resource": "webhooks",
          "method": "retrieve_config",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.retrieve_config()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.retrieveConfig();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.RetrieveConfig(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().retrieveConfig();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->retrieveConfig();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.retrieve_config\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.RetrieveConfigAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "webhook कॉन्फ़िगरेशन।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookConfig"
                },
                "examples": {
                  "One destination": {
                    "value": {
                      "webhook_url": "https://yourapp.com/webhooks/didit",
                      "webhook_version": "v3",
                      "secret_shared_key": "dGhpcy1pcy10aGUtYXBwLWxldmVsLXNlY3JldC0wMDA",
                      "capture_method": "MOBILE",
                      "data_retention_months": 24,
                      "face_retention_policy": "delete_with_session",
                      "face_retention_days": null,
                      "biometric_consent_mode": "auto",
                      "available_events": [
                        {
                          "value": "status.updated",
                          "label": "Session status updated"
                        },
                        {
                          "value": "data.updated",
                          "label": "Session data updated"
                        },
                        {
                          "value": "user.status.updated",
                          "label": "User status updated"
                        },
                        {
                          "value": "user.data.updated",
                          "label": "User data updated"
                        },
                        {
                          "value": "business.status.updated",
                          "label": "Business status updated"
                        },
                        {
                          "value": "business.data.updated",
                          "label": "Business data updated"
                        },
                        {
                          "value": "activity.created",
                          "label": "Activity created"
                        },
                        {
                          "value": "transaction.created",
                          "label": "Transaction created"
                        },
                        {
                          "value": "transaction.status.updated",
                          "label": "Transaction status updated"
                        },
                        {
                          "value": "travel_rule.status.updated",
                          "label": "Travel Rule Status Updated"
                        },
                        {
                          "value": "workflow.compliance_changed",
                          "label": "Workflow Compliance Changed"
                        }
                      ],
                      "allowed_return_hosts": [
                        "shop.example.com"
                      ],
                      "endpoints": [
                        {
                          "uuid": "11111111-2222-3333-4444-555555555555",
                          "label": "Production session webhooks",
                          "url": "https://yourapp.com/webhooks/didit",
                          "enabled": true,
                          "webhook_version": "v3",
                          "secret_shared_key": "dGhpcy1pcy1hbi1leGFtcGxlLXNlY3JldC0wMDAwMDA",
                          "subscribed_events": [
                            "status.updated",
                            "data.updated"
                          ],
                          "created_at": "2026-01-04T08:00:00.000000Z",
                          "updated_at": "2026-04-22T14:09:11.523671Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks read": {
                    "value": {
                      "detail": "This API key has no read access to webhooks."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "patch": {
        "summary": "webhook कॉन्फ़िगरेशन अपडेट करें",
        "description": "एप्लिकेशन-स्तरीय सेटिंग्स को आंशिक रूप से अपडेट करें: लीगेसी webhook URL, संस्करण और सीक्रेट, डेटा और बायोमेट्रिक टेम्पलेट प्रतिधारण नीति, और Digital ID वॉलेट रिटर्न होस्ट्स। केवल वे फ़ील्ड भेजें जिन्हें बदलना है; रिस्पॉन्स पूर्ण कॉन्फ़िगरेशन होता है, जिसकी संरचना `GET /v3/webhook/` के समान होती है। गंतव्यों को यहाँ प्रबंधित नहीं किया जाता है: उन्हें `/v3/webhook/destinations/` endpoint के साथ बनाएँ, अपडेट करें और हटाएँ, और इस endpoint पर `endpoints` फ़ील्ड न भेजें। `data_retention_months` परिवर्तन मौजूदा सत्रों पर भी लागू होता है, और इसके द्वारा हटाए गए सत्रों को पुनर्स्थापित नहीं किया जा सकता है; पहले [डेटा प्रतिधारण](https://docs.didit.me/hi/console/data-retention) पढ़ें। एक स्कोप्ड API कुंजी को `webhooks: write` की आवश्यकता होती है।",
        "operationId": "update_webhook_config",
        "x-didit-sdk": {
          "resource": "webhooks",
          "method": "update_config",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "केवल वे फ़ील्ड भेजें जिन्हें बदलना है। गंतव्यों का प्रबंधन यहाँ नहीं किया जाता है।",
                "properties": {
                  "webhook_url": {
                    "type": "string",
                    "format": "uri",
                    "nullable": true,
                    "maxLength": 2000,
                    "description": "लीगेसी एप्लिकेशन-स्तरीय webhook URL। Didit इसका उपयोग केवल तब करता है जब एप्लिकेशन का कोई सक्षम गंतव्य न हो, और तब केवल `status.updated` और `data.updated` के लिए। यह कोई गंतव्य नहीं बनाता है, और किसी गंतव्य का अगला निर्माण, अद्यतन या विलोपन इसे बदल देता है। webhook प्राप्त करने के लिए, इसके बजाय `POST /v3/webhook/destinations/` के साथ एक गंतव्य बनाएँ।"
                  },
                  "webhook_version": {
                    "type": "string",
                    "enum": [
                      "v1",
                      "v2",
                      "v3"
                    ],
                    "description": "लेगसी `webhook_url` का payload संस्करण।"
                  },
                  "rotate_secret_key": {
                    "type": "boolean",
                    "default": false,
                    "description": "`true` एप्लिकेशन-स्तरीय `secret_shared_key` को तुरंत एक नए यादृच्छिक मान से बदल देता है; नया मान रिस्पॉन्स में होता है। गंतव्य सीक्रेट नहीं बदले जाते हैं। `true` के साथ प्रत्येक कॉल एक नया सीक्रेट उत्पन्न करती है, इसलिए यह आइडेम्पोटेंट नहीं है।"
                  },
                  "capture_method": {
                    "type": "string",
                    "enum": [
                      "MOBILE",
                      "MOBILE_AND_DESKTOP"
                    ],
                    "description": "लीगेसी एप्लिकेशन सेटिंग। सत्यापन फ़्लो इसे नहीं पढ़ता है।"
                  },
                  "data_retention_months": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "maximum": 120,
                    "description": "महीनों में स्वचालित विलोपन विंडो (एक महीने को 30 दिन माना जाता है), या स्वचालित विलोपन न होने के लिए `null`। यह बदलाव मौजूदा सत्रों पर भी लागू होता है: नई विंडो से अधिक पुराना प्रत्येक उपयोगकर्ता सत्यापन सत्र स्वचालित रूप से हटा दिया जाता है, और वह विलोपन अपरिवर्तनीय है।"
                  },
                  "face_retention_policy": {
                    "type": "string",
                    "enum": [
                      "delete_with_session",
                      "retain_until_user_deleted"
                    ],
                    "description": "सत्र हटाए जाने पर सत्र के फ़ेस एम्बेडिंग का क्या होता है। `retain_until_user_deleted` के लिए उसी अनुरोध में `face_retention_days` की आवश्यकता होती है या यह पहले से सेट होना चाहिए। कोई भी परिवर्तन इसके बाद होने वाले सत्र विलोपन पर लागू होता है; यह किसी भी मौजूदा बायोमेट्रिक टेम्पलेट को नहीं बनाता या पर्ज नहीं करता है।"
                  },
                  "face_retention_days": {
                    "type": "integer",
                    "nullable": true,
                    "minimum": 1,
                    "maximum": 3650,
                    "description": "`retain_until_user_deleted` के तहत बायोमेट्रिक टेम्पलेट्स की डेटा प्रतिधारण अवधि, दिनों में।"
                  },
                  "biometric_consent_mode": {
                    "type": "string",
                    "enum": [
                      "auto",
                      "always",
                      "never"
                    ],
                    "description": "होस्टेड फ़्लो और नेटिव SDK चेहरा कैप्चर करने से पहले व्यक्ति से स्पष्ट बायोमेट्रिक सहमति कब मांगते हैं। `auto` (डिफ़ॉल्ट) केवल तभी पूछता है जब कोई ट्रिगर लागू होता है: घोषित राज्य, व्यक्ति का IP, या पहचान दस्तावेज़ का जारीकर्ता Illinois, Texas या Colorado में हो, या व्यक्ति US में प्रतीत होता हो, लेकिन राज्य ज्ञात न हो। `always` ऐसे प्रत्येक व्यक्ति से पूछता है जिसके वर्कफ़्लो में चेहरा कैप्चर किया जाता है। `never` कभी भी यह चरण नहीं दिखाता है, और आप सेल्फ़ी से पहले सहमति स्वयं एकत्र करते हैं। प्रत्येक परिवर्तन ऑडिट लॉग में दर्ज किया जाता है। [बायोमेट्रिक सहमति](https://docs.didit.me/hi/getting-started/biometric-consent) देखें।"
                  },
                  "allowed_return_hosts": {
                    "type": "array",
                    "maxItems": 20,
                    "description": "Digital ID वॉलेट रिटर्न होस्ट्स की पूरी सूची को बदलता है। केवल बेयर होस्टनाम, जैसे कि `shop.example.com`: कोई स्कीम, पोर्ट, पाथ या वाइल्डकार्ड नहीं। मान लोअरकेस में किए जाते हैं और डुप्लिकेट हटा दिए जाते हैं। सूची को साफ़ करने के लिए `[]` भेजें।",
                    "items": {
                      "type": "string",
                      "maxLength": 253
                    }
                  },
                  "allowed_domains": {
                    "type": "array",
                    "maxItems": 50,
                    "items": {
                      "type": "string",
                      "maxLength": 300
                    },
                    "description": "अनुमत ऑरिजिन की पूरी सूची को बदलता है। वे ऑरिजिन (उदाहरण के लिए `https://app.example.com`; `localhost` के लिए केवल `http`) जिनमें होस्टेड सत्यापन फ़्लो एम्बेड किया जा सकता है और सत्र कॉलबैक के साथ उपयोगकर्ता को वापस भेज सकता है। सर्वर-टू-सर्वर कॉल प्रभावित नहीं होती हैं। खाली सूची का अर्थ है कोई प्रतिबंध नहीं। Didit प्रत्येक ऑरिजिन को डिफ़ॉल्ट पोर्ट के बिना लोअरकेस में संग्रहीत करता है। एक अमान्य प्रविष्टि `allowed_domains` पर `400` के साथ विफल हो जाती है। प्रतिबंध हटाने के लिए `[]` भेजें।",
                    "example": [
                      "https://app.example.com"
                    ]
                  }
                }
              },
              "examples": {
                "Enable biometric template retention": {
                  "value": {
                    "face_retention_policy": "retain_until_user_deleted",
                    "face_retention_days": 365,
                    "biometric_consent_mode": "auto"
                  }
                },
                "Rotate the legacy secret": {
                  "value": {
                    "rotate_secret_key": true
                  }
                },
                "Set data retention": {
                  "value": {
                    "data_retention_months": 24
                  }
                },
                "Register return hosts": {
                  "value": {
                    "allowed_return_hosts": [
                      "shop.example.com",
                      "app.example.com"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/webhook/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"face_retention_policy\": \"retain_until_user_deleted\", \"face_retention_days\": 365}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.update_config(\n    face_retention_policy=\"retain_until_user_deleted\",\n    face_retention_days=365,\n    biometric_consent_mode=\"auto\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.updateConfig({\n  face_retention_policy: \"retain_until_user_deleted\",\n  face_retention_days: 365,\n  biometric_consent_mode: \"auto\",\n});\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.WebhooksUpdateConfigParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().updateConfig(WebhooksUpdateConfigParams.builder()\n        .faceRetentionPolicy(WebhooksUpdateConfigParams.FaceRetentionPolicy.of(\"retain_until_user_deleted\"))\n        .faceRetentionDays(365L)\n        .biometricConsentMode(WebhooksUpdateConfigParams.BiometricConsentMode.of(\"auto\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->updateConfig([\n    'face_retention_policy' => 'retain_until_user_deleted',\n    'face_retention_days' => 365,\n    'biometric_consent_mode' => 'auto',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.update_config(\n  face_retention_policy: \"retain_until_user_deleted\",\n  face_retention_days: 365,\n  biometric_consent_mode: \"auto\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.UpdateConfigAsync(new WebhooksUpdateConfigParams\n{\n    FaceRetentionPolicy = new WebhooksUpdateConfigParamsFaceRetentionPolicy(\"retain_until_user_deleted\"),\n    FaceRetentionDays = 365,\n    BiometricConsentMode = new WebhooksUpdateConfigParamsBiometricConsentMode(\"auto\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अपडेट के बाद पूर्ण कॉन्फ़िगरेशन, `GET /v3/webhook/` के समान संरचना वाला। जब आपने सीक्रेट को रोटेट किया है, तो रिस्पॉन्स को त्यागने से पहले नई `secret_shared_key` को संग्रहीत करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookConfig"
                },
                "examples": {
                  "Retention enabled": {
                    "value": {
                      "webhook_url": "https://yourapp.com/webhooks/didit",
                      "webhook_version": "v3",
                      "secret_shared_key": "dGhpcy1pcy10aGUtYXBwLWxldmVsLXNlY3JldC0wMDA",
                      "capture_method": "MOBILE",
                      "data_retention_months": 24,
                      "face_retention_policy": "retain_until_user_deleted",
                      "face_retention_days": 365,
                      "biometric_consent_mode": "auto",
                      "available_events": [
                        {
                          "value": "status.updated",
                          "label": "Session status updated"
                        },
                        {
                          "value": "data.updated",
                          "label": "Session data updated"
                        },
                        {
                          "value": "user.status.updated",
                          "label": "User status updated"
                        },
                        {
                          "value": "user.data.updated",
                          "label": "User data updated"
                        },
                        {
                          "value": "business.status.updated",
                          "label": "Business status updated"
                        },
                        {
                          "value": "business.data.updated",
                          "label": "Business data updated"
                        },
                        {
                          "value": "activity.created",
                          "label": "Activity created"
                        },
                        {
                          "value": "transaction.created",
                          "label": "Transaction created"
                        },
                        {
                          "value": "transaction.status.updated",
                          "label": "Transaction status updated"
                        },
                        {
                          "value": "travel_rule.status.updated",
                          "label": "Travel Rule Status Updated"
                        },
                        {
                          "value": "workflow.compliance_changed",
                          "label": "Workflow Compliance Changed"
                        }
                      ],
                      "allowed_return_hosts": [
                        "shop.example.com"
                      ],
                      "endpoints": [
                        {
                          "uuid": "11111111-2222-3333-4444-555555555555",
                          "label": "Production session webhooks",
                          "url": "https://yourapp.com/webhooks/didit",
                          "enabled": true,
                          "webhook_version": "v3",
                          "secret_shared_key": "dGhpcy1pcy1hbi1leGFtcGxlLXNlY3JldC0wMDAwMDA",
                          "subscribed_events": [
                            "status.updated",
                            "data.updated"
                          ],
                          "created_at": "2026-01-04T08:00:00.000000Z",
                          "updated_at": "2026-04-22T14:09:11.523671Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा: प्रत्येक अमान्य फ़ील्ड को संदेशों की एक सूची में मैप किया जाता है, और कुछ भी बदला नहीं जाता है। जो body मान्य JSON नहीं है, वह `{\"detail\": \"JSON parse error - ...\"}` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "प्रत्येक अमान्य फ़ील्ड को संदेशों की सूची से मैप किया गया है।",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Retention days missing": {
                    "value": {
                      "face_retention_days": [
                        "A finite retention duration is required when face retention is enabled."
                      ],
                      "biometric_consent_mode": "auto"
                    }
                  },
                  "Retention window out of range": {
                    "value": {
                      "data_retention_months": [
                        "Ensure this value is less than or equal to 120."
                      ]
                    }
                  },
                  "Invalid return host": {
                    "value": {
                      "allowed_return_hosts": [
                        "'https://shop.example.com' is not a hostname. Register the bare host (e.g. shop.example.com): no scheme, port, path or wildcard."
                      ]
                    }
                  },
                  "Invalid choice": {
                    "value": {
                      "face_retention_policy": [
                        "\"forever\" is not a valid choice."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks write": {
                    "value": {
                      "detail": "This API key has no write access to webhooks."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 300 से अधिक राइट (write) अनुरोध (POST, PATCH, PUT, DELETE)। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (300)।",
                "schema": {
                  "type": "integer",
                  "example": 300
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-write"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/{destination_uuid}/analytics/": {
      "get": {
        "summary": "webhook गंतव्य एनालिटिक्स प्राप्त करें",
        "description": "पूरी सीमा (`summary`) और प्रति UTC दिन (`points`) में एक webhook गंतव्य के लिए डिलीवरी योग, विफलता दर और रिस्पॉन्स समय। प्रत्येक प्रयास को एक डिलीवरी माना जाता है: किसी इवेंट का पहला भेजना, प्रत्येक स्वचालित [पुनः प्रयास](https://docs.didit.me/hi/integration/webhooks#पुनः-प्रयास-नीति) और प्रत्येक पुनः भेजना। एक डिलीवरी तब विफल मानी जाती है जब उसका रिकॉर्ड किया गया HTTP स्टेटस 400 या उससे अधिक हो, इसलिए टाइमआउट (`504` के रूप में दर्ज) और कनेक्शन विफलताएं (`503`) विफल मानी जाती हैं; अभी भी कतार में मौजूद डिलीवरी केवल `total_deliveries` में गिनी जाती है। डिलीवरी रिकॉर्ड लगभग 30 दिनों के लिए उपलब्ध रहते हैं। स्कोप्ड API कुंजी के लिए `webhooks: read` की आवश्यकता होती है।",
        "operationId": "get_webhook_destination_analytics",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "retrieve_analytics",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "गंतव्य का UUID (`GET /v3/webhook/destinations/` द्वारा लौटाया गया `uuid`)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "description": "शामिल करने के लिए पहला UTC दिन, `YYYY-MM-DD` के रूप में (समावेशी)। उपलब्ध सबसे पुरानी डिलीवरी से शुरू करने के लिए छोड़ दें। `dateFrom` को एक उपनाम के रूप में स्वीकार किया जाता है।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-10-01"
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "description": "शामिल करने के लिए अंतिम UTC दिन, `YYYY-MM-DD` के रूप में (समावेशी)। यह `date_from` से पहले का नहीं होना चाहिए। `dateTo` को एक उपनाम के रूप में स्वीकार किया जाता है।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-10-16"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/analytics/?date_from=2026-10-01&date_to=2026-10-16' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.retrieve_analytics(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.retrieveAnalytics(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.RetrieveAnalytics(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsRetrieveAnalyticsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().retrieveAnalytics(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->retrieveAnalytics('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.retrieve_analytics(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.RetrieveAnalyticsAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "गंतव्य के लिए डिलीवरी आंकड़े।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "summary",
                    "points"
                  ],
                  "properties": {
                    "summary": {
                      "type": "object",
                      "description": "अनुरोधित सीमा के कुल योग।",
                      "required": [
                        "total_deliveries",
                        "failed_deliveries",
                        "min_response_time_ms",
                        "avg_response_time_ms",
                        "max_response_time_ms",
                        "error_rate_percentage"
                      ],
                      "properties": {
                        "total_deliveries": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "डिलीवरी प्रयास, कतारबद्ध प्रयासों सहित।"
                        },
                        "failed_deliveries": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "ऐसे प्रयास जिनकी रिकॉर्ड की गई HTTP स्थिति 400 या उससे अधिक है।"
                        },
                        "min_response_time_ms": {
                          "type": "integer",
                          "nullable": true,
                          "description": "मिलीसेकंड में सबसे तेज़ प्रयास, या `null` जब किसी भी प्रयास का कोई रिकॉर्ड किया गया समय नहीं होता है।"
                        },
                        "avg_response_time_ms": {
                          "type": "integer",
                          "nullable": true,
                          "description": "मिलीसेकंड में औसत प्रयास समय, पूर्णांकित, या `null` जब किसी भी प्रयास का समय रिकॉर्ड नहीं किया गया हो।"
                        },
                        "max_response_time_ms": {
                          "type": "integer",
                          "nullable": true,
                          "description": "मिलीसेकंड में सबसे धीमा प्रयास, या जब किसी प्रयास का कोई समय रिकॉर्ड न हो तो `null`।"
                        },
                        "error_rate_percentage": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 100,
                          "description": "`failed_deliveries` / `total_deliveries` x 100, निकटतम पूर्णांक तक पूर्णांकित। जब कोई डिलीवरी न हो तो `0`।"
                        }
                      }
                    },
                    "points": {
                      "type": "array",
                      "description": "डिलीवरी वाले प्रति UTC दिन एक प्रविष्टि, सबसे पुरानी पहले। बिना डिलीवरी वाले दिनों को छोड़ दिया जाता है, इसलिए जब आप उन्हें चार्ट करते हैं तो अंतरालों को शून्य से भरें।",
                      "items": {
                        "type": "object",
                        "required": [
                          "date",
                          "total_deliveries",
                          "failed_deliveries",
                          "min_response_time_ms",
                          "avg_response_time_ms",
                          "max_response_time_ms"
                        ],
                        "properties": {
                          "date": {
                            "type": "string",
                            "format": "date",
                            "description": "UTC दिन, `YYYY-MM-DD`।"
                          },
                          "total_deliveries": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "डिलीवरी प्रयास, कतारबद्ध प्रयासों सहित।"
                          },
                          "failed_deliveries": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "ऐसे प्रयास जिनकी रिकॉर्ड की गई HTTP स्थिति 400 या उससे अधिक है।"
                          },
                          "min_response_time_ms": {
                            "type": "integer",
                            "nullable": true,
                            "description": "मिलीसेकंड में सबसे तेज़ प्रयास, या `null` जब किसी भी प्रयास का कोई रिकॉर्ड किया गया समय नहीं होता है।"
                          },
                          "avg_response_time_ms": {
                            "type": "integer",
                            "nullable": true,
                            "description": "मिलीसेकंड में औसत प्रयास समय, पूर्णांकित, या `null` जब किसी भी प्रयास का समय रिकॉर्ड नहीं किया गया हो।"
                          },
                          "max_response_time_ms": {
                            "type": "integer",
                            "nullable": true,
                            "description": "मिलीसेकंड में सबसे धीमा प्रयास, या जब किसी प्रयास का कोई समय रिकॉर्ड न हो तो `null`।"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Three days of deliveries": {
                    "value": {
                      "summary": {
                        "total_deliveries": 1250,
                        "failed_deliveries": 12,
                        "min_response_time_ms": 38,
                        "avg_response_time_ms": 164,
                        "max_response_time_ms": 5004,
                        "error_rate_percentage": 1
                      },
                      "points": [
                        {
                          "date": "2026-10-14",
                          "total_deliveries": 410,
                          "failed_deliveries": 0,
                          "min_response_time_ms": 38,
                          "avg_response_time_ms": 152,
                          "max_response_time_ms": 911
                        },
                        {
                          "date": "2026-10-15",
                          "total_deliveries": 395,
                          "failed_deliveries": 12,
                          "min_response_time_ms": 41,
                          "avg_response_time_ms": 190,
                          "max_response_time_ms": 5004
                        },
                        {
                          "date": "2026-10-16",
                          "total_deliveries": 445,
                          "failed_deliveries": 0,
                          "min_response_time_ms": 40,
                          "avg_response_time_ms": 151,
                          "max_response_time_ms": 1220
                        }
                      ]
                    }
                  },
                  "No deliveries in range": {
                    "value": {
                      "summary": {
                        "total_deliveries": 0,
                        "failed_deliveries": 0,
                        "min_response_time_ms": null,
                        "avg_response_time_ms": null,
                        "max_response_time_ms": null,
                        "error_rate_percentage": 0
                      },
                      "points": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`date_from` या `date_to` कोई `YYYY-MM-DD` तिथि नहीं है, या `date_to` `date_from` से पहले की है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "प्रत्येक अमान्य फ़ील्ड को संदेशों की सूची से मैप किया गया है।",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Malformed date": {
                    "value": {
                      "date_from": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  },
                  "Reversed range": {
                    "value": {
                      "date_to": [
                        "date_to must be greater than or equal to date_from."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks read": {
                    "value": {
                      "detail": "This API key has no read access to webhooks."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन के लिए इस UUID वाला कोई गंतव्य मौजूद नहीं है, या इसे हटा दिया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Destination not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/{destination_uuid}/deliveries/": {
      "get": {
        "summary": "webhook गंतव्य डिलीवरी की सूची बनाएं",
        "description": "एक webhook गंतव्य पर प्रत्येक डिलीवरी प्रयास को पेजिनेट करें, नवीनतम पहले। प्रत्येक इवेंट का पहला प्रेषण, प्रत्येक स्वचालित [पुनः प्रयास करें](https://docs.didit.me/hi/integration/webhooks#पुनः-प्रयास-नीति) और प्रत्येक पुनः प्रेषण अलग प्रविष्टियाँ हैं। प्रविष्टियों में HTTP स्थिति और रिस्पॉन्स समय शामिल होता है लेकिन payload नहीं: इसके हेडर और बॉडी को पढ़ने के लिए एक डिलीवरी फ़ेच करें। `count` 100 तक सटीक है और उससे ऊपर 100 दिखाता है, इसलिए `next` का अनुसरण करें जब तक कि यह `null` न हो। डिलीवरी रिकॉर्ड लगभग 30 दिनों के लिए उपलब्ध रहते हैं। एक स्कोप्ड API कुंजी को `webhooks: read` और `decisions: read` की आवश्यकता होती है; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint का उपयोग नहीं कर सकती।",
        "operationId": "list_webhook_destination_deliveries",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "list_deliveries",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "गंतव्य का UUID (`GET /v3/webhook/destinations/` द्वारा लौटाया गया `uuid`)।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज डिलीवरी की अधिकतम संख्या। डिफ़ॉल्ट 50 है। धनात्मक पूर्णांक न होने वाला मान वापस 50 हो जाता है; 1000000 से अधिक मान `400` लौटाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "example": 50
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "छोड़ी जाने वाली डिलीवरी की संख्या। डिफ़ॉल्ट 0 है। रिस्पॉन्स से `next` और `previous` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "example": 0
          },
          {
            "name": "date_from",
            "in": "query",
            "required": false,
            "description": "शामिल करने के लिए पहला UTC दिन, `YYYY-MM-DD` के रूप में (समावेशी)। उपलब्ध सबसे पुरानी डिलीवरी से शुरू करने के लिए छोड़ दें। `dateFrom` को एक उपनाम के रूप में स्वीकार किया जाता है।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-10-01"
          },
          {
            "name": "date_to",
            "in": "query",
            "required": false,
            "description": "शामिल करने के लिए अंतिम UTC दिन, `YYYY-MM-DD` के रूप में (समावेशी)। यह `date_from` से पहले का नहीं होना चाहिए। `dateTo` को एक उपनाम के रूप में स्वीकार किया जाता है।",
            "schema": {
              "type": "string",
              "format": "date"
            },
            "example": "2026-10-16"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/deliveries/?limit=50&date_from=2026-10-01' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.webhooks.destinations.list_deliveries(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.webhooks.destinations.listDeliveries(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Webhooks.Destinations.ListDeliveriesAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsListDeliveriesParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.webhooks().destinations().listDeliveries(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->webhooks->destinations->listDeliveries('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.webhooks.destinations.list_deliveries(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Webhooks.Destinations.ListDeliveriesAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "डिलीवरी का एक पेज, सबसे नया पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "मिलान डिलीवरी, 100 तक सटीक और उससे अधिक होने पर 100 तक सीमित। यह जानने के लिए कि क्या अधिक पेज मौजूद हैं, `next` का उपयोग करें।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/WebhookDestinationDelivery"
                      }
                    }
                  }
                },
                "examples": {
                  "Failed delivery, its retry and a queued event": {
                    "value": {
                      "count": 3,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "66666666-7777-8888-9999-000000000003",
                          "session_id": null,
                          "request_url": "https://yourapp.com/webhooks/didit",
                          "response_status": null,
                          "response_time_ms": null,
                          "status": "APPROVED",
                          "webhook_type": "transaction.created",
                          "created_at": "2026-10-15T09:23:02.871190Z"
                        },
                        {
                          "uuid": "66666666-7777-8888-9999-000000000002",
                          "session_id": "22222222-3333-4444-5555-666666666666",
                          "request_url": "https://yourapp.com/webhooks/didit",
                          "response_status": 200,
                          "response_time_ms": 143,
                          "status": "In Progress",
                          "webhook_type": "status.updated",
                          "created_at": "2026-10-15T09:22:19.104233Z"
                        },
                        {
                          "uuid": "66666666-7777-8888-9999-000000000001",
                          "session_id": "22222222-3333-4444-5555-666666666666",
                          "request_url": "https://yourapp.com/webhooks/didit",
                          "response_status": 503,
                          "response_time_ms": 412,
                          "status": "In Progress",
                          "webhook_type": "status.updated",
                          "created_at": "2026-10-15T09:21:18.412345Z"
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`date_from` या `date_to` कोई `YYYY-MM-DD` तिथि नहीं है, `date_to` `date_from` से पहले की है, या `limit` या `offset` 1000000 से अधिक है (वह त्रुटि संदेशों की एक JSON ऐरे है)।",
            "content": {
              "application/json": {
                "examples": {
                  "Malformed date": {
                    "value": {
                      "date_from": [
                        "Date has wrong format. Use one of these formats instead: YYYY-MM-DD."
                      ]
                    }
                  },
                  "Reversed range": {
                    "value": {
                      "date_to": [
                        "date_to must be greater than or equal to date_from."
                      ]
                    }
                  },
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी पर `This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks read": {
                    "value": {
                      "detail": "This API key has no read access to webhooks."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन के लिए इस UUID वाला कोई गंतव्य मौजूद नहीं है, या इसे हटा दिया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Destination not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/{destination_uuid}/deliveries/{delivery_uuid}/": {
      "get": {
        "summary": "webhook गंतव्य डिलीवरी प्राप्त करें",
        "description": "Didit द्वारा भेजे गए सटीक अनुरोध हेडर और JSON बॉडी, आपके endpoint द्वारा लौटाए गए HTTP स्टेटस और रिस्पॉन्स समय के साथ एक webhook गंतव्य पर एक डिलीवरी प्रयास प्राप्त करें। `request_header` और `request_body` JSON टेक्स्ट हैं: सिग्नेचर हेडर और payload को पढ़ने के लिए उन्हें पार्स करें, उदाहरण के लिए गंतव्य की `secret_shared_key` के विरुद्ध अपने [हस्ताक्षर सत्यापन](https://docs.didit.me/hi/integration/webhooks#हस्ताक्षर-सत्यापन) की जांच करने के लिए। डिलीवरी में कभी भी साइनिंग सीक्रेट शामिल नहीं होता है, और Didit आपके endpoint के रिस्पॉन्स बॉडी को रिकॉर्ड नहीं करता है। स्कोप्ड API कुंजी के लिए `webhooks: read` और `decisions: read` आवश्यक हैं; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint का उपयोग नहीं कर सकती है।",
        "operationId": "get_webhook_destination_delivery",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "retrieve_delivery",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "उस गंतव्य का UUID जिस पर डिलीवरी भेजी गई थी।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "delivery_uuid",
            "in": "path",
            "required": true,
            "description": "डिलीवरी का UUID: `GET /v3/webhook/destinations/{destination_uuid}/deliveries/` द्वारा लौटाई गई किसी प्रविष्टि का `uuid`।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "66666666-7777-8888-9999-000000000001"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/deliveries/66666666-7777-8888-9999-000000000001/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.retrieve_delivery(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"66666666-7777-8888-9999-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.retrieveDelivery(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"66666666-7777-8888-9999-000000000001\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.RetrieveDelivery(ctx, \"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().retrieveDelivery(\"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->retrieveDelivery('11111111-2222-3333-4444-555555555555', '66666666-7777-8888-9999-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.retrieve_delivery(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"66666666-7777-8888-9999-000000000001\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.RetrieveDeliveryAsync(\"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "डिलीवरी, उसके अनुरोध हेडर और बॉडी के साथ।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDestinationDeliveryDetail"
                },
                "examples": {
                  "Connection failure": {
                    "value": {
                      "uuid": "66666666-7777-8888-9999-000000000001",
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "request_url": "https://yourapp.com/webhooks/didit",
                      "response_status": 503,
                      "response_time_ms": 412,
                      "status": "In Progress",
                      "webhook_type": "status.updated",
                      "created_at": "2026-10-15T09:21:18.412345Z",
                      "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                      "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी पर `This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks read": {
                    "value": {
                      "detail": "This API key has no read access to webhooks."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "गंतव्य एप्लिकेशन के लिए मौजूद नहीं है या हटा दिया गया है, या डिलीवरी मौजूद नहीं है, किसी अन्य गंतव्य से संबंधित है, या अब उपलब्ध नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Destination not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  },
                  "Delivery not found": {
                    "value": {
                      "detail": "Webhook delivery not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/webhook/destinations/{destination_uuid}/deliveries/{delivery_uuid}/resend/": {
      "post": {
        "summary": "webhook गंतव्य डिलीवरी पुनः भेजें",
        "description": "पिछली डिलीवरी को दोबारा भेजें, उदाहरण के लिए जब आपका endpoint डाउन था। Didit संग्रहीत payload लेता है, एक नया `timestamp` सेट करता है, गंतव्य की वर्तमान `secret_shared_key` (`X-Signature`, `X-Signature-V2`, `X-Signature-Simple` और `X-Timestamp`) के साथ इसे फिर से हस्ताक्षरित करता है और डिलीवरी के `request_url` पर पोस्ट करता है, भले ही गंतव्य का URL तब से बदल गया हो या गंतव्य अक्षम हो गया हो। `event_id` और शेष payload अपरिवर्तित रहते हैं, इसलिए `event_id` के आधार पर डिडुप्लिकेट करें। कॉल आपके endpoint के लिए 5 सेकंड तक प्रतीक्षा करती है और आपके endpoint ने जो भी उत्तर दिया हो, उसके बावजूद `200` के साथ नई डिलीवरी लौटाती है: `response_status` पढ़ें। रीसेंड का स्वचालित रूप से पुनः प्रयास नहीं किया जाता है, प्रत्येक कॉल फिर से भेजती है और एक नई डिलीवरी बनाती है, और अनुरोध में कोई बॉडी नहीं होती है। स्कोप्ड API कुंजी के लिए `webhooks: write` और `decisions: read` आवश्यक हैं; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint का उपयोग नहीं कर सकती है।",
        "operationId": "resend_webhook_destination_delivery",
        "x-didit-sdk": {
          "resource": "webhooks.destinations",
          "method": "resend_delivery",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "name": "destination_uuid",
            "in": "path",
            "required": true,
            "description": "उस गंतव्य का UUID जिस पर डिलीवरी भेजी गई थी।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "delivery_uuid",
            "in": "path",
            "required": true,
            "description": "पुनः भेजी जाने वाली डिलीवरी का UUID: `GET /v3/webhook/destinations/{destination_uuid}/deliveries/` द्वारा लौटाई गई किसी प्रविष्टि का `uuid`।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "66666666-7777-8888-9999-000000000001"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/deliveries/66666666-7777-8888-9999-000000000001/resend/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.webhooks.destinations.resend_delivery(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"66666666-7777-8888-9999-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.webhooks.destinations.resendDelivery(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"66666666-7777-8888-9999-000000000001\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.ResendDelivery(ctx, \"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.webhooks().destinations().resendDelivery(\"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->webhooks->destinations->resendDelivery('11111111-2222-3333-4444-555555555555', '66666666-7777-8888-9999-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.webhooks.destinations.resend_delivery(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"66666666-7777-8888-9999-000000000001\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Webhooks.Destinations.ResendDeliveryAsync(\"11111111-2222-3333-4444-555555555555\", \"66666666-7777-8888-9999-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नई डिलीवरी, जिसका पहले ही प्रयास किया जा चुका है। `response_status` वह है जो आपके endpoint ने इस बार उत्तर दिया (`504` टाइमआउट, `503` कनेक्शन विफलता)। मूल डिलीवरी अपरिवर्तित रहती है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDestinationDeliveryDetail"
                },
                "examples": {
                  "Accepted on resend": {
                    "value": {
                      "uuid": "66666666-7777-8888-9999-000000000004",
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "request_url": "https://yourapp.com/webhooks/didit",
                      "response_status": 200,
                      "response_time_ms": 151,
                      "status": "In Progress",
                      "webhook_type": "status.updated",
                      "created_at": "2026-10-16T14:05:42.330981Z",
                      "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"b8eb1e376517ee0cad8ba98ff7f8fd35fc72eca231000963a96a335f82328835\", \"X-Signature-V2\": \"9efd2ce9ed1303e1d05273ef9608a59363ed9789a05253db4748b3e8e50cb109\", \"X-Signature-Simple\": \"bf3a9dc04b2c20ab539203b0cd5cca2a10f630bf62d8feb6d68d82af80f64774\", \"X-Timestamp\": \"1792159542\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                      "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792159542,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "संग्रहीत डिलीवरी पर दोबारा हस्ताक्षर नहीं किए जा सके। कुछ भी नहीं भेजा गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string",
                      "description": "मशीन द्वारा पठनीय स्थिर त्रुटि कोड। इस पर ब्रांच करें, `detail` पर नहीं।"
                    }
                  }
                },
                "examples": {
                  "Unsignable delivery": {
                    "value": {
                      "detail": "Invalid webhook data format",
                      "code": "invalid_webhook_payload"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। अनुपलब्ध, अमान्य या निरस्त `x-api-key` पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी पर `This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint.` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks write": {
                    "value": {
                      "detail": "This API key has no write access to webhooks."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "गंतव्य एप्लिकेशन के लिए मौजूद नहीं है या हटा दिया गया है, या डिलीवरी मौजूद नहीं है, किसी अन्य गंतव्य से संबंधित है, या अब उपलब्ध नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Destination not found": {
                    "value": {
                      "detail": "Webhook destination not found."
                    }
                  },
                  "Delivery not found": {
                    "value": {
                      "detail": "Webhook delivery not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 300 से अधिक राइट (write) अनुरोध (POST, PATCH, PUT, DELETE)। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (300)।",
                "schema": {
                  "type": "integer",
                  "example": 300
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-write"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/": {
      "get": {
        "summary": "निगरानी इवेंट सूचीबद्ध करें",
        "description": "अपने एप्लिकेशन के लिए संग्रहीत निगरानी इवेंट सूचीबद्ध करें, नवीनतम `occurred_at` पहले, उन वैकल्पिक फ़िल्टरों के साथ जो AND से संयोजित होते हैं। बहु-मान फ़िल्टर (`event_category`, `action_type`, `status`, `retention_class`) पैरामीटर को दोहराते हैं और किसी भी मान से मेल खाते हैं; अन्य फ़िल्टर सटीक मिलान वाले हैं, और अज्ञात मान केवल कोई इवेंट नहीं लौटाते हैं। प्रत्येक परिणाम एक सारांश है: payload, डिवाइस संदर्भ, IP एनरीचमेंट और नियम साक्ष्य के लिए `GET /v3/events/{event_uuid}/` को कॉल करें, और किसी एक विषय के इतिहास के लिए `GET /v3/events/subjects/{vendor_data}/` को प्राथमिकता दें। इवेंट इनजेशन चालू हो या न हो, रीड कार्य करता है। एक स्कोप्ड API कुंजी के लिए `transactions: read` आवश्यक है। देखें [इवेंट इनजेशन](https://docs.didit.me/hi/transaction-monitoring/events)।",
        "operationId": "list_monitoring_events",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज इवेंट की अधिकतम संख्या। डिफ़ॉल्ट 50 है। 1000000 से अधिक मान `400` लौटाते हैं; गैर-संख्यात्मक, शून्य या ऋणात्मक मान वापस 50 हो जाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "example": 50
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "छोड़े जाने वाले इवेंट्स की संख्या। डिफ़ॉल्ट 0 है। रिस्पॉन्स से `next` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "example": 0
          },
          {
            "name": "event_category",
            "in": "query",
            "required": false,
            "description": "केवल इन श्रेणियों के इवेंट। कई मानों के लिए पैरामीटर दोहराएं (`?event_category=payment&event_category=dispute`); उनमें से किसी से भी मेल खाने वाला इवेंट लौटाया जाता है।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "auth",
                  "session",
                  "gameplay",
                  "bonus",
                  "affiliate",
                  "payment",
                  "dispute",
                  "security",
                  "responsible_gambling",
                  "custom"
                ]
              }
            },
            "example": [
              "payment",
              "dispute"
            ]
          },
          {
            "name": "action_type",
            "in": "query",
            "required": false,
            "description": "केवल इन कार्रवाई प्रकारों वाले इवेंट (सटीक, केस-संवेदी)। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "deposit_completed",
              "chargeback_opened"
            ]
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "केवल इन स्थितियों वाले इवेंट। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ACCEPTED",
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED"
                ]
              }
            },
            "example": [
              "IN_REVIEW",
              "DECLINED"
            ]
          },
          {
            "name": "retention_class",
            "in": "query",
            "required": false,
            "description": "केवल इन प्रतिधारण वर्गों के इवेंट। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "low_value",
                  "standard",
                  "risk_relevant",
                  "monetary_or_compliance"
                ]
              }
            },
            "example": [
              "risk_relevant"
            ]
          },
          {
            "name": "subject_vendor_data",
            "in": "query",
            "required": false,
            "description": "विषय के `vendor_data` पर सटीक मिलान। एक ही ID किसी व्यक्ति और कंपनी दोनों का नाम हो सकती है; किसी एक को चुनने के लिए `subject_entity_type` जोड़ें, या `GET /v3/events/subjects/{vendor_data}/` का उपयोग करें।",
            "schema": {
              "type": "string"
            },
            "example": "user-42"
          },
          {
            "name": "subject_entity_type",
            "in": "query",
            "required": false,
            "description": "`company` केवल कंपनी सब्जेक्ट्स के इवेंट लौटाता है; कोई अन्य गैर-रिक्त मान (उदाहरण के लिए `individual`) केवल व्यक्तियों के इवेंट लौटाता है। दोनों को लौटाने के लिए इसे छोड़ दें।",
            "schema": {
              "type": "string",
              "enum": [
                "individual",
                "company"
              ]
            },
            "example": "individual"
          },
          {
            "name": "business_vendor_data",
            "in": "query",
            "required": false,
            "description": "इवेंट के साथ भेजे गए `business.vendor_data` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "merchant-7"
          },
          {
            "name": "session_id",
            "in": "query",
            "required": false,
            "description": "`session.session_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "web-session-abc"
          },
          {
            "name": "device_fingerprint",
            "in": "query",
            "required": false,
            "description": "`device_context.fingerprint` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "fp-a8c1"
          },
          {
            "name": "ip_address",
            "in": "query",
            "required": false,
            "description": "इवेंट के IP पते पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "203.0.113.42"
          },
          {
            "name": "game_id",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `game_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "poker-holdem-01"
          },
          {
            "name": "round_id",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `round_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "round-88231"
          },
          {
            "name": "affiliate_code",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `affiliate_code` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "aff-summer"
          },
          {
            "name": "payment_reference_id",
            "in": "query",
            "required": false,
            "description": "भुगतान संदर्भ पर सटीक मिलान (`transaction_context.payment_reference_id` या `payload.payment_reference_id` से)।",
            "schema": {
              "type": "string"
            },
            "example": "dep_735"
          },
          {
            "name": "counterparty_vendor_data",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `counterparty_vendor_data` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "user-77"
          },
          {
            "name": "matched_only",
            "in": "query",
            "required": false,
            "description": "`true` (साथ ही `1` या `yes`, केस-असंवेदनशील) केवल वे इवेंट लौटाता है जिनसे कम से कम एक नियम मेल खाता हो (`rules_matched_count` 0 से अधिक)। किसी अन्य मान को अनदेखा कर दिया जाता है।",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": true
          },
          {
            "name": "occurred_from",
            "in": "query",
            "required": false,
            "description": "केवल इस क्षण पर या उसके बाद (इस क्षण सहित) `occurred_at` वाले इवेंट। एक ISO 8601 मान भेजें: `2026-10-01T00:00:00Z`, प्रतिशत-एन्कोडेड `+` के साथ एक स्पष्ट ऑफ़सेट (`2026-10-01T02:00:00%2B02:00`; एक गैर-एन्कोडेड `+` को स्पेस के रूप में डिकोड किया जाता है और मान पार्स नहीं होता है), या केवल एक तारीख (`2026-10-01`), जिसका अर्थ उस दिन का 00:00:00 UTC है। बिना ऑफ़सेट वाले मान को UTC के रूप में पढ़ा जाता है। किसी अन्य प्रारूप में मान स्वीकार नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2026-10-01T00:00:00Z"
          },
          {
            "name": "occurred_to",
            "in": "query",
            "required": false,
            "description": "केवल इस क्षण पर या उससे पहले (इस क्षण सहित) `occurred_at` वाले इवेंट। केवल तारीख का अर्थ उस दिन की शुरुआत है, इसलिए `occurred_to=2026-10-15` 15 अक्टूबर के बाकी समय को बाहर कर देता है; इसे शामिल करने के लिए `2026-10-15T23:59:59Z` भेजें। एक ISO 8601 मान भेजें: `2026-10-01T00:00:00Z`, प्रतिशत-एन्कोडेड `+` के साथ एक स्पष्ट ऑफ़सेट (`2026-10-01T02:00:00%2B02:00`; एक गैर-एन्कोडेड `+` को स्पेस के रूप में डिकोड किया जाता है और मान पार्स नहीं होता है), या केवल एक तारीख (`2026-10-01`), जिसका अर्थ उस दिन का 00:00:00 UTC है। बिना ऑफ़सेट वाले मान को UTC के रूप में पढ़ा जाता है। किसी अन्य प्रारूप में मान स्वीकार नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2026-10-17T23:59:59Z"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "`event_id`, `action_type`, `subject_vendor_data` या `counterparty_vendor_data` पर केस-इनसेंसिटिव सबस्ट्रिंग मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "chargeback"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/events/?event_category=payment&event_category=dispute&matched_only=true&occurred_from=2026-10-01T00:00:00Z&limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.monitoring_events.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.monitoringEvents.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.MonitoringEvents.ListAutoPaging(ctx, didit.MonitoringEventsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.monitoringEvents().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->monitoringEvents->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.monitoring_events.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.MonitoringEvents.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "इवेंट सारांशों का एक पेज।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitoringEventPage"
                },
                "examples": {
                  "Payment and dispute events": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "event_uuid": "11111111-2222-3333-4444-555555555555",
                          "event_id": "chargeback-2026-10-16-000318",
                          "event_category": "dispute",
                          "action_type": "chargeback_opened",
                          "occurred_at": "2026-10-16T14:02:11Z",
                          "received_at": "2026-10-16T14:02:12.418230Z",
                          "status": "IN_REVIEW",
                          "score": 60,
                          "subject_vendor_data": "user-42",
                          "subject_entity_type": "individual",
                          "subject_uuid": "66666666-7777-8888-9999-000000000000",
                          "counterparty_vendor_data": null,
                          "session_id": null,
                          "device_fingerprint": null,
                          "ip_address": null,
                          "ip_country": null,
                          "amount": "250.000000000000000000",
                          "currency": "EUR",
                          "game_id": null,
                          "round_id": null,
                          "bonus_id": null,
                          "affiliate_code": null,
                          "payment_reference_id": "dep_735",
                          "retention_class": "monetary_or_compliance",
                          "rules_matched_count": 1,
                          "correlation_pending": false,
                          "is_droppable": false
                        },
                        {
                          "event_uuid": "22222222-3333-4444-5555-666666666666",
                          "event_id": "login-2026-10-15-000912",
                          "event_category": "auth",
                          "action_type": "login",
                          "occurred_at": "2026-10-15T08:30:00.120000Z",
                          "received_at": "2026-10-15T08:30:00.734512Z",
                          "status": "ACCEPTED",
                          "score": 0,
                          "subject_vendor_data": "user-42",
                          "subject_entity_type": "individual",
                          "subject_uuid": "66666666-7777-8888-9999-000000000000",
                          "counterparty_vendor_data": null,
                          "session_id": "web-session-abc",
                          "device_fingerprint": "fp-a8c1",
                          "ip_address": "203.0.113.42",
                          "ip_country": "ES",
                          "amount": null,
                          "currency": null,
                          "game_id": null,
                          "round_id": null,
                          "bonus_id": null,
                          "affiliate_code": null,
                          "payment_reference_id": null,
                          "retention_class": "standard",
                          "rules_matched_count": 0,
                          "correlation_pending": false,
                          "is_droppable": true
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1000000 से बड़ा है। बॉडी एक संदेश वाला JSON ऐरे है। गैर-संख्यात्मक या गैर-सकारात्मक `limit` विफल होने के बजाय डिफ़ॉल्ट 50 पर वापस आ जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "limit too large": {
                    "summary": "limit 1000000 से अधिक है",
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "offset too large": {
                    "summary": "offset 1000000 से अधिक है",
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: read` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी कभी भी लेन-देन निगरानी डेटा तक नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: `GET` अनुरोध प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "निगरानी इवेंट बनाएं",
        "description": "अपने बैकएंड से एक गैर-मौद्रिक इवेंट (लॉगिन, सत्र, गेमप्ले, बोनस, एफिलिएट, भुगतान, विवाद, सुरक्षा, ज़िम्मेदार जुआ या कस्टम) भेजें। इवेंट को उसके श्रेणी अनुबंध के विरुद्ध मान्य किया जाता है, संग्रहीत किया जाता है, प्रति अद्वितीय सार्वजनिक पते पर एक बार IP-संवर्धित किया जाता है, और रिस्पॉन्स लौटने से पहले आपके रीयल-टाइम इवेंट नियमों द्वारा मूल्यांकन किया जाता है; क्रॉस-विषय और लंबी-अवधि के नियम एसिंक्रोनस रूप से चलते हैं (`correlation_pending: true`), और सैंडबॉक्स एप्लिकेशन में कोई नियम नहीं चलते हैं। `event_id` आइडेम्पोटेंसी कुंजी है: समान `event_category`, `action_type`, `occurred_at`, `subject.vendor_data` और `payload` के साथ समान `event_id` `idempotent_replay: true` और संग्रहीत परिणाम के साथ `200` लौटाता है (अन्य लिफ़ाफ़ा फ़ील्ड की तुलना नहीं की जाती है), जबकि भिन्न मान `409` लौटाते हैं। इवेंट इनजेशन प्रति एप्लिकेशन ऑप्ट-इन है: जब तक इसे चालू नहीं किया जाता, यह endpoint `code: event_monitoring_disabled` के साथ `403` लौटाता है और कुछ भी संग्रहीत नहीं करता है। एक स्कोप्ड API कुंजी को `transactions: write` की आवश्यकता होती है। [इवेंट इनजेशन](https://docs.didit.me/hi/transaction-monitoring/events) और [इवेंट्स पर नियम](https://docs.didit.me/hi/transaction-monitoring/event-rules) देखें; ब्राउज़र या ऐप से इवेंट भेजने के लिए, [SDK इवेंट सबमिशन](https://docs.didit.me/hi/transaction-monitoring/sdk-event-submission) का उपयोग करें।",
        "operationId": "create_monitoring_event",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitoringEventCreateRequest"
              },
              "examples": {
                "Login": {
                  "value": {
                    "event_id": "login-2026-10-17-000001",
                    "event_category": "auth",
                    "action_type": "login",
                    "occurred_at": "2026-10-17T09:15:02.481Z",
                    "time_zone": "Europe/Madrid",
                    "subject": {
                      "vendor_data": "user-42",
                      "entity_type": "individual"
                    },
                    "session": {
                      "session_id": "web-session-abc",
                      "sequence": 142
                    },
                    "device_context": {
                      "fingerprint": "fp-a8c1",
                      "network_context": {
                        "ip_address": "203.0.113.42"
                      }
                    },
                    "payload": {
                      "method": "password"
                    },
                    "custom_values": {
                      "vip_tier": "gold"
                    }
                  }
                },
                "Deposit completed": {
                  "value": {
                    "event_id": "deposit-2026-10-17-000002",
                    "event_category": "payment",
                    "action_type": "deposit_completed",
                    "occurred_at": "2026-10-17T09:16:40Z",
                    "subject": {
                      "vendor_data": "user-42"
                    },
                    "transaction_context": {
                      "amount": "100.00",
                      "currency": "EUR",
                      "direction": "inbound",
                      "payment_reference_id": "dep_736"
                    },
                    "payload": {
                      "payment_method": "card",
                      "status": "completed"
                    }
                  }
                },
                "Chargeback opened": {
                  "value": {
                    "event_id": "chargeback-2026-10-16-000318",
                    "event_category": "dispute",
                    "action_type": "chargeback_opened",
                    "occurred_at": "2026-10-16T14:02:11Z",
                    "subject": {
                      "vendor_data": "user-42"
                    },
                    "payload": {
                      "payment_reference_id": "dep_735",
                      "chargeback_id": "cb_5521",
                      "amount": "250.00",
                      "currency": "EUR",
                      "reason_code": "fraud"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/events/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"event_id\": \"login-2026-10-17-000001\",\n    \"event_category\": \"auth\",\n    \"action_type\": \"login\",\n    \"occurred_at\": \"2026-10-17T09:15:02.481Z\",\n    \"subject\": {\"vendor_data\": \"user-42\", \"entity_type\": \"individual\"},\n    \"session\": {\"session_id\": \"web-session-abc\", \"sequence\": 142},\n    \"device_context\": {\n      \"fingerprint\": \"fp-a8c1\",\n      \"network_context\": {\"ip_address\": \"203.0.113.42\"}\n    },\n    \"payload\": {\"method\": \"password\"}\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.monitoring_events.create(\n    event_id=\"login-2026-10-17-000001\",\n    event_category=\"auth\",\n    action_type=\"login\",\n    occurred_at=\"2026-10-17T09:15:02.481Z\",\n    time_zone=\"Europe/Madrid\",\n    subject={\n        \"vendor_data\": \"user-42\",\n        \"entity_type\": \"individual\",\n    },\n    session={\n        \"session_id\": \"web-session-abc\",\n        \"sequence\": 142,\n    },\n    device_context={\n        \"fingerprint\": \"fp-a8c1\",\n        \"network_context\": {\n            \"ip_address\": \"203.0.113.42\",\n        },\n    },\n    payload={\"method\": \"password\"},\n    custom_values={\"vip_tier\": \"gold\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.monitoringEvents.create({\n  event_id: \"login-2026-10-17-000001\",\n  event_category: \"auth\",\n  action_type: \"login\",\n  occurred_at: \"2026-10-17T09:15:02.481Z\",\n  time_zone: \"Europe/Madrid\",\n  subject: {\n    vendor_data: \"user-42\",\n    entity_type: \"individual\",\n  },\n  session: {\n    session_id: \"web-session-abc\",\n    sequence: 142,\n  },\n  device_context: {\n    fingerprint: \"fp-a8c1\",\n    network_context: {\n      ip_address: \"203.0.113.42\",\n    },\n  },\n  payload: { method: \"password\" },\n  custom_values: { vip_tier: \"gold\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.Create(ctx, didit.MonitoringEventCreateRequest{\n\tEventID:       \"login-2026-10-17-000001\",\n\tEventCategory: \"auth\",\n\tActionType:    \"login\",\n\tOccurredAt:    time.Date(2026, 10, 17, 9, 15, 2, 0, time.UTC),\n\tTimeZone:      didit.String(\"Europe/Madrid\"),\n\tSubject: didit.MonitoringEventCreateRequestSubject{\n\t\tVendorData: \"user-42\",\n\t\tEntityType: didit.String(\"individual\"),\n\t},\n\tSession: didit.Some(didit.MonitoringEventCreateRequestSession{\n\t\tSessionID: didit.String(\"web-session-abc\"),\n\t\tSequence:  didit.Int(142),\n\t}),\n\tDeviceContext: didit.Some(didit.MonitoringEventCreateRequestDeviceContext{\n\t\tFingerprint: didit.String(\"fp-a8c1\"),\n\t\tNetworkContext: didit.Some(didit.MonitoringEventCreateRequestDeviceContextNetworkContext{\n\t\t\tIPAddress: didit.String(\"203.0.113.42\"),\n\t\t}),\n\t}),\n\tPayload:      didit.Some(map[string]any{\"method\": \"password\"}),\n\tCustomValues: didit.Some(map[string]any{\"vip_tier\": \"gold\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.OffsetDateTime;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.MonitoringEventCreateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.monitoringEvents().create(MonitoringEventCreateRequest.builder()\n        .eventId(\"login-2026-10-17-000001\")\n        .eventCategory(MonitoringEventCreateRequest.EventCategory.of(\"auth\"))\n        .actionType(\"login\")\n        .occurredAt(OffsetDateTime.parse(\"2026-10-17T09:15:02.481Z\"))\n        .timeZone(\"Europe/Madrid\")\n        .subject(MonitoringEventCreateRequest.Subject.builder()\n                .vendorData(\"user-42\")\n                .entityType(\"individual\")\n                .build())\n        .session(MonitoringEventCreateRequest.Session.builder()\n                .sessionId(\"web-session-abc\")\n                .sequence(142L)\n                .build())\n        .deviceContext(MonitoringEventCreateRequest.DeviceContext.builder()\n                .fingerprint(\"fp-a8c1\")\n                .networkContext(MonitoringEventCreateRequest.DeviceContext.NetworkContext.builder()\n                        .ipAddress(\"203.0.113.42\")\n                        .build())\n                .build())\n        .payload(Map.of(\"method\", \"password\"))\n        .customValues(Map.of(\"vip_tier\", MonitoringEventCreateRequest.CustomValuesValue.ofString(\"gold\")))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->monitoringEvents->create([\n    'event_id' => 'login-2026-10-17-000001',\n    'event_category' => 'auth',\n    'action_type' => 'login',\n    'occurred_at' => '2026-10-17T09:15:02.481Z',\n    'time_zone' => 'Europe/Madrid',\n    'subject' => [\n        'vendor_data' => 'user-42',\n        'entity_type' => 'individual',\n    ],\n    'session' => [\n        'session_id' => 'web-session-abc',\n        'sequence' => 142,\n    ],\n    'device_context' => [\n        'fingerprint' => 'fp-a8c1',\n        'network_context' => [\n            'ip_address' => '203.0.113.42',\n        ],\n    ],\n    'payload' => ['method' => 'password'],\n    'custom_values' => ['vip_tier' => 'gold'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.monitoring_events.create(\n  event_id: \"login-2026-10-17-000001\",\n  event_category: \"auth\",\n  action_type: \"login\",\n  occurred_at: \"2026-10-17T09:15:02.481Z\",\n  time_zone: \"Europe/Madrid\",\n  subject: {\n    vendor_data: \"user-42\",\n    entity_type: \"individual\",\n  },\n  session: {\n    session_id: \"web-session-abc\",\n    sequence: 142,\n  },\n  device_context: {\n    fingerprint: \"fp-a8c1\",\n    network_context: {\n      ip_address: \"203.0.113.42\",\n    },\n  },\n  payload: { method: \"password\" },\n  custom_values: { vip_tier: \"gold\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.MonitoringEvents.CreateAsync(new MonitoringEventCreateRequest\n{\n    EventId = \"login-2026-10-17-000001\",\n    EventCategory = \"auth\",\n    ActionType = \"login\",\n    OccurredAt = DateTimeOffset.Parse(\"2026-10-17T09:15:02.481Z\"),\n    TimeZone = \"Europe/Madrid\",\n    Subject = new()\n    {\n        VendorData = \"user-42\",\n        EntityType = \"individual\",\n    },\n    Session = new MonitoringEventCreateRequestSession\n    {\n        SessionId = \"web-session-abc\",\n        Sequence = 142,\n    },\n    DeviceContext = new MonitoringEventCreateRequestDeviceContext\n    {\n        Fingerprint = \"fp-a8c1\",\n        NetworkContext = new MonitoringEventCreateRequestDeviceContextNetworkContext\n        {\n            IpAddress = \"203.0.113.42\",\n        },\n    },\n    Payload = new Dictionary<string, object> { [\"method\"] = \"password\" },\n    CustomValues = new Dictionary<string, object> { [\"vip_tier\"] = \"gold\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "इवेंट को संग्रहीत और मूल्यांकित किया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitoringEventIngestResult"
                },
                "examples": {
                  "Stored, no rule matched": {
                    "value": {
                      "event_uuid": "33333333-4444-5555-6666-777777777777",
                      "event_id": "login-2026-10-17-000001",
                      "status": "ACCEPTED",
                      "score": 0,
                      "rules_evaluated_count": 6,
                      "rules_matched_count": 0,
                      "correlation_pending": false,
                      "retention_class": "standard",
                      "expires_at": "2026-11-16T09:15:02.481000Z",
                      "idempotent_replay": false,
                      "rule_matches": []
                    }
                  },
                  "Rule matched, async rule pending": {
                    "value": {
                      "event_uuid": "33333333-4444-5555-6666-777777777777",
                      "event_id": "login-2026-10-17-000001",
                      "status": "IN_REVIEW",
                      "score": 40,
                      "rules_evaluated_count": 6,
                      "rules_matched_count": 1,
                      "correlation_pending": true,
                      "retention_class": "risk_relevant",
                      "expires_at": "2027-01-15T09:15:02.481000Z",
                      "idempotent_replay": false,
                      "rule_matches": [
                        {
                          "rule_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                          "library_key": null,
                          "mode": "ACTIVE",
                          "is_async": false
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "200": {
            "description": "आइडेम्पोटेंट रीप्ले: इस `event_id` और समान सामग्री वाला एक इवेंट पहले से संग्रहीत है। कुछ भी दोबारा संग्रहीत या मूल्यांकित नहीं किया गया था; बॉडी संग्रहीत इवेंट का विवरण देती है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitoringEventIngestResult"
                },
                "examples": {
                  "Replay": {
                    "value": {
                      "event_uuid": "33333333-4444-5555-6666-777777777777",
                      "event_id": "login-2026-10-17-000001",
                      "status": "ACCEPTED",
                      "score": 0,
                      "rules_evaluated_count": 6,
                      "rules_matched_count": 0,
                      "correlation_pending": false,
                      "retention_class": "standard",
                      "expires_at": "2026-11-16T09:15:02.481000Z",
                      "idempotent_replay": true,
                      "rule_matches": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा। body को फ़ील्ड के अनुसार कुंजीबद्ध किया गया है; नेस्टेड फ़ील्ड नेस्टेड ऑब्जेक्ट हैं। कुछ भी संग्रहीत नहीं किया जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing fields": {
                    "value": {
                      "event_id": [
                        "This field is required."
                      ],
                      "subject": [
                        "This field is required."
                      ]
                    }
                  },
                  "Unknown category": {
                    "value": {
                      "event_category": [
                        "\"login\" is not a valid choice."
                      ]
                    }
                  },
                  "occurred_at too old": {
                    "value": {
                      "occurred_at": [
                        "occurred_at is more than 7 days in the past. Use the batch import lane for backfills."
                      ]
                    }
                  },
                  "occurred_at in the future": {
                    "value": {
                      "occurred_at": [
                        "occurred_at is more than 5 minutes in the future."
                      ]
                    }
                  },
                  "Missing subject vendor_data": {
                    "value": {
                      "subject": {
                        "vendor_data": [
                          "This field is required."
                        ]
                      }
                    }
                  },
                  "Missing required payload keys": {
                    "value": {
                      "payload": [
                        "payment.deposit_completed requires: payment_method, status."
                      ]
                    }
                  },
                  "Missing one-of payload key": {
                    "value": {
                      "payload": [
                        "dispute.chargeback_opened requires one of: dispute_id, chargeback_id."
                      ]
                    }
                  },
                  "Security change without changed_field": {
                    "value": {
                      "payload": [
                        "security.*_changed requires 'changed_field'."
                      ]
                    }
                  },
                  "Payload too large": {
                    "value": {
                      "payload": [
                        "payload exceeds 16384 bytes. Summarise telemetry client-side."
                      ]
                    }
                  },
                  "Too many custom_values": {
                    "value": {
                      "custom_values": [
                        "custom_values accepts at most 100 keys."
                      ]
                    }
                  },
                  "Nested custom value": {
                    "value": {
                      "custom_values": [
                        "custom_values['limits'] must be a scalar - rule conditions cannot address nested values."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: write` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी लेन-देन निगरानी डेटा तक कभी नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध। एप्लिकेशन के लिए इवेंट इनजेशन बंद होने पर `code: event_monitoring_disabled` के साथ भी लौटाया जाता है; उस स्थिति में कुछ भी संग्रहीत नहीं किया जाता है, और यह जाँच अनुरोध के मुख्य भाग के मान्य होने से पहले चलती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Event monitoring disabled": {
                    "value": {
                      "detail": "Event monitoring is not enabled for this application. Turn on event ingestion in the transaction monitoring settings before submitting events.",
                      "code": "event_monitoring_disabled"
                    }
                  },
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no write access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "`event_id` का उपयोग पहले से ही भिन्न सामग्री (श्रेणी, कार्रवाई प्रकार, `occurred_at`, विषय `vendor_data` या payload) वाले इवेंट के लिए किया गया था। इवेंट को नए `event_id` के तहत भेजें।",
            "content": {
              "application/json": {
                "examples": {
                  "event_id reused": {
                    "value": {
                      "event_id": "event_id 'login-2026-10-17-000001' already exists with a different payload."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: लेन-देन निर्माण और इवेंट इनजेशन (`POST /v3/transactions/`, `POST /v3/events/`, `POST /v3/events/batch/`) प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं, जो अन्य सभी राइट अनुरोधों द्वारा साझा किए जाने वाले 300 से अलग है। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड, जिन्हें ऊपर की ओर पूर्णांकित किया गया है ताकि पुनः प्रयास अगली विंडो में हो।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Ingestion rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/batch/": {
      "post": {
        "summary": "बैच में निगरानी इवेंट बनाएं",
        "description": "एक अनुरोध में 1 से 500 इवेंट सबमिट करें, प्रत्येक उसी एनवेलप में जैसा `POST /v3/events/` में होता है। प्रत्येक आइटम को अलग से सत्यापित, संग्रहीत और मूल्यांकित किया जाता है और उसका अपना परिणाम (`accepted`, `replayed` या `rejected`) प्राप्त होता है, इसलिए एक विकृत इवेंट कभी भी दूसरों को रोल बैक नहीं करता है: जब कोई भी आइटम अस्वीकृत नहीं हुआ था तो रिस्पॉन्स `201` होता है और जब कम से कम एक अस्वीकृत हुआ था तो `207` होता है, और दोनों का अर्थ है कि अनुरोध संसाधित किया गया था। `{\"events\": [...]}` भेजें; इवेंट का बिना एनवेलप वाला JSON ऐरे भी स्वीकार किया जाता है। एप्लिकेशन के लिए इवेंट इनजेशन सक्षम होना चाहिए, अन्यथा संपूर्ण अनुरोध `code: event_monitoring_disabled` के साथ `403` लौटाता है और कुछ भी संग्रहीत नहीं किया जाता है। स्कोप्ड API कुंजी को `transactions: write` की आवश्यकता होती है। [बैच](https://docs.didit.me/hi/transaction-monitoring/events#बैच) देखें।",
        "operationId": "create_monitoring_events_batch",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "create_batch",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "events"
                ],
                "properties": {
                  "events": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 500,
                    "description": "1 से 500 इवेंट। प्रत्येक आइटम `MonitoringEventCreateRequest` का अनुसरण करता है, जिसमें `occurred_at` पर 7 दिनों की पिछली और 5 मिनट की आगामी विंडो शामिल है।",
                    "items": {
                      "$ref": "#/components/schemas/MonitoringEventCreateRequest"
                    }
                  }
                }
              },
              "example": {
                "events": [
                  {
                    "event_id": "login-2026-10-17-000001",
                    "event_category": "auth",
                    "action_type": "login",
                    "occurred_at": "2026-10-17T09:15:02.481Z",
                    "subject": {
                      "vendor_data": "user-42"
                    }
                  },
                  {
                    "event_id": "deposit-2026-10-17-000002",
                    "event_category": "payment",
                    "action_type": "deposit_completed",
                    "occurred_at": "2026-10-17T09:16:40Z",
                    "subject": {
                      "vendor_data": "user-42"
                    },
                    "transaction_context": {
                      "amount": "100.00",
                      "currency": "EUR",
                      "payment_reference_id": "dep_736"
                    },
                    "payload": {
                      "payment_method": "card",
                      "status": "completed"
                    }
                  }
                ]
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/events/batch/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"events\": [\n      {\"event_id\": \"login-2026-10-17-000001\", \"event_category\": \"auth\", \"action_type\": \"login\",\n       \"occurred_at\": \"2026-10-17T09:15:02.481Z\", \"subject\": {\"vendor_data\": \"user-42\"}},\n      {\"event_id\": \"deposit-2026-10-17-000002\", \"event_category\": \"payment\", \"action_type\": \"deposit_completed\",\n       \"occurred_at\": \"2026-10-17T09:16:40.000Z\", \"subject\": {\"vendor_data\": \"user-42\"},\n       \"transaction_context\": {\"amount\": \"100.00\", \"currency\": \"EUR\", \"payment_reference_id\": \"dep_736\"},\n       \"payload\": {\"payment_method\": \"card\", \"status\": \"completed\"}}\n    ]\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.monitoring_events.create_batch(\n    events=[{\n        \"event_id\": \"login-2026-10-17-000001\",\n        \"event_category\": \"auth\",\n        \"action_type\": \"login\",\n        \"occurred_at\": \"2026-10-17T09:15:02.481Z\",\n        \"subject\": {\n            \"vendor_data\": \"user-42\",\n        },\n    }, {\n        \"event_id\": \"deposit-2026-10-17-000002\",\n        \"event_category\": \"payment\",\n        \"action_type\": \"deposit_completed\",\n        \"occurred_at\": \"2026-10-17T09:16:40Z\",\n        \"subject\": {\n            \"vendor_data\": \"user-42\",\n        },\n        \"transaction_context\": {\n            \"amount\": \"100.00\",\n            \"currency\": \"EUR\",\n            \"payment_reference_id\": \"dep_736\",\n        },\n        \"payload\": {\"payment_method\": \"card\", \"status\": \"completed\"},\n    }],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.monitoringEvents.createBatch({\n  events: [{\n    event_id: \"login-2026-10-17-000001\",\n    event_category: \"auth\",\n    action_type: \"login\",\n    occurred_at: \"2026-10-17T09:15:02.481Z\",\n    subject: {\n      vendor_data: \"user-42\",\n    },\n  }, {\n    event_id: \"deposit-2026-10-17-000002\",\n    event_category: \"payment\",\n    action_type: \"deposit_completed\",\n    occurred_at: \"2026-10-17T09:16:40Z\",\n    subject: {\n      vendor_data: \"user-42\",\n    },\n    transaction_context: {\n      amount: \"100.00\",\n      currency: \"EUR\",\n      payment_reference_id: \"dep_736\",\n    },\n    payload: { payment_method: \"card\", status: \"completed\" },\n  }],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.CreateBatch(ctx, didit.MonitoringEventsCreateBatchParams{\n\tEvents: []didit.MonitoringEventCreateRequest{{\n\t\tEventID:       \"login-2026-10-17-000001\",\n\t\tEventCategory: \"auth\",\n\t\tActionType:    \"login\",\n\t\tOccurredAt:    time.Date(2026, 10, 17, 9, 15, 2, 0, time.UTC),\n\t\tSubject: didit.MonitoringEventCreateRequestSubject{\n\t\t\tVendorData: \"user-42\",\n\t\t},\n\t}, {\n\t\tEventID:       \"deposit-2026-10-17-000002\",\n\t\tEventCategory: \"payment\",\n\t\tActionType:    \"deposit_completed\",\n\t\tOccurredAt:    time.Date(2026, 10, 17, 9, 16, 40, 0, time.UTC),\n\t\tSubject: didit.MonitoringEventCreateRequestSubject{\n\t\t\tVendorData: \"user-42\",\n\t\t},\n\t\tTransactionContext: didit.Some(didit.MonitoringEventCreateRequestTransactionContext{\n\t\t\tAmount:             didit.String(\"100.00\"),\n\t\t\tCurrency:           didit.String(\"EUR\"),\n\t\t\tPaymentReferenceID: didit.String(\"dep_736\"),\n\t\t}),\n\t\tPayload: didit.Some(map[string]any{\"payment_method\": \"card\", \"status\": \"completed\"}),\n\t}},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.OffsetDateTime;\nimport java.util.List;\nimport java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.MonitoringEventCreateRequest;\nimport me.didit.types.MonitoringEventsCreateBatchParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.monitoringEvents().createBatch(MonitoringEventsCreateBatchParams.builder()\n        .events(List.of(\n                MonitoringEventCreateRequest.builder()\n                        .eventId(\"login-2026-10-17-000001\")\n                        .eventCategory(MonitoringEventCreateRequest.EventCategory.of(\"auth\"))\n                        .actionType(\"login\")\n                        .occurredAt(OffsetDateTime.parse(\"2026-10-17T09:15:02.481Z\"))\n                        .subject(MonitoringEventCreateRequest.Subject.builder()\n                                .vendorData(\"user-42\")\n                                .build())\n                        .build(),\n                MonitoringEventCreateRequest.builder()\n                        .eventId(\"deposit-2026-10-17-000002\")\n                        .eventCategory(MonitoringEventCreateRequest.EventCategory.of(\"payment\"))\n                        .actionType(\"deposit_completed\")\n                        .occurredAt(OffsetDateTime.parse(\"2026-10-17T09:16:40Z\"))\n                        .subject(MonitoringEventCreateRequest.Subject.builder()\n                                .vendorData(\"user-42\")\n                                .build())\n                        .transactionContext(MonitoringEventCreateRequest.TransactionContext.builder()\n                                .amount(\"100.00\")\n                                .currency(\"EUR\")\n                                .paymentReferenceId(\"dep_736\")\n                                .build())\n                        .payload(Map.of(\"payment_method\", \"card\", \"status\", \"completed\"))\n                        .build()))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->monitoringEvents->createBatch([\n    'events' => [[\n        'event_id' => 'login-2026-10-17-000001',\n        'event_category' => 'auth',\n        'action_type' => 'login',\n        'occurred_at' => '2026-10-17T09:15:02.481Z',\n        'subject' => [\n            'vendor_data' => 'user-42',\n        ],\n    ], [\n        'event_id' => 'deposit-2026-10-17-000002',\n        'event_category' => 'payment',\n        'action_type' => 'deposit_completed',\n        'occurred_at' => '2026-10-17T09:16:40Z',\n        'subject' => [\n            'vendor_data' => 'user-42',\n        ],\n        'transaction_context' => [\n            'amount' => '100.00',\n            'currency' => 'EUR',\n            'payment_reference_id' => 'dep_736',\n        ],\n        'payload' => ['payment_method' => 'card', 'status' => 'completed'],\n    ]],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.monitoring_events.create_batch(\n  events: [{\n    event_id: \"login-2026-10-17-000001\",\n    event_category: \"auth\",\n    action_type: \"login\",\n    occurred_at: \"2026-10-17T09:15:02.481Z\",\n    subject: {\n      vendor_data: \"user-42\",\n    },\n  }, {\n    event_id: \"deposit-2026-10-17-000002\",\n    event_category: \"payment\",\n    action_type: \"deposit_completed\",\n    occurred_at: \"2026-10-17T09:16:40Z\",\n    subject: {\n      vendor_data: \"user-42\",\n    },\n    transaction_context: {\n      amount: \"100.00\",\n      currency: \"EUR\",\n      payment_reference_id: \"dep_736\",\n    },\n    payload: { payment_method: \"card\", status: \"completed\" },\n  }]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.MonitoringEvents.CreateBatchAsync(new MonitoringEventsCreateBatchParams\n{\n    Events = new MonitoringEventCreateRequest[]\n    {\n        new()\n        {\n            EventId = \"login-2026-10-17-000001\",\n            EventCategory = \"auth\",\n            ActionType = \"login\",\n            OccurredAt = DateTimeOffset.Parse(\"2026-10-17T09:15:02.481Z\"),\n            Subject = new()\n            {\n                VendorData = \"user-42\",\n            },\n        },\n        new()\n        {\n            EventId = \"deposit-2026-10-17-000002\",\n            EventCategory = \"payment\",\n            ActionType = \"deposit_completed\",\n            OccurredAt = DateTimeOffset.Parse(\"2026-10-17T09:16:40Z\"),\n            Subject = new()\n            {\n                VendorData = \"user-42\",\n            },\n            TransactionContext = new MonitoringEventCreateRequestTransactionContext\n            {\n                Amount = \"100.00\",\n                Currency = \"EUR\",\n                PaymentReferenceId = \"dep_736\",\n            },\n            Payload = new Dictionary<string, object> { [\"payment_method\"] = \"card\", [\"status\"] = \"completed\" },\n        },\n    },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "कोई भी आइटम अस्वीकार नहीं किया गया था: प्रत्येक आइटम `accepted` या `replayed` है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "accepted_count",
                    "replayed_count",
                    "rejected_count",
                    "results"
                  ],
                  "properties": {
                    "accepted_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "आइटम संग्रहीत और मूल्यांकित किए गए।"
                    },
                    "replayed_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "समान सामग्री के साथ पहले से संग्रहीत आइटम।"
                    },
                    "rejected_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "आइटम संग्रहीत नहीं किए गए।"
                    },
                    "results": {
                      "type": "array",
                      "description": "अनुरोध क्रम में, प्रति आइटम एक प्रविष्टि।",
                      "items": {
                        "type": "object",
                        "description": "एक आइटम का परिणाम। स्वीकृत और रीप्ले किए गए आइटम में `MonitoringEventIngestResult` का प्रत्येक फ़ील्ड भी होता है; अस्वीकृत आइटम में इसके बजाय `event_id` और `errors` होते हैं।",
                        "required": [
                          "index",
                          "outcome"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "आपके `events` ऐरे में आइटम की स्थिति।"
                          },
                          "outcome": {
                            "type": "string",
                            "enum": [
                              "accepted",
                              "replayed",
                              "rejected"
                            ],
                            "description": "`accepted`: संग्रहीत और मूल्यांकित। `replayed`: उसी सामग्री के साथ पहले से संग्रहीत। `rejected`: संग्रहीत नहीं किया गया; `errors` देखें।"
                          },
                          "event_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "आपकी `event_id`। सत्यापन द्वारा अस्वीकृत आइटमों पर इसे आइटम की snake_case `event_id` कुंजी से पढ़ा जाता है, इसलिए जब आइटम में इसे छोड़ दिया गया हो या `eventId` उपनाम भेजा गया हो तो यह null होता है।"
                          },
                          "errors": {
                            "type": "object",
                            "additionalProperties": true,
                            "description": "केवल अस्वीकृत आइटम। फ़ील्ड के अनुसार कुंजीबद्ध सत्यापन त्रुटियां, `POST /v3/events/` के `400` के समान आकार में; अलग सामग्री के साथ पुनः उपयोग की गई `event_id` को `errors.event_id` के तहत एक स्ट्रिंग के रूप में रिपोर्ट किया जाता है।"
                          },
                          "event_uuid": {
                            "type": "string",
                            "format": "uuid",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "ACCEPTED",
                              "APPROVED",
                              "IN_REVIEW",
                              "DECLINED"
                            ],
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "score": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rules_evaluated_count": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rules_matched_count": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "correlation_pending": {
                            "type": "boolean",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "retention_class": {
                            "type": "string",
                            "enum": [
                              "low_value",
                              "standard",
                              "risk_relevant",
                              "monetary_or_compliance"
                            ],
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "expires_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "idempotent_replay": {
                            "type": "boolean",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rule_matches": {
                            "type": "array",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।",
                            "items": {
                              "type": "object",
                              "required": [
                                "rule_id",
                                "library_key",
                                "mode",
                                "is_async"
                              ],
                              "properties": {
                                "rule_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "नियम का UUID।"
                                },
                                "library_key": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "जब नियम को नियम लाइब्रेरी से इंस्टॉल किया गया था, तब लाइब्रेरी कुंजी, अन्यथा null।"
                                },
                                "mode": {
                                  "type": "string",
                                  "enum": [
                                    "ACTIVE",
                                    "TEST"
                                  ],
                                  "description": "`TEST` नियम मिलान रिकॉर्ड करते हैं लेकिन कोई कार्रवाई लागू नहीं करते हैं।"
                                },
                                "is_async": {
                                  "type": "boolean",
                                  "description": "`true` जब मिलान एसिंक्रोनस पास से आया हो।"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "All landed": {
                    "value": {
                      "accepted_count": 1,
                      "replayed_count": 1,
                      "rejected_count": 0,
                      "results": [
                        {
                          "index": 0,
                          "outcome": "accepted",
                          "event_uuid": "33333333-4444-5555-6666-777777777777",
                          "event_id": "login-2026-10-17-000001",
                          "status": "ACCEPTED",
                          "score": 0,
                          "rules_evaluated_count": 6,
                          "rules_matched_count": 0,
                          "correlation_pending": false,
                          "retention_class": "standard",
                          "expires_at": "2026-11-16T09:15:02.481000Z",
                          "idempotent_replay": false,
                          "rule_matches": []
                        },
                        {
                          "index": 1,
                          "outcome": "replayed",
                          "event_uuid": "11111111-2222-3333-4444-555555555555",
                          "event_id": "deposit-2026-10-17-000002",
                          "status": "ACCEPTED",
                          "score": 0,
                          "rules_evaluated_count": 6,
                          "rules_matched_count": 0,
                          "correlation_pending": false,
                          "retention_class": "monetary_or_compliance",
                          "expires_at": null,
                          "idempotent_replay": true,
                          "rule_matches": []
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "207": {
            "description": "कम से कम एक आइटम अस्वीकृत कर दिया गया था। अन्य आइटम संग्रहीत कर लिए गए थे; केवल अस्वीकृत आइटमों को ठीक करें और पुनः भेजें (स्वीकृत आइटम को पुनः भेजना सुरक्षित है, यह `replayed` के रूप में वापस आता है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "accepted_count",
                    "replayed_count",
                    "rejected_count",
                    "results"
                  ],
                  "properties": {
                    "accepted_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "आइटम संग्रहीत और मूल्यांकित किए गए।"
                    },
                    "replayed_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "समान सामग्री के साथ पहले से संग्रहीत आइटम।"
                    },
                    "rejected_count": {
                      "type": "integer",
                      "minimum": 0,
                      "description": "आइटम संग्रहीत नहीं किए गए।"
                    },
                    "results": {
                      "type": "array",
                      "description": "अनुरोध क्रम में, प्रति आइटम एक प्रविष्टि।",
                      "items": {
                        "type": "object",
                        "description": "एक आइटम का परिणाम। स्वीकृत और रीप्ले किए गए आइटम में `MonitoringEventIngestResult` का प्रत्येक फ़ील्ड भी होता है; अस्वीकृत आइटम में इसके बजाय `event_id` और `errors` होते हैं।",
                        "required": [
                          "index",
                          "outcome"
                        ],
                        "properties": {
                          "index": {
                            "type": "integer",
                            "minimum": 0,
                            "description": "आपके `events` ऐरे में आइटम की स्थिति।"
                          },
                          "outcome": {
                            "type": "string",
                            "enum": [
                              "accepted",
                              "replayed",
                              "rejected"
                            ],
                            "description": "`accepted`: संग्रहीत और मूल्यांकित। `replayed`: उसी सामग्री के साथ पहले से संग्रहीत। `rejected`: संग्रहीत नहीं किया गया; `errors` देखें।"
                          },
                          "event_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "आपकी `event_id`। सत्यापन द्वारा अस्वीकृत आइटमों पर इसे आइटम की snake_case `event_id` कुंजी से पढ़ा जाता है, इसलिए जब आइटम में इसे छोड़ दिया गया हो या `eventId` उपनाम भेजा गया हो तो यह null होता है।"
                          },
                          "errors": {
                            "type": "object",
                            "additionalProperties": true,
                            "description": "केवल अस्वीकृत आइटम। फ़ील्ड के अनुसार कुंजीबद्ध सत्यापन त्रुटियां, `POST /v3/events/` के `400` के समान आकार में; अलग सामग्री के साथ पुनः उपयोग की गई `event_id` को `errors.event_id` के तहत एक स्ट्रिंग के रूप में रिपोर्ट किया जाता है।"
                          },
                          "event_uuid": {
                            "type": "string",
                            "format": "uuid",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "ACCEPTED",
                              "APPROVED",
                              "IN_REVIEW",
                              "DECLINED"
                            ],
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "score": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rules_evaluated_count": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rules_matched_count": {
                            "type": "integer",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "correlation_pending": {
                            "type": "boolean",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "retention_class": {
                            "type": "string",
                            "enum": [
                              "low_value",
                              "standard",
                              "risk_relevant",
                              "monetary_or_compliance"
                            ],
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "expires_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "idempotent_replay": {
                            "type": "boolean",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।"
                          },
                          "rule_matches": {
                            "type": "array",
                            "description": "केवल स्वीकृत और पुनः चलाए गए आइटम।",
                            "items": {
                              "type": "object",
                              "required": [
                                "rule_id",
                                "library_key",
                                "mode",
                                "is_async"
                              ],
                              "properties": {
                                "rule_id": {
                                  "type": "string",
                                  "format": "uuid",
                                  "description": "नियम का UUID।"
                                },
                                "library_key": {
                                  "type": "string",
                                  "nullable": true,
                                  "description": "जब नियम को नियम लाइब्रेरी से इंस्टॉल किया गया था, तब लाइब्रेरी कुंजी, अन्यथा null।"
                                },
                                "mode": {
                                  "type": "string",
                                  "enum": [
                                    "ACTIVE",
                                    "TEST"
                                  ],
                                  "description": "`TEST` नियम मिलान रिकॉर्ड करते हैं लेकिन कोई कार्रवाई लागू नहीं करते हैं।"
                                },
                                "is_async": {
                                  "type": "boolean",
                                  "description": "`true` जब मिलान एसिंक्रोनस पास से आया हो।"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "Partial success": {
                    "value": {
                      "accepted_count": 1,
                      "replayed_count": 0,
                      "rejected_count": 2,
                      "results": [
                        {
                          "index": 0,
                          "outcome": "accepted",
                          "event_uuid": "33333333-4444-5555-6666-777777777777",
                          "event_id": "login-2026-10-17-000001",
                          "status": "ACCEPTED",
                          "score": 0,
                          "rules_evaluated_count": 6,
                          "rules_matched_count": 0,
                          "correlation_pending": false,
                          "retention_class": "standard",
                          "expires_at": "2026-11-16T09:15:02.481000Z",
                          "idempotent_replay": false,
                          "rule_matches": []
                        },
                        {
                          "index": 1,
                          "event_id": "deposit-2026-10-17-000002",
                          "outcome": "rejected",
                          "errors": {
                            "payload": [
                              "payment.deposit_completed requires: payment_method, status."
                            ]
                          }
                        },
                        {
                          "index": 2,
                          "event_id": "login-2026-10-16-000777",
                          "outcome": "rejected",
                          "errors": {
                            "event_id": "event_id 'login-2026-10-16-000777' already exists with a different payload."
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बैच स्वयं विकृत है: `events` अनुपलब्ध है या ऐरे नहीं है, खाली है, या इसमें 500 से अधिक आइटम हैं। कुछ भी संग्रहीत नहीं किया गया है; बड़े बैचों को विभाजित करें।",
            "content": {
              "application/json": {
                "examples": {
                  "Not a list": {
                    "value": {
                      "events": "Expected a list of events."
                    }
                  },
                  "Empty": {
                    "value": {
                      "events": "At least one event is required."
                    }
                  },
                  "Too many": {
                    "value": {
                      "events": "A batch accepts at most 500 events; received 612."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: write` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी लेन-देन निगरानी डेटा तक कभी नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध। एप्लिकेशन के लिए इवेंट इनजेशन बंद होने पर `code: event_monitoring_disabled` के साथ भी लौटाया जाता है; उस स्थिति में कुछ भी संग्रहीत नहीं किया जाता है, और यह जाँच अनुरोध के मुख्य भाग के मान्य होने से पहले चलती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Event monitoring disabled": {
                    "value": {
                      "detail": "Event monitoring is not enabled for this application. Turn on event ingestion in the transaction monitoring settings before submitting events.",
                      "code": "event_monitoring_disabled"
                    }
                  },
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no write access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: लेन-देन निर्माण और इवेंट इनजेशन (`POST /v3/transactions/`, `POST /v3/events/`, `POST /v3/events/batch/`) प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं, जो अन्य सभी राइट अनुरोधों द्वारा साझा किए जाने वाले 300 से अलग है। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड, जिन्हें ऊपर की ओर पूर्णांकित किया गया है ताकि पुनः प्रयास अगली विंडो में हो।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Ingestion rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/sdk-token/": {
      "post": {
        "summary": "मॉनिटरिंग SDK token मिंट करें",
        "description": "एक विषय से बंधा हुआ अल्पकालिक डिवाइस क्रेडेंशियल मिंट करें, ताकि आपका वेब या मोबाइल ऐप API कुंजी के बिना उस उपयोगकर्ता के इवेंट्स सीधे Didit को भेज सके। ऐप लौटाए गए `monitoring_token` को `X-Monitoring-Token` हेडर में डिवाइस लेन (`POST /v1/events/` और `POST /v1/events/batch/`) पर भेजता है, जहां विषय को हमेशा इस `vendor_data` से ओवरराइट किया जाता है, `allowed_event_categories` से बाहर के इवेंट्स अस्वीकार कर दिए जाते हैं, सबमिट किया गया प्रत्येक इवेंट एक उपयोग खर्च करता है, और जिस अनुरोध का `Origin` `bind_to_origin` के बराबर नहीं होता है उसे अस्वीकार कर दिया जाता है। इसे केवल अपने बैकएंड से कॉल करें; मिंटिंग केवल क्रेडेंशियल बनाती है और कुछ नहीं (कोई उपयोगकर्ता नहीं बनाया जाता है)। एप्लिकेशन के लिए इवेंट इनजेशन चालू होना चाहिए, अन्यथा यह endpoint ऐसा क्रेडेंशियल मिंट करने के बजाय जो कभी लिख नहीं सकता, `code: event_monitoring_disabled` के साथ `403` लौटाता है। स्कोप्ड API कुंजी को `transactions: write` की आवश्यकता होती है। [SDK इवेंट सबमिशन](https://docs.didit.me/hi/transaction-monitoring/sdk-event-submission) देखें।",
        "operationId": "create_monitoring_event_sdk_token",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "create_sdk_token",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "camelCase उपनाम स्वीकार किए जाते हैं: `vendorData`, `entityType`, `allowedEventCategories`, `ttlSeconds`, `maxUses`, `bindToOrigin`।",
                "required": [
                  "vendor_data"
                ],
                "properties": {
                  "vendor_data": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 255,
                    "description": "उस विषय के लिए आपकी id, जिससे इस क्रेडेंशियल के साथ सबमिट किया गया प्रत्येक इवेंट संबंधित है।"
                  },
                  "entity_type": {
                    "type": "string",
                    "maxLength": 32,
                    "default": "individual",
                    "description": "`company` एक कंपनी सब्जेक्ट को संबद्ध करता है; कोई अन्य मान (डिफ़ॉल्ट `individual`) एक व्यक्ति को संबद्ध करता है।"
                  },
                  "allowed_event_categories": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "auth",
                        "session",
                        "gameplay",
                        "bonus",
                        "affiliate",
                        "payment",
                        "dispute",
                        "security",
                        "responsible_gambling",
                        "custom"
                      ]
                    },
                    "description": "वे श्रेणियां जिन्हें क्रेडेंशियल सबमिट कर सकता है। प्रत्येक श्रेणी की अनुमति देने के लिए इसे छोड़ दें या `[]` भेजें।"
                  },
                  "ttl_seconds": {
                    "type": "integer",
                    "minimum": 60,
                    "maximum": 86400,
                    "default": 900,
                    "description": "क्रेडेंशियल का लाइफ़टाइम सेकंड में।"
                  },
                  "max_uses": {
                    "type": "integer",
                    "minimum": 1,
                    "nullable": true,
                    "default": 1000,
                    "description": "क्रेडेंशियल द्वारा सबमिट किए जा सकने वाले इवेंट्स की संख्या (एक बैच प्रति इवेंट एक उपयोग खर्च करता है)। लाइफ़टाइम के भीतर कोई सीमा न रखने के लिए `null` भेजें।"
                  },
                  "bind_to_origin": {
                    "type": "string",
                    "maxLength": 255,
                    "nullable": true,
                    "description": "सेट होने पर, प्रत्येक डिवाइस अनुरोध का ब्राउज़र `Origin` हेडर इस मान के बिल्कुल बराबर होना चाहिए; बिना `Origin` वाले अनुरोध को अस्वीकार कर दिया जाता है।"
                  }
                }
              },
              "example": {
                "vendor_data": "user-42",
                "allowed_event_categories": [
                  "auth",
                  "session",
                  "gameplay"
                ],
                "ttl_seconds": 900,
                "max_uses": 1000,
                "bind_to_origin": "https://app.example.com"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/events/sdk-token/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"vendor_data\": \"user-42\",\n    \"allowed_event_categories\": [\"auth\", \"session\", \"gameplay\"],\n    \"ttl_seconds\": 900,\n    \"max_uses\": 1000,\n    \"bind_to_origin\": \"https://app.example.com\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.monitoring_events.create_sdk_token(\n    vendor_data=\"user-42\",\n    allowed_event_categories=[\"auth\", \"session\", \"gameplay\"],\n    ttl_seconds=900,\n    max_uses=1000,\n    bind_to_origin=\"https://app.example.com\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.monitoringEvents.createSdkToken({\n  vendor_data: \"user-42\",\n  allowed_event_categories: [\"auth\", \"session\", \"gameplay\"],\n  ttl_seconds: 900,\n  max_uses: 1000,\n  bind_to_origin: \"https://app.example.com\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.CreateSDKToken(ctx, didit.MonitoringEventsCreateSDKTokenParams{\n\tVendorData:             \"user-42\",\n\tAllowedEventCategories: didit.Some([]didit.MonitoringEventsCreateSDKTokenParamsAllowedEventCategories{\"auth\", \"session\", \"gameplay\"}),\n\tTTLSeconds:             didit.Int(900),\n\tMaxUses:                didit.Int(1000),\n\tBindToOrigin:           didit.String(\"https://app.example.com\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.MonitoringEventsCreateSdkTokenParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.monitoringEvents().createSdkToken(MonitoringEventsCreateSdkTokenParams.builder()\n        .vendorData(\"user-42\")\n        .allowedEventCategories(List.of(MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of(\"auth\"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of(\"session\"), MonitoringEventsCreateSdkTokenParams.AllowedEventCategories.of(\"gameplay\")))\n        .ttlSeconds(900L)\n        .maxUses(1000L)\n        .bindToOrigin(\"https://app.example.com\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->monitoringEvents->createSdkToken([\n    'vendor_data' => 'user-42',\n    'allowed_event_categories' => ['auth', 'session', 'gameplay'],\n    'ttl_seconds' => 900,\n    'max_uses' => 1000,\n    'bind_to_origin' => 'https://app.example.com',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.monitoring_events.create_sdk_token(\n  vendor_data: \"user-42\",\n  allowed_event_categories: [\"auth\", \"session\", \"gameplay\"],\n  ttl_seconds: 900,\n  max_uses: 1000,\n  bind_to_origin: \"https://app.example.com\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.MonitoringEvents.CreateSdkTokenAsync(new MonitoringEventsCreateSdkTokenParams\n{\n    VendorData = \"user-42\",\n    AllowedEventCategories = new MonitoringEventsCreateSdkTokenParamsAllowedEventCategories[] { \"auth\", \"session\", \"gameplay\" },\n    TtlSeconds = 900,\n    MaxUses = 1000,\n    BindToOrigin = \"https://app.example.com\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "क्रेडेंशियल मिंट किया गया था। ऐप को `monitoring_token` दें और `expires_at` तक इसे सीक्रेट मानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "monitoring_token",
                    "expires_at",
                    "allowed_event_categories",
                    "max_uses",
                    "bind_to_origin"
                  ],
                  "properties": {
                    "monitoring_token": {
                      "type": "string",
                      "description": "डिवाइस क्रेडेंशियल (43-वर्ण वाला URL-सुरक्षित token)। इसे `X-Monitoring-Token` हेडर में भेजें।"
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "जब क्रेडेंशियल स्वीकार किया जाना बंद हो जाता है।"
                    },
                    "allowed_event_categories": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "auth",
                          "session",
                          "gameplay",
                          "bonus",
                          "affiliate",
                          "payment",
                          "dispute",
                          "security",
                          "responsible_gambling",
                          "custom"
                        ]
                      },
                      "description": "वे श्रेणियां जिन्हें क्रेडेंशियल सबमिट कर सकता है; `[]` का अर्थ प्रत्येक श्रेणी है।"
                    },
                    "max_uses": {
                      "type": "integer",
                      "nullable": true,
                      "description": "क्रेडेंशियल का इवेंट बजट; null का अर्थ कोई सीमा नहीं है।"
                    },
                    "bind_to_origin": {
                      "type": "string",
                      "nullable": true,
                      "description": "ऑरिजिन जिससे क्रेडेंशियल जुड़ा है, या null।"
                    }
                  }
                },
                "example": {
                  "monitoring_token": "q7ZtR2xKp9VbN4mWc8LdH1sYfJ3gT6uEaQ0oPiXzBkC",
                  "expires_at": "2026-10-17T09:30:02.481000Z",
                  "allowed_event_categories": [
                    "auth",
                    "session",
                    "gameplay"
                  ],
                  "max_uses": 1000,
                  "bind_to_origin": "https://app.example.com"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन विफल रहा: अनुपलब्ध `vendor_data`, 60 से 86400 के बाहर `ttl_seconds`, 1 से कम `max_uses`, या एक अज्ञात श्रेणी (एरे में उसकी स्थिति के आधार पर कुंजीबद्ध)।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing vendor_data": {
                    "value": {
                      "vendor_data": [
                        "This field is required."
                      ]
                    }
                  },
                  "ttl_seconds too short": {
                    "value": {
                      "ttl_seconds": [
                        "Ensure this value is greater than or equal to 60."
                      ]
                    }
                  },
                  "Unknown category": {
                    "value": {
                      "allowed_event_categories": {
                        "1": [
                          "\"login\" is not a valid choice."
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: write` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी लेन-देन निगरानी डेटा तक कभी नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध। एप्लिकेशन के लिए इवेंट इनजेशन बंद होने पर `code: event_monitoring_disabled` के साथ भी लौटाया जाता है; उस स्थिति में कुछ भी संग्रहीत नहीं किया जाता है, और यह जाँच अनुरोध के मुख्य भाग के मान्य होने से पहले चलती है।",
            "content": {
              "application/json": {
                "examples": {
                  "Event monitoring disabled": {
                    "value": {
                      "detail": "Event monitoring is not enabled for this application. Turn on event ingestion in the transaction monitoring settings before submitting events.",
                      "code": "event_monitoring_disabled"
                    }
                  },
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no write access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: राइट (write) अनुरोध (`POST`, `PATCH`, `DELETE`) प्रति API कुंजी प्रति मिनट 300 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/{event_uuid}/": {
      "get": {
        "summary": "निगरानी इवेंट प्राप्त करें",
        "description": "एक निगरानी इवेंट प्राप्त करें जिसमें सूची द्वारा लौटाई गई सभी चीज़ों के साथ-साथ payload, कस्टम मान, डिवाइस संदर्भ, फ़ील्ड स्रोत (`field_sources`), प्रमोट किए गए डोमेन फ़ील्ड, `expires_at`, इसके साक्ष्य के साथ प्रत्येक मिलान करने वाला नियम रन, IP संवर्धन और नियमों द्वारा संलग्न टैग शामिल हैं। जब तक `correlation_pending` `true` है, तब तक एक एसिंक्रोनस नियम चलना बाकी है; अंतिम `status`, `score` और `rule_runs` के लिए कुछ मिनट बाद इवेंट को फिर से पढ़ें। इवेंट इनजेशन चालू हो या न हो, रीड्स काम करते हैं। स्कोप्ड API कुंजी के लिए `transactions: read` आवश्यक है। [साक्ष्य](https://docs.didit.me/hi/transaction-monitoring/event-rules#प्रमाण) और [IP संवर्धन](https://docs.didit.me/hi/transaction-monitoring/ip-enrichment) देखें।",
        "operationId": "get_monitoring_event",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "parameters": [
          {
            "name": "event_uuid",
            "in": "path",
            "required": true,
            "description": "इवेंट का Didit पहचानकर्ता (create, batch, list या timeline रिस्पॉन्स से `event_uuid`), आपकी अपनी `event_id` नहीं।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/events/11111111-2222-3333-4444-555555555555/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.monitoring_events.retrieve(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.monitoringEvents.retrieve(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.monitoringEvents().retrieve(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->monitoringEvents->retrieve('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.monitoring_events.retrieve(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.MonitoringEvents.RetrieveAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "इवेंट अपने साक्ष्य के साथ।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitoringEventDetail"
                },
                "examples": {
                  "Login from a VPN, in review": {
                    "value": {
                      "event_uuid": "33333333-4444-5555-6666-777777777777",
                      "event_id": "login-2026-10-17-000001",
                      "event_category": "auth",
                      "action_type": "login",
                      "occurred_at": "2026-10-17T09:15:02.481000Z",
                      "received_at": "2026-10-17T09:15:02.903114Z",
                      "status": "IN_REVIEW",
                      "score": 40,
                      "subject_vendor_data": "user-42",
                      "subject_entity_type": "individual",
                      "subject_uuid": "66666666-7777-8888-9999-000000000000",
                      "counterparty_vendor_data": null,
                      "session_id": "web-session-abc",
                      "device_fingerprint": "fp-a8c1",
                      "ip_address": "203.0.113.42",
                      "ip_country": "ES",
                      "amount": null,
                      "currency": null,
                      "game_id": null,
                      "round_id": null,
                      "bonus_id": null,
                      "affiliate_code": null,
                      "payment_reference_id": null,
                      "retention_class": "risk_relevant",
                      "rules_matched_count": 1,
                      "correlation_pending": false,
                      "is_droppable": true,
                      "payload": {
                        "method": "password"
                      },
                      "custom_values": {
                        "vip_tier": "gold",
                        "vpn_or_proxy_detected": true
                      },
                      "device_context": {
                        "fingerprint": "fp-a8c1",
                        "network_context": {
                          "ip_address": "203.0.113.42",
                          "ip_country": "Spain",
                          "ip_country_code": "ES",
                          "ip_city": "Madrid",
                          "asn_number": 64500,
                          "asn_organization": "Example Networks",
                          "is_vpn_or_tor": true,
                          "is_data_center": false
                        }
                      },
                      "field_sources": {
                        "subject.vendor_data": "customer",
                        "event_category": "customer",
                        "action_type": "customer",
                        "occurred_at": "customer",
                        "received_at": "server",
                        "payload.method": "customer",
                        "session.session_id": "customer",
                        "session.sequence": "customer",
                        "device_context.fingerprint": "customer",
                        "device_context.network_context.ip_address": "customer",
                        "device_context.network_context.ip_country": "server",
                        "device_context.network_context.ip_country_code": "server",
                        "device_context.network_context.ip_city": "server",
                        "device_context.network_context.asn_number": "server",
                        "device_context.network_context.asn_organization": "server",
                        "device_context.network_context.is_vpn_or_tor": "server",
                        "device_context.network_context.is_data_center": "server"
                      },
                      "session_sequence": 142,
                      "table_id": null,
                      "hand_id": null,
                      "match_id": null,
                      "market_id": null,
                      "side": null,
                      "role": null,
                      "net_result_amount": null,
                      "payment_fingerprint": null,
                      "instrument_reference_hash": null,
                      "withdrawal_address_hash": null,
                      "dispute_id": null,
                      "chargeback_id": null,
                      "changed_field": null,
                      "identity_match_ref": null,
                      "schema_version": 1,
                      "expires_at": "2027-01-15T09:15:02.481000Z",
                      "rules_evaluated_count": 6,
                      "rule_runs": [
                        {
                          "rule_uuid": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                          "rule_title": "Login from VPN or Tor",
                          "library_key": null,
                          "matched": true,
                          "mode": "ACTIVE",
                          "is_async": false,
                          "severity": "MEDIUM",
                          "score_delta": 40,
                          "action_summary": "score +40; add_tag:VPN_LOGIN",
                          "matched_payload": [
                            {
                              "field": "event.ip.is_vpn_or_tor",
                              "operator": "eq",
                              "expected_value": true,
                              "current_value": true,
                              "matched": true,
                              "group_index": null,
                              "group_logic": "AND",
                              "field_source": "server"
                            }
                          ],
                          "created_at": "2026-10-17T09:15:02.951207Z"
                        }
                      ],
                      "ip_enrichment": {
                        "ip_country_code": "ES",
                        "ip_city": "Madrid",
                        "asn_number": 64500,
                        "asn_organization": "Example Networks",
                        "is_vpn_or_tor": true,
                        "is_data_center": false,
                        "proxy_type": null,
                        "last_enriched_at": "2026-10-17T09:15:02.910442Z"
                      },
                      "subject_profile": null,
                      "tags": [
                        "VPN_LOGIN"
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: read` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी कभी भी लेन-देन निगरानी डेटा तक नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस `event_uuid` वाला कोई इवेंट मौजूद नहीं है: इसे कभी संग्रहीत नहीं किया गया था, इसे हटा दिया गया था, या यह किसी अन्य एप्लिकेशन से संबंधित है। जो पाथ सेगमेंट UUID नहीं है, वह रूट से मेल नहीं खाता है और `404` भी लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No MonitoringEvent matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: `GET` अनुरोध प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/subjects/{vendor_data}/": {
      "get": {
        "summary": "विषय इवेंट टाइमलाइन प्राप्त करें",
        "description": "एक विषय के प्रत्येक निगरानी इवेंट को सूचीबद्ध करें, नवीनतम `occurred_at` पहले। `vendor_data` केवल एक एंटिटी प्रकार के भीतर अद्वितीय होता है, इसलिए वही id किसी व्यक्ति और कंपनी दोनों का नाम हो सकती है: `entity_type` चुनता है कि आपको कौन सी टाइमलाइन मिलती है, और यह डिफ़ॉल्ट रूप से `individual` पर सेट होता है, इसलिए किसी कंपनी के इवेंट के लिए `entity_type=company` की आवश्यकता होती है। `GET /v3/events/` के फ़िल्टर इसके अतिरिक्त लागू होते हैं, और बिना किसी इवेंट वाला `vendor_data` `404` के बजाय एक खाली पेज लौटाता है। स्कोप्ड API कुंजी के लिए `transactions: read` की आवश्यकता होती है। [इवेंट वापस पढ़ना](https://docs.didit.me/hi/transaction-monitoring/events#इवेंट-को-फिर-से-पढ़ना) देखें।",
        "operationId": "get_monitoring_event_subject_timeline",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "retrieve_subject_timeline",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "parameters": [
          {
            "name": "vendor_data",
            "in": "path",
            "required": true,
            "description": "विषय के लिए आपकी id (इसके इवेंट का `subject.vendor_data`)। इसे URL-एन्कोड करें; `/` वाला मान इस endpoint द्वारा संबोधित नहीं किया जा सकता है।",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255
            },
            "example": "user-42"
          },
          {
            "name": "entity_type",
            "in": "query",
            "required": false,
            "description": "`company` इस `vendor_data` वाली कंपनी लौटाता है; कोई अन्य मान, या कोई नहीं, व्यक्ति को लौटाता है। `entity_type` अनुपस्थित होने पर `subject_entity_type` को उपनाम के रूप में स्वीकार किया जाता है।",
            "schema": {
              "type": "string",
              "enum": [
                "individual",
                "company"
              ],
              "default": "individual"
            },
            "example": "individual"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज इवेंट की अधिकतम संख्या। डिफ़ॉल्ट 50 है। 1000000 से अधिक मान `400` लौटाते हैं; गैर-संख्यात्मक, शून्य या ऋणात्मक मान वापस 50 हो जाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "example": 50
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "छोड़े जाने वाले इवेंट्स की संख्या। डिफ़ॉल्ट 0 है। रिस्पॉन्स से `next` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "example": 0
          },
          {
            "name": "event_category",
            "in": "query",
            "required": false,
            "description": "केवल इन श्रेणियों के इवेंट। कई मानों के लिए पैरामीटर दोहराएं (`?event_category=payment&event_category=dispute`); उनमें से किसी से भी मेल खाने वाला इवेंट लौटाया जाता है।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "auth",
                  "session",
                  "gameplay",
                  "bonus",
                  "affiliate",
                  "payment",
                  "dispute",
                  "security",
                  "responsible_gambling",
                  "custom"
                ]
              }
            },
            "example": [
              "payment",
              "dispute"
            ]
          },
          {
            "name": "action_type",
            "in": "query",
            "required": false,
            "description": "केवल इन कार्रवाई प्रकारों वाले इवेंट (सटीक, केस-संवेदी)। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "deposit_completed",
              "chargeback_opened"
            ]
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "केवल इन स्थितियों वाले इवेंट। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "ACCEPTED",
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED"
                ]
              }
            },
            "example": [
              "IN_REVIEW",
              "DECLINED"
            ]
          },
          {
            "name": "retention_class",
            "in": "query",
            "required": false,
            "description": "केवल इन प्रतिधारण वर्गों के इवेंट। कई मानों के लिए दोहराएं।",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "low_value",
                  "standard",
                  "risk_relevant",
                  "monetary_or_compliance"
                ]
              }
            },
            "example": [
              "risk_relevant"
            ]
          },
          {
            "name": "business_vendor_data",
            "in": "query",
            "required": false,
            "description": "इवेंट के साथ भेजे गए `business.vendor_data` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "merchant-7"
          },
          {
            "name": "session_id",
            "in": "query",
            "required": false,
            "description": "`session.session_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "web-session-abc"
          },
          {
            "name": "device_fingerprint",
            "in": "query",
            "required": false,
            "description": "`device_context.fingerprint` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "fp-a8c1"
          },
          {
            "name": "ip_address",
            "in": "query",
            "required": false,
            "description": "इवेंट के IP पते पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "203.0.113.42"
          },
          {
            "name": "game_id",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `game_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "poker-holdem-01"
          },
          {
            "name": "round_id",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `round_id` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "round-88231"
          },
          {
            "name": "affiliate_code",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `affiliate_code` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "aff-summer"
          },
          {
            "name": "payment_reference_id",
            "in": "query",
            "required": false,
            "description": "भुगतान संदर्भ पर सटीक मिलान (`transaction_context.payment_reference_id` या `payload.payment_reference_id` से)।",
            "schema": {
              "type": "string"
            },
            "example": "dep_735"
          },
          {
            "name": "counterparty_vendor_data",
            "in": "query",
            "required": false,
            "description": "प्रमोट किए गए `counterparty_vendor_data` पर सटीक मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "user-77"
          },
          {
            "name": "matched_only",
            "in": "query",
            "required": false,
            "description": "`true` (साथ ही `1` या `yes`, केस-असंवेदनशील) केवल वे इवेंट लौटाता है जिनसे कम से कम एक नियम मेल खाता हो (`rules_matched_count` 0 से अधिक)। किसी अन्य मान को अनदेखा कर दिया जाता है।",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "example": true
          },
          {
            "name": "occurred_from",
            "in": "query",
            "required": false,
            "description": "केवल इस क्षण पर या उसके बाद (इस क्षण सहित) `occurred_at` वाले इवेंट। एक ISO 8601 मान भेजें: `2026-10-01T00:00:00Z`, प्रतिशत-एन्कोडेड `+` के साथ एक स्पष्ट ऑफ़सेट (`2026-10-01T02:00:00%2B02:00`; एक गैर-एन्कोडेड `+` को स्पेस के रूप में डिकोड किया जाता है और मान पार्स नहीं होता है), या केवल एक तारीख (`2026-10-01`), जिसका अर्थ उस दिन का 00:00:00 UTC है। बिना ऑफ़सेट वाले मान को UTC के रूप में पढ़ा जाता है। किसी अन्य प्रारूप में मान स्वीकार नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2026-10-01T00:00:00Z"
          },
          {
            "name": "occurred_to",
            "in": "query",
            "required": false,
            "description": "केवल इस क्षण पर या उससे पहले (इस क्षण सहित) `occurred_at` वाले इवेंट। केवल तारीख का अर्थ उस दिन की शुरुआत है, इसलिए `occurred_to=2026-10-15` 15 अक्टूबर के बाकी समय को बाहर कर देता है; इसे शामिल करने के लिए `2026-10-15T23:59:59Z` भेजें। एक ISO 8601 मान भेजें: `2026-10-01T00:00:00Z`, प्रतिशत-एन्कोडेड `+` के साथ एक स्पष्ट ऑफ़सेट (`2026-10-01T02:00:00%2B02:00`; एक गैर-एन्कोडेड `+` को स्पेस के रूप में डिकोड किया जाता है और मान पार्स नहीं होता है), या केवल एक तारीख (`2026-10-01`), जिसका अर्थ उस दिन का 00:00:00 UTC है। बिना ऑफ़सेट वाले मान को UTC के रूप में पढ़ा जाता है। किसी अन्य प्रारूप में मान स्वीकार नहीं किए जाते हैं।",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2026-10-17T23:59:59Z"
          },
          {
            "name": "search",
            "in": "query",
            "required": false,
            "description": "`event_id`, `action_type`, `subject_vendor_data` या `counterparty_vendor_data` पर केस-इनसेंसिटिव सबस्ट्रिंग मिलान।",
            "schema": {
              "type": "string"
            },
            "example": "chargeback"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/events/subjects/user-42/?entity_type=individual&limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.monitoring_events.retrieve_subject_timeline(\n    \"user-42\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.monitoringEvents.retrieveSubjectTimeline(\"user-42\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.MonitoringEvents.RetrieveSubjectTimelineAutoPaging(ctx, \"user-42\", didit.MonitoringEventsRetrieveSubjectTimelineParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.monitoringEvents().retrieveSubjectTimeline(\"user-42\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->monitoringEvents->retrieveSubjectTimeline('user-42') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.monitoring_events.retrieve_subject_timeline(\"user-42\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.MonitoringEvents.RetrieveSubjectTimelineAsync(\"user-42\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "सब्जेक्ट के इवेंट्स का एक पेज।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitoringEventPage"
                },
                "examples": {
                  "Individual timeline": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "event_uuid": "11111111-2222-3333-4444-555555555555",
                          "event_id": "chargeback-2026-10-16-000318",
                          "event_category": "dispute",
                          "action_type": "chargeback_opened",
                          "occurred_at": "2026-10-16T14:02:11Z",
                          "received_at": "2026-10-16T14:02:12.418230Z",
                          "status": "IN_REVIEW",
                          "score": 60,
                          "subject_vendor_data": "user-42",
                          "subject_entity_type": "individual",
                          "subject_uuid": "66666666-7777-8888-9999-000000000000",
                          "counterparty_vendor_data": null,
                          "session_id": null,
                          "device_fingerprint": null,
                          "ip_address": null,
                          "ip_country": null,
                          "amount": "250.000000000000000000",
                          "currency": "EUR",
                          "game_id": null,
                          "round_id": null,
                          "bonus_id": null,
                          "affiliate_code": null,
                          "payment_reference_id": "dep_735",
                          "retention_class": "monetary_or_compliance",
                          "rules_matched_count": 1,
                          "correlation_pending": false,
                          "is_droppable": false
                        },
                        {
                          "event_uuid": "22222222-3333-4444-5555-666666666666",
                          "event_id": "login-2026-10-15-000912",
                          "event_category": "auth",
                          "action_type": "login",
                          "occurred_at": "2026-10-15T08:30:00.120000Z",
                          "received_at": "2026-10-15T08:30:00.734512Z",
                          "status": "ACCEPTED",
                          "score": 0,
                          "subject_vendor_data": "user-42",
                          "subject_entity_type": "individual",
                          "subject_uuid": "66666666-7777-8888-9999-000000000000",
                          "counterparty_vendor_data": null,
                          "session_id": "web-session-abc",
                          "device_fingerprint": "fp-a8c1",
                          "ip_address": "203.0.113.42",
                          "ip_country": "ES",
                          "amount": null,
                          "currency": null,
                          "game_id": null,
                          "round_id": null,
                          "bonus_id": null,
                          "affiliate_code": null,
                          "payment_reference_id": null,
                          "retention_class": "standard",
                          "rules_matched_count": 0,
                          "correlation_pending": false,
                          "is_droppable": true
                        }
                      ]
                    }
                  },
                  "No events": {
                    "value": {
                      "count": 0,
                      "next": null,
                      "previous": null,
                      "results": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1000000 से बड़ा है। बॉडी एक संदेश वाला JSON ऐरे है। गैर-संख्यात्मक या गैर-सकारात्मक `limit` विफल होने के बजाय डिफ़ॉल्ट 50 पर वापस आ जाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "limit too large": {
                    "summary": "limit 1000000 से अधिक है",
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "offset too large": {
                    "summary": "offset 1000000 से अधिक है",
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: read` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी कभी भी लेन-देन निगरानी डेटा तक नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: `GET` अनुरोध प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/enrichment-metrics/": {
      "get": {
        "summary": "इवेंट संवर्धन मेट्रिक्स प्राप्त करें",
        "description": "एक अवधि के लिए अपने एप्लिकेशन के इवेंट इनजेशन और IP-एनरिचमेंट काउंटर्स लौटाएं, जो सभी लेनों (सर्वर, बैच और डिवाइस) पर जोड़कर गिने गए हैं, ताकि आप इवेंट वॉल्यूम देख सकें और पुष्टि कर सकें कि एनरिचमेंट प्रति इवेंट के बजाय प्रति यूनीक पते पर एक बार हल किया गया है। यह अवधि आज और पिछले `days` दिनों को कवर करती है, जिसकी गणना UTC कैलेंडर तिथि के अनुसार की जाती है। जब उनका डिनॉमिनेटर शून्य होता है तो तीनों अनुपात null होते हैं। स्कोप्ड API कुंजी के लिए `transactions: read` की आवश्यकता होती है। [IP एनरिचमेंट](https://docs.didit.me/hi/transaction-monitoring/events#ip-एनरिचमेंट) देखें।",
        "operationId": "get_monitoring_event_enrichment_metrics",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "retrieve_enrichment_metrics",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "दिनों में अवधि की लंबाई। डिफ़ॉल्ट रूप से 30; मान 1 से 365 तक सीमित हैं, और गैर-पूर्णांक मान 30 पर वापस आ जाता है। लागू किया गया मान `period_days` के रूप में लौटाया जाता है।",
            "schema": {
              "type": "integer",
              "default": 30,
              "minimum": 1,
              "maximum": 365
            },
            "example": 30
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/events/enrichment-metrics/?days=30' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.monitoring_events.retrieve_enrichment_metrics()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.monitoringEvents.retrieveEnrichmentMetrics();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.MonitoringEvents.RetrieveEnrichmentMetrics(ctx, didit.MonitoringEventsRetrieveEnrichmentMetricsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.monitoringEvents().retrieveEnrichmentMetrics();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->monitoringEvents->retrieveEnrichmentMetrics();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.monitoring_events.retrieve_enrichment_metrics\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.MonitoringEvents.RetrieveEnrichmentMetricsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "अवधि के लिए काउंटर्स और अनुपात।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "events_ingested",
                    "events_rejected",
                    "enrichment_lookups",
                    "enrichment_cache_hits",
                    "enrichment_provider_calls",
                    "enrichment_skipped_low_value",
                    "unique_ips_seen",
                    "period_days",
                    "cache_hit_rate",
                    "unique_ip_ratio",
                    "provider_calls_per_1k_events"
                  ],
                  "properties": {
                    "events_ingested": {
                      "type": "integer",
                      "description": "नए इवेंट संग्रहीत किए गए। आइडेम्पोटेंट रीप्ले नहीं गिने जाते हैं।"
                    },
                    "events_rejected": {
                      "type": "integer",
                      "description": "बैच अनुरोधों (सर्वर और डिवाइस लेन) के अंदर अस्वीकृत आइटम। अस्वीकृत एकल-इवेंट अनुरोध की गणना नहीं की जाती है।"
                    },
                    "enrichment_lookups": {
                      "type": "integer",
                      "description": "वे इवेंट्स जिनके सार्वजनिक IP पते का समाधान किया गया था, कैश से या नए सिरे से।"
                    },
                    "enrichment_cache_hits": {
                      "type": "integer",
                      "description": "कैश से उत्तर दिए गए लुकअप।"
                    },
                    "enrichment_provider_calls": {
                      "type": "integer",
                      "description": "वे लुकअप जिनके लिए पते के नए रिज़ॉल्यूशन की आवश्यकता थी।"
                    },
                    "enrichment_skipped_low_value": {
                      "type": "integer",
                      "description": "कम-मूल्य वाले टेलीमेट्री इवेंट जिनका पता पहले से ज्ञात नहीं था। वे कभी भी स्वयं किसी नए रिज़ॉल्यूशन को ट्रिगर नहीं करते हैं।"
                    },
                    "unique_ips_seen": {
                      "type": "integer",
                      "description": "वे पते जिनके लिए नए रिज़ॉल्यूशन की आवश्यकता थी।"
                    },
                    "period_days": {
                      "type": "integer",
                      "description": "क्लैम्पिंग के बाद लागू किया गया `days` मान।"
                    },
                    "cache_hit_rate": {
                      "type": "number",
                      "nullable": true,
                      "description": "`enrichment_cache_hits / enrichment_lookups`, 4 दशमलव स्थानों तक पूर्णांकित। जब कोई लुकअप नहीं था तब Null।"
                    },
                    "unique_ip_ratio": {
                      "type": "number",
                      "nullable": true,
                      "description": "`unique_ips_seen / events_ingested`, 4 दशमलव स्थानों तक पूर्णांकित। Null जब कोई इवेंट इंगेस्ट नहीं किया गया था।"
                    },
                    "provider_calls_per_1k_events": {
                      "type": "number",
                      "nullable": true,
                      "description": "प्रति 1000 अंतर्ग्रहित इवेंट्स पर नए रिज़ॉल्यूशन, 2 दशमलव स्थानों तक पूर्णांकित। कोई इवेंट अंतर्ग्रहित न होने पर null।"
                    }
                  }
                },
                "examples": {
                  "Last 30 days": {
                    "value": {
                      "events_ingested": 128450,
                      "events_rejected": 214,
                      "enrichment_lookups": 41230,
                      "enrichment_cache_hits": 40118,
                      "enrichment_provider_calls": 1112,
                      "enrichment_skipped_low_value": 74320,
                      "unique_ips_seen": 1112,
                      "period_days": 30,
                      "cache_hit_rate": 0.973,
                      "unique_ip_ratio": 0.0087,
                      "provider_calls_per_1k_events": 8.66
                    }
                  },
                  "No events yet": {
                    "value": {
                      "events_ingested": 0,
                      "events_rejected": 0,
                      "enrichment_lookups": 0,
                      "enrichment_cache_hits": 0,
                      "enrichment_provider_calls": 0,
                      "enrichment_skipped_low_value": 0,
                      "unique_ips_seen": 0,
                      "period_days": 30,
                      "cache_hit_rate": null,
                      "unique_ip_ratio": null,
                      "provider_calls_per_1k_events": null
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: read` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी कभी भी लेन-देन निगरानी डेटा तक नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: `GET` अनुरोध प्रति API कुंजी प्रति मिनट 600 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/events/{event_uuid}/delete/": {
      "delete": {
        "summary": "निगरानी इवेंट हटाएं",
        "description": "एक मॉनिटरिंग इवेंट को उसके नियम निष्पादनों, नोट्स और टैग लिंक के साथ स्थायी रूप से हटाएं, उदाहरण के लिए गलती से भेजा गया कोई इवेंट। `204` के बाद इवेंट हर रीड से हट जाता है (रिट्रीव `404` लौटाता है, और यह सूची या विषय की टाइमलाइन में दिखाई नहीं देता है), विलोपन अपरिवर्तनीय है, और इसका `event_id` किसी नए इवेंट के लिए उपयोग करने के लिए स्वतंत्र है। जो प्रभावित नहीं होते: वह उपयोगकर्ता या कंपनी जिस पर इवेंट का समाधान हुआ था, किसी नियम द्वारा खोले गए केस, किसी नियम द्वारा जोड़ी गई सूची प्रविष्टियां, और अन्य इवेंट्स पर पहले से लागू किए गए स्कोर और स्थितियां। किसी व्यक्ति या कंपनी से संबंधित सब कुछ मिटाने के लिए, इसके बजाय उपयोगकर्ता या कंपनी को हटाएं, जिससे उनके इवेंट भी हटा दिए जाते हैं। स्कोप्ड API कुंजी के लिए `transactions: write` आवश्यक है।",
        "operationId": "delete_monitoring_event",
        "x-didit-sdk": {
          "resource": "monitoring_events",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Monitoring Events"
        ],
        "parameters": [
          {
            "name": "event_uuid",
            "in": "path",
            "required": true,
            "description": "इवेंट का Didit पहचानकर्ता (create, batch, list या timeline रिस्पॉन्स से `event_uuid`), आपकी अपनी `event_id` नहीं।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "11111111-2222-3333-4444-555555555555"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/events/11111111-2222-3333-4444-555555555555/delete/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.monitoring_events.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.monitoringEvents.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.MonitoringEvents.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.monitoringEvents().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->monitoringEvents->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.monitoring_events.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.MonitoringEvents.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ],
        "responses": {
          "204": {
            "description": "इवेंट हटा दिया गया था। कोई बॉडी नहीं।"
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। केवल समय-सीमा समाप्त कुंजी को `401` मिलता है; अनुपलब्ध या अमान्य कुंजी को `403` मिलता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपस्थित `x-api-key` (गलत, निरस्त या समाप्त कुंजी को `401` मिलता है), बिना `transactions: write` वाली स्कोप्ड कुंजी, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी (ऐसी कुंजी कभी भी लेन-देन निगरानी डेटा तक नहीं पहुँचती), या कुंजी की IP अनुमति सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing or invalid API key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without access": {
                    "value": {
                      "detail": "This API key has no write access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "IP not allowed": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस `event_uuid` वाला कोई इवेंट मौजूद नहीं है: इसे कभी संग्रहीत नहीं किया गया था, इसे हटा दिया गया था, या यह किसी अन्य एप्लिकेशन से संबंधित है। जो पाथ सेगमेंट UUID नहीं है, वह रूट से मेल नहीं खाता है और `404` भी लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No MonitoringEvent matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: राइट (write) अनुरोध (`POST`, `PATCH`, `DELETE`) प्रति API कुंजी प्रति मिनट 300 अनुरोधों का बजट साझा करते हैं। `Retry-After` सेकंड प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            },
            "content": {
              "application/json": {
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/parties/{partyUuid}/regenerate/": {
      "post": {
        "summary": "प्रमुख व्यक्ति पार्टी का KYC सत्र पुनः जनरेट करें",
        "description": "व्यवसाय सत्यापन (KYB) सत्र की किसी Key People पार्टी को उसका पिछला सत्र हटा दिए जाने या व्यक्ति द्वारा उसे शुरू करने से पहले समय-सीमा समाप्त हो जाने के बाद एक नया व्यक्तिगत KYC सत्र दें, ताकि Key People जांच फिर से पूरी हो सके; कोई अनुरोध बॉडी न भेजें। यह तब काम करता है जब पार्टी का KYC सत्र हटा दिया गया हो (`kyc_session_deleted: true`) या व्यक्ति द्वारा शुरू करने से पहले उसकी समय-सीमा समाप्त हो गई हो (`Expired`, कभी शुरू नहीं हुआ)। जो सत्र अभी भी प्रगति पर है या किसी अन्य स्थिति (`Approved`, `Declined`, `In Review`, `Abandoned`, ...) में समाप्त हुआ है, वह `409` लौटाता है जब तक कि उसे हटाया न गया हो। ऐसी पार्टी जिसके पास कभी कोई सत्र नहीं था या कोई कंपनी पार्टी हमेशा `409` लौटाती है। Didit उस वर्कफ़्लो (उसका नवीनतम प्रकाशित संस्करण) के साथ एक नया होस्टेड KYC सत्र बनाता है जिसके साथ पार्टी को सत्यापित किया गया था, या जब यह अब ज्ञात न हो, तो वह वर्कफ़्लो जिसे आपकी Key People सेटिंग्स पार्टी की भूमिका को सौंपती हैं, ताकि इसका लिंक उस KYC वर्कफ़्लो के सत्र समाप्ति समय तक वैध रहे; यदि रिकॉर्ड में ईमेल मौजूद है तो यह पार्टी को लिंक ईमेल करता है, `is_skipped` को हटाता है, और Key People जांच व व्यावसायिक सत्र स्थिति की पुनर्गणना करता है। इसके बाद यह ट्रिगर `console_key_people_regenerate` के साथ व्यावसायिक सत्र के लिए एक `data.updated` [webhook](https://docs.didit.me/hi/integration/webhooks) भेजता है; इसके बजाय पार्टी को छूट देने के लिए, `PATCH /v3/session/{sessionId}/kyb/parties/{partyUuid}/` का उपयोग करें। एक स्कोप्ड API कुंजी को `decisions: write` की आवश्यकता होती है, और `sessions: write` के बिना इसे `kyc_session_url` `null` के रूप में प्राप्त होता है। हटाए गए सत्र योग्य होते हैं भले ही व्यक्ति ने पहले ही सत्यापन शुरू कर दिया हो या समाप्त कर दिया हो। इंपोर्ट किए गए सत्र समय-सीमा समाप्ति के माध्यम से योग्य नहीं होते हैं; उन्हें हटाया गया होना चाहिए।",
        "operationId": "post_v3_session_kyb_party_regenerate",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "regenerate_kyb_party",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "पैरेंट व्यवसाय सत्यापन (KYB) सत्र का UUID।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "partyUuid",
            "in": "path",
            "required": true,
            "description": "प्रमुख व्यक्ति पक्ष का UUID (व्यवसाय सत्र के निर्णय में `key_people_checks[].submitted.parties[].uuid`)। यह `sessionId` द्वारा संदर्भित सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/session/33333333-4444-5555-6666-777777777777/kyb/parties/0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41/regenerate/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.regenerate_kyb_party(\n    \"33333333-4444-5555-6666-777777777777\",\n    \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.regenerateKybParty(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.RegenerateKYBParty(ctx, \"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().regenerateKybParty(\"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->regenerateKybParty('33333333-4444-5555-6666-777777777777', '0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.regenerate_kyb_party(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.RegenerateKybPartyAsync(\"33333333-4444-5555-6666-777777777777\", \"0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नया KYC सत्र बनाया गया। अपने नए चाइल्ड सत्र के साथ अपडेटेड पार्टी लौटाता है, जो इसके KYC वर्कफ़्लो के सत्र समाप्ति समय के बाद समाप्त हो जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/KYBKeyPeopleParty"
                },
                "example": {
                  "uuid": "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41",
                  "entity_type": "person",
                  "source": "USER",
                  "name": "Jane Smith",
                  "first_name": "Jane",
                  "last_name": "Smith",
                  "company_name": null,
                  "registration_number": null,
                  "email": "user@example.com",
                  "nationality": "GB",
                  "phone_number": null,
                  "date_of_birth": "1980-05-04",
                  "position": "Director",
                  "custom_fields": {},
                  "is_active": true,
                  "is_skipped": false,
                  "requires_verification": true,
                  "roles": [
                    {
                      "role": "director",
                      "ownership_percent": null,
                      "voting_percent": null
                    }
                  ],
                  "kyc_session_id": "55555555-6666-7777-8888-999999999999",
                  "kyc_session_status": "Not Started",
                  "kyc_session_url": "https://verify.didit.me/session/abc123def456",
                  "kyc_session_deleted": false,
                  "kyb_sub_session_id": null,
                  "kyb_sub_session_status": null,
                  "kyb_sub_session_url": null,
                  "kyb_sub_session_deleted": false,
                  "verification_workflow_type": "kyc",
                  "verification_workflow_id": "12121212-3434-5656-7878-909090909090",
                  "verification_workflow_label": "Key People KYC",
                  "verification_workflow_features": [
                    {
                      "feature": "ID_VERIFICATION",
                      "status": "Not Finished"
                    },
                    {
                      "feature": "LIVENESS",
                      "status": "Not Finished"
                    },
                    {
                      "feature": "AML",
                      "status": "Not Finished"
                    }
                  ],
                  "didit_internal_id": null
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है; आपके एप्लिकेशन में इस UUID वाला कोई पक्ष मौजूद नहीं है; या यह पक्ष किसी अन्य सत्र से संबंधित है। प्रत्येक स्थिति का अपना `detail` होता है। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी के वर्कफ़्लो या केवल-स्वीकृत सीमाओं से बाहर है",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Unknown party": {
                    "summary": "आपके एप्लिकेशन में इस UUID वाला कोई पक्ष नहीं है",
                    "value": {
                      "detail": "No BusinessParty matches the given query."
                    }
                  },
                  "Party of another session": {
                    "summary": "partyUuid मौजूद है लेकिन किसी भिन्न सत्र से संबंधित है",
                    "value": {
                      "detail": "Party does not belong to the given session."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "पक्ष के पास बदलने के लिए कोई योग्य KYC सत्र नहीं है। जब तक हटाया न गया हो, प्रगति पर मौजूद सत्र या किसी अन्य स्थिति (`Approved`, `Declined`, `In Review`, `Abandoned`, ...) में समाप्त हुए सत्र को पुनः जनरेट नहीं किया जा सकता है। ऐसा पक्ष जिसके पास कभी कोई सत्र नहीं था या कोई कंपनी पक्ष भी `409` लौटाता है। व्यक्ति द्वारा इसे शुरू करने से पहले एक योग्य सत्र हटा दिया गया था या उसकी समय-सीमा समाप्त हो गई थी। हटाए गए सत्र योग्य होते हैं भले ही व्यक्ति ने पहले ही सत्यापन शुरू या समाप्त कर दिया हो। इंपोर्ट किए गए सत्र समय-सीमा समाप्त होने के माध्यम से योग्य नहीं होते हैं; उन्हें हटा दिया गया होना चाहिए। `code` के आधार पर शाखा चुनें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "detail",
                    "code"
                  ],
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "kyb_party_kyc_session_not_deleted"
                      ],
                      "description": "मशीन द्वारा पठनीय स्थिर त्रुटि कोड।"
                    }
                  }
                },
                "example": {
                  "detail": "This party's KYC session is still live (it has neither been deleted nor expired without starting), so it cannot be regenerated.",
                  "code": "kyb_party_kyc_session_not_deleted"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/transactions/{transaction_id}/notes/": {
      "get": {
        "summary": "लेन-देन के नोट्स सूचीबद्ध करें",
        "description": "किसी एक मॉनिटर किए गए लेन-देन पर नोट्स सूचीबद्ध करें, नवीनतम पहले (`created_at` अवरोही): वे नोट्स जो आप API के माध्यम से जोड़ते हैं, वे नोट्स और स्थिति परिवर्तन जो समीक्षक Console में करते हैं, और वे नोट्स जो Didit स्वचालित रूप से जोड़ता है (किसी नियम की `add_note` कार्रवाई, या उपयोगकर्ता-कार्रवाई सत्यापन सत्र बनाने में कोई समस्या), जिनमें `actor_name` `Rule Engine` होता है। `metadata` नोट के प्रकारों में अंतर बताता है।\n\n`limit` और `offset` के साथ पेजिनेटेड। `count` 100 तक सटीक है और उससे अधिक होने पर 100 पर सीमित है, इसलिए `count` से पृष्ठों की गणना करने के बजाय तब तक `next` का अनुसरण करें जब तक कि यह `null` न हो। यह बिना किसी साइड इफेक्ट वाला एक रीड है।\n\nएक स्कोप्ड API कुंजी के लिए `transactions: read` की आवश्यकता होती है; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint को कॉल नहीं कर सकती है। समीक्षक [लेन-देन विवरण](https://docs.didit.me/hi/transaction-monitoring/console#लेन-देन-विवरण) पर **Notes** के अंतर्गत वही सूची देखते हैं।",
        "operationId": "list_transaction_notes",
        "x-didit-sdk": {
          "resource": "transactions.notes",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "Didit लेन-देन UUID: `POST /v3/transactions/` और `GET /v3/transactions/` द्वारा लौटाया गया `uuid`। आपकी अपनी `txn_id` स्वीकार नहीं की जाती है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "abcdef12-3456-7890-abcd-ef1234567890"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "प्रति पेज नोटों की संख्या। डिफ़ॉल्ट रूप से 50 है। ऐसा मान जो धनात्मक पूर्णांक नहीं है, वापस 50 पर आ जाता है; 1000000 से अधिक का मान `400` लौटाता है।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "लौटाए जाने वाले पहले नोट की शून्य-आधारित स्थिति। `next` का अनुसरण करना बेहतर है। ऐसा मान जो पूर्ण संख्या नहीं है, 0 पर वापस चला जाता है; 1000000 से अधिक का मान `400` लौटाता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/notes/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.transactions.notes.list(\n    \"abcdef12-3456-7890-abcd-ef1234567890\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.transactions.notes.list(\"abcdef12-3456-7890-abcd-ef1234567890\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Notes.ListAutoPaging(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsNotesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.transactions().notes().list(\"abcdef12-3456-7890-abcd-ef1234567890\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->transactions->notes->list('abcdef12-3456-7890-abcd-ef1234567890') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.notes.list(\"abcdef12-3456-7890-abcd-ef1234567890\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Transactions.Notes.ListAsync(\"abcdef12-3456-7890-abcd-ef1234567890\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "नोट्स का एक पेज, सबसे नए पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "लेन-देन पर नोटों की संख्या: 100 तक सटीक, उससे अधिक होने पर 100 पर सीमित। इससे पेजों की गणना करने के बजाय `next` का अनुसरण करें।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TransactionNote"
                      }
                    }
                  }
                },
                "examples": {
                  "API, Console and rule notes": {
                    "value": {
                      "count": 3,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "c1111111-2222-4333-8444-555555555555",
                          "note": "Customer confirmed the withdrawal by phone.",
                          "actor_email": null,
                          "actor_name": null,
                          "metadata": {
                            "mentioned_emails": [
                              "analyst@example.com"
                            ]
                          },
                          "created_at": "2026-10-16T10:05:12.481203Z"
                        },
                        {
                          "uuid": "c2222222-3333-4444-8555-666666666666",
                          "note": "Status changed from IN_REVIEW to APPROVED. Reason: Source of funds verified",
                          "actor_email": "reviewer@example.com",
                          "actor_name": "Alex Reviewer",
                          "metadata": {
                            "type": "status_change",
                            "previous_status": "IN_REVIEW",
                            "new_status": "APPROVED",
                            "reason_code": "SOF_VERIFIED",
                            "reason_label": "Source of funds verified"
                          },
                          "created_at": "2026-10-15T17:22:40.103911Z"
                        },
                        {
                          "uuid": "c3333333-4444-4555-8666-777777777777",
                          "note": "Large withdrawal to a new wallet: check the source of funds.",
                          "actor_email": null,
                          "actor_name": "Rule Engine",
                          "metadata": {
                            "rule_uuid": "d1111111-2222-4333-8444-555555555555",
                            "source": "rule_action"
                          },
                          "created_at": "2026-10-15T08:42:12.004518Z"
                        }
                      ]
                    }
                  },
                  "No notes yet": {
                    "value": {
                      "count": 0,
                      "next": null,
                      "previous": null,
                      "results": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1000000 से अधिक है। बॉडी संदेशों का एक JSON ऐरे है, कोई ऑब्जेक्ट नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "examples": {
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "Offset too large": {
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। एक अनुपलब्ध कुंजी को सामान्य संदेश मिलता है; एक गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without transactions read": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस UUID वाला कोई लेन-देन मौजूद नहीं है (कभी नहीं बनाया गया, हटा दिया गया, या किसी अन्य एप्लिकेशन के स्वामित्व में है)। एक `transaction_id` जो UUID नहीं है, API तक नहीं पहुंचता है: यह इस JSON बॉडी के बजाय `404` HTML पेज लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No Transaction matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      },
      "post": {
        "summary": "लेन-देन नोट बनाएं",
        "description": "निगरानी किए जा रहे लेन-देन की समीक्षा टाइमलाइन में एक सादा-टेक्स्ट नोट जोड़ें, जहां कंसोल समीक्षक इसे देख सकते हैं। एक नोट केवल संदर्भ है, कोई निर्णय नहीं: लेन-देन का `status`, `score` और अलर्ट नहीं बदलते हैं, कोई webhook नहीं भेजा जाता है, और कुछ भी बिल नहीं किया जाता है। लेन-देन की `activities` में एक `TRANSACTION_NOTE_ADDED` प्रविष्टि जुड़ जाती है।\n\nAPI कुंजी के साथ बनाए गए नोटों का कोई लेखक नहीं होता है: `actor_email` और `actor_name` `null` होते हैं, इसलिए यदि आपको आवश्यकता हो तो लेखक को टेक्स्ट में शामिल करें। `mentioned_emails` में प्रत्येक पता आपके संगठन के किसी सदस्य का होना चाहिए, अन्यथा पूरा अनुरोध `400` के साथ विफल हो जाता है; उल्लेखों को लोअरकेस में और डुप्लिकेट हटाकर संग्रहीत किया जाता है, और यह endpoint उल्लिखित सदस्यों को सूचित नहीं करता है।\n\nप्रत्येक कॉल एक नया नोट बनाती है, इसलिए समय-सीमा समाप्त अनुरोध का पुनः प्रयास करने पर यह दो बार जुड़ सकता है: पुनः प्रयास करने से पहले नोटों को सूचीबद्ध करें। किसी नोट को संपादित करने या हटाने के लिए कोई API endpoint नहीं है। स्कोप्ड API कुंजी के लिए `transactions: write` की आवश्यकता होती है; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint को कॉल नहीं कर सकती है।",
        "operationId": "create_transaction_note",
        "x-didit-sdk": {
          "resource": "transactions.notes",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "Didit लेन-देन UUID: `POST /v3/transactions/` और `GET /v3/transactions/` द्वारा लौटाया गया `uuid`। आपकी अपनी `txn_id` स्वीकार नहीं की जाती है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "abcdef12-3456-7890-abcd-ef1234567890"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "note"
                ],
                "properties": {
                  "note": {
                    "type": "string",
                    "minLength": 1,
                    "description": "सादा टेक्स्ट नोट। शुरुआत और अंत के रिक्त स्थान को हटा दिया जाता है और खाली नोट को अस्वीकार कर दिया जाता है। कोई लंबाई सीमा नहीं।"
                  },
                  "mentioned_emails": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "email"
                    },
                    "default": [],
                    "description": "मेंशन करने के लिए आपके संगठन के सदस्यों के ईमेल। प्रत्येक आपके संगठन के सदस्य का एक मान्य ईमेल होना चाहिए।"
                  }
                }
              },
              "examples": {
                "Note with a mention": {
                  "value": {
                    "note": "Customer confirmed the withdrawal by phone.",
                    "mentioned_emails": [
                      "analyst@example.com"
                    ]
                  }
                },
                "Plain note": {
                  "value": {
                    "note": "Source of funds document requested by email."
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/notes/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"note\": \"Customer confirmed the withdrawal by phone.\", \"mentioned_emails\": [\"analyst@example.com\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.transactions.notes.create(\n    \"abcdef12-3456-7890-abcd-ef1234567890\",\n    note=\"Customer confirmed the withdrawal by phone.\",\n    mentioned_emails=[\"analyst@example.com\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.transactions.notes.create(\"abcdef12-3456-7890-abcd-ef1234567890\", {\n  note: \"Customer confirmed the withdrawal by phone.\",\n  mentioned_emails: [\"analyst@example.com\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Transactions.Notes.Create(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsNotesCreateParams{\n\tNote:            \"Customer confirmed the withdrawal by phone.\",\n\tMentionedEmails: didit.Some([]string{\"analyst@example.com\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.TransactionsNotesCreateParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.transactions().notes().create(\"abcdef12-3456-7890-abcd-ef1234567890\", TransactionsNotesCreateParams.builder()\n        .note(\"Customer confirmed the withdrawal by phone.\")\n        .mentionedEmails(List.of(\"analyst@example.com\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->transactions->notes->create('abcdef12-3456-7890-abcd-ef1234567890', [\n    'note' => 'Customer confirmed the withdrawal by phone.',\n    'mentioned_emails' => ['analyst@example.com'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.transactions.notes.create(\n  \"abcdef12-3456-7890-abcd-ef1234567890\",\n  note: \"Customer confirmed the withdrawal by phone.\",\n  mentioned_emails: [\"analyst@example.com\"]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Transactions.Notes.CreateAsync(\"abcdef12-3456-7890-abcd-ef1234567890\", new TransactionsNotesCreateParams\n{\n    Note = \"Customer confirmed the withdrawal by phone.\",\n    MentionedEmails = new string[] { \"analyst@example.com\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "नोट बनाया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionNote"
                },
                "examples": {
                  "Created": {
                    "value": {
                      "uuid": "c1111111-2222-4333-8444-555555555555",
                      "note": "Customer confirmed the withdrawal by phone.",
                      "actor_email": null,
                      "actor_name": null,
                      "metadata": {
                        "mentioned_emails": [
                          "analyst@example.com"
                        ]
                      },
                      "created_at": "2026-10-16T10:05:12.481203Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "बॉडी अमान्य है: `note` अनुपलब्ध, null या रिक्त है, `mentioned_emails` में अमान्य पता है (सूची स्थिति द्वारा कीड की गई त्रुटियाँ), या ऐसा उल्लिखित पता जो आपके संगठन का सदस्य नहीं है। कुछ भी नहीं बनाया गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "फ़ील्ड नाम के अनुसार कुंजीबद्ध फ़ील्ड त्रुटियाँ।",
                  "additionalProperties": {}
                },
                "examples": {
                  "Missing note": {
                    "value": {
                      "note": [
                        "This field is required."
                      ]
                    }
                  },
                  "Blank note": {
                    "value": {
                      "note": [
                        "This field may not be blank."
                      ]
                    }
                  },
                  "Invalid email": {
                    "value": {
                      "mentioned_emails": {
                        "0": [
                          "Enter a valid email address."
                        ]
                      }
                    }
                  },
                  "Not an organization member": {
                    "value": {
                      "mentioned_emails": [
                        "Mentioned users must belong to this organization and have access to this application."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। एक अनुपलब्ध कुंजी को सामान्य संदेश मिलता है; एक गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without transactions write": {
                    "value": {
                      "detail": "This API key has no write access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस UUID वाला कोई लेन-देन मौजूद नहीं है (कभी नहीं बनाया गया, हटा दिया गया, या किसी अन्य एप्लिकेशन के स्वामित्व में है)। एक `transaction_id` जो UUID नहीं है, API तक नहीं पहुंचता है: यह इस JSON बॉडी के बजाय `404` HTML पेज लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No Transaction matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 300 से अधिक राइट अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/transactions/{transaction_id}/related/": {
      "get": {
        "summary": "संबंधित लेन-देन सूचीबद्ध करें",
        "description": "अपने एप्लिकेशन में अन्य लेन-देन सूचीबद्ध करें जिनमें इस लेन-देन वाले ही लोग या कंपनियाँ शामिल हैं। कोई लेन-देन तब संबंधित होता है जब उसके किसी भी पक्ष का, किसी भी भूमिका में, इस लेन-देन के पक्षों में से किसी एक के समान `vendor_data` हो। लेन-देन स्वयं कभी वापस नहीं किया जाता है, और बिना `vendor_data` वाले पक्षों को अनदेखा कर दिया जाता है: जब इस लेन-देन के किसी भी पक्ष के पास यह नहीं होता है, तो परिणाम हमेशा खाली होता है।\n\nपरिणाम `GET /v3/transactions/` के सारांश प्रारूप का उपयोग करते हैं, सबसे नए पहले (`txn_date`, फिर `created_at`)। `limit` और `offset` के साथ पृष्ठांकित; `count` 100 तक सटीक है और उससे ऊपर 100 पर सीमित है, इसलिए `next` का तब तक पालन करें जब तक कि यह `null` न हो।\n\nस्कोप वाली API कुंजी को `transactions: read` की आवश्यकता होती है; कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इस endpoint को कॉल नहीं कर सकती है। इस सूची को पूर्ण बनाने के लिए प्रत्येक [लेन-देन](https://docs.didit.me/hi/transaction-monitoring/transactions#विषय-और-प्रतिपक्ष) पर एक ही व्यक्ति या कंपनी के लिए समान `vendor_data` भेजें।",
        "operationId": "list_related_transactions",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "list_related",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "transaction_id",
            "in": "path",
            "required": true,
            "description": "Didit लेन-देन UUID: `POST /v3/transactions/` और `GET /v3/transactions/` द्वारा लौटाया गया `uuid`। आपकी अपनी `txn_id` स्वीकार नहीं की जाती है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "abcdef12-3456-7890-abcd-ef1234567890"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "प्रति पेज लेन-देन की संख्या। डिफ़ॉल्ट रूप से 50 है। ऐसा मान जो धनात्मक पूर्णांक नहीं है, वापस 50 पर आ जाता है; 1000000 से अधिक का मान `400` लौटाता है।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "लौटाए जाने वाले पहले लेन-देन की शून्य-आधारित स्थिति। `next` का अनुसरण करना बेहतर है। ऐसा मान जो पूर्ण संख्या नहीं है, 0 पर वापस चला जाता है; 1000000 से अधिक का मान `400` लौटाता है।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/related/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.transactions.list_related(\n    \"abcdef12-3456-7890-abcd-ef1234567890\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.transactions.listRelated(\"abcdef12-3456-7890-abcd-ef1234567890\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.ListRelatedAutoPaging(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsListRelatedParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.transactions().listRelated(\"abcdef12-3456-7890-abcd-ef1234567890\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->transactions->listRelated('abcdef12-3456-7890-abcd-ef1234567890') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.transactions.list_related(\"abcdef12-3456-7890-abcd-ef1234567890\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Transactions.ListRelatedAsync(\"abcdef12-3456-7890-abcd-ef1234567890\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "संबंधित लेन-देन का एक पेज, सबसे नए पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "संबंधित लेन-देन की संख्या: 100 तक सटीक, उससे अधिक होने पर 100 पर सीमित। इससे पेजों की गणना करने के बजाय `next` का अनुसरण करें।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का पूर्ण URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का पूर्ण URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TransactionSummary"
                      }
                    }
                  }
                },
                "examples": {
                  "One related transaction": {
                    "value": {
                      "count": 1,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "abcdef99-3456-4890-abcd-ef1234567890",
                          "transaction_number": 4087,
                          "txn_id": "your-txn-2026-10-02-017",
                          "transaction_type": "finance",
                          "action_type": "deposit",
                          "status": "APPROVED",
                          "source": "LIVE",
                          "direction": "INBOUND",
                          "amount": "250",
                          "currency": "EUR",
                          "currency_type": "fiat",
                          "preferred_currency_amount": "270.08",
                          "preferred_currency_code": "USD",
                          "payment_details": "Card top-up",
                          "txn_date": "2026-10-02T14:10:00Z",
                          "created_at": "2026-10-02T14:10:03.512244Z",
                          "score": 12,
                          "severity": "LOW",
                          "decision_reason_code": null,
                          "decision_reason_label": null,
                          "tags": [],
                          "subject_name": "Maria Garcia",
                          "subject_vendor_data": "user-12345",
                          "subject_type": "user",
                          "subject_uuid": "e1111111-2222-4333-8444-555555555555",
                          "counterparty_name": null,
                          "counterparty_vendor_data": null,
                          "counterparty_country": null,
                          "subject_country": "ESP",
                          "assigned_to_name": null,
                          "travel_rule_status": null,
                          "application_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                          "application_name": "Production app",
                          "organization_id": "11111111-2222-3333-4444-555555555555",
                          "organization_name": "Example Org"
                        }
                      ]
                    }
                  },
                  "No party has vendor_data": {
                    "value": {
                      "count": 0,
                      "next": null,
                      "previous": null,
                      "results": []
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1000000 से अधिक है। बॉडी संदेशों का एक JSON ऐरे है, कोई ऑब्जेक्ट नहीं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "examples": {
                  "Limit too large": {
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "Offset too large": {
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। एक अनुपलब्ध कुंजी को सामान्य संदेश मिलता है; एक गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without transactions read": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस UUID वाला कोई लेन-देन मौजूद नहीं है (कभी नहीं बनाया गया, हटा दिया गया, या किसी अन्य एप्लिकेशन के स्वामित्व में है)। एक `transaction_id` जो UUID नहीं है, API तक नहीं पहुंचता है: यह इस JSON बॉडी के बजाय `404` HTML पेज लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No Transaction matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/businesses/{business_session_id}/pdf/": {
      "get": {
        "summary": "व्यावसायिक सत्र की PDF रिपोर्ट डाउनलोड करें",
        "description": "एक व्यवसाय सत्यापन (KYB) सत्र की PDF रिपोर्ट रेंडर करें: कंपनी रजिस्ट्री डेटा, प्रमुख व्यक्ति और वास्तविक स्वामी, दस्तावेज़, AML परिणाम और अन्य वर्कफ़्लो सुविधाएँ, साथ ही सत्र के टैग और समीक्षा गतिविधि। व्हाइट लेबल कस्टमाइज़ेशन सक्षम होने पर, रिपोर्ट में आपका लोगो और प्राइवेसी पॉलिसी URL शामिल होता है। मुख्य भाग (body) स्वयं PDF (`application/pdf`) है, JSON नहीं।\n\nसत्र `Approved`, `Declined` या `In Review` स्थिति में होना चाहिए; कोई अन्य स्थिति `403` लौटाती है, इसलिए पहले `status.updated` [webhook](https://docs.didit.me/hi/integration/webhooks) की प्रतीक्षा करें। रिपोर्ट प्रत्येक कॉल पर रेंडर की जाती है और कुछ भी बिल नहीं किया जाता है, इसलिए इसे बार-बार लाने के बजाय फ़ाइल को स्टोर करें। `GET /v3/session/{sessionId}/generate-pdf/` केवल सत्र ID द्वारा उसी प्रकार की रिपोर्ट रेंडर करता है।\n\nPDF रिपोर्ट को मीडिया माना जाता है: एक स्कोप्ड API कुंजी के लिए `businesses: read` और `media: read` की आवश्यकता होती है, और कुछ वर्कफ़्लो या केवल स्वीकृत सत्रों तक सीमित कुंजी इसे कॉल नहीं कर सकती है।",
        "operationId": "get_business_session_pdf",
        "x-didit-sdk": {
          "resource": "businesses",
          "method": "generate_session_pdf",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Businesses"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।",
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID। यह वही एप्लिकेशन होना चाहिए जिससे API कुंजी संबंधित है: किसी अन्य एप्लिकेशन पर उपयोग की गई कुंजी को `403` मिलता है।",
            "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
          },
          {
            "name": "business_session_id",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का `session_id`, जैसा कि सत्र बनाए जाने पर लौटाया गया था। किसी अन्य एप्लिकेशन का सत्र `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "22222222-3333-4444-5555-666666666666"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl --fail -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/businesses/22222222-3333-4444-5555-666666666666/pdf/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  --output business_report.pdf"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\ncontent = client.businesses.generate_session_pdf(\n    \"22222222-3333-4444-5555-666666666666\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst content = await didit.businesses.generateSessionPdf(\"22222222-3333-4444-5555-666666666666\");\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresp, err := client.Businesses.GenerateSessionPDF(ctx, \"22222222-3333-4444-5555-666666666666\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.businesses().generateSessionPdf(\"22222222-3333-4444-5555-666666666666\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$content = $didit->businesses->generateSessionPdf('22222222-3333-4444-5555-666666666666');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ncontent = didit.businesses.generate_session_pdf(\"22222222-3333-4444-5555-666666666666\")\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar content = await client.Businesses.GenerateSessionPdfAsync(\"22222222-3333-4444-5555-666666666666\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ],
        "responses": {
          "200": {
            "description": "रेंडर किया गया PDF, सीधे बाइनरी `application/pdf` के रूप में लौटाया गया।",
            "headers": {
              "Content-Disposition": {
                "description": "हमेशा `attachment; filename=business_{business_session_id}.pdf`।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=business_22222222-3333-4444-5555-666666666666.pdf"
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है या सत्र समाप्त नहीं हुआ है। `detail` पढ़ें: एक सत्र जो `Approved`, `Declined` या `In Review` नहीं है, एक अनुपलब्ध API कुंजी (गलत, निरस्त या समय-सीमा समाप्त कुंजी को `401` मिलता है), एक `application_id` जो कुंजी का एप्लिकेशन नहीं है, `media: read` या `businesses: read` के बिना स्कोप्ड कुंजी, वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी, या कुंजी की IP सूची के बाहर से किया गया अनुरोध।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Session not finished": {
                    "value": {
                      "detail": "You can only generate a PDF for sessions in review, declined or approved."
                    }
                  },
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without media read": {
                    "value": {
                      "detail": "This API key has no read access to media."
                    }
                  },
                  "Scoped key without businesses read": {
                    "value": {
                      "detail": "This API key has no read access to companies."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस ID वाला कोई व्यावसायिक सत्र मौजूद नहीं है (कभी नहीं बनाया गया, हटा दिया गया, या किसी अन्य एप्लिकेशन के स्वामित्व में है)। जो मान UUID नहीं है, वह इस JSON बॉडी के बजाय एक `404` HTML पेज लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "Business session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/transactions/{transaction_uuid}/pdf/": {
      "get": {
        "summary": "लेन-देन PDF रिपोर्ट डाउनलोड करें",
        "description": "एक मॉनिटर किए गए लेन-देन को PDF रिपोर्ट के रूप में रेंडर करें: अवलोकन और निर्णय, पक्ष और भुगतान विधियाँ, कस्टम प्रॉपर्टीज़, अलर्ट और नियम रन, स्क्रीनिंग और Travel Rule परिणाम, नेटवर्क सारांश, लागत विवरण, अधिकतम 50 संबंधित लेन-देन और 20 सबसे हालिया गतिविधि प्रविष्टियाँ। बॉडी स्वयं PDF (`application/pdf`) है, JSON नहीं।\n\nरिपोर्ट प्रत्येक कॉल पर लेन-देन के वर्तमान डेटा से रेंडर की जाती है, इसलिए स्थिति परिवर्तन के बाद फिर से इसका अनुरोध करें। कुछ भी संग्रहीत नहीं किया जाता है और कुछ भी बिल नहीं किया जाता है। रेंडरिंग में कुछ सेकंड लग सकते हैं, इसलिए एक उदार क्लाइंट टाइमआउट का उपयोग करें।\n\nयह endpoint एप्लिकेशन-स्कोप वाले पाथ पर स्थित है: URL में अपना संगठन ID और उस एप्लिकेशन की ID डालें जिससे आपकी API कुंजी संबंधित है ([अपना संगठन ID खोजें](https://docs.didit.me/hi/getting-started/api-authentication#अपना-संगठन-id-ढूँढें))। एक PDF रिपोर्ट को मीडिया माना जाता है: एक स्कोप्ड API कुंजी को `media: read` और `transactions: read` की आवश्यकता होती है, और कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित कुंजी इसे कॉल नहीं कर सकती है।",
        "operationId": "get_transaction_pdf",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "generate_pdf",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।",
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID। यह वही एप्लिकेशन होना चाहिए जिससे API कुंजी संबंधित है: किसी अन्य एप्लिकेशन पर उपयोग की गई कुंजी को `403` मिलता है।",
            "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
          },
          {
            "name": "transaction_uuid",
            "in": "path",
            "required": true,
            "description": "Didit लेन-देन UUID: `POST /v3/transactions/` और `GET /v3/transactions/` द्वारा लौटाया गया `uuid`। आपकी अपनी `txn_id` स्वीकार नहीं की जाती है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "abcdef12-3456-7890-abcd-ef1234567890"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl --fail -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/transactions/abcdef12-3456-7890-abcd-ef1234567890/pdf/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  --output transaction_report.pdf"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\ncontent = client.transactions.generate_pdf(\n    \"abcdef12-3456-7890-abcd-ef1234567890\",\n)\nwith open(\"download.pdf\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst content = await didit.transactions.generatePdf(\"abcdef12-3456-7890-abcd-ef1234567890\");\nawait writeFile(\"download.pdf\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresp, err := client.Transactions.GeneratePDF(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.transactions().generatePdf(\"abcdef12-3456-7890-abcd-ef1234567890\")\n        .writeTo(Path.of(\"download.pdf\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$content = $didit->transactions->generatePdf('abcdef12-3456-7890-abcd-ef1234567890');\n$content->saveTo('download.pdf');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ncontent = didit.transactions.generate_pdf(\"abcdef12-3456-7890-abcd-ef1234567890\")\nFile.binwrite(\"download.pdf\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar content = await client.Transactions.GeneratePdfAsync(\"abcdef12-3456-7890-abcd-ef1234567890\");\nawait content.SaveToAsync(\"download.pdf\");"
          }
        ],
        "responses": {
          "200": {
            "description": "रेंडर किया गया PDF, सीधे बाइनरी `application/pdf` के रूप में लौटाया गया।",
            "headers": {
              "Content-Disposition": {
                "description": "हमेशा `attachment; filename=transaction_{transaction_uuid}.pdf`।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=transaction_abcdef12-3456-7890-abcd-ef1234567890.pdf"
                }
              }
            },
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। `detail` देखें: एक अनुपलब्ध API कुंजी (गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है), एक `application_id` जो कुंजी का एप्लिकेशन नहीं है, `media: read` या `transactions: read` के बिना एक स्कोप्ड कुंजी, वर्कफ़्लो या स्वीकृत सत्रों तक सीमित एक कुंजी, या कुंजी की IP सूची के बाहर से अनुरोध।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without media read": {
                    "value": {
                      "detail": "This API key has no read access to media."
                    }
                  },
                  "Scoped key without transactions read": {
                    "value": {
                      "detail": "This API key has no read access to transactions."
                    }
                  },
                  "Key limited to workflows or approved sessions": {
                    "value": {
                      "detail": "This API key only reaches sessions inside its workflow or status limits, so it can't use this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "एप्लिकेशन में इस UUID वाला कोई लेन-देन मौजूद नहीं है (कभी नहीं बनाया गया, हटा दिया गया, या किसी अन्य एप्लिकेशन के स्वामित्व में है)। एक `transaction_uuid` जो UUID नहीं है, API तक नहीं पहुंचता है: यह इस JSON बॉडी के बजाय `404` HTML पेज लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Not found": {
                    "value": {
                      "detail": "No Transaction matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/analytics/": {
      "get": {
        "summary": "एप्लिकेशन एनालिटिक्स प्राप्त करें",
        "description": "किसी तिथि सीमा के लिए Business Console [एनालिटिक्स डैशबोर्ड](https://docs.didit.me/hi/console/analytics) के आंकड़े पढ़ें। `scope` और `widget_keys` के बिना रिस्पॉन्स उपयोगकर्ता सत्यापन (KYC) सारांश (`ApplicationAnalyticsSummary`) होता है: दैनिक सत्र गणना, स्थिति-वार कुल संख्या, कन्वर्ज़न दर, समान लंबाई वाली पिछली अवधि के यही आंकड़े, स्थान, जनसांख्यिकी, डिवाइस, वर्कफ़्लो फ़नल, सक्रिय सत्यापन समय, पुनः सबमिशन, चेतावनियाँ और टाइम सीरीज़। `scope` या `widget_keys` के साथ यह एक डैशबोर्ड टैब (`ApplicationAnalyticsWidgetResponse`) के विजेट होते हैं: `kyc`, `kyb`, `transactions` या `home`।\n\nसत्र गणना सत्र निर्माण तिथि (UTC) के अनुसार होती है और प्रत्येक सत्र की वर्तमान स्थिति को दर्शाती है। ये बैकग्राउंड में रीफ़्रेश होने वाले दैनिक रोलअप से आते हैं, इसलिए नवीनतम गतिविधि को दिखने में थोड़ा समय लग सकता है। अमान्य वर्कफ़्लो ID और संस्करणों को अस्वीकार करने के बजाय अनदेखा कर दिया जाता है। कुछ भी बिल नहीं किया जाता है।\n\nकेवल एक पूर्ण-पहुंच API कुंजी ही इस endpoint को कॉल कर सकती है: प्रत्येक स्कोप्ड कुंजी को `403` मिलता है, चाहे उसके पास कोई भी एक्सेस हो, और किसी अन्य एप्लिकेशन की कुंजी को भी यही मिलता है। [API कुंजियाँ](https://docs.didit.me/hi/console/api-keys) देखें।",
        "operationId": "get_application_analytics",
        "x-didit-sdk": {
          "resource": "analytics",
          "method": "retrieve",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।",
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID। यह वही एप्लिकेशन होना चाहिए जिससे API कुंजी संबंधित है: किसी अन्य एप्लिकेशन पर उपयोग की गई कुंजी को `403` मिलता है।",
            "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-10-01"
            },
            "description": "रेंज का पहला दिन, `YYYY-MM-DD`, समावेशी (UTC)। इसे `end_date` के साथ भेजें: जब दोनों में से कोई भी अनुपलब्ध होता है, तो दोनों को अनदेखा कर दिया जाता है और रेंज आज से 30 दिन पहले से लेकर आज तक चलती है।"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "example": "2026-10-15"
            },
            "description": "रेंज का अंतिम दिन, `YYYY-MM-DD`, समावेशी (UTC)। भविष्य की तारीख को आज के रूप में गिना जाता है। रेंज 730 दिनों से अधिक नहीं हो सकती।"
          },
          {
            "name": "scope",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "home",
                "kyc",
                "kyb",
                "transactions"
              ]
            },
            "description": "विजेट वापस करने के लिए डैशबोर्ड टैब (केस-असंवेदनशील)। KYC सारांश के लिए इसे `widget_keys` के साथ छोड़ दें। केवल `widget_keys` भेजना `kyc` को दर्शाता है। `home` किसी भी KYC, KYB या लेन-देन विजेट को स्वीकार करता है और एप्लिकेशन के सहेजे गए होम लेआउट पर डिफ़ॉल्ट होता है।"
          },
          {
            "name": "widget_keys",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "tx_count_total,tx_count_daily"
            },
            "description": "अल्पविराम से अलग की गई विजेट कुंजियाँ, इसी क्रम में उत्तर दी गई हैं। जो कुंजियाँ स्कोप द्वारा स्वीकार नहीं की जाती हैं उन्हें छोड़ दिया जाता है; जब कोई शेष नहीं बचता है तो आपको स्कोप के डिफ़ॉल्ट मिलते हैं। KYC: `kyc_sessions_volume`, `kyc_warning_insights`, `kyc_id_locations`, `kyc_ip_locations`, `kyc_workflow_funnel`, `kyc_average_verification_time`, `kyc_conversion_rate`, `kyc_conversion_by_country`, `kyc_resubmission_insights`, `kyc_original_status_distribution`, `kyc_database_validation_coverage`, `kyc_database_validation_latency`, `kyc_demographics`, `kyc_device_details`। KYB: `kyb_sessions_volume`, `kyb_workflow_funnel`, `kyb_average_verification_time`, `kyb_ip_locations`, `kyb_business_country_distribution`, `kyb_warning_insights`, `kyb_conversion_rate`, `kyb_conversion_by_country`, `kyb_industry_breakdown`, `kyb_resubmission_insights`, `kyb_original_status_distribution`, `kyb_registry_coverage`, `kyb_registry_data_completeness`, `kyb_device_details`। लेन-देन: `tx_count_total`, `tx_count_daily`, `tx_volume_total_preferred_currency`, `tx_volume_daily_preferred_currency`, `tx_average_amount`, `tx_average_amount_daily`, `tx_transaction_category_breakdown`, `tx_action_type_breakdown`, `tx_status_volume_trend`, `tx_user_ip_or_country_distribution`, `tx_tag_breakdown`, `tx_top_rules_triggered`, `tx_team_member_performance`, `tx_score_histogram`।"
          },
          {
            "name": "workflow_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "33333333-4444-5555-6666-777777777777"
            },
            "description": "अल्पविराम से अलग किए गए वर्कफ़्लो ID। KYC सारांश और KYC एवं KYB विजेट को उन वर्कफ़्लो तक सीमित करता है। जो मान UUID नहीं हैं उन्हें अनदेखा कर दिया जाता है; जब कोई भी मान्य नहीं होता है तो फ़िल्टर हटा दिया जाता है। सारांश `workflow_id` को भी स्वीकार करता है।"
          },
          {
            "name": "versions",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "3,4"
            },
            "description": "अल्पविराम से अलग किए गए वर्कफ़्लो संस्करण संख्याएँ। केवल `workflow_ids` के साथ लागू होता है; जो मान पूर्ण संख्या नहीं हैं उन्हें अनदेखा कर दिया जाता है। `version` को उपनाम के रूप में स्वीकार किया जाता है।"
          },
          {
            "name": "branch_path_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "default"
            },
            "description": "कॉमा से अलग की गई शाखा पाथ ID। केवल `workflow_ids` के साथ और केवल KYC आंकड़ों पर लागू होता है। आंकड़े वर्तमान में केवल `default` (संयुक्त सभी पाथ) के लिए रिकॉर्ड किए जाते हैं, इसलिए कोई अन्य मान खाली आंकड़े लौटाता है। `branch_path_id` को उपनाम के रूप में स्वीकार किया जाता है।"
          },
          {
            "name": "tag",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "केवल लेन-देन विजेट: कॉमा से अलग किए गए टैग UUID या टैग नाम।"
          },
          {
            "name": "transaction_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "finance"
            },
            "description": "केवल लेन-देन विजेट: कॉमा से अलग की गई लेन-देन श्रेणियां।"
          },
          {
            "name": "action_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "example": "withdrawal"
            },
            "description": "केवल लेन-देन विजेट: कॉमा से अलग किए गए कार्रवाई प्रकार (केस-असंवेदनशील)।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/analytics/?start_date=2026-10-01&end_date=2026-10-15' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.analytics.retrieve()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.analytics.retrieve();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Analytics.Retrieve(ctx, didit.AnalyticsRetrieveParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.analytics().retrieve();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->analytics->retrieve();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.analytics.retrieve\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Analytics.RetrieveAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "KYC सारांश, या अनुरोधित विजेट जब `scope` या `widget_keys` भेजा जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ApplicationAnalyticsSummary"
                    },
                    {
                      "$ref": "#/components/schemas/ApplicationAnalyticsWidgetResponse"
                    }
                  ]
                },
                "examples": {
                  "KYC summary": {
                    "value": {
                      "grouping_mode": "day",
                      "data_points": [
                        {
                          "rounded_date": "2026-10-14",
                          "total": 12,
                          "approved": 8,
                          "declined": 1,
                          "canceled": 1,
                          "pending": 2,
                          "in_review": 1,
                          "expired": 1,
                          "abandoned": 0,
                          "in_progress": 1,
                          "not_started": 0,
                          "manually_approved": 1,
                          "manually_declined": 0
                        },
                        {
                          "rounded_date": "2026-10-15",
                          "total": 10,
                          "approved": 6,
                          "declined": 2,
                          "canceled": 0,
                          "pending": 2,
                          "in_review": 2,
                          "expired": 0,
                          "abandoned": 0,
                          "in_progress": 0,
                          "not_started": 0,
                          "manually_approved": 0,
                          "manually_declined": 1
                        }
                      ],
                      "request_breakdown": {
                        "total_approved": 14,
                        "total_in_review": 3,
                        "total_declined": 3,
                        "total_canceled": 1,
                        "total_pending": 4,
                        "total_expired": 1,
                        "total_abandoned": 0,
                        "total_in_progress": 1,
                        "total_not_started": 0,
                        "total_manually_approved": 1,
                        "total_manually_declined": 1
                      },
                      "conversion_rate": 70.0,
                      "location_stats": {
                        "countries": [
                          {
                            "session_count": 15,
                            "country": "Spain",
                            "country_code": "ES"
                          },
                          {
                            "session_count": 7,
                            "country": "Portugal",
                            "country_code": "PT"
                          }
                        ],
                        "ip_countries": [
                          {
                            "session_count": 15,
                            "country": "Spain",
                            "country_code": "ES"
                          },
                          {
                            "session_count": 7,
                            "country": "Portugal",
                            "country_code": "PT"
                          }
                        ],
                        "id_countries": [
                          {
                            "country": "Spain",
                            "country_code": "ES",
                            "session_count": 14
                          },
                          {
                            "country": "Portugal",
                            "country_code": "PT",
                            "session_count": 6
                          }
                        ],
                        "conversion_by_country": [
                          {
                            "country": "Spain",
                            "country_code": "ES",
                            "finished": 13,
                            "approved": 10
                          },
                          {
                            "country": "Portugal",
                            "country_code": "PT",
                            "finished": 6,
                            "approved": 4
                          }
                        ],
                        "cities": [
                          {
                            "session_count": 9,
                            "location": "Madrid, Spain",
                            "latitude": 40.4168,
                            "longitude": -3.7038
                          }
                        ]
                      },
                      "demographic_stats": {
                        "age_distribution": {
                          "under_18": 0,
                          "18_24": 5,
                          "25_34": 8,
                          "35_44": 4,
                          "45_64": 2,
                          "65_plus": 1
                        },
                        "gender_distribution": {
                          "M": 11,
                          "F": 9
                        }
                      },
                      "device_details": {
                        "device_models": [
                          {
                            "device": "Apple",
                            "count": 12
                          },
                          {
                            "device": "Android",
                            "count": 10
                          }
                        ],
                        "browsers": [
                          {
                            "browser": "Safari",
                            "count": 12
                          },
                          {
                            "browser": "Chrome",
                            "count": 10
                          }
                        ],
                        "operating_systems": [
                          {
                            "os": "iOS",
                            "count": 12
                          },
                          {
                            "os": "Android",
                            "count": 10
                          }
                        ]
                      },
                      "workflow_funnel_stats": {
                        "33333333-4444-5555-6666-777777777777": {
                          "total": 22,
                          "steps": {
                            "OCR": {
                              "reached": 21
                            },
                            "LIVENESS": {
                              "reached": 19
                            },
                            "FACE_MATCH": {
                              "reached": 19
                            },
                            "AML": {
                              "reached": 18
                            }
                          }
                        }
                      },
                      "verification_time_stats": {
                        "overall_avg_seconds": 64.0,
                        "overall_count": 18,
                        "per_feature": {
                          "OCR": {
                            "avg_seconds": 41.2,
                            "total_seconds": 741.6,
                            "count": 18
                          },
                          "LIVENESS": {
                            "avg_seconds": 22.8,
                            "total_seconds": 410.4,
                            "count": 18
                          }
                        },
                        "per_sub_step": {
                          "OCR": {
                            "front_id_photo": {
                              "avg_seconds": 18.3,
                              "total_seconds": 329.4,
                              "count": 18
                            }
                          }
                        }
                      },
                      "resubmission_stats": {
                        "first_pass": 17,
                        "second": 2,
                        "third_plus": 1,
                        "abandoned": 0
                      },
                      "warning_stats": {
                        "ID_VERIFICATION": {
                          "total": 21,
                          "risks": {
                            "DOCUMENT_EXPIRED": {
                              "error": 1,
                              "warning": 0,
                              "information": 0
                            }
                          }
                        },
                        "LIVENESS": {
                          "total": 19,
                          "risks": {
                            "LOW_LIVENESS_SCORE": {
                              "error": 0,
                              "warning": 2,
                              "information": 0
                            }
                          }
                        }
                      },
                      "original_status_stats": {
                        "approved": 13,
                        "in_review": 5,
                        "declined": 2
                      },
                      "demographic_time_series": [
                        {
                          "date": "2026-10-14",
                          "age_distribution": {
                            "under_18": 0,
                            "18_24": 3,
                            "25_34": 4,
                            "35_44": 2,
                            "45_64": 1,
                            "65_plus": 0
                          },
                          "gender_distribution": {
                            "M": 6,
                            "F": 4
                          }
                        },
                        {
                          "date": "2026-10-15",
                          "age_distribution": {
                            "under_18": 0,
                            "18_24": 2,
                            "25_34": 4,
                            "35_44": 2,
                            "45_64": 1,
                            "65_plus": 1
                          },
                          "gender_distribution": {
                            "M": 5,
                            "F": 5
                          }
                        }
                      ],
                      "device_time_series": [
                        {
                          "date": "2026-10-14",
                          "devices": {
                            "Apple": 7,
                            "Android": 5
                          },
                          "browsers": {
                            "Safari": 7,
                            "Chrome": 5
                          },
                          "operating_systems": {
                            "iOS": 7,
                            "Android": 5
                          }
                        },
                        {
                          "date": "2026-10-15",
                          "devices": {
                            "Apple": 5,
                            "Android": 5
                          },
                          "browsers": {
                            "Safari": 5,
                            "Chrome": 5
                          },
                          "operating_systems": {
                            "iOS": 5,
                            "Android": 5
                          }
                        }
                      ],
                      "verification_time_time_series": [
                        {
                          "date": "2026-10-14",
                          "overall_avg": 66.1,
                          "per_feature": {
                            "OCR": 42.0,
                            "LIVENESS": 24.1
                          }
                        },
                        {
                          "date": "2026-10-15",
                          "overall_avg": 61.5,
                          "per_feature": {
                            "OCR": 40.2,
                            "LIVENESS": 21.3
                          }
                        }
                      ],
                      "resubmission_time_series": [
                        {
                          "date": "2026-10-14",
                          "first_pass": 9,
                          "second": 1,
                          "third_plus": 0,
                          "abandoned": 0
                        },
                        {
                          "date": "2026-10-15",
                          "first_pass": 8,
                          "second": 1,
                          "third_plus": 1,
                          "abandoned": 0
                        }
                      ],
                      "original_status_time_series": [
                        {
                          "date": "2026-10-14",
                          "approved": 7,
                          "in_review": 3,
                          "declined": 1
                        },
                        {
                          "date": "2026-10-15",
                          "approved": 6,
                          "in_review": 2,
                          "declined": 1
                        }
                      ],
                      "previous_data_points": [
                        {
                          "rounded_date": "2026-10-12",
                          "total": 9,
                          "approved": 6,
                          "declined": 1,
                          "canceled": 1,
                          "pending": 1
                        },
                        {
                          "rounded_date": "2026-10-13",
                          "total": 11,
                          "approved": 7,
                          "declined": 2,
                          "canceled": 0,
                          "pending": 2
                        }
                      ],
                      "previous_request_breakdown": {
                        "total_approved": 13,
                        "total_in_review": 2,
                        "total_declined": 3,
                        "total_canceled": 1,
                        "total_pending": 3
                      }
                    }
                  },
                  "Transaction widgets": {
                    "value": {
                      "scope": "transactions",
                      "available_widget_keys": [
                        "tx_count_total",
                        "tx_count_daily",
                        "tx_volume_total_preferred_currency",
                        "tx_volume_daily_preferred_currency",
                        "tx_average_amount",
                        "tx_average_amount_daily",
                        "tx_transaction_category_breakdown",
                        "tx_action_type_breakdown",
                        "tx_status_volume_trend",
                        "tx_user_ip_or_country_distribution",
                        "tx_tag_breakdown",
                        "tx_top_rules_triggered",
                        "tx_team_member_performance",
                        "tx_score_histogram"
                      ],
                      "requested_widget_keys": [
                        "tx_count_total",
                        "tx_count_daily"
                      ],
                      "widgets": {
                        "tx_count_total": {
                          "kind": "metric",
                          "title": "Transaction count",
                          "value": 42
                        },
                        "tx_count_daily": {
                          "kind": "time_series",
                          "title": "Transaction count",
                          "items": [
                            {
                              "date": "2026-10-14",
                              "value": 20
                            },
                            {
                              "date": "2026-10-15",
                              "value": 22
                            }
                          ],
                          "previous_items": [
                            {
                              "date": "2026-10-12",
                              "value": 18
                            },
                            {
                              "date": "2026-10-13",
                              "value": 15
                            }
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अमान्य तिथि सीमा या स्कोप। body एक ऑब्जेक्ट है, जिसकी कुंजी उस पैरामीटर के नाम पर है जिसमें त्रुटि है, जिसमें एक स्ट्रिंग संदेश होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                },
                "examples": {
                  "Bad date format": {
                    "value": {
                      "start_date": "Invalid date format. Use YYYY-MM-DD (e.g., 2024-01-15)."
                    }
                  },
                  "Start after end": {
                    "value": {
                      "start_date": "Start date must be before or equal to end date."
                    }
                  },
                  "Range too long": {
                    "value": {
                      "date_range": "Date range cannot exceed 730 days (2 years)."
                    }
                  },
                  "Unknown scope": {
                    "value": {
                      "scope": "Unsupported analytics scope."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। `detail` देखें: एक अनुपलब्ध API कुंजी (गलत, निरस्त या समय-सीमा समाप्त कुंजी पर `401` मिलता है), किसी अन्य एप्लिकेशन की कुंजी, कोई भी स्कोप्ड कुंजी, या कुंजी की IP सूची के बाहर से अनुरोध।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key": {
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/analytics/today/": {
      "get": {
        "summary": "प्रति घंटे आज के सत्यापन प्राप्त करें",
        "operationId": "get_application_analytics_today",
        "x-didit-sdk": {
          "resource": "analytics",
          "method": "retrieve_today",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Analytics"
        ],
        "description": "`tz` में स्थानीय मध्यरात्रि से आज के उपयोगकर्ता सत्यापन (KYC) सत्र, जिस स्थानीय घंटे में वे बनाए गए थे उसके अनुसार गिने गए, एक सप्ताह पहले उसी कार्यदिवस के समान घंटों के बगल में, और प्रत्येक के वर्तमान परिणाम के आधार पर विभाजित: स्वीकृत, समीक्षाधीन या अस्वीकृत। यह Business Console के होम का वॉल्यूम कार्ड है।\n\n`total` आज अब तक का है। `previous_total_so_far` तुलनात्मक दिन को केवल उसी स्थानीय समय तक गिनता है, इसलिए उनके बीच का अंतर दोनों दिनों के समान भाग की तुलना करता है। आज के आने वाले बाकी घंटों के लिए मान `0` है। जिस दिन घड़ियां बदलती हैं उस दिन 23 या 25 घंटे होते हैं: छूटा हुआ घंटा `0` रहता है और दोहराए गए घंटे में दोनों शामिल होते हैं।",
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।",
            "example": "11111111-2222-3333-4444-555555555555"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID। यह वही एप्लिकेशन होना चाहिए जिससे API कुंजी संबंधित है: किसी अन्य एप्लिकेशन पर उपयोग की गई कुंजी को `403` मिलता है।",
            "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
          },
          {
            "name": "tz",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "UTC",
              "example": "Europe/Madrid"
            },
            "description": "IANA समय क्षेत्र जिसकी मध्यरात्रि से आज का दिन शुरू होता है, उदाहरण के लिए `Europe/Madrid` या `America/Mexico_City`। UTC के लिए इसे छोड़ दें।"
          }
        ],
        "responses": {
          "200": {
            "description": "स्थानीय घंटे के अनुसार आज के सत्यापन, तुलनात्मक दिन के सत्यापन, और आज के परिणाम।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplicationAnalyticsToday"
                },
                "examples": {
                  "Madrid, 14:00": {
                    "value": {
                      "time_zone": "Europe/Madrid",
                      "date": "2026-10-30",
                      "current_hour": 14,
                      "previous_date": "2026-10-23",
                      "hours": [
                        3,
                        1,
                        0,
                        0,
                        1,
                        2,
                        4,
                        9,
                        14,
                        18,
                        21,
                        19,
                        22,
                        24,
                        27,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0
                      ],
                      "previous_hours": [
                        2,
                        1,
                        1,
                        0,
                        1,
                        3,
                        5,
                        8,
                        12,
                        16,
                        19,
                        18,
                        20,
                        22,
                        24,
                        26,
                        23,
                        19,
                        15,
                        12,
                        9,
                        7,
                        5,
                        3
                      ],
                      "total": 165,
                      "previous_total_so_far": 151,
                      "outcomes": {
                        "approved": 139,
                        "in_review": 6,
                        "declined": 18
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अज्ञात टाइम ज़ोन। बॉडी को पैरामीटर के अनुसार कुंजीबद्ध किया गया है, जिसमें संदेशों की सूची शामिल है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown time zone": {
                    "value": {
                      "tz": [
                        "Unknown time zone: Europe/Atlantis."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है। केवल समाप्ति तिथि के साथ बनाई गई कुंजी ही समाप्त हो सकती है; उस तिथि के बाद इसके साथ किया गया प्रत्येक अनुरोध `401` रिस्पॉन्स देता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। `detail` देखें: एक अनुपलब्ध या अमान्य API कुंजी (कभी भी `401` नहीं), किसी अन्य एप्लिकेशन की कुंजी, कोई भी स्कोप्ड कुंजी, या कुंजी की IP सूची के बाहर से अनुरोध।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key": {
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "Outside the key's IP list": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "इस API कुंजी के साथ प्रति मिनट 600 से अधिक GET अनुरोध। `Retry-After` में दिए गए सेकंड तक प्रतीक्षा करें, फिर पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "वर्तमान एक-मिनट की विंडो रीसेट होने तक के सेकंड।",
                "schema": {
                  "type": "integer",
                  "example": 23
                }
              },
              "X-RateLimit-Limit": {
                "description": "इस बजट में प्रति मिनट अनुमत अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय जब विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/analytics/today/?tz=Europe%2FMadrid' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          }
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/webhooks/": {
      "get": {
        "summary": "सत्र webhook डिलीवरी सूचीबद्ध करें",
        "description": "एक सत्यापन सत्र, उपयोगकर्ता (KYC) या व्यवसाय (KYB) के लिए Didit द्वारा रिकॉर्ड की गई प्रत्येक webhook डिलीवरी को एक सामान्य JSON ऐरे (अनपेजिनेटेड) के रूप में सूचीबद्ध करें, नवीनतम पहले। प्रत्येक प्रविष्टि एक गंतव्य के लिए एक प्रयास है: पहला प्रेषण, प्रत्येक स्वचालित [पुनः प्रयास](https://docs.didit.me/hi/integration/webhooks#पुनः-प्रयास-नीति) और प्रत्येक पुनः प्रेषण अपनी स्वयं की `uuid` वाली अलग प्रविष्टियां हैं, और पुनः प्रयास व पुनः प्रेषण payload के `event_id` को बनाए रखते हैं। `request_header` और `request_body` JSON टेक्स्ट हैं; हस्ताक्षर और payload पढ़ने के लिए उन्हें पार्स करें। डिलीवरी रिकॉर्ड लगभग 30 दिनों के लिए उपलब्ध होते हैं, इसलिए एक खाली ऐरे का अर्थ है कि सत्र के लिए अभी तक कोई webhook नहीं भेजा गया है या प्रत्येक डिलीवरी उससे अधिक पुरानी है। स्कोप्ड API कुंजी के लिए `sessions: read` और `decisions: read` की आवश्यकता होती है।",
        "operationId": "get_v3_session_webhooks",
        "x-didit-sdk": {
          "resource": "sessions.webhooks",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID, उपयोगकर्ता (KYC) या व्यवसाय (KYB): `POST /v3/session/` द्वारा लौटाया गया `session_id`। सर्वर इसे दोनों सत्र प्रकारों में रिज़ॉल्व करता है।\n\n**एक मान्य UUID होना चाहिए।** यह रूट केवल सही प्रारूप वाले UUID से मेल खाता है, इसलिए किसी भी एप्लिकेशन कोड के चलने से पहले URL राउटर द्वारा गलत प्रारूप वाले मान को अस्वीकार कर दिया जाता है और रिस्पॉन्स नीचे दिखाए गए JSON `{\"detail\": ...}` एनवलप के बजाय `404` **HTML** पेज होता है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "22222222-3333-4444-5555-666666666666"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhooks/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.webhooks.list(\n    \"22222222-3333-4444-5555-666666666666\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.webhooks.list(\"22222222-3333-4444-5555-666666666666\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Webhooks.List(ctx, \"22222222-3333-4444-5555-666666666666\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().webhooks().list(\"22222222-3333-4444-5555-666666666666\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->webhooks->list('22222222-3333-4444-5555-666666666666');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.webhooks.list(\"22222222-3333-4444-5555-666666666666\").each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Webhooks.ListAsync(\"22222222-3333-4444-5555-666666666666\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सत्र के लिए रिकॉर्ड की गई प्रत्येक डिलीवरी, सबसे नई पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SessionWebhookDelivery"
                  }
                },
                "examples": {
                  "Failed delivery and its successful retry": {
                    "value": [
                      {
                        "uuid": "66666666-7777-8888-9999-000000000002",
                        "session_id": "22222222-3333-4444-5555-666666666666",
                        "request_url": "https://yourapp.com/webhooks/didit",
                        "response_status": 200,
                        "status": "In Progress",
                        "webhook_type": "status.updated",
                        "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"9188851d160b5b3aacfc946e4dde1f061b7e568662518942c927ddaf507f533d\", \"X-Signature-V2\": \"381236af514d3fb538579365ac5a24f2464ce1b8224c6e770c60d8201c43ecc5\", \"X-Signature-Simple\": \"4740131dc38f29e78a8508371979be74967d5307464494bd3148a03b4d6c8716\", \"X-Timestamp\": \"1792056139\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                        "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056139,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
                        "created_at": "2026-10-15T09:22:19.104233Z"
                      },
                      {
                        "uuid": "66666666-7777-8888-9999-000000000001",
                        "session_id": "22222222-3333-4444-5555-666666666666",
                        "request_url": "https://yourapp.com/webhooks/didit",
                        "response_status": 503,
                        "status": "In Progress",
                        "webhook_type": "status.updated",
                        "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                        "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
                        "created_at": "2026-10-15T09:21:18.412345Z"
                      }
                    ]
                  },
                  "No webhook sent yet": {
                    "value": []
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। कोई `x-api-key` न होने, या अमान्य अथवा निरस्त कुंजी होने पर `Authentication credentials were not provided or are invalid.` मिलता है। किसी अन्य एप्लिकेशन की कुंजी पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। क्रेडेंशियल जाँचे जाने से पहले एक अज्ञात `sessionId` पर `404` वापस आता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Key of another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without sessions read": {
                    "value": {
                      "detail": "This API key has no read access to sessions."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है या हटा दिया गया है (क्रेडेंशियल की जांच से पहले `Not found.` लौटाया जाता है), या यह स्कोप्ड कुंजी की वर्कफ़्लो या स्थिति सीमाओं से बाहर है (`Session not found.`)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside the key's limits": {
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/webhook/{webhook_uuid}": {
      "get": {
        "summary": "सत्र webhook डिलीवरी प्राप्त करें",
        "description": "सत्यापन सत्र की एक webhook डिलीवरी प्राप्त करें: जिस URL पर यह भेजी गई थी, आपके endpoint द्वारा लौटाया गया HTTP स्टेटस, और Didit द्वारा भेजे गए सटीक हेडर और JSON बॉडी। `request_header` और `request_body` JSON टेक्स्ट हैं; अपने [हस्ताक्षर सत्यापन](https://docs.didit.me/hi/integration/webhooks#हस्ताक्षर-सत्यापन) की जांच करने के लिए, पार्स किए गए बॉडी से उस गंतव्य के सीक्रेट के साथ `X-Signature-V2` की पुनर्गणना करें जिस पर इसे भेजा गया था (या लीगेसी webhook URL पर डिलीवरी के लिए एप्लिकेशन-स्तरीय सीक्रेट के साथ)। पाथ में कोई ट्रेलिंग स्लैश नहीं है: ट्रेलिंग स्लैश होने पर यह `404` लौटाता है। स्कोप्ड API कुंजी के लिए `sessions: read` और `decisions: read` आवश्यक हैं।",
        "operationId": "get_v3_session_webhook",
        "x-didit-sdk": {
          "resource": "sessions.webhooks",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID, उपयोगकर्ता (KYC) या व्यवसाय (KYB): `POST /v3/session/` द्वारा लौटाया गया `session_id`। सर्वर इसे दोनों सत्र प्रकारों में रिज़ॉल्व करता है।\n\n**एक मान्य UUID होना चाहिए।** यह रूट केवल सही प्रारूप वाले UUID से मेल खाता है, इसलिए किसी भी एप्लिकेशन कोड के चलने से पहले URL राउटर द्वारा गलत प्रारूप वाले मान को अस्वीकार कर दिया जाता है और रिस्पॉन्स नीचे दिखाए गए JSON `{\"detail\": ...}` एनवलप के बजाय `404` **HTML** पेज होता है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "22222222-3333-4444-5555-666666666666"
          },
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "description": "डिलीवरी का UUID: `GET /v3/session/{sessionId}/webhooks/` द्वारा लौटाई गई किसी प्रविष्टि का `uuid`। यह पाथ के सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "66666666-7777-8888-9999-000000000001"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.webhooks.retrieve(\n    \"22222222-3333-4444-5555-666666666666\",\n    \"66666666-7777-8888-9999-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.webhooks.retrieve(\n  \"22222222-3333-4444-5555-666666666666\",\n  \"66666666-7777-8888-9999-000000000001\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Webhooks.Retrieve(ctx, \"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().webhooks().retrieve(\"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->webhooks->retrieve('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.webhooks.retrieve(\n  \"22222222-3333-4444-5555-666666666666\",\n  \"66666666-7777-8888-9999-000000000001\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Webhooks.RetrieveAsync(\"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "डिलीवरी, उसके अनुरोध हेडर और बॉडी के साथ।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionWebhookDelivery"
                },
                "examples": {
                  "Connection failure": {
                    "value": {
                      "uuid": "66666666-7777-8888-9999-000000000001",
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "request_url": "https://yourapp.com/webhooks/didit",
                      "response_status": 503,
                      "status": "In Progress",
                      "webhook_type": "status.updated",
                      "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                      "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
                      "created_at": "2026-10-15T09:21:18.412345Z"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। कोई `x-api-key` न होने, या अमान्य अथवा निरस्त कुंजी होने पर `Authentication credentials were not provided or are invalid.` मिलता है। किसी अन्य एप्लिकेशन की कुंजी पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। क्रेडेंशियल जाँचे जाने से पहले एक अज्ञात `sessionId` पर `404` वापस आता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Key of another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without sessions read": {
                    "value": {
                      "detail": "This API key has no read access to sessions."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है या हटा दिया गया है (क्रेडेंशियल की जांच से पहले `Not found.` लौटाया जाता है), या यह स्कोप्ड कुंजी की वर्कफ़्लो या स्थिति सीमाओं से बाहर है (`Session not found.`)। ऐसी डिलीवरी जो मौजूद नहीं है, किसी अन्य सत्र से संबंधित है या अब उपलब्ध नहीं है, `No WebhookLog matches the given query.` लौटाती है",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside the key's limits": {
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Delivery not in this session": {
                    "value": {
                      "detail": "No WebhookLog matches the given query."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (600)।",
                "schema": {
                  "type": "integer",
                  "example": 600
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-get"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/webhook/{webhook_uuid}/resend": {
      "post": {
        "summary": "सत्र webhook डिलीवरी पुनः भेजें",
        "description": "एक रिकॉर्ड किए गए सत्र webhook को उसी URL पर फिर से भेजें जहाँ वह पहली बार गया था, उसी payload और `event_id` के साथ और एक नए `timestamp`, `X-Timestamp` हेडर और हस्ताक्षर के साथ। Didit इस पर उस गंतव्य के वर्तमान सीक्रेट से हस्ताक्षर करता है जिससे यह डिलीवरी संबंधित है (या लेगेसी webhook URL पर डिलीवरी के लिए एप्लिकेशन-स्तरीय सीक्रेट से), आपके endpoint के लिए 5 सेकंड तक प्रतीक्षा करता है, प्रयास को एक नई डिलीवरी के रूप में रिकॉर्ड करता है और आपके endpoint द्वारा दिए गए उत्तर की परवाह किए बिना इसे `200` के साथ लौटाता है: `response_status` पढ़ें। पुनः भेजे गए अनुरोध का स्वचालित रूप से पुनः प्रयास नहीं किया जाता है, और प्रत्येक कॉल फिर से भेजती है, इसलिए अपने endpoint को `event_id` पर आइडेम्पोटेंट बनाएं। पाथ में कोई ट्रेलिंग स्लैश नहीं है और अनुरोध में कोई बॉडी नहीं है। एक स्कोप्ड API कुंजी को `webhooks: write` और `decisions: read` की आवश्यकता होती है।",
        "operationId": "post_v3_session_webhook_resend",
        "x-didit-sdk": {
          "resource": "sessions.webhooks",
          "method": "resend",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID, उपयोगकर्ता (KYC) या व्यवसाय (KYB): `POST /v3/session/` द्वारा लौटाया गया `session_id`। सर्वर इसे दोनों सत्र प्रकारों में रिज़ॉल्व करता है।\n\n**एक मान्य UUID होना चाहिए।** यह रूट केवल सही प्रारूप वाले UUID से मेल खाता है, इसलिए किसी भी एप्लिकेशन कोड के चलने से पहले URL राउटर द्वारा गलत प्रारूप वाले मान को अस्वीकार कर दिया जाता है और रिस्पॉन्स नीचे दिखाए गए JSON `{\"detail\": ...}` एनवलप के बजाय `404` **HTML** पेज होता है।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "22222222-3333-4444-5555-666666666666"
          },
          {
            "name": "webhook_uuid",
            "in": "path",
            "required": true,
            "description": "पुनः भेजी जाने वाली डिलीवरी का UUID: `GET /v3/session/{sessionId}/webhooks/` द्वारा लौटाई गई किसी प्रविष्टि का `uuid`। यह पाथ के सत्र से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "66666666-7777-8888-9999-000000000001"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001/resend' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.webhooks.resend(\n    \"22222222-3333-4444-5555-666666666666\",\n    \"66666666-7777-8888-9999-000000000001\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.webhooks.resend(\n  \"22222222-3333-4444-5555-666666666666\",\n  \"66666666-7777-8888-9999-000000000001\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Webhooks.Resend(ctx, \"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().webhooks().resend(\"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->webhooks->resend('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.webhooks.resend(\n  \"22222222-3333-4444-5555-666666666666\",\n  \"66666666-7777-8888-9999-000000000001\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Webhooks.ResendAsync(\"22222222-3333-4444-5555-666666666666\", \"66666666-7777-8888-9999-000000000001\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नई डिलीवरी, जिसका पहले ही प्रयास किया जा चुका है। `response_status` वह है जो आपके endpoint ने इस बार उत्तर दिया। मूल डिलीवरी अपरिवर्तित रहती है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionWebhookDelivery"
                },
                "examples": {
                  "Accepted on resend": {
                    "value": {
                      "uuid": "66666666-7777-8888-9999-000000000004",
                      "session_id": "22222222-3333-4444-5555-666666666666",
                      "request_url": "https://yourapp.com/webhooks/didit",
                      "response_status": 200,
                      "status": "In Progress",
                      "webhook_type": "status.updated",
                      "request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"b8eb1e376517ee0cad8ba98ff7f8fd35fc72eca231000963a96a335f82328835\", \"X-Signature-V2\": \"9efd2ce9ed1303e1d05273ef9608a59363ed9789a05253db4748b3e8e50cb109\", \"X-Signature-Simple\": \"bf3a9dc04b2c20ab539203b0cd5cca2a10f630bf62d8feb6d68d82af80f64774\", \"X-Timestamp\": \"1792159542\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
                      "request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792159542,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
                      "created_at": "2026-10-16T14:05:42.330981Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "डिलीवरी पुनः नहीं भेजी जा सकी। `code` पर शाखा बनाएं: `webhook_url_missing` का अर्थ है कि डिलीवरी का कोई रिकॉर्ड किया गया URL नहीं है और कुछ भी नहीं भेजा गया है; `webhook_resend_error` का अर्थ है कि संग्रहीत डिलीवरी पर फिर से हस्ताक्षर नहीं किए जा सके या प्रयास पूरा नहीं किया जा सका। `webhook_resend_error` के बाद, `detail` की शुरुआत `Error processing webhook resend:` से होती है जिसके बाद एक नैदानिक टेक्स्ट होता है जो बदल सकता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string",
                      "description": "मशीन द्वारा पठनीय स्थिर त्रुटि कोड। इस पर ब्रांच करें, `detail` पर नहीं।"
                    }
                  }
                },
                "examples": {
                  "No recorded URL": {
                    "value": {
                      "detail": "The webhook delivery does not have a request URL configured",
                      "code": "webhook_url_missing"
                    }
                  },
                  "Resend failed": {
                    "value": {
                      "detail": "Error processing webhook resend: Invalid webhook data format",
                      "code": "webhook_resend_error"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "API कुंजी की समय-सीमा समाप्त हो गई है: इसे एक समाप्ति तिथि के साथ बनाया गया था जो बीत चुकी है। किसी गलत या निरस्त की गई कुंजी पर भी `401` मिलता है; अनुपलब्ध कुंजी पर `403` मिलता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुरोध की अनुमति नहीं है। कोई `x-api-key` न होने, या अमान्य अथवा निरस्त कुंजी होने पर `Authentication credentials were not provided or are invalid.` मिलता है। किसी अन्य एप्लिकेशन की कुंजी पर `You do not have permission to perform this action.` मिलता है। इस endpoint के लिए आवश्यक एक्सेस के बिना स्कोप्ड कुंजी होने पर अनुपलब्ध एक्सेस का नाम बताते हुए एक संदेश मिलता है, और इसकी IP allowlist के बाहर से उपयोग की गई कुंजी पर `This API key can't be used from this IP address.` मिलता है। क्रेडेंशियल जाँचे जाने से पहले एक अज्ञात `sessionId` पर `404` वापस आता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid key": {
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Key of another application": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without webhooks write": {
                    "value": {
                      "detail": "This API key has no write access to webhooks."
                    }
                  },
                  "Scoped key without decisions read": {
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Outside the IP allowlist": {
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है या हटा दिया गया है (क्रेडेंशियल की जांच से पहले `Not found.` लौटाया जाता है), या यह स्कोप्ड कुंजी की वर्कफ़्लो या स्थिति सीमाओं से बाहर है (`Session not found.`)। ऐसी डिलीवरी जो मौजूद नहीं है, किसी अन्य सत्र से संबंधित है या अब उपलब्ध नहीं है, `Webhook log not found` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside the key's limits": {
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Delivery not in this session": {
                    "value": {
                      "detail": "Webhook log not found"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: इस API कुंजी के लिए वर्तमान एक मिनट की विंडो में 300 से अधिक राइट (write) अनुरोध (POST, PATCH, PUT, DELETE)। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें।",
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              },
              "X-RateLimit-Limit": {
                "description": "एक मिनट की विंडो में अनुमत अनुरोध (300)।",
                "schema": {
                  "type": "integer",
                  "example": 300
                }
              },
              "X-RateLimit-Remaining": {
                "description": "वर्तमान विंडो में शेष अनुरोध।",
                "schema": {
                  "type": "integer",
                  "example": 0
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix समय (सेकंड) जब वर्तमान विंडो रीसेट होती है।",
                "schema": {
                  "type": "integer",
                  "example": 1792056120
                }
              },
              "X-RateLimit-Scope": {
                "description": "उस बजट का नाम जो पार हो गया था।",
                "schema": {
                  "type": "string",
                  "example": "generic-write"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Throttled": {
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/events/": {
      "get": {
        "summary": "सत्र इवेंट सूचीबद्ध करें",
        "description": "एक सत्यापन सत्र की इवेंट टाइमलाइन पढ़ें, `sent_at` के अनुसार सबसे नया पहले: उपयोगकर्ता द्वारा देखी गई स्क्रीन, बटन और अपलोड, विफल प्रयास, स्थिति और सुविधा-चरण परिवर्तन, और वर्कफ़्लो रूटिंग ट्रेस। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) सत्र ID के लिए काम करता है। इवेंट एसिंक्रोनस रूप से संग्रहीत होते हैं, इसलिए किसी नए इवेंट को प्रदर्शित होने में कुछ सेकंड लग सकते हैं। परिणाम `limit` और `offset` के साथ पेजिनेटेड होते हैं; जब तक यह `null` न हो जाए तब तक `next` का अनुसरण करें। स्कोप्ड API कुंजी के लिए `sessions: read` और `decisions: read` आवश्यक हैं, और `media: read` के बिना यह `file_url` को `null` के रूप में प्राप्त करती है। रूटिंग इवेंट का वर्णन [सत्र प्राप्त करें](https://docs.didit.me/hi/sessions-api/retrieve-session) में किया गया है।",
        "operationId": "get_v3_session_events",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_events",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है: सर्वर दोनों सत्र प्रकारों में ID को रिज़ॉल्व करता है। यह एक सही प्रारूप वाला UUID होना चाहिए; गलत प्रारूप वाला मान रूट से मेल नहीं खाता है और एक HTML `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज इवेंट की अधिकतम संख्या। डिफ़ॉल्ट 50 है। 1 से कम मान या गैर-संख्यात्मक मान वापस 50 हो जाता है; 1,000,000 से अधिक मान `400` लौटाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000,
              "example": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "पहले लौटाए गए परिणाम से पहले छोड़े जाने वाले परिणामों की संख्या। डिफ़ॉल्ट रूप से 0; ऋणात्मक या गैर-संख्यात्मक मान वापस 0 पर आ जाता है, 1,000,000 से अधिक मान `400` लौटाता है। `next` और `previous` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000,
              "example": 0
            }
          },
          {
            "name": "ordering",
            "in": "query",
            "required": false,
            "description": "वैकल्पिक सॉर्ट ओवरराइड। डिफ़ॉल्ट क्रम `-sent_at` है। आरोही क्रम में सॉर्ट करने के लिए परिणाम फ़ील्ड नाम (उदाहरण के लिए `sent_at`, `created_at`, `event_type`, `feature_step` या `step`) पास करें, अवरोही क्रम में सॉर्ट करने के लिए इसके आगे `-` लगाएं, और कई फ़ील्ड्स को अल्पविराम से अलग करें। अज्ञात फ़ील्ड्स को अनदेखा कर दिया जाता है।",
            "schema": {
              "type": "string",
              "example": "sent_at"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/events/?limit=50' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.sessions.list_events(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.sessions.listEvents(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.ListEventsAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsListEventsParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.sessions().listEvents(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->sessions->listEvents('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.list_events(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Sessions.ListEventsAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "सत्र के इवेंट्स का एक पेज, सबसे नया पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "description": "सत्र के इवेंट की कुल संख्या।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/SessionEvent"
                      }
                    }
                  }
                },
                "examples": {
                  "Completed session": {
                    "value": {
                      "count": 3,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "aaaaaaaa-1111-2222-3333-444444444444",
                          "event_type": "SESSION_STATUS_CHANGED",
                          "created_at": "2026-09-14T10:02:13.904512Z",
                          "component": null,
                          "feature_step": null,
                          "step": null,
                          "details": {
                            "old_status": "In Progress",
                            "current_status": "Approved"
                          },
                          "ip_address": null,
                          "user_agent": null,
                          "device_info": null,
                          "file_url": null,
                          "sent_at": 1789380131482
                        },
                        {
                          "uuid": "bbbbbbbb-1111-2222-3333-444444444444",
                          "event_type": "FEATURE_STEP_CHANGED",
                          "created_at": "2026-09-14T10:01:49.210377Z",
                          "component": null,
                          "feature_step": null,
                          "step": null,
                          "details": {
                            "old_feature_step": "OCR",
                            "current_feature_step": "LIVENESS"
                          },
                          "ip_address": null,
                          "user_agent": null,
                          "device_info": null,
                          "file_url": null,
                          "sent_at": 1789380107103
                        },
                        {
                          "uuid": "cccccccc-1111-2222-3333-444444444444",
                          "event_type": "STEP_RENDERED",
                          "created_at": "2026-09-14T10:01:00.581930Z",
                          "component": "DocumentCapture",
                          "feature_step": "OCR",
                          "step": "DOCUMENT_CAPTURE_FRONT",
                          "details": {},
                          "ip_address": "203.0.113.24",
                          "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1",
                          "device_info": {
                            "device_model": "iPhone"
                          },
                          "file_url": null,
                          "sent_at": 1789380058776
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1,000,000 से अधिक है। बॉडी एक संदेश वाला JSON ऐरे है।",
            "content": {
              "application/json": {
                "examples": {
                  "Limit too large": {
                    "summary": "limit=2000000",
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "Offset too large": {
                    "summary": "offset=2000000",
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  }
                },
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without sessions read": {
                    "summary": "स्कोप्ड कुंजी में sessions: read की कमी है",
                    "value": {
                      "detail": "This API key has no read access to sessions."
                    }
                  },
                  "Scoped key without decisions read": {
                    "summary": "स्कोप्ड कुंजी में decisions: read की कमी है",
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, या स्कोप्ड कुंजी के वर्कफ़्लो या केवल-स्वीकृत सीमाओं से बाहर है। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी के वर्कफ़्लो या केवल-स्वीकृत सीमाओं से बाहर है",
                    "value": {
                      "detail": "Session not found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति API कुंजी प्रति मिनट 600 GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड तक प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/aml-screening-history/": {
      "get": {
        "summary": "AML स्क्रीनिंग इतिहास सूचीबद्ध करें",
        "description": "किसी सत्र की AML जांच के प्रत्येक पूर्ण किए गए सतत निगरानी पुनः-स्क्रीन को सूचीबद्ध करें, `completed_at` के अनुसार नवीनतम पहले, जिसमें वे रन भी शामिल हैं जहां कुछ भी नहीं बदला: अलर्ट, गतिविधि प्रविष्टियां और webhooks केवल तभी ट्रिगर होते हैं जब कोई परिणाम बदलता है, इसलिए यह इतिहास इस बात का प्रमाण है कि जिस विषय पर कोई प्रतिकूल परिणाम नहीं मिला था, उसकी अभी भी स्क्रीनिंग की जा रही थी। यह KYC और KYB सत्र ID के लिए काम करता है; जब सत्र में एक से अधिक AML चरण चलाए गए हों तो `node_id` पास करें। केवल सतत निगरानी पुनः-स्क्रीन ही सूचीबद्ध होते हैं (पहली स्क्रीनिंग सत्र निर्णय का हिस्सा होती है) और इस इतिहास के मौजूद होने से पहले के रन पुनर्निर्मित नहीं किए जाते हैं, इसलिए बिना सतत निगरानी वाला सत्र एक खाली सूची लौटाता है। `count` 100 तक सटीक है और उसके ऊपर 100 पर सीमित है, इसलिए `next` का तब तक अनुसरण करें जब तक कि यह `null` न हो जाए। एक समय में एक कैलेंडर माह पढ़ने के लिए `month` पास करें। स्कोप्ड API कुंजी के लिए `decisions: read` की आवश्यकता होती है; [सतत AML निगरानी](https://docs.didit.me/hi/core-technology/aml-screening/continuous-monitoring-aml-screening) देखें।",
        "operationId": "get_v3_session_aml_screening_history",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_aml_screening_history",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है: सर्वर दोनों सत्र प्रकारों में ID को रिज़ॉल्व करता है। यह एक सही प्रारूप वाला UUID होना चाहिए; गलत प्रारूप वाला मान रूट से मेल नहीं खाता है और एक HTML `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "AML चेक का वर्कफ़्लो ग्राफ़ नोड ID। केवल तभी आवश्यक जब सत्र में एक से अधिक AML चरण चले हों; इसके बिना नवीनतम AML चेक का उपयोग किया जाता है। अज्ञात नोड के लिए `404` लौटाया जाता है।",
            "schema": {
              "type": "string",
              "example": "feature_aml_1"
            }
          },
          {
            "name": "month",
            "in": "query",
            "required": false,
            "description": "`YYYY-MM` के रूप में एक UTC कैलेंडर माह। केवल उस महीने में पूरी की गई स्क्रीनिंग ही लौटाई जाती हैं; इसके बिना हर महीना लौटाया जाता है। एक विकृत माह `400` लौटाता है।",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
              "example": "2026-09"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "प्रति पेज स्क्रीनिंग रन की अधिकतम संख्या। डिफ़ॉल्ट 50 है। 1 से कम मान या गैर-संख्यात्मक मान वापस 50 हो जाता है; 1,000,000 से अधिक मान `400` लौटाता है।",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1,
              "maximum": 1000000,
              "example": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "पहले लौटाए गए परिणाम से पहले छोड़े जाने वाले परिणामों की संख्या। डिफ़ॉल्ट रूप से 0; ऋणात्मक या गैर-संख्यात्मक मान वापस 0 पर आ जाता है, 1,000,000 से अधिक मान `400` लौटाता है। `next` और `previous` URL का अनुसरण करना बेहतर है।",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0,
              "maximum": 1000000,
              "example": 0
            }
          },
          {
            "name": "ordering",
            "in": "query",
            "required": false,
            "description": "वैकल्पिक सॉर्ट ओवरराइड। डिफ़ॉल्ट क्रम `-completed_at` है। आरोही क्रम में सॉर्ट करने के लिए परिणाम फ़ील्ड नाम (उदाहरण के लिए `completed_at`, `started_at`, `outcome` या `score`) पास करें, अवरोही क्रम में सॉर्ट करने के लिए इसके आगे `-` लगाएं, और कई फ़ील्ड्स को अल्पविराम से अलग करें। अज्ञात फ़ील्ड्स को अनदेखा कर दिया जाता है।",
            "schema": {
              "type": "string",
              "example": "completed_at"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/aml-screening-history/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.sessions.list_aml_screening_history(\n    \"11111111-2222-3333-4444-555555555555\",\n):\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.sessions.listAmlScreeningHistory(\"11111111-2222-3333-4444-555555555555\")) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Sessions.ListAMLScreeningHistoryAutoPaging(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsListAMLScreeningHistoryParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.sessions().listAmlScreeningHistory(\"11111111-2222-3333-4444-555555555555\")) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->sessions->listAmlScreeningHistory('11111111-2222-3333-4444-555555555555') as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.list_aml_screening_history(\"11111111-2222-3333-4444-555555555555\").auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Sessions.ListAmlScreeningHistoryAsync(\"11111111-2222-3333-4444-555555555555\"))\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "स्क्रीनिंग रन का एक पेज, सबसे नया पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "count",
                    "next",
                    "previous",
                    "results"
                  ],
                  "properties": {
                    "count": {
                      "type": "integer",
                      "maximum": 100,
                      "description": "रन की संख्या, 100 तक सटीक और उससे अधिक होने पर 100 पर सीमित।"
                    },
                    "next": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "अगले पेज का URL, या अंतिम पेज पर `null`।"
                    },
                    "previous": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "पिछले पेज का URL, या पहले पेज पर `null`।"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/AMLScreeningRun"
                      }
                    }
                  }
                },
                "examples": {
                  "Monitored subject": {
                    "value": {
                      "count": 2,
                      "next": null,
                      "previous": null,
                      "results": [
                        {
                          "uuid": "dddddddd-1111-2222-3333-444444444444",
                          "run_id": "aaaaaaaa-1111-2222-3333-444444444444",
                          "completed_at": "2026-09-14T04:12:33.481207Z",
                          "started_at": "2026-09-14T04:00:01.002311Z",
                          "outcome": "NO_CHANGE",
                          "trigger": "ONGOING_MONITORING",
                          "provider": "aml_data_source",
                          "status": "Approved",
                          "score": 0.0,
                          "total_hits": 0,
                          "new_hits": 0,
                          "entities_screened": 1,
                          "dataset_freshness": {
                            "captured_at": "2026-09-14T03:58:02.114820+00:00",
                            "provider": "aml_data_source",
                            "catalog_version": "2026-09-13",
                            "sources": {
                              "sanctions": {
                                "last_updated_at": "2026-09-13T21:10:00+00:00",
                                "oldest_updated_at": "2026-09-11T06:00:00+00:00",
                                "dataset_count": 120,
                                "dated_dataset_count": 120
                              },
                              "pep": {
                                "last_updated_at": "2026-09-13T08:00:00+00:00",
                                "oldest_updated_at": null,
                                "dataset_count": 45,
                                "dated_dataset_count": 44
                              },
                              "warnings": {
                                "last_updated_at": "2026-09-12T18:45:00+00:00",
                                "oldest_updated_at": "2026-09-01T00:00:00+00:00",
                                "dataset_count": 30,
                                "dated_dataset_count": 30
                              }
                            }
                          }
                        },
                        {
                          "uuid": "eeeeeeee-1111-2222-3333-444444444444",
                          "run_id": "bbbbbbbb-1111-2222-3333-444444444444",
                          "completed_at": "2026-09-13T04:11:58.020914Z",
                          "started_at": "2026-09-13T04:00:00.871022Z",
                          "outcome": "FAILED",
                          "trigger": "ONGOING_MONITORING",
                          "provider": "aml_data_source",
                          "status": "Approved",
                          "score": 0.0,
                          "total_hits": 0,
                          "new_hits": null,
                          "entities_screened": 0,
                          "dataset_freshness": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "`limit` या `offset` 1,000,000 से अधिक है (एक संदेश वाला JSON ऐरे), या `month` एक `YYYY-MM` कैलेंडर माह नहीं है (`month` कुंजी वाला ऑब्जेक्ट)।",
            "content": {
              "application/json": {
                "examples": {
                  "Limit too large": {
                    "summary": "limit=2000000",
                    "value": [
                      "limit must not exceed 1000000."
                    ]
                  },
                  "Offset too large": {
                    "summary": "offset=2000000",
                    "value": [
                      "offset must not exceed 1000000."
                    ]
                  },
                  "Malformed month": {
                    "summary": "month=2026-13",
                    "value": {
                      "month": [
                        "Not a calendar month. Use YYYY-MM."
                      ]
                    }
                  }
                },
                "schema": {
                  "oneOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "month": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions read": {
                    "summary": "स्कोप्ड कुंजी में decisions: read की कमी है",
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है, या इसमें कोई AML जांच नहीं है (दिए गए `node_id` के लिए)। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी की सीमाओं से बाहर है (कुछ क्षण पहले हटाए गए सत्र के लिए भी लौटाया जाता है)",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "No AML check": {
                    "summary": "सत्र में कभी AML चरण नहीं चला",
                    "value": {
                      "detail": "The session does not have an AML check."
                    }
                  },
                  "No AML check for node": {
                    "summary": "node_id सत्र की AML जांच से मेल नहीं खाता है",
                    "value": {
                      "detail": "The session does not have an AML check for node 'feature_aml_2'."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति API कुंजी प्रति मिनट 600 GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड तक प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/aml-screening-history/export/": {
      "get": {
        "summary": "CSV के रूप में AML स्क्रीनिंग इतिहास एक्सपोर्ट करें",
        "description": "वही सतत-निगरानी इतिहास जो `GET /v3/session/{sessionId}/aml-screening-history/` देता है, CSV फ़ाइल के रूप में डाउनलोड करें, प्रति पूर्ण पुनः-स्क्रीन एक पंक्ति, नवीनतम पहले, किसी ऑडिटर को सौंपने के लिए तैयार। फ़ाइल पूरी तरह स्ट्रीम की जाती है (कोई पेजिनेशन नहीं) और एक हेडर पंक्ति से शुरू होती है; एक खाली सेल का अर्थ अज्ञात है, डेटासेट तिथियों का कभी अनुमान नहीं लगाया जाता है, और जो मान स्प्रेडशीट फॉर्मूला शुरू कर सकता है उसके आगे एक एपोस्ट्रोफी लगाई जाती है। KYC और KYB सत्र ID के लिए काम करता है; जब सत्र में एक से अधिक AML चरण चले हों तो `node_id` पास करें। एक कैलेंडर माह एक्सपोर्ट करने के लिए `month` पास करें। त्रुटियाँ CSV के बजाय JSON के रूप में लौटाई जाती हैं। स्कोप्ड API कुंजी के लिए `decisions: read` और `media: read` की आवश्यकता होती है: रिस्पॉन्स एक फ़ाइल है, इसलिए `media: read` के बिना कुंजी को `403` मिलता है।",
        "operationId": "get_v3_session_aml_screening_history_export",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "export_aml_screening_history",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है: सर्वर दोनों सत्र प्रकारों में ID को रिज़ॉल्व करता है। यह एक सही प्रारूप वाला UUID होना चाहिए; गलत प्रारूप वाला मान रूट से मेल नहीं खाता है और एक HTML `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "AML चेक का वर्कफ़्लो ग्राफ़ नोड ID। केवल तभी आवश्यक जब सत्र में एक से अधिक AML चरण चले हों; इसके बिना नवीनतम AML चेक का उपयोग किया जाता है। अज्ञात नोड के लिए `404` लौटाया जाता है।",
            "schema": {
              "type": "string",
              "example": "feature_aml_1"
            }
          },
          {
            "name": "month",
            "in": "query",
            "required": false,
            "description": "`YYYY-MM` के रूप में एक UTC कैलेंडर माह। केवल उस महीने में पूरी की गई स्क्रीनिंग ही लौटाई जाती हैं; इसके बिना हर महीना लौटाया जाता है। एक विकृत माह `400` लौटाता है।",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
              "example": "2026-09"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/aml-screening-history/export/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -o aml-screening-history.csv"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.sessions.export_aml_screening_history(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nwith open(\"download.csv\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.sessions.exportAmlScreeningHistory(\"11111111-2222-3333-4444-555555555555\");\nawait writeFile(\"download.csv\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.ExportAMLScreeningHistory(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsExportAMLScreeningHistoryParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.csv\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().exportAmlScreeningHistory(\"11111111-2222-3333-4444-555555555555\")\n        .writeTo(Path.of(\"download.csv\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->sessions->exportAmlScreeningHistory('11111111-2222-3333-4444-555555555555');\n$content->saveTo('download.csv');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.sessions.export_aml_screening_history(\"11111111-2222-3333-4444-555555555555\")\nFile.binwrite(\"download.csv\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Sessions.ExportAmlScreeningHistoryAsync(\"11111111-2222-3333-4444-555555555555\");\nawait content.SaveToAsync(\"download.csv\");"
          }
        ],
        "responses": {
          "200": {
            "description": "CRLF लाइन एंडिंग्स के साथ `text/csv` के रूप में स्ट्रीम की गई CSV फ़ाइल। कॉलम, क्रम में: `screened_at` (जब पुनः स्क्रीनिंग समाप्त हुई), `outcome` (`NO_CHANGE`, `CHANGED` या `FAILED`), `provider` (AML डेटा स्रोत का अपारदर्शी पहचानकर्ता; इस पर शाखा न बनाएं), `aml_status`, `aml_score`, `total_hits`, `datasets_captured_at`, `datasets_sanctions_last_updated_at`, `datasets_pep_last_updated_at`, `datasets_warnings_last_updated_at`, `datasets_adverse_media_last_updated_at`, `datasets_catalog_version`, `run_id` (निगरानी रन), `entities_screened` (`1`, या विफल रन के लिए `0`) और `new_hits` (अज्ञात होने पर खाली)। तिथियां UTC ऑफ़सेट के साथ ISO 8601 हैं। जिस सत्र में अभी तक कोई पुनः स्क्रीनिंग नहीं हुई है, वह केवल हेडर लाइन लौटाता है।",
            "headers": {
              "Content-Disposition": {
                "description": "`attachment; filename=\"aml-screening-history-{sessionId}.csv\"`, या `aml-screening-history-{sessionId}-{month}.csv` जब `month` पास किया जाता है।",
                "schema": {
                  "type": "string",
                  "example": "attachment; filename=\"aml-screening-history-11111111-2222-3333-4444-555555555555.csv\""
                }
              }
            },
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "example": "screened_at,outcome,provider,aml_status,aml_score,total_hits,datasets_captured_at,datasets_sanctions_last_updated_at,datasets_pep_last_updated_at,datasets_warnings_last_updated_at,datasets_adverse_media_last_updated_at,datasets_catalog_version,run_id,entities_screened,new_hits\r\n2026-09-14T04:12:33.481207+00:00,NO_CHANGE,aml_data_source,Approved,0.0,0,2026-09-14T03:58:02.114820+00:00,2026-09-13T21:10:00+00:00,2026-09-13T08:00:00+00:00,2026-09-12T18:45:00+00:00,,2026-09-13,aaaaaaaa-1111-2222-3333-444444444444,1,0\r\n2026-09-13T04:11:58.020914+00:00,FAILED,aml_data_source,Approved,0.0,0,,,,,,,bbbbbbbb-1111-2222-3333-444444444444,0,\r\n"
              }
            }
          },
          "400": {
            "description": "`month` एक `YYYY-MM` कैलेंडर माह नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "month": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "examples": {
                  "Malformed month": {
                    "summary": "month=2026-13",
                    "value": {
                      "month": [
                        "Not a calendar month. Use YYYY-MM."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions read": {
                    "summary": "स्कोप्ड कुंजी में decisions: read की कमी है",
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  },
                  "Scoped key without media read": {
                    "summary": "स्कोप्ड कुंजी में media: read की कमी है (रिस्पॉन्स एक फ़ाइल है)",
                    "value": {
                      "detail": "This API key has no read access to media."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है, या इसमें कोई AML जांच नहीं है (दिए गए `node_id` के लिए)। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी की सीमाओं से बाहर है (कुछ क्षण पहले हटाए गए सत्र के लिए भी लौटाया जाता है)",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "No AML check": {
                    "summary": "सत्र में कभी AML चरण नहीं चला",
                    "value": {
                      "detail": "The session does not have an AML check."
                    }
                  },
                  "No AML check for node": {
                    "summary": "node_id सत्र की AML जांच से मेल नहीं खाता है",
                    "value": {
                      "detail": "The session does not have an AML check for node 'feature_aml_2'."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति API कुंजी प्रति मिनट 600 GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड तक प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/add-images/": {
      "patch": {
        "summary": "सत्र में एक छवि जोड़ें",
        "description": "पूर्ण हो चुके उपयोगकर्ता सत्यापन (KYC) सत्र के पहचान सत्यापन (`model_type=kyc`) या पते का प्रमाण (`model_type=poa`) परिणाम में एक अतिरिक्त छवि या PDF संलग्न करें, उदाहरण के लिए प्रवाह के बाहर एकत्र किए गए साक्ष्य। सत्र `Approved`, `Declined`, `In Review` या `Kyc Expired` होना चाहिए और इसमें `model_type` द्वारा नामित परिणाम शामिल होना चाहिए; व्यवसाय सत्यापन (KYB) सत्र समर्थित नहीं हैं। प्रत्येक कॉल एक फ़ाइल जोड़ती है (चरण एक से अधिक बार चलने पर नवीनतम परिणाम में), मौजूदा फ़ाइलों को बनाए रखती है और सत्र गतिविधि लॉग में एक `FILE_ADDED` प्रविष्टि दर्ज करती है; अपलोड कोई webhook नहीं भेजता है और सत्र की स्थिति नहीं बदलता है। अपलोड होने पर फ़ाइल को कंप्रेस किया जाता है और इसे सत्र निर्णय के `extra_files` में लौटाया जाता है। यह endpoint प्रति API कुंजी प्रति मिनट 10 अनुरोधों तक सीमित है। स्कोप्ड API कुंजी के लिए `sessions: write` आवश्यक है, और `media: read` के बिना यह `extra_files` लिंक को `null` के रूप में प्राप्त करती है।",
        "operationId": "patch_v3_session_add_images",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "add_images",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "उपयोगकर्ता सत्यापन (KYC) सत्र का UUID जिसमें फ़ाइल जोड़ी जानी है (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। व्यवसाय सत्यापन (KYB) सत्र ID `404` लौटाती है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file",
                  "model_type"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "छवि या PDF। अनुमत एक्सटेंशन: `jpg`, `jpeg`, `png`, `webp`, `tiff`, `pdf`। अपलोड किए जाने पर अधिकतम 15 MB; इसके बाद फ़ाइल को कंप्रेस किया जाता है और यदि यह अभी भी 2 MB (2,097,152 बाइट्स) से बड़ी है तो इसे `400` के साथ अस्वीकार कर दिया जाता है। खाली फ़ाइलों को अस्वीकार कर दिया जाता है।"
                  },
                  "model_type": {
                    "type": "string",
                    "enum": [
                      "kyc",
                      "poa"
                    ],
                    "description": "`kyc` फ़ाइल को पहचान सत्यापन परिणाम में जोड़ता है, `poa` पते का प्रमाण परिणाम में।",
                    "example": "kyc"
                  },
                  "file_password": {
                    "type": "string",
                    "description": "एन्क्रिप्टेड PDF का पासवर्ड। इसके बिना, या गलत पासवर्ड के साथ, एक एन्क्रिप्टेड PDF `400` लौटाता है।"
                  }
                }
              },
              "example": {
                "file": "(binary)",
                "model_type": "kyc"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/add-images/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'file=@./back-of-id.jpg' \\\n  -F 'model_type=kyc'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.add_images(\n    \"11111111-2222-3333-4444-555555555555\",\n    file=open(\"image.jpg\", \"rb\"),\n    model_type=\"kyc\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.addImages(\"11111111-2222-3333-4444-555555555555\", {\n  file: await fileFromPath(\"image.jpg\"),\n  model_type: \"kyc\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.AddImages(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsAddImagesParams{\n\tFile:      didit.FileFromPath(\"image.jpg\"),\n\tModelType: \"kyc\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.SessionsAddImagesParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().addImages(\"11111111-2222-3333-4444-555555555555\", SessionsAddImagesParams.builder()\n        .file(Path.of(\"image.jpg\"))\n        .modelType(SessionsAddImagesParams.ModelType.of(\"kyc\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->addImages('11111111-2222-3333-4444-555555555555', [\n    'file' => File::fromPath('image.jpg'),\n    'model_type' => 'kyc',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.add_images(\n  \"11111111-2222-3333-4444-555555555555\",\n  file: Pathname(\"image.jpg\"),\n  model_type: \"kyc\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.AddImagesAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsAddImagesParams\n{\n    File = FileUpload.FromPath(\"image.jpg\"),\n    ModelType = \"kyc\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "फ़ाइल जोड़ी गई। नए परिणाम सहित उस परिणाम की प्रत्येक अतिरिक्त फ़ाइल लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "extra_files"
                  ],
                  "properties": {
                    "extra_files": {
                      "type": "array",
                      "description": "`model_type` द्वारा नामित परिणाम की सभी अतिरिक्त फ़ाइलों के अल्पकालिक प्रीसाइन्ड लिंक, सबसे पुराना पहले। बिना `media: read` वाली स्कोप्ड API कुंजी के लिए प्रत्येक लिंक `null` है। बाद में सत्र निर्णय से नए लिंक पढ़ें।",
                      "items": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true
                      }
                    }
                  }
                },
                "example": {
                  "extra_files": [
                    "https://media.example.com/session/11111111-2222-3333-4444-555555555555/kyc-extra-files/66666666-7777-8888-9999-000000000000.jpg?expires=1789383731&signature=abc123"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि। फ़ील्ड त्रुटियां `{\"<field>\": [\"<message>\"]}` के रूप में आती हैं; एन्क्रिप्टेड-PDF त्रुटियां `{\"detail\": \"...\"}` के रूप में आती हैं।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing file": {
                    "summary": "फ़ॉर्म में कोई फ़ाइल भाग नहीं है",
                    "value": {
                      "file": [
                        "No file was submitted."
                      ]
                    }
                  },
                  "Missing model_type": {
                    "summary": "model_type छोड़ दिया गया",
                    "value": {
                      "model_type": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid model_type": {
                    "summary": "model_type kyc या poa नहीं है",
                    "value": {
                      "model_type": [
                        "\"passport\" is not a valid choice."
                      ]
                    }
                  },
                  "File too large": {
                    "summary": "15 MB से अधिक का अपलोड",
                    "value": {
                      "file": [
                        "File size should not exceed 15 MB"
                      ]
                    }
                  },
                  "Too large after compression": {
                    "summary": "कंप्रेशन के बाद भी 2 MB से अधिक",
                    "value": {
                      "file": [
                        "File size is too big. Max allowed size is 2097152 bytes."
                      ]
                    }
                  },
                  "Encrypted PDF": {
                    "summary": "बिना file_password के एन्क्रिप्टेड PDF",
                    "value": {
                      "detail": "The PDF is encrypted. Please upload a decrypted PDF or a photo instead."
                    }
                  },
                  "Wrong PDF password": {
                    "summary": "file_password PDF नहीं खोलता है",
                    "value": {
                      "detail": "The PDF password is incorrect. Please provide the correct password."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without sessions write": {
                    "summary": "स्कोप्ड कुंजी में sessions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to sessions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है; यह एक KYB सत्र है या `Approved`, `Declined`, `In Review` या `Kyc Expired` में नहीं है; या इसमें अनुरोधित `model_type` का कोई परिणाम नहीं है (फ़ाइल के मान्य होने से पहले जाँचा जाता है)। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी के वर्कफ़्लो या केवल-स्वीकृत सीमाओं से बाहर है",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "Not eligible": {
                    "summary": "सत्र अभी समाप्त नहीं हुआ है, या एक KYB सत्र ID है",
                    "value": {
                      "detail": "No Session matches the given query."
                    }
                  },
                  "No ID verification": {
                    "summary": "पहचान सत्यापन के बिना किसी सत्र पर model_type=kyc",
                    "value": {
                      "detail": "The session does not have KYC data."
                    }
                  },
                  "No Proof of Address": {
                    "summary": "पते के प्रमाण के बिना किसी सत्र पर model_type=poa",
                    "value": {
                      "detail": "The session does not have POA data."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 10 ऐड-इमेज अनुरोध (अस्वीकृत अनुरोध भी गिने जाते हैं)। प्रति मिनट 300 राइट अनुरोधों का साझा बजट भी लागू होता है। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Session add-images rate limit exceeded. You can make up to 10 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/DocumentProcessingBusy"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/update-aml-status/": {
      "patch": {
        "summary": "AML जाँच स्थिति अपडेट करें",
        "description": "सत्र की AML स्क्रीनिंग जांच की स्थिति को समग्र रूप से सेट करें (सत्र निर्णय में `aml_screenings[]` प्रविष्टि का `status`), उदाहरण के लिए आपकी टीम द्वारा प्रत्येक हिट को साफ़ करने के बाद `Approved`। KYC और KYB सत्र IDs के लिए काम करता है; जब सत्र में एक से अधिक AML चरण चलाए गए हों, तो `node_id` (क्वेरी पैरामीटर या बॉडी फ़ील्ड) पास करें, अन्यथा सबसे हालिया AML जांच अपडेट की जाती है। जब स्थिति वास्तव में बदलती है, तो एक `AML_STATUS_UPDATED` गतिविधि प्रविष्टि दर्ज की जाती है और एक `data.updated` [webhook](https://docs.didit.me/hi/integration/webhooks) भेजा जाता है; वर्तमान स्थिति भेजने पर `200` वापस आता है और कुछ नहीं बदलता। सत्र स्थिति की पुनः गणना नहीं की जाती है: सत्र निर्णय के लिए `PATCH /v3/session/{sessionId}/update-status/` और एकल हिट्स के लिए `PATCH /v3/session/{sessionId}/update-aml-hit-status/` का उपयोग करें। एक स्कोप्ड API कुंजी को `decisions: write` की आवश्यकता होती है।",
        "operationId": "patch_v3_session_update_aml_status",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_aml_status",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है: सर्वर दोनों सत्र प्रकारों में ID को रिज़ॉल्व करता है। यह एक सही प्रारूप वाला UUID होना चाहिए; गलत प्रारूप वाला मान रूट से मेल नहीं खाता है और एक HTML `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "अपडेट किए जाने वाले AML चेक का वर्कफ़्लो ग्राफ़ नोड ID। केवल तभी आवश्यक जब सत्र में एक से अधिक AML चरण चले हों। बॉडी में `node_id` की तुलना में इसे प्राथमिकता दी जाती है।",
            "schema": {
              "type": "string",
              "example": "feature_aml_1"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "status"
                ],
                "properties": {
                  "status": {
                    "type": "string",
                    "enum": [
                      "Not Finished",
                      "Approved",
                      "Declined",
                      "In Review",
                      "Resub Requested"
                    ],
                    "description": "AML जाँच की नई स्थिति।",
                    "example": "Approved"
                  },
                  "node_id": {
                    "type": "string",
                    "description": "क्वेरी पैरामीटर के विकल्प के रूप में, AML चेक का वर्कफ़्लो ग्राफ़ नोड ID।",
                    "example": "feature_aml_1"
                  }
                }
              },
              "example": {
                "status": "Approved"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PATCH 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-status/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"status\": \"Approved\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_aml_status(\n    \"11111111-2222-3333-4444-555555555555\",\n    status=\"Approved\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateAmlStatus(\"11111111-2222-3333-4444-555555555555\", {\n  status: \"Approved\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLStatusParams{\n\tStatus: \"Approved\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateAmlStatusParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateAmlStatus(\"11111111-2222-3333-4444-555555555555\", SessionsUpdateAmlStatusParams.builder()\n        .status(SessionsUpdateAmlStatusParams.Status.of(\"Approved\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateAmlStatus('11111111-2222-3333-4444-555555555555', [\n    'status' => 'Approved',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_aml_status(\n  \"11111111-2222-3333-4444-555555555555\",\n  status: \"Approved\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateAmlStatusAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsUpdateAmlStatusParams\n{\n    Status = \"Approved\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "AML जाँच स्थिति सेट की गई (या यदि पहले से ही यही मान था तो अपरिवर्तित रही)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "message",
                    "status",
                    "previous_status"
                  ],
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "हमेशा `AML status updated successfully`।"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "Not Finished",
                        "Approved",
                        "Declined",
                        "In Review",
                        "Resub Requested"
                      ],
                      "description": "अब AML जांच की स्थिति।"
                    },
                    "previous_status": {
                      "type": "string",
                      "enum": [
                        "Not Finished",
                        "Approved",
                        "Declined",
                        "In Review",
                        "Resub Requested"
                      ],
                      "description": "कॉल से पहले की स्थिति। कुछ भी नहीं बदलने पर `status` के बराबर।"
                    }
                  }
                },
                "example": {
                  "message": "AML status updated successfully",
                  "status": "Approved",
                  "previous_status": "In Review"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: `status` गायब है या अनुमत मानों में से एक नहीं है। AML जांच लुकअप पहले चलता है, इसलिए AML जांच के बिना एक सत्र अमान्य बॉडी होने पर भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Missing status": {
                    "summary": "खाली बॉडी या कोई स्थिति नहीं",
                    "value": {
                      "status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid status": {
                    "summary": "status enum में नहीं है",
                    "value": {
                      "status": [
                        "\"Cleared\" is not a valid choice."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था या स्कोप्ड कुंजी की सीमाओं से बाहर है, या इसमें कोई AML जांच नहीं है (दिए गए `node_id` के लिए)। सत्र लुकअप क्रेडेंशियल जांच से पहले चलता है, इसलिए एक अज्ञात `sessionId` वैध कुंजी के बिना भी `404` लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Unknown session": {
                    "summary": "इस ID वाला कोई सत्र मौजूद नहीं है, या इसे हटा दिया गया था",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Outside key limits": {
                    "summary": "सत्र स्कोप्ड कुंजी की सीमाओं से बाहर है (कुछ क्षण पहले हटाए गए सत्र के लिए भी लौटाया जाता है)",
                    "value": {
                      "detail": "Session not found."
                    }
                  },
                  "No AML check": {
                    "summary": "सत्र में कभी AML चरण नहीं चला",
                    "value": {
                      "detail": "The session does not have an AML check."
                    }
                  },
                  "No AML check for node": {
                    "summary": "node_id सत्र की AML जांच से मेल नहीं खाता है",
                    "value": {
                      "detail": "The session does not have an AML check for node 'feature_aml_2'."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/status/": {
      "get": {
        "summary": "सर्विस स्थिति प्राप्त करें (सार्वजनिक, अप्रमाणीकृत)",
        "description": "प्रत्येक Didit सेवा की स्थिति (`operational`, `degraded` या `down`), समग्र स्थिति (उनमें से सबसे खराब), और उन घटनाओं को लौटाता है जो चल रही हैं या पिछले 7 दिनों में हल की गई थीं। स्थिति विजेट को संचालित करने या अपने इंटीग्रेशन से Didit की स्थिति जांचने के लिए इसका उपयोग करें।\n\nसार्वजनिक: कोई प्रमाणीकरण हेडर न भेजें। रिस्पॉन्स में कोई संगठन डेटा नहीं होता है और यह प्रत्येक कॉलर के लिए समान होता है। रिस्पॉन्स 30 सेकंड के लिए कैश किए जाते हैं, इसलिए प्रत्येक 30 सेकंड में एक से अधिक बार पोल न करें।",
        "operationId": "get_v3_status",
        "tags": [
          "Status"
        ],
        "security": [
          {}
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "वर्तमान सेवा स्थिति।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceStatusFeed"
                },
                "examples": {
                  "One service degraded": {
                    "summary": "एक जारी घटना और एक इस सप्ताह हल की गई घटना",
                    "value": {
                      "status": "degraded",
                      "updated_at": "2026-10-13T09:41:07.512345Z",
                      "services": [
                        {
                          "key": "service_id_verification",
                          "name": "ID verification",
                          "status": "operational"
                        },
                        {
                          "key": "service_liveness_face_match",
                          "name": "Liveness and face match",
                          "status": "operational"
                        },
                        {
                          "key": "service_aml_screening",
                          "name": "AML screening",
                          "status": "operational"
                        },
                        {
                          "key": "service_kyb_registries",
                          "name": "KYB registries",
                          "status": "operational"
                        },
                        {
                          "key": "service_database_validation",
                          "name": "Database validation",
                          "status": "degraded"
                        },
                        {
                          "key": "service_phone_delivery",
                          "name": "Phone verification delivery",
                          "status": "operational"
                        },
                        {
                          "key": "service_email_delivery",
                          "name": "Email verification delivery",
                          "status": "operational"
                        },
                        {
                          "key": "service_transaction_monitoring",
                          "name": "Transaction monitoring",
                          "status": "operational"
                        }
                      ],
                      "incidents": [
                        {
                          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                          "service": "service_database_validation",
                          "service_name": "Database validation",
                          "state": "degraded",
                          "status": "ongoing",
                          "title": "Database validation is degraded in Brazil.",
                          "body": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC.",
                          "affected": "Brazil (CPF)",
                          "country_name": "Brazil",
                          "started_at": "2026-10-13T08:55:00Z",
                          "resolved_at": null,
                          "duration_minutes": null
                        },
                        {
                          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                          "service": "service_aml_screening",
                          "service_name": "AML screening",
                          "state": "down",
                          "status": "resolved",
                          "title": "AML screening is back to normal.",
                          "body": "Recovered at 14:32 UTC after 17 minutes.",
                          "affected": "",
                          "country_name": "",
                          "started_at": "2026-10-11T14:15:00Z",
                          "resolved_at": "2026-10-11T14:32:00Z",
                          "duration_minutes": 17
                        }
                      ]
                    }
                  },
                  "All operational": {
                    "summary": "पिछले 7 दिनों में कोई घटना नहीं",
                    "value": {
                      "status": "operational",
                      "updated_at": "2026-10-13T09:41:07.512345Z",
                      "services": [
                        {
                          "key": "service_id_verification",
                          "name": "ID verification",
                          "status": "operational"
                        },
                        {
                          "key": "service_liveness_face_match",
                          "name": "Liveness and face match",
                          "status": "operational"
                        },
                        {
                          "key": "service_aml_screening",
                          "name": "AML screening",
                          "status": "operational"
                        },
                        {
                          "key": "service_kyb_registries",
                          "name": "KYB registries",
                          "status": "operational"
                        },
                        {
                          "key": "service_database_validation",
                          "name": "Database validation",
                          "status": "operational"
                        },
                        {
                          "key": "service_phone_delivery",
                          "name": "Phone verification delivery",
                          "status": "operational"
                        },
                        {
                          "key": "service_email_delivery",
                          "name": "Email verification delivery",
                          "status": "operational"
                        },
                        {
                          "key": "service_transaction_monitoring",
                          "name": "Transaction monitoring",
                          "status": "operational"
                        }
                      ],
                      "incidents": []
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "उसी IP पते (या उसी API कुंजी से, यदि आपने कोई API कुंजी भेजी है) से एक मिनट में 600 से अधिक GET अनुरोध। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "detail"
                  ],
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "GET request rate limit exceeded. You can make up to 600 requests per minute."
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -fsS https://verification.didit.me/v3/status/"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "import requests\n\nresp = requests.get('https://verification.didit.me/v3/status/', timeout=5)\nresp.raise_for_status()\nfeed = resp.json()\nprint(feed['status'])\nfor service in feed['services']:\n    if service['status'] != 'operational':\n        print(service['key'], service['status'])"
          },
          {
            "lang": "javascript",
            "label": "JavaScript",
            "source": "const feed = await fetch('https://verification.didit.me/v3/status/').then((r) => r.json());\nconsole.log(feed.status);\nconst affected = feed.services.filter((s) => s.status !== 'operational');\nconsole.log(affected.map((s) => `${s.key}: ${s.status}`));"
          }
        ],
        "x-didit-sdk": {
          "resource": "system",
          "method": "retrieve_status",
          "auth": "public",
          "server": false
        }
      }
    },
    "/v3/organization/bank-verification-pricing/": {
      "get": {
        "summary": "बैंक सत्यापन कीमतें प्राप्त करें (सार्वजनिक, गैर-प्रमाणीकृत)",
        "description": "प्रत्येक देश में प्रत्येक बैंक सत्यापन विधि की सूची कीमत लौटाता है: अपने बैलेंस और लेन-देन ऐड-ऑन के साथ बैंक साइन-इन, और खाता जाँच। कोई देश आज जो विधि प्रदान नहीं करता है, वह बिना किसी कीमत के अनुपलब्ध के रूप में दिखाई देती है। वर्कफ़्लो बनाने से पहले बैंक चरण को उद्धृत करने के लिए, या अपने स्वयं के उत्पाद में बैंक कीमतें दिखाने के लिए इसका उपयोग करें।\n\nसार्वजनिक: कोई प्रमाणीकरण हेडर न भेजें। रिस्पॉन्स में कोई संगठन डेटा नहीं होता है और यह प्रत्येक कॉलर के लिए समान होता है। इसे एक घंटे के लिए सार्वजनिक रूप से कैश किया जाता है और इसमें एक `ETag` होता है, इसलिए कुछ भी न बदलने पर `304 Not Modified` प्राप्त करने के लिए `If-None-Match` भेजें।\n\nकोई विधि केवल वहीं `available` होती है जहाँ Didit इसे आज प्रोडक्शन में प्रदान करता है, और इसका `price_usd` अन्य सभी जगह `null` होता है, इसलिए फ़ीड कभी भी ऐसी कीमत नहीं दिखाता है जिसे आप खरीद नहीं सकते। `available: false` बिना किसी स्वीकृत कीमत वाले देश, देश द्वारा समर्थित न की जाने वाली विधि और ऐसे रूट को कवर करता है जो अभी चालू नहीं हुआ है।\n\nये आपके प्लान छूट से पहले की सूची कीमतें हैं। आपकी प्लान छूट पूरी बैंक कीमत पर लागू होती है, और बातचीत की गई या अनुबंध कीमत आपके संगठन के लिए सूची कीमत को प्रतिस्थापित करती है।",
        "operationId": "get_v3_bank_verification_pricing",
        "tags": [
          "Pricing"
        ],
        "security": [
          {}
        ],
        "parameters": [],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -fsS https://verification.didit.me/v3/organization/bank-verification-pricing/"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# This call needs no API key.\nclient = Didit()\n\nresult = client.pricing.bank_verification()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// This call needs no API key.\nconst didit = new Didit();\n\nconst result = await didit.pricing.bankVerification();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// This call needs no API key.\nclient := didit.NewClient()\n\nresult, err := client.Pricing.BankVerification(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// This call needs no API key.\nDidit client = new Didit();\n\nvar result = client.pricing().bankVerification();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// This call needs no API key.\n$didit = new DiditClient();\n\n$result = $didit->pricing->bankVerification();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# This call needs no API key.\ndidit = Didit::Client.new\n\nresult = didit.pricing.bank_verification\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// This call needs no API key.\nusing var client = new DiditClient();\n\nvar result = await client.Pricing.BankVerificationAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-sdk": {
          "resource": "pricing",
          "method": "bank_verification",
          "auth": "none",
          "server": true
        },
        "responses": {
          "200": {
            "description": "देश के अनुसार बैंक सत्यापन की सूचीबद्ध कीमतें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankVerificationPricing"
                },
                "examples": {
                  "Two countries": {
                    "summary": "दोनों विधियों वाला एक देश, दोनों में से किसी भी विधि के बिना एक देश",
                    "value": {
                      "currency": "USD",
                      "statement_upload": {
                        "price_usd": "0.0000",
                        "included_after_charged_bank_attempt": true,
                        "standalone_available": false
                      },
                      "own_provider_fee_usd": "0.0200",
                      "countries": {
                        "GBR": {
                          "name": "United Kingdom",
                          "methods": {
                            "open_banking": {
                              "available": true,
                              "market": "UK and EEA",
                              "price_usd": "0.7900",
                              "add_ons": {
                                "balance": "0.3500",
                                "transactions": "1.3000"
                              }
                            },
                            "account_lookup": {
                              "available": true,
                              "price_usd": "0.4000"
                            }
                          }
                        },
                        "CAN": {
                          "name": "Canada",
                          "methods": {
                            "open_banking": {
                              "available": false,
                              "market": null,
                              "price_usd": null,
                              "add_ons": {}
                            },
                            "account_lookup": {
                              "available": false,
                              "price_usd": null
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "304": {
            "description": "संशोधित नहीं: `If-None-Match` में आपके द्वारा भेजा गया `ETag` अभी भी मेल खाता है। कोई बॉडी नहीं।"
          }
        }
      }
    },
    "/v3/session/{sessionId}/simulate/": {
      "post": {
        "summary": "सैंडबॉक्स सत्र की स्थिति का अनुकरण करें",
        "description": "फ़्लो को चलाए बिना, अपने बैकएंड से किसी सैंडबॉक्स सत्र पर बाद में एक टर्मिनल स्थिति लागू करें। केवल सैंडबॉक्स एप्लिकेशन: एक लाइव सत्र `404` लौटाता है। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) सत्रों के लिए काम करता है।\n\n`new_status` सेट करें, या `scenario` या `risk` को इसे प्रदान करने दें। `risk` (या परिदृश्य के मैजिक मानों में शामिल पहला जोखिम) सत्र में वह चेतावनी जोड़ता है। यह परिवर्तन सत्र की गतिविधि में दर्ज किया जाता है।\n\n`send_webhooks` (डिफ़ॉल्ट `true`) ठीक वही webhooks भेजता है जो एक वास्तविक स्थिति परिवर्तन भेजता है। `false` के साथ स्थिति अभी भी बदलती है और कंसोल अभी भी लाइव अपडेट होता है, लेकिन कोई webhook लॉग या भेजा नहीं जाता है, मिस्ड-webhook रिकवरी उस निर्णय को कभी फिर से नहीं भेजती है, और अगला स्थिति परिवर्तन सामान्य रूप से webhooks भेजता है। रिस्पॉन्स लागू किए गए मान को वापस दर्शाता है।\n\n`write:sessions` विशेषाधिकार की आवश्यकता है; एक स्कोप्ड API कुंजी को सत्रों के लिए राइट एक्सेस की आवश्यकता होती है। एक अज्ञात `session_id` `404` लौटाता है और किसी अन्य एप्लिकेशन का सत्र `403` लौटाता है, दोनों बॉडी पढ़े जाने से पहले; एक लाइव सत्र केवल बॉडी सत्यापित होने के बाद `404` लौटाता है। सत्र के अपने token के साथ होस्टेड फ़्लो से अनुकरण करने के लिए, `POST /v3/session/{sessionId}/sandbox/simulate/` का उपयोग करें। परिदृश्य कैटलॉग के लिए [सैंडबॉक्स और टेस्ट डेटा](/hi/integration/sandbox-testing) देखें।",
        "operationId": "post_v3_session_simulate",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सैंडबॉक्स सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxSimulateRequest"
              },
              "examples": {
                "Scenario Without Webhooks": {
                  "summary": "webhook भेजे बिना किसी परिदृश्य के माध्यम से अस्वीकृत करें",
                  "value": {
                    "scenario": "decline_aml_hit",
                    "send_webhooks": false
                  }
                },
                "Status Only": {
                  "summary": "स्वीकृत करें और सामान्य webhooks भेजें",
                  "value": {
                    "new_status": "Approved"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "स्थिति बदल गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxSimulateResponse"
                },
                "examples": {
                  "Simulated": {
                    "summary": "किसी परिदृश्य के माध्यम से अस्वीकृत, webhook नहीं भेजे गए",
                    "value": {
                      "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "previous_status": "In Progress",
                      "status": "Declined",
                      "scenario": "decline_aml_hit",
                      "risk": "POSSIBLE_MATCH_FOUND",
                      "send_webhooks": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: एक अज्ञात परिदृश्य या जोखिम, कोई `new_status` नहीं जब न तो `scenario` और न ही `risk` कोई प्रदान करता है, एक स्थिति जो यह endpoint सेट नहीं करता है, या सत्र में पहले से ही अनुरोधित स्थिति है (एक साधारण JSON सरणी)।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown Scenario": {
                    "summary": "scenario कैटलॉग में नहीं है",
                    "value": {
                      "scenario": [
                        "Unknown sandbox scenario: 'not-a-scenario'."
                      ]
                    }
                  },
                  "Unknown Risk": {
                    "summary": "risk कैटलॉग में नहीं है",
                    "value": {
                      "risk": [
                        "Unknown sandbox risk case: 'NOT_A_RISK'."
                      ]
                    }
                  },
                  "Missing new_status": {
                    "summary": "कोई new_status, परिदृश्य या जोखिम नहीं",
                    "value": {
                      "new_status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid new_status": {
                    "summary": "एक ऐसी स्थिति जो सिमुलेशन द्वारा सेट नहीं की जाती है",
                    "value": {
                      "new_status": [
                        "\"Resubmitted\" is not a valid choice."
                      ]
                    }
                  },
                  "Same Status": {
                    "summary": "सत्र का यह स्टेटस पहले से ही है",
                    "value": [
                      "The new status is the same as the current status."
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, कॉलर के पास `write:sessions` विशेषाधिकार नहीं है, स्कोप्ड API कुंजी के पास इस endpoint के लिए आवश्यक एक्सेस नहीं है, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "कॉलर के पास write:sessions की कमी है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "इस एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no write access to sessions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई सत्र मौजूद नहीं है, या यह एक लाइव (गैर-सैंडबॉक्स) सत्र है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात या लाइव सत्र",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/simulate/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"scenario\": \"decline_aml_hit\", \"send_webhooks\": false}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.simulate(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    scenario=\"decline_aml_hit\",\n    send_webhooks=False,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.simulate(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  scenario: \"decline_aml_hit\",\n  send_webhooks: false,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Simulate(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", didit.SandboxSimulateRequest{\n\tScenario:     didit.String(\"decline_aml_hit\"),\n\tSendWebhooks: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SandboxSimulateRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().simulate(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", SandboxSimulateRequest.builder()\n        .scenario(\"decline_aml_hit\")\n        .sendWebhooks(false)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->simulate('3fa85f64-5717-4562-b3fc-2c963f66afa6', [\n    'scenario' => 'decline_aml_hit',\n    'send_webhooks' => false,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.simulate(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  scenario: \"decline_aml_hit\",\n  send_webhooks: false\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.SimulateAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", new SandboxSimulateRequest\n{\n    Scenario = \"decline_aml_hit\",\n    SendWebhooks = false,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "simulate",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/session/{sessionId}/sandbox/simulate/": {
      "post": {
        "summary": "क्लाइंट से सैंडबॉक्स सत्र की स्थिति का अनुकरण करें",
        "description": "वही सिमुलेशन जो `POST /v3/session/{sessionId}/simulate/` के रूप में है, आपकी API कुंजी के बजाय सत्र के अपने `Session-Token` ([Create Session](/hi/sessions-api/create-session) द्वारा `session_token` में लौटाया गया) के साथ प्रमाणित, ताकि एक परीक्षण हार्नेस या होस्टेड फ़्लो इसे क्लाइंट से कॉल कर सके। अनुरोध का मुख्य भाग, रिस्पॉन्स और `send_webhooks` बिल्कुल उसी endpoint की तरह व्यवहार करते हैं。\n\nलाइव (गैर-सैंडबॉक्स) एप्लिकेशन का `Session-Token`, या ऐसा token जो पाथ में `sessionId` से मेल नहीं खाता, `404` लौटाता है। [Sandbox & Test Data](/hi/integration/sandbox-testing) देखें।",
        "operationId": "post_v3_session_sandbox_simulate",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "SessionTokenAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सैंडबॉक्स सत्यापन सत्र का UUID। यह प्रमाणित करने के लिए उपयोग किए गए Session-Token में एन्कोड किए गए सत्र से मेल खाना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SandboxSimulateRequest"
              },
              "examples": {
                "Scenario Without Webhooks": {
                  "summary": "webhook भेजे बिना किसी परिदृश्य के माध्यम से अस्वीकृत करें",
                  "value": {
                    "scenario": "decline_aml_hit",
                    "send_webhooks": false
                  }
                },
                "Status Only": {
                  "summary": "स्वीकृत करें और सामान्य webhooks भेजें",
                  "value": {
                    "new_status": "Approved"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "स्थिति बदल गई।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxSimulateResponse"
                },
                "examples": {
                  "Simulated": {
                    "summary": "किसी परिदृश्य के माध्यम से अस्वीकृत, webhook नहीं भेजे गए",
                    "value": {
                      "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "previous_status": "In Progress",
                      "status": "Declined",
                      "scenario": "decline_aml_hit",
                      "risk": "POSSIBLE_MATCH_FOUND",
                      "send_webhooks": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: एक अज्ञात परिदृश्य या जोखिम, कोई `new_status` नहीं जब न तो `scenario` और न ही `risk` कोई प्रदान करता है, एक स्थिति जो यह endpoint सेट नहीं करता है, या सत्र में पहले से ही अनुरोधित स्थिति है (एक साधारण JSON सरणी)।",
            "content": {
              "application/json": {
                "examples": {
                  "Unknown Scenario": {
                    "summary": "scenario कैटलॉग में नहीं है",
                    "value": {
                      "scenario": [
                        "Unknown sandbox scenario: 'not-a-scenario'."
                      ]
                    }
                  },
                  "Unknown Risk": {
                    "summary": "risk कैटलॉग में नहीं है",
                    "value": {
                      "risk": [
                        "Unknown sandbox risk case: 'NOT_A_RISK'."
                      ]
                    }
                  },
                  "Missing new_status": {
                    "summary": "कोई new_status, परिदृश्य या जोखिम नहीं",
                    "value": {
                      "new_status": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid new_status": {
                    "summary": "एक ऐसी स्थिति जो सिमुलेशन द्वारा सेट नहीं की जाती है",
                    "value": {
                      "new_status": [
                        "\"Resubmitted\" is not a valid choice."
                      ]
                    }
                  },
                  "Same Status": {
                    "summary": "सत्र का यह स्टेटस पहले से ही है",
                    "value": [
                      "The new status is the same as the current status."
                    ]
                  }
                }
              }
            }
          },
          "403": {
            "description": "`Session-Token` हेडर अनुपलब्ध या अमान्य है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Session Token": {
                    "summary": "अनुपलब्ध या अमान्य Session-Token",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "`Session-Token` किसी लाइव (गैर-सैंडबॉक्स) एप्लिकेशन का है, या पाथ में `sessionId` से मेल नहीं खाता है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "लाइव सत्र, या session_id / token बेमेल",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/sandbox/simulate/ \\\n  -H 'Session-Token: YOUR_SESSION_TOKEN' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"new_status\": \"Approved\", \"send_webhooks\": false}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "import requests\n\nresponse = requests.post(\n    \"https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/sandbox/simulate/\",\n    headers={\"Session-Token\": \"YOUR_SESSION_TOKEN\"},\n    json={\"new_status\": \"Approved\", \"send_webhooks\": False},\n)\nresponse.raise_for_status()\nprint(response.json())"
          }
        ],
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "simulate_sandbox",
          "auth": "device_token",
          "server": false
        }
      }
    },
    "/v3/session/{sessionId}/features/overrides/": {
      "get": {
        "summary": "किसी सत्र के चेक ओवरराइड सूचीबद्ध करें",
        "description": "उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र पर किसी व्यक्तिगत सुविधा (चरण) की स्थिति का प्रत्येक ओवरराइड, सबसे नए पहले और पेजिनेशन के बिना: लागू किए गए, व्यक्ति द्वारा फ़्लो समाप्त करने की प्रतीक्षा कर रहे (`pending_until_flow_finishes`) और रद्द किए गए, प्रत्येक इस जानकारी के साथ कि किसने अनुरोध किया, उनका कारण क्या था, और क्या यह तब लागू हुआ जब व्यक्ति अभी भी फ़्लो में था (`forced`)।\n\n`person_in_flow` आपको बताता है कि क्या `defer_until_flow_finishes: true` वाला कोई नया ओवरराइड प्रतीक्षा करेगा। `flow_finished_at` वह समय है जब व्यक्ति ने पिछली बार फ़्लो समाप्त किया था; जब वे अभी भी इसमें होते हैं (पुनः सबमिशन शामिल) और जब सत्र उनके समाप्त करने से पहले बंद हो गया था, तब यह `null` रहता है।\n\n`read:sessions` विशेषाधिकार की आवश्यकता है; स्कोप्ड API कुंजी को निर्णयों तक पढ़ने की पहुँच की आवश्यकता होती है।",
        "operationId": "get_v3_session_feature_overrides",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "सत्र के चेक ओवरराइड, सबसे नए पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "session_id",
                    "person_in_flow",
                    "flow_finished_at",
                    "overrides"
                  ],
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
                    },
                    "person_in_flow": {
                      "type": "boolean",
                      "description": "क्या व्यक्ति अभी भी फ़्लो में है, ताकि `defer_until_flow_finishes: true` वाला एक नया ओवरराइड प्रतीक्षा करे।",
                      "example": true
                    },
                    "flow_finished_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "व्यक्ति ने अंतिम बार फ़्लो कब पूरा किया। `null` जब तक वे अभी भी इसमें हैं (पुनः सबमिशन शामिल है) और जब सत्र उनके समाप्त करने से पहले बंद हो गया (छोड़ा गया, समय-सीमा समाप्त या फ़्लो के बीच में निर्णय लिया गया)।",
                      "example": null
                    },
                    "overrides": {
                      "type": "array",
                      "description": "सत्र का प्रत्येक ओवरराइड, सबसे नया पहले।",
                      "items": {
                        "$ref": "#/components/schemas/FeatureStatusOverride"
                      }
                    }
                  }
                },
                "examples": {
                  "Overrides": {
                    "summary": "एक ओवरराइड प्रतीक्षारत, एक लागू",
                    "value": {
                      "session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                      "person_in_flow": true,
                      "flow_finished_at": null,
                      "overrides": [
                        {
                          "id": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
                          "node_id": "feature_liveness_1",
                          "feature_type": "",
                          "feature_model": "Face",
                          "previous_status": "Declined",
                          "new_status": "Approved",
                          "state": "pending_until_flow_finishes",
                          "forced": false,
                          "reason": "Liveness retried with a reviewer present.",
                          "requested_by": {
                            "email": "reviewer@example.com",
                            "name": "Alex Reviewer",
                            "type": "CONSOLE_USER"
                          },
                          "requested_at": "2026-10-13T09:15:00Z",
                          "applied_at": null,
                          "cancelled_at": null,
                          "cancel_reason": null
                        },
                        {
                          "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                          "node_id": "feature_ocr_1",
                          "feature_type": "",
                          "feature_model": "KYC",
                          "previous_status": "In Review",
                          "new_status": "Approved",
                          "state": "applied",
                          "forced": true,
                          "reason": "Document manually verified by compliance.",
                          "requested_by": {
                            "email": "reviewer@example.com",
                            "name": "Alex Reviewer",
                            "type": "CONSOLE_USER"
                          },
                          "requested_at": "2026-10-13T09:15:00Z",
                          "applied_at": "2026-10-13T09:15:00Z",
                          "cancelled_at": null,
                          "cancel_reason": null
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, कॉलर के पास `read:sessions` विशेषाधिकार नहीं है, स्कोप्ड API कुंजी के पास इस endpoint के लिए आवश्यक एक्सेस नहीं है, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "कॉलर के पास read:sessions की कमी है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "इस एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no read access to decisions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई KYC या KYB सत्र मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET \\\n  https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.list_feature_overrides(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.listFeatureOverrides(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ListFeatureOverrides(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().listFeatureOverrides(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->listFeatureOverrides('3fa85f64-5717-4562-b3fc-2c963f66afa6');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.list_feature_overrides(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ListFeatureOverridesAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_feature_overrides",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/session/{sessionId}/features/overrides/{overrideId}/cancel/": {
      "post": {
        "summary": "फ़्लो समाप्त होने की प्रतीक्षा करने वाले चेक ओवरराइड को रद्द करें",
        "description": "किसी सुविधा (चरण) की स्थिति के ओवरराइड को रद्द करें जो अभी भी `pending_until_flow_finishes` है, ताकि यह कभी लागू न हो। चेक अपनी स्थिति बनाए रखता है, रद्दीकरण सत्र की गतिविधि में `FEATURE_OVERRIDE_CANCELLED` के रूप में दर्ज किया जाता है, और कोई webhook नहीं भेजा जाता है। रिस्पॉन्स `state: cancelled` और `cancel_reason: cancelled_by_reviewer` के साथ ओवरराइड है।\n\nपहले से लागू या रद्द किया गया ओवरराइड `feature_override_not_pending` कोड के साथ `409` लौटाता है। `GET /v3/session/{sessionId}/features/overrides/` के साथ या सुविधा स्थिति अपडेट द्वारा लौटाए गए `override` में ओवरराइड ID खोजें।\n\n`write:sessions` विशेषाधिकार की आवश्यकता है; स्कोप्ड API कुंजी को निर्णयों के लिए राइट एक्सेस की आवश्यकता होती है।",
        "operationId": "post_v3_session_feature_override_cancel",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          },
          {
            "in": "path",
            "name": "overrideId",
            "required": true,
            "description": "रद्द करने के लिए ओवरराइड का `id`।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ओवरराइड रद्द कर दिया गया है और कभी लागू नहीं होगा।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FeatureStatusOverride"
                },
                "examples": {
                  "Cancelled": {
                    "summary": "रद्द किया गया ओवरराइड",
                    "value": {
                      "id": "9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3",
                      "node_id": "feature_liveness_1",
                      "feature_type": "",
                      "feature_model": "Face",
                      "previous_status": "Declined",
                      "new_status": "Approved",
                      "state": "cancelled",
                      "forced": false,
                      "reason": "Liveness retried with a reviewer present.",
                      "requested_by": {
                        "email": "reviewer@example.com",
                        "name": "Alex Reviewer",
                        "type": "CONSOLE_USER"
                      },
                      "requested_at": "2026-10-13T09:15:00Z",
                      "applied_at": null,
                      "cancelled_at": "2026-10-13T09:20:00Z",
                      "cancel_reason": "cancelled_by_reviewer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, कॉलर के पास `write:sessions` विशेषाधिकार नहीं है, स्कोप्ड API कुंजी के पास इस endpoint के लिए आवश्यक एक्सेस नहीं है, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "कॉलर के पास write:sessions की कमी है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "इस एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई KYC या KYB सत्र मौजूद नहीं है, या सत्र में इस `overrideId` वाला कोई ओवरराइड नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Not found."
                    }
                  },
                  "Override Not Found": {
                    "summary": "सत्र पर इस id वाला कोई ओवरराइड नहीं है",
                    "value": {
                      "detail": "Override not found."
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "ओवरराइड पहले ही लागू हो चुका है या रद्द कर दिया गया था।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Pending": {
                    "summary": "केवल प्रतीक्षारत ओवरराइड को रद्द किया जा सकता है",
                    "value": {
                      "detail": "This override is no longer pending: it already applied or was cancelled.",
                      "code": "feature_override_not_pending"
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/features/overrides/9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3/cancel/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.cancel_feature_override(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.cancelFeatureOverride(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.CancelFeatureOverride(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().cancelFeatureOverride(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->cancelFeatureOverride('3fa85f64-5717-4562-b3fc-2c963f66afa6', '9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.cancel_feature_override(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.CancelFeatureOverrideAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", \"9b2f4c1e-8d3a-4e5f-a6b7-c8d9e0f1a2b3\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "cancel_feature_override",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/add/": {
      "post": {
        "summary": "नेटवर्क में एक टैग जोड़ें",
        "description": "नेटवर्क पर अपने एप्लिकेशन के टैग में से एक जोड़ें। नेटवर्क विवरण लौटाता है, जिसका `tags` नेटवर्क पर आपके एप्लिकेशन के टैग को सूचीबद्ध करता है, टैग जोड़े जाने पर `201` और नेटवर्क पर पहले से मौजूद होने पर `200` के साथ। किसी अन्य एप्लिकेशन से संबंधित, या गैर-मौजूद टैग 404 `Tag not found.` लौटाता है। इसके लिए पूर्ण-पहुँच API कुंजी, या कंसोल सदस्य के लिए `write:networks` की आवश्यकता होती है।",
        "operationId": "add_network_tag",
        "tags": [
          "Networks"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NetworkTagRequest"
              },
              "example": {
                "tag_uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/tags/add/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"tag_uuid\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.add_tag(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    tag_uuid=\"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.addTag(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  tag_uuid: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.AddTag(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", didit.NetworkTagRequest{\n\tTagUUID: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.NetworkTagRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().addTag(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", NetworkTagRequest.builder()\n        .tagUuid(\"7c9e6679-7425-40de-944b-e07fc1f90ae7\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->addTag('3fa85f64-5717-4562-b3fc-2c963f66afa6', [\n    'tag_uuid' => '7c9e6679-7425-40de-944b-e07fc1f90ae7',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.add_tag(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  tag_uuid: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.AddTagAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", new NetworkTagRequest\n{\n    TagUuid = \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "टैग जोड़ दिया गया था। नेटवर्क विवरण लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkDetailResponse"
                },
                "example": {
                  "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "network_id": "N-0042",
                  "name": null,
                  "status": "in_review",
                  "risk": {
                    "score": 82,
                    "band": "high",
                    "bar": 0.82
                  },
                  "pattern_types": [
                    "exact_same_device",
                    "same_email"
                  ],
                  "signal_types": [
                    "device",
                    "email"
                  ],
                  "member_counts": {
                    "total": 3,
                    "users": 3,
                    "businesses": 0,
                    "transaction_parties": 0
                  },
                  "member_status": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "not_completed": 1
                  },
                  "signal_coverage": {
                    "device": {
                      "signals": 1,
                      "subjects": 3,
                      "coverage": 1.0
                    },
                    "email": {
                      "signals": 1,
                      "subjects": 2,
                      "coverage": 0.6667
                    }
                  },
                  "first_activity_at": "2026-10-01T09:12:44Z",
                  "last_activity_at": "2026-10-12T16:03:10Z",
                  "stats": {
                    "members": {
                      "total": 3,
                      "users": 3,
                      "businesses": 0,
                      "transaction_parties": 0
                    },
                    "member_status": {
                      "approved": 1,
                      "declined": 1,
                      "in_review": 0,
                      "not_completed": 1
                    },
                    "signals": {
                      "total": 2,
                      "by_type": {
                        "device": {
                          "signals": 1,
                          "subjects": 3,
                          "coverage": 1.0
                        },
                        "email": {
                          "signals": 1,
                          "subjects": 2,
                          "coverage": 0.6667
                        }
                      }
                    }
                  },
                  "fraud_tags": [],
                  "risk_signals": {
                    "residential_proxy_reuse": {
                      "detected": false,
                      "signal_count": 0,
                      "max_subject_count": 0
                    },
                    "email_intelligence": {
                      "enriched_signal_count": 1,
                      "high_risk_count": 0,
                      "social_profile_count": 0
                    },
                    "phone_intelligence": {
                      "enriched_signal_count": 0,
                      "high_risk_count": 0
                    }
                  },
                  "reviewed_at": "2026-10-12T16:30:00Z",
                  "reviewed_by": "reviewer@example.com",
                  "review_reason": "Shared device across three new accounts.",
                  "notes_count": 0,
                  "sharing_mode": "global",
                  "cross_org_available": true,
                  "cross_org_unavailable_reason": null,
                  "tags": [
                    {
                      "uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "name": "SUSPICIOUS",
                      "color": "#6366F1",
                      "source": "custom",
                      "added_by": null,
                      "added_at": "2026-10-13T08:15:00Z"
                    }
                  ],
                  "outcomes": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "total": 3
                  },
                  "patterns": [
                    {
                      "type": "background",
                      "score": 0.8125,
                      "members": 3,
                      "reason": null,
                      "computed_at": "2026-10-13T08:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "200": {
            "description": "टैग पहले से ही नेटवर्क पर मौजूद था और उसे वैसा ही छोड़ दिया गया है। नेटवर्क विवरण लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkDetailResponse"
                },
                "example": {
                  "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "network_id": "N-0042",
                  "name": null,
                  "status": "in_review",
                  "risk": {
                    "score": 82,
                    "band": "high",
                    "bar": 0.82
                  },
                  "pattern_types": [
                    "exact_same_device",
                    "same_email"
                  ],
                  "signal_types": [
                    "device",
                    "email"
                  ],
                  "member_counts": {
                    "total": 3,
                    "users": 3,
                    "businesses": 0,
                    "transaction_parties": 0
                  },
                  "member_status": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "not_completed": 1
                  },
                  "signal_coverage": {
                    "device": {
                      "signals": 1,
                      "subjects": 3,
                      "coverage": 1.0
                    },
                    "email": {
                      "signals": 1,
                      "subjects": 2,
                      "coverage": 0.6667
                    }
                  },
                  "first_activity_at": "2026-10-01T09:12:44Z",
                  "last_activity_at": "2026-10-12T16:03:10Z",
                  "stats": {
                    "members": {
                      "total": 3,
                      "users": 3,
                      "businesses": 0,
                      "transaction_parties": 0
                    },
                    "member_status": {
                      "approved": 1,
                      "declined": 1,
                      "in_review": 0,
                      "not_completed": 1
                    },
                    "signals": {
                      "total": 2,
                      "by_type": {
                        "device": {
                          "signals": 1,
                          "subjects": 3,
                          "coverage": 1.0
                        },
                        "email": {
                          "signals": 1,
                          "subjects": 2,
                          "coverage": 0.6667
                        }
                      }
                    }
                  },
                  "fraud_tags": [],
                  "risk_signals": {
                    "residential_proxy_reuse": {
                      "detected": false,
                      "signal_count": 0,
                      "max_subject_count": 0
                    },
                    "email_intelligence": {
                      "enriched_signal_count": 1,
                      "high_risk_count": 0,
                      "social_profile_count": 0
                    },
                    "phone_intelligence": {
                      "enriched_signal_count": 0,
                      "high_risk_count": 0
                    }
                  },
                  "reviewed_at": "2026-10-12T16:30:00Z",
                  "reviewed_by": "reviewer@example.com",
                  "review_reason": "Shared device across three new accounts.",
                  "notes_count": 0,
                  "sharing_mode": "global",
                  "cross_org_available": true,
                  "cross_org_unavailable_reason": null,
                  "tags": [
                    {
                      "uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "name": "SUSPICIOUS",
                      "color": "#6366F1",
                      "source": "custom",
                      "added_by": null,
                      "added_at": "2026-10-13T08:15:00Z"
                    }
                  ],
                  "outcomes": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "total": 3
                  },
                  "patterns": [
                    {
                      "type": "background",
                      "score": 0.8125,
                      "members": 3,
                      "reason": null,
                      "computed_at": "2026-10-13T08:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body: `tag_uuid` गायब है या एक UUID नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tag_uuid": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "examples": {
                  "Missing tag_uuid": {
                    "summary": "tag_uuid मौजूद नहीं है",
                    "value": {
                      "tag_uuid": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid tag_uuid": {
                    "summary": "अमान्य tag_uuid",
                    "value": {
                      "tag_uuid": [
                        "Must be a valid UUID."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "अनुपलब्ध या अमान्य क्रेडेंशियल",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Networks endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `write:networks` आवश्यक है। जब संगठन के लिए Networks सक्षम नहीं होता है, तो `code: networks_not_entitled` के साथ भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Networks not enabled": {
                    "summary": "नेटवर्क सक्षम नहीं हैं",
                    "value": {
                      "detail": "Networks is disabled for this organization. Contact Didit support if you believe this is an error.",
                      "code": "networks_not_entitled"
                    }
                  },
                  "Restricted API key": {
                    "summary": "प्रतिबंधित API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "No permission": {
                    "summary": "कोई अनुमति नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Network not found": {
                    "summary": "नेटवर्क नहीं मिला",
                    "value": {
                      "detail": "Network not found."
                    }
                  },
                  "Tag not found": {
                    "summary": "टैग नहीं मिला",
                    "value": {
                      "detail": "Tag not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "networks",
          "method": "add_tag",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        }
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/tags/remove/": {
      "post": {
        "summary": "नेटवर्क से कोई टैग हटाएं",
        "description": "नेटवर्क से अपने एप्लिकेशन का कोई एक टैग हटाएं। नेटवर्क विवरण लौटाता है। जब टैग नेटवर्क पर नहीं होता है, या आपके एप्लिकेशन से संबंधित नहीं होता है, तो 404 मिलता है। इसके लिए पूर्ण-पहुँच वाली API कुंजी, या कंसोल सदस्य के लिए `write:networks` की आवश्यकता होती है।",
        "operationId": "remove_network_tag",
        "tags": [
          "Networks"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          },
          {
            "name": "network_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            },
            "description": "नेटवर्क UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NetworkTagRequest"
              },
              "example": {
                "tag_uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/tags/remove/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"tag_uuid\": \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.networks.remove_tag(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    tag_uuid=\"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.networks.removeTag(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  tag_uuid: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RemoveTag(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", didit.NetworkTagRequest{\n\tTagUUID: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.NetworkTagRequest;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.networks().removeTag(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", NetworkTagRequest.builder()\n        .tagUuid(\"7c9e6679-7425-40de-944b-e07fc1f90ae7\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->networks->removeTag('3fa85f64-5717-4562-b3fc-2c963f66afa6', [\n    'tag_uuid' => '7c9e6679-7425-40de-944b-e07fc1f90ae7',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.networks.remove_tag(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  tag_uuid: \"7c9e6679-7425-40de-944b-e07fc1f90ae7\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Networks.RemoveTagAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", new NetworkTagRequest\n{\n    TagUuid = \"7c9e6679-7425-40de-944b-e07fc1f90ae7\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "टैग को नेटवर्क से हटा दिया गया था। नेटवर्क विवरण लौटाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NetworkDetailResponse"
                },
                "example": {
                  "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                  "network_id": "N-0042",
                  "name": null,
                  "status": "in_review",
                  "risk": {
                    "score": 82,
                    "band": "high",
                    "bar": 0.82
                  },
                  "pattern_types": [
                    "exact_same_device",
                    "same_email"
                  ],
                  "signal_types": [
                    "device",
                    "email"
                  ],
                  "member_counts": {
                    "total": 3,
                    "users": 3,
                    "businesses": 0,
                    "transaction_parties": 0
                  },
                  "member_status": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "not_completed": 1
                  },
                  "signal_coverage": {
                    "device": {
                      "signals": 1,
                      "subjects": 3,
                      "coverage": 1.0
                    },
                    "email": {
                      "signals": 1,
                      "subjects": 2,
                      "coverage": 0.6667
                    }
                  },
                  "first_activity_at": "2026-10-01T09:12:44Z",
                  "last_activity_at": "2026-10-12T16:03:10Z",
                  "stats": {
                    "members": {
                      "total": 3,
                      "users": 3,
                      "businesses": 0,
                      "transaction_parties": 0
                    },
                    "member_status": {
                      "approved": 1,
                      "declined": 1,
                      "in_review": 0,
                      "not_completed": 1
                    },
                    "signals": {
                      "total": 2,
                      "by_type": {
                        "device": {
                          "signals": 1,
                          "subjects": 3,
                          "coverage": 1.0
                        },
                        "email": {
                          "signals": 1,
                          "subjects": 2,
                          "coverage": 0.6667
                        }
                      }
                    }
                  },
                  "fraud_tags": [],
                  "risk_signals": {
                    "residential_proxy_reuse": {
                      "detected": false,
                      "signal_count": 0,
                      "max_subject_count": 0
                    },
                    "email_intelligence": {
                      "enriched_signal_count": 1,
                      "high_risk_count": 0,
                      "social_profile_count": 0
                    },
                    "phone_intelligence": {
                      "enriched_signal_count": 0,
                      "high_risk_count": 0
                    }
                  },
                  "reviewed_at": "2026-10-12T16:30:00Z",
                  "reviewed_by": "reviewer@example.com",
                  "review_reason": "Shared device across three new accounts.",
                  "notes_count": 0,
                  "sharing_mode": "global",
                  "cross_org_available": true,
                  "cross_org_unavailable_reason": null,
                  "tags": [],
                  "outcomes": {
                    "approved": 1,
                    "declined": 1,
                    "in_review": 0,
                    "total": 3
                  },
                  "patterns": [
                    {
                      "type": "background",
                      "score": 0.8125,
                      "members": 3,
                      "reason": null,
                      "computed_at": "2026-10-13T08:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body: `tag_uuid` गायब है या एक UUID नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tag_uuid": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "examples": {
                  "Missing tag_uuid": {
                    "summary": "tag_uuid मौजूद नहीं है",
                    "value": {
                      "tag_uuid": [
                        "This field is required."
                      ]
                    }
                  },
                  "Invalid tag_uuid": {
                    "summary": "अमान्य tag_uuid",
                    "value": {
                      "tag_uuid": [
                        "Must be a valid UUID."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "अनुपलब्ध या अमान्य क्रेडेंशियल",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी किसी अन्य एप्लिकेशन से संबंधित है, या यह प्रतिबंधित एक्सेस वाली कुंजी है: Networks endpoints के लिए पूर्ण-एक्सेस कुंजी की आवश्यकता होती है। कंसोल सदस्य token के लिए `write:networks` आवश्यक है। जब संगठन के लिए Networks सक्षम नहीं होता है, तो `code: networks_not_entitled` के साथ भी लौटाया जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Networks not enabled": {
                    "summary": "नेटवर्क सक्षम नहीं हैं",
                    "value": {
                      "detail": "Networks is disabled for this organization. Contact Didit support if you believe this is an error.",
                      "code": "networks_not_entitled"
                    }
                  },
                  "Restricted API key": {
                    "summary": "प्रतिबंधित API कुंजी",
                    "value": {
                      "detail": "This API key has no access to this endpoint."
                    }
                  },
                  "No permission": {
                    "summary": "कोई अनुमति नहीं",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "नहीं मिला।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "description": "कोडित त्रुटियों पर मौजूद, उदाहरण के लिए `networks_not_entitled`।"
                    }
                  }
                },
                "examples": {
                  "Network not found": {
                    "summary": "नेटवर्क नहीं मिला",
                    "value": {
                      "detail": "Network not found."
                    }
                  },
                  "Tag not found": {
                    "summary": "टैग नहीं मिला",
                    "value": {
                      "detail": "Tag not found."
                    }
                  },
                  "Tag not on the network": {
                    "summary": "नेटवर्क पर टैग मौजूद नहीं है",
                    "value": {
                      "detail": "This tag is not on the network."
                    }
                  }
                }
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "networks",
          "method": "remove_tag",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        }
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/requests/{request_uuid}/remind/": {
      "post": {
        "summary": "ग्राहक को किसी अनुरोध की याद दिलाएं",
        "description": "प्रतीक्षारत ग्राहक अनुरोध का ईमेल उसी सत्यापित प्राप्तकर्ता को उसी सामग्री के साथ फिर से भेजें। आप किसी अनुरोध के लिए हर 24 घंटे में अधिकतम एक बार रिमाइंडर भेज सकते हैं। एक रिमाइंडर कुछ और नहीं बदलता है: अनुरोध की समय-सीमा वही रहती है और केस की स्थिति वही रहती है। प्रत्येक रिमाइंडर को केस पर `reminded` कार्रवाई के साथ CUSTOMER_REQUEST इवेंट के रूप में लॉग किया जाता है। रिस्पॉन्स का `delivery_status` यह दर्शाता है कि इस रिमाइंडर की डिलीवरी कैसे समाप्त हुई: SENT, SIMULATED (ईमेल नहीं भेजा गया था), या UNKNOWN (ईमेल स्वीकार किया गया हो सकता है; यह स्वचालित रूप से दोबारा नहीं भेजा जाता है)। `next_reminder_at` वह समय है जब आप इस अनुरोध के लिए फिर से रिमाइंडर भेज सकते हैं। जब ग्राहक के पास उत्तर देने के लिए अनुरोध नहीं रह जाता है तो `reason` के साथ 409 लौटाता है, और जब पिछले 24 घंटों में अनुरोध के लिए रिमाइंडर भेजा गया हो तो `retry_at` और एक `Retry-After` हेडर के साथ 429 लौटाता है। `write:cases` आवश्यक है।",
        "operationId": "organization_application_cases_requests_remind_create",
        "parameters": [
          {
            "in": "path",
            "name": "organization_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "description": "संगठन UUID।"
          },
          {
            "in": "path",
            "name": "application_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "description": "एप्लिकेशन UUID।"
          },
          {
            "in": "path",
            "name": "case_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "description": "केस UUID।"
          },
          {
            "in": "path",
            "name": "request_uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true,
            "description": "केस की अनुरोध सूची से ग्राहक अनुरोध UUID।"
          }
        ],
        "tags": [
          "Case Management"
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/requests/3fa85f64-5717-4562-b3fc-2c963f66afa6/remind/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nresult = client.cases.requests.remind(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nconst result = await didit.cases.requests.remind(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Cases.Requests.Remind(ctx, \"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nvar result = client.cases().requests().remind(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$result = $didit->cases->requests->remind('11111111-2222-3333-4444-555555555555', '11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\nresult = didit.cases.requests.remind(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"11111111-2222-3333-4444-555555555555\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nvar result = await client.Cases.Requests.RemindAsync(\"11111111-2222-3333-4444-555555555555\", \"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "रिमाइंडर रिकॉर्ड कर लिया गया और उसका ईमेल भेज दिया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request",
                    "reminded_at",
                    "delivery_status",
                    "next_reminder_at"
                  ],
                  "properties": {
                    "request": {
                      "$ref": "#/components/schemas/CustomerMessagingCaseRequest"
                    },
                    "reminded_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "यह रिमाइंडर कब रिकॉर्ड किया गया था।"
                    },
                    "delivery_status": {
                      "type": "string",
                      "enum": [
                        "SENT",
                        "SIMULATED",
                        "UNKNOWN"
                      ],
                      "description": "इस रिमाइंडर की डिलीवरी कैसे समाप्त हुई। SIMULATED: ईमेल नहीं भेजा गया था। UNKNOWN: ईमेल स्वीकार किया गया हो सकता है; यह स्वचालित रूप से दोबारा नहीं भेजा जाता है।"
                    },
                    "next_reminder_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "आप इस अनुरोध को दोबारा कब याद दिला सकते हैं: `reminded_at` के 24 घंटे बाद।"
                    }
                  }
                },
                "example": {
                  "request": {
                    "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                    "purpose": "confirm_details",
                    "language": "en",
                    "recipient": "customer@example.com",
                    "expires_at": "2026-10-20T09:00:00Z",
                    "actor_email": "reviewer@example.com",
                    "delivery_status": "SENT",
                    "delivered_at": "2026-10-13T09:00:04Z",
                    "cancelled_at": null,
                    "responded_at": null,
                    "response": null,
                    "has_attachment": false,
                    "created_at": "2026-10-13T09:00:00Z"
                  },
                  "reminded_at": "2026-10-14T10:30:00Z",
                  "delivery_status": "SENT",
                  "next_reminder_at": "2026-10-15T10:30:00Z"
                }
              }
            }
          },
          "400": {
            "description": "केस में एक समाधान अनुमोदन हेतु लंबित है। बॉडी स्ट्रिंग्स की एक सूची है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "example": [
                  "Customer messages require an active case without a pending resolution."
                ]
              }
            }
          },
          "403": {
            "description": "कॉलर के पास आवश्यक केस अनुमति का अभाव है।"
          },
          "404": {
            "description": "इस कॉलर के लिए अनुरोध या केस अनुपलब्ध है।"
          },
          "409": {
            "description": "अनुरोध अब ग्राहक की प्रतीक्षा नहीं कर रहा है, इसलिए उन्हें याद दिलाने के लिए कुछ भी नहीं है। `reason` बताता है कि क्यों: `answered` (ग्राहक ने रिस्पॉन्स दिया), `cancelled`, `expired`, `closed` (अनुरोध भेजे जाने के बाद केस का समाधान हो गया, भले ही उसे बाद में फिर से खोला गया हो), `not_actionable` (प्रगतिरत समीक्षा अपडेट में कुछ भी नहीं पूछा जाता है), `not_delivered` (पहला ईमेल नहीं भेजा गया है), या `contact_unavailable` (सत्यापित ईमेल अब उपलब्ध नहीं है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "case_request_not_waiting"
                      ]
                    },
                    "reason": {
                      "type": "string",
                      "enum": [
                        "answered",
                        "cancelled",
                        "expired",
                        "closed",
                        "not_actionable",
                        "not_delivered",
                        "contact_unavailable"
                      ]
                    }
                  }
                },
                "example": {
                  "detail": "This request no longer waits on the customer, so there is nothing to remind them of.",
                  "code": "case_request_not_waiting",
                  "reason": "answered"
                }
              }
            }
          },
          "429": {
            "description": "अनुरोध के लिए पिछले 24 घंटों में पहले ही रिमाइंडर भेजा जा चुका है। `retry_at` और `Retry-After` हेडर बताते हैं कि आप इसे दोबारा कब याद दिला सकते हैं।",
            "headers": {
              "Retry-After": {
                "description": "इस अनुरोध के लिए दोबारा याद दिलाने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 3600
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "case_request_reminder_too_soon"
                      ]
                    },
                    "retry_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "example": {
                  "detail": "This request was already reminded in the last 24 hours.",
                  "code": "case_request_reminder_too_soon",
                  "retry_at": "2026-10-15T10:30:00Z"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-didit-sdk": {
          "resource": "cases.requests",
          "method": "remind",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        }
      }
    },
    "/v3/session/{sessionId}/decision-email-preview/": {
      "post": {
        "summary": "सत्र के निर्णय ईमेल का पूर्वावलोकन करें",
        "description": "जब आप `send_email: true` के साथ सत्र को `Approved` या `Declined` पर सेट करते हैं, तब सत्र में कोई बदलाव किए बिना और कुछ भी भेजे बिना उस व्यक्ति को प्राप्त होने वाले ईमेल को रेंडर करें। रिस्पॉन्स विषय और HTML को ठीक वैसे ही दिखाता है जैसे वे भेजे जाते हैं, साथ ही प्राप्तकर्ता, प्रेषक, भाषा, और क्या परिवर्तन की पुष्टि करने पर वास्तव में ईमेल भेजा जाएगा (`will_be_sent`, `not_sent_reason`)।\n\nप्राप्तकर्ता व्यक्ति का अपना पता होता है: वह पता जिसे उन्होंने फ़्लो के ईमेल सत्यापन चरण में सत्यापित किया था, अन्यथा वह पता जो सत्र बनाते समय `contact_details` में दिया गया था। प्रेषक आपके एप्लिकेशन का सत्यापित प्रेषक डोमेन होता है जब व्हाइट लेबल लागू होता है (`sender_kind: customer`), अन्यथा Didit का प्रेषक (`sender_kind: didit`)।\n\nआपने जो पूर्वावलोकन किया था उसे ठीक उसी रूप में भेजने के लिए, उसी `new_status`, `send_email: true`, `email_address` को `recipient` पर सेट करके, `email_language` को `language` पर सेट करके और `email_preview_token` को `preview_token` पर सेट करके [Update Session Status](/hi/sessions-api/update-status) को कॉल करें। रसीद 15 मिनट के बाद समाप्त हो जाती है। जब पूर्वावलोकन के बाद से प्राप्तकर्ता, भाषा, सत्र स्थिति, प्रेषक या ईमेल बदल गया हो, तो कुछ भी बदलने से पहले अपडेट `409` लौटाता है; फिर से पूर्वावलोकन करें और नई रसीद के साथ पुष्टि करें।\n\n`Approved`, `Declined`, `In Review`, `Kyc Expired`, `Abandoned` या `Resubmitted` स्थिति में उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) सत्रों के लिए काम करता है। स्थिति की जाँच बॉडी सत्यापन से पहले चलती है। इसके लिए `write:sessions` विशेषाधिकार की आवश्यकता होती है; एक स्कोप्ड API कुंजी को निर्णयों के लिए राइट एक्सेस की आवश्यकता होती है। रिस्पॉन्स `Cache-Control: no-store` का उपयोग करते हैं: उन्हें संवेदनशील सत्यापन सामग्री के रूप में मानें।",
        "operationId": "post_v3_session_decision_email_preview",
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "in": "path",
            "name": "sessionId",
            "required": true,
            "description": "सत्यापन सत्र का UUID। उपयोगकर्ता (KYC) और व्यवसाय (KYB) दोनों सत्र ID स्वीकार करता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "new_status"
                ],
                "properties": {
                  "new_status": {
                    "type": "string",
                    "enum": [
                      "Approved",
                      "Declined"
                    ],
                    "description": "वह निर्णय जिसके ईमेल का आप पूर्वावलोकन करना चाहते हैं।",
                    "example": "Approved"
                  },
                  "email_language": {
                    "type": "string",
                    "default": "en",
                    "description": "ईमेल की भाषा, Update Session Status के समान डिफ़ॉल्ट। जो भाषा उपलब्ध नहीं है वह अंग्रेज़ी पर फ़ालबैक हो जाती है; रिस्पॉन्स में `language` बताता है कि किसका उपयोग किया गया है।",
                    "example": "en"
                  }
                }
              },
              "examples": {
                "Approved": {
                  "summary": "अंग्रेज़ी में स्वीकृत ईमेल का पूर्वावलोकन करें",
                  "value": {
                    "new_status": "Approved"
                  }
                },
                "Declined in Spanish": {
                  "summary": "स्पैनिश में अस्वीकृत ईमेल का पूर्वावलोकन करें",
                  "value": {
                    "new_status": "Declined",
                    "email_language": "es"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "केवल पूर्वावलोकन। सत्र अपरिवर्तित रहता है और कोई ईमेल नहीं भेजा जाता है।",
            "headers": {
              "Cache-Control": {
                "description": "हमेशा `no-store`: पूर्वावलोकन में सत्यापन सामग्री होती है और इसे कैश नहीं किया जाना चाहिए।",
                "schema": {
                  "type": "string",
                  "example": "no-store"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "recipient",
                    "recipient_source",
                    "sender",
                    "sender_name",
                    "sender_email",
                    "sender_kind",
                    "subject",
                    "html",
                    "text",
                    "language",
                    "will_be_sent",
                    "not_sent_reason",
                    "preview_token"
                  ],
                  "properties": {
                    "recipient": {
                      "type": "string",
                      "description": "वह पता जिस पर ईमेल जाता है। जब व्यक्ति के लिए कोई पता ज्ञात नहीं होता है तो एक खाली स्ट्रिंग: तब कोई ईमेल नहीं भेजा जा सकता है और `preview_token` भी खाली होता है। पुष्टि करते समय इसे `email_address` के रूप में पास करें।",
                      "example": "person@example.com"
                    },
                    "recipient_source": {
                      "type": "string",
                      "enum": [
                        "email_verification",
                        "contact_details",
                        ""
                      ],
                      "description": "`recipient` कहाँ से आता है। `email_verification`: वह पता जिसे व्यक्ति ने फ़्लो के ईमेल सत्यापन चरण में सत्यापित किया था। `contact_details`: सत्र निर्माण के समय `contact_details` में दिया गया पता। कोई पता न होने पर एक रिक्त स्ट्रिंग।",
                      "example": "email_verification"
                    },
                    "sender": {
                      "type": "string",
                      "description": "वह `From` हेडर जिसके साथ ईमेल जाता है।",
                      "example": "Example App <no-reply@mail.example.com>"
                    },
                    "sender_name": {
                      "type": "string",
                      "description": "`sender` का डिस्प्ले नाम वाला भाग।",
                      "example": "Example App"
                    },
                    "sender_email": {
                      "type": "string",
                      "format": "email",
                      "description": "`sender` का पता वाला भाग।",
                      "example": "no-reply@mail.example.com"
                    },
                    "sender_kind": {
                      "type": "string",
                      "enum": [
                        "customer",
                        "didit"
                      ],
                      "description": "`customer`: ईमेल आपके एप्लिकेशन के सत्यापित प्रेषक डोमेन (व्हाइट लेबल) से जाता है। `didit`: यह Didit के अपने प्रेषक से जाता है।",
                      "example": "customer"
                    },
                    "subject": {
                      "type": "string",
                      "description": "विषय पंक्ति ठीक वैसे ही जैसे भेजी गई है।",
                      "example": "Your verification has been approved in Example App"
                    },
                    "html": {
                      "type": "string",
                      "description": "ईमेल का HTML ठीक उसी रूप में जैसा वह भेजा गया है, जिसमें उसका लोगो डेटा URL के रूप में एम्बेडेड है। इसे सैंडबॉक्स किए गए फ़्रेम में रेंडर करें, कभी भी सीधे अपने एप्लिकेशन DOM में नहीं।",
                      "example": "<!DOCTYPE html><html><body>...</body></html>"
                    },
                    "text": {
                      "type": "string",
                      "description": "एक संक्षिप्त पूर्वावलोकन के लिए व्यक्ति के Messages थ्रेड के अनुसार ईमेल के शब्द प्लेन टेक्स्ट के रूप में (HTML वही ईमेल रहता है जो व्यक्ति को प्राप्त होता है)।",
                      "example": "Verification Approved\n\nYour identity has been successfully verified with Acme Pay. No further action is needed on your part."
                    },
                    "language": {
                      "type": "string",
                      "description": "ईमेल जिस भाषा में लिखा गया है। यदि आपके द्वारा अनुरोधित `email_language` उपलब्ध नहीं है, तो अंग्रेज़ी (`en`) का उपयोग किया जाता है।",
                      "example": "en"
                    },
                    "will_be_sent": {
                      "type": "boolean",
                      "description": "क्या `send_email: true` के साथ परिवर्तन की पुष्टि करने पर यह ईमेल भेजा जाता है। `not_sent_reason` सेट होने पर `false`।",
                      "example": true
                    },
                    "not_sent_reason": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "status_unchanged",
                        "notification_emails_disabled",
                        "no_recipient",
                        "sandbox",
                        null
                      ],
                      "description": "पुष्टि करने पर कोई ईमेल क्यों नहीं भेजा जाएगा, या भेजे जाने पर `null`। `status_unchanged`: सत्र की यह स्थिति पहले से ही है, इसलिए अपडेट से कुछ नहीं बदलता और कुछ नहीं भेजा जाता। `notification_emails_disabled`: सत्र `contact_details.send_notification_emails: true` के बिना बनाया गया था, इसलिए `contact_details` में दिए गए पते पर कोई निर्णय ईमेल नहीं जाता है। `no_recipient`: व्यक्ति के लिए कोई पता ज्ञात नहीं है। `sandbox`: एक सैंडबॉक्स सत्र जिसके प्राप्तकर्ता ने सैंडबॉक्स ईमेल डिलीवरी का विकल्प नहीं चुना है, इसलिए भेजना केवल सिम्युलेट किया जाता है।",
                      "example": null
                    },
                    "preview_token": {
                      "type": "string",
                      "description": "इस सटीक ईमेल के लिए हस्ताक्षरित रसीद, जो 15 मिनट के लिए मान्य है। इसे [Update Session Status](/hi/sessions-api/update-status) में `email_preview_token` के रूप में पास करें। जब कोई प्राप्तकर्ता नहीं होता है तो यह एक खाली स्ट्रिंग होती है।",
                      "example": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                    }
                  }
                },
                "examples": {
                  "Will Be Sent": {
                    "summary": "स्वीकृत ईमेल उस पते पर जाता है जिसे फ़्लो में सत्यापित किया गया है",
                    "value": {
                      "recipient": "person@example.com",
                      "recipient_source": "email_verification",
                      "sender": "Example App <no-reply@mail.example.com>",
                      "sender_name": "Example App",
                      "sender_email": "no-reply@mail.example.com",
                      "sender_kind": "customer",
                      "subject": "Your verification has been approved in Example App",
                      "html": "<!DOCTYPE html><html><body>...</body></html>",
                      "language": "en",
                      "will_be_sent": true,
                      "not_sent_reason": null,
                      "preview_token": "eyJkaWdlc3QiOiI0ZjJhIn0:1uExAm:Pl3x4mpleS1gnatureValue000000000000000"
                    }
                  },
                  "No Recipient": {
                    "summary": "व्यक्ति के लिए कोई पता ज्ञात नहीं है",
                    "value": {
                      "recipient": "",
                      "recipient_source": "",
                      "sender": "Example App <no-reply@mail.example.com>",
                      "sender_name": "Example App",
                      "sender_email": "no-reply@mail.example.com",
                      "sender_kind": "customer",
                      "subject": "Your verification has been declined in Example App",
                      "html": "<!DOCTYPE html><html><body>...</body></html>",
                      "language": "en",
                      "will_be_sent": false,
                      "not_sent_reason": "no_recipient",
                      "preview_token": ""
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्र उस स्थिति में नहीं है जिसे यह endpoint स्वीकार करता है (`{\"detail\": ...}`), या बॉडी अमान्य है (`{\"<field>\": [\"<message>\"]}`).",
            "content": {
              "application/json": {
                "examples": {
                  "Wrong Current Status": {
                    "summary": "सत्र ऐसी स्थिति में नहीं है जिसे यह endpoint स्वीकार करता है",
                    "value": {
                      "detail": "Only sessions with status Approved, Declined, In Review, Kyc Expired, Abandoned, Resubmitted can be updated. Current status: In Progress"
                    }
                  },
                  "Invalid new_status": {
                    "summary": "new_status Approved या Declined नहीं है",
                    "value": {
                      "new_status": [
                        "\"Resubmitted\" is not a valid choice."
                      ]
                    }
                  },
                  "Missing new_status": {
                    "summary": "आवश्यक फ़ील्ड छोड़ा गया",
                    "value": {
                      "new_status": [
                        "This field is required."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है।",
            "content": {
              "application/json": {
                "examples": {
                  "Expired API Key": {
                    "summary": "अपनी समाप्ति तिथि पार कर चुकी स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "क्रेडेंशियल मौजूद नहीं हैं, कॉलर के पास `write:sessions` विशेषाधिकार नहीं है, स्कोप्ड API कुंजी के पास इस endpoint के लिए आवश्यक एक्सेस नहीं है, या ऐसा `session_id` है जो किसी अन्य एप्लिकेशन का है।",
            "content": {
              "application/json": {
                "examples": {
                  "Invalid Credentials": {
                    "summary": "अनुपलब्ध या अमान्य x-api-key",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Missing Privilege": {
                    "summary": "कॉलर के पास write:sessions की कमी है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped Key Without Access": {
                    "summary": "इस एक्सेस के बिना स्कोप्ड API कुंजी",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस `session_id` वाला कोई KYC या KYB सत्र मौजूद नहीं है।",
            "content": {
              "application/json": {
                "examples": {
                  "Not Found": {
                    "summary": "अज्ञात session_id",
                    "value": {
                      "detail": "Not found."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST \\\n  https://verification.didit.me/v3/session/3fa85f64-5717-4562-b3fc-2c963f66afa6/decision-email-preview/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"new_status\": \"Approved\", \"email_language\": \"en\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.preview_decision_email(\n    \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    new_status=\"Approved\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.previewDecisionEmail(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", {\n  new_status: \"Approved\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.PreviewDecisionEmail(ctx, \"3fa85f64-5717-4562-b3fc-2c963f66afa6\", didit.SessionsPreviewDecisionEmailParams{\n\tNewStatus: \"Approved\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsPreviewDecisionEmailParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().previewDecisionEmail(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", SessionsPreviewDecisionEmailParams.builder()\n        .newStatus(SessionsPreviewDecisionEmailParams.NewStatus.of(\"Approved\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->previewDecisionEmail('3fa85f64-5717-4562-b3fc-2c963f66afa6', [\n    'new_status' => 'Approved',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.preview_decision_email(\n  \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  new_status: \"Approved\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.PreviewDecisionEmailAsync(\"3fa85f64-5717-4562-b3fc-2c963f66afa6\", new SessionsPreviewDecisionEmailParams\n{\n    NewStatus = \"Approved\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "preview_decision_email",
          "auth": "api_key",
          "server": true
        }
      }
    },
    "/v3/travel-rule/join/{token}/": {
      "get": {
        "summary": "फ्री-जॉइन आमंत्रण प्राप्त करें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। जब तक यह खुला है, यह उस निमंत्रण को दिखाता है जिसके लिए जॉइन लिंक है: किसने अनुरोध किया, यह किस पते पर गया, और कौन से डायरेक्टरी मान पहले से भरे जाएंगे। token ही प्रमाणीकरण है।",
        "operationId": "getTravelRuleJoinInvitation",
        "x-didit-sdk": {
          "resource": "travel_rule.join",
          "method": "get_invitation",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ज्वाइन लिंक से आमंत्रण token।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl https://verification.didit.me/v3/travel-rule/join/{token}/"
          }
        ],
        "responses": {
          "200": {
            "description": "आमंत्रण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleJoinInvitation"
                }
              }
            }
          },
          "404": {
            "description": "किसी भी आमंत्रण में यह लिंक नहीं है।"
          },
          "410": {
            "description": "आमंत्रण अब खुला नहीं है: समय-सीमा समाप्त, पहले से उपयोग किया गया, या वापस ले लिया गया।"
          }
        }
      },
      "post": {
        "summary": "निःशुल्क Travel Rule खाता पंजीकृत करें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। अनुरोध प्राप्त करने वाले प्रतिपक्ष VASP के लिए एक निःशुल्क Travel Rule खाता बनाता है। ईमेल वही पता होना चाहिए जिस पर निमंत्रण भेजा गया था। इस पर 6-वर्ण का कोड ईमेल किया जाता है; पूरा करने के लिए इसे verify endpoint पर भेजें। पंजीकरण प्रयासों को प्रति पता और प्रति IP रेट लिमिट किया जाता है।",
        "operationId": "registerTravelRuleJoin",
        "x-didit-sdk": {
          "resource": "travel_rule.join",
          "method": "register",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ज्वाइन लिंक से आमंत्रण token।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleJoinRegisterRequest"
              },
              "example": {
                "email": "compliance@example.com",
                "password": "a-long-passphrase"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/join/{token}/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\": \"compliance@example.com\", \"password\": \"a-long-passphrase\"}'"
          }
        ],
        "responses": {
          "202": {
            "description": "खाता बनाया गया था और एक कोड ईमेल किया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string",
                      "description": "प्रतिपक्ष को सत्यापन कोड के लिए अपना ईमेल जांचने के लिए कहता है।"
                    },
                    "email": {
                      "type": "string",
                      "format": "email",
                      "description": "वह पता जिस पर कोड भेजा गया था।"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "ईमेल पता आमंत्रित पते से मेल नहीं खाता, या पासवर्ड या पता अस्वीकार कर दिया गया था।"
          },
          "404": {
            "description": "किसी भी आमंत्रण में यह लिंक नहीं है।"
          },
          "410": {
            "description": "आमंत्रण अब खुला नहीं है: समय-सीमा समाप्त, पहले से उपयोग किया गया, या वापस ले लिया गया।"
          },
          "429": {
            "description": "शामिल होने के बहुत अधिक प्रयास। `X-RateLimit-*` हेडर उस बजट का नाम बताते हैं जो खर्च किया गया था।"
          }
        }
      }
    },
    "/v3/travel-rule/join/{token}/verify/": {
      "post": {
        "summary": "एक निःशुल्क Travel Rule खाता सत्यापित करें",
        "description": "सार्वजनिक, बिना प्रमाणीकरण वाला। ईमेल किए गए कोड का उपयोग करता है, निःशुल्क संगठन बनाता है और उन क्रेडेंशियल्स के साथ रिस्पॉन्स देता है जिनका उपयोग इसका एप्लिकेशन वर्कस्पेस endpoints पर करता है। Travel Rule डेटा प्राप्त करना निःशुल्क है।",
        "operationId": "verifyTravelRuleJoin",
        "x-didit-sdk": {
          "resource": "travel_rule.join",
          "method": "verify",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ज्वाइन लिंक से आमंत्रण token।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleJoinVerifyRequest"
              },
              "example": {
                "email": "compliance@example.com",
                "code": "123456"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/join/{token}/verify/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\": \"compliance@example.com\", \"code\": \"123456\"}'"
          }
        ],
        "responses": {
          "201": {
            "description": "संगठन और एप्लिकेशन क्रेडेंशियल।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleJoinCredentials"
                }
              }
            }
          },
          "400": {
            "description": "कोड या ईमेल अस्वीकार कर दिया गया था।"
          },
          "404": {
            "description": "किसी भी आमंत्रण में यह लिंक नहीं है।"
          },
          "410": {
            "description": "आमंत्रण अब खुला नहीं है: समय-सीमा समाप्त, पहले से उपयोग किया गया, या वापस ले लिया गया।"
          },
          "429": {
            "description": "शामिल होने के बहुत अधिक प्रयास। `X-RateLimit-*` हेडर उस बजट का नाम बताते हैं जो खर्च किया गया था।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/": {
      "get": {
        "summary": "निःशुल्क Travel Rule वर्कस्पेस प्राप्त करें",
        "description": "निःशुल्क योजना में शामिल हुए एप्लिकेशन के निःशुल्क वर्कस्पेस को पढ़ता है: डायरेक्टरी क्लेम, डोमेन प्रूफ, बिलिंग और Didit नेटवर्क लिस्टिंग।",
        "operationId": "getTravelRuleWorkspace",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "get",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/workspace/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.get()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.get();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.Get(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().get();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->get();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.get\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.GetAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कार्यस्थान।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspace"
                }
              }
            }
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/claim/": {
      "post": {
        "summary": "डायरेक्टरी प्रविष्टि पर दावा करें",
        "description": "इस वर्कस्पेस की डायरेक्टरी प्रविष्टि पर दावा करता है। जब कार्य ईमेल उस डोमेन पर होता है जिसे प्रविष्टि सूचीबद्ध करती है, तो दावा सिद्ध हो जाता है और तुरंत लागू होता है: VASP प्रोफ़ाइल और Travel Rule सेटिंग्स प्रविष्टि से भरी जाती हैं और Travel Rule चालू हो जाता है, ताकि इसमें अगला स्थानांतरण Didit नेटवर्क पर रूट हो। अन्यथा दावा समीक्षा की प्रतीक्षा करता है (`pending_review`)।",
        "operationId": "claimTravelRuleWorkspace",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "claim",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWorkspaceClaimRequest"
              },
              "example": {
                "vasp_id": "0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/workspace/claim/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"vasp_id\": \"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.claim(\n    vasp_id=\"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.claim({\n  vasp_id: \"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.Claim(ctx, didit.TravelRuleWorkspaceClaimRequest{\n\tVASPID: \"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleWorkspaceClaimRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().claim(TravelRuleWorkspaceClaimRequest.builder()\n        .vaspId(\"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->claim([\n    'vasp_id' => '0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.claim(vasp_id: \"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.ClaimAsync(new TravelRuleWorkspaceClaimRequest\n{\n    VaspId = \"0b0c9d3e-5a53-4a3e-9d6e-1f2f6f6a1c11\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कार्यस्थान उसकी दावा स्थिति के साथ।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspace"
                }
              }
            }
          },
          "400": {
            "description": "किसी भी डायरेक्टरी प्रविष्टि की यह id नहीं है।"
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/domain/code/": {
      "post": {
        "summary": "डोमेन सत्यापन कोड ईमेल करें",
        "description": "वर्कस्पेस के कार्य ईमेल पते पर एक सिंगल-यूज़ कोड ईमेल करता है ताकि यह साबित हो सके कि ईमेल डोमेन पर उसका नियंत्रण है। यह थ्रॉटल किया गया है, और प्रति कोड गलत प्रयासों की एक सीमित संख्या स्वीकार की जाती है। DNS विकल्प के लिए TXT रिकॉर्ड भी लौटाता है।",
        "operationId": "sendTravelRuleWorkspaceDomainCode",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "send_domain_code",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/workspace/domain/code/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.send_domain_code()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.sendDomainCode();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.SendDomainCode(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().sendDomainCode();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->sendDomainCode();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.send_domain_code\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.SendDomainCodeAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "डोमेन, उसकी स्थिति और TXT रिकॉर्ड।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspaceDomainCodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/domain/confirm/": {
      "post": {
        "summary": "डोमेन सत्यापन कोड की पुष्टि करें",
        "description": "ईमेल किए गए कोड का उपयोग करता है और ईमेल डोमेन को सत्यापित के रूप में चिह्नित करता है।",
        "operationId": "confirmTravelRuleWorkspaceDomain",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "confirm_domain",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWorkspaceDomainConfirmRequest"
              },
              "example": {
                "code": "123456"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/workspace/domain/confirm/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"code\": \"123456\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.confirm_domain(\n    code=\"123456\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.confirmDomain({\n  code: \"123456\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.ConfirmDomain(ctx, didit.TravelRuleWorkspaceDomainConfirmRequest{\n\tCode: \"123456\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleWorkspaceDomainConfirmRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().confirmDomain(TravelRuleWorkspaceDomainConfirmRequest.builder()\n        .code(\"123456\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->confirmDomain([\n    'code' => '123456',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.confirm_domain(code: \"123456\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.ConfirmDomainAsync(new TravelRuleWorkspaceDomainConfirmRequest\n{\n    Code = \"123456\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कार्यस्थान।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspace"
                }
              }
            }
          },
          "400": {
            "description": "कोड गलत है, इसकी समय-सीमा समाप्त हो गई है या यह पहले ही उपयोग किया जा चुका है।"
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/domain/dns/": {
      "post": {
        "summary": "इसके TXT रिकॉर्ड से डोमेन सत्यापित करें",
        "description": "कोड endpoint द्वारा लौटाए गए `didit-tr-verify.<domain>` TXT रिकॉर्ड की जांच करता है और मेल खाने पर डोमेन को सत्यापित चिह्नित करता है। दो प्रमाणों में से एक, ईमेल किया गया कोड या TXT रिकॉर्ड, पर्याप्त है।",
        "operationId": "verifyTravelRuleWorkspaceDomainDns",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "verify_domain_dns",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/workspace/domain/dns/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.verify_domain_dns()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.verifyDomainDns();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.VerifyDomainDNS(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().verifyDomainDns();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->verifyDomainDns();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.verify_domain_dns\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.VerifyDomainDnsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "कार्यस्थान।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspace"
                }
              }
            }
          },
          "400": {
            "description": "TXT रिकॉर्ड नहीं मिला या मेल नहीं खाता है।"
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/travel-rule/workspace/billing/": {
      "post": {
        "summary": "आउटबाउंड बिलिंग सक्षम करें",
        "description": "कार्यस्थान के लिए आउटबाउंड Travel Rule बिलिंग चालू करता है। प्राप्त करना निःशुल्क रहता है। इसे API के माध्यम से वापस बंद नहीं किया जा सकता है: Didit सहायता से संपर्क करें।",
        "operationId": "enableTravelRuleWorkspaceBilling",
        "x-didit-sdk": {
          "resource": "travel_rule.workspace",
          "method": "enable_billing",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWorkspaceBillingRequest"
              },
              "example": {
                "enabled": true
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/workspace/billing/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"enabled\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.workspace.enable_billing(\n    enabled=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.workspace.enableBilling({\n  enabled: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.Workspace.EnableBilling(ctx, didit.TravelRuleWorkspaceBillingRequest{\n\tEnabled: didit.Bool(true),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleWorkspaceBillingRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().workspace().enableBilling(TravelRuleWorkspaceBillingRequest.builder()\n        .enabled(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->workspace->enableBilling([\n    'enabled' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.workspace.enable_billing(enabled: true)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Workspace.EnableBillingAsync(new TravelRuleWorkspaceBillingRequest\n{\n    Enabled = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "`billing_enabled` true वाला कार्यस्थान।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWorkspace"
                }
              }
            }
          },
          "400": {
            "description": "`enabled` false था।"
          },
          "404": {
            "description": "यह एप्लिकेशन मुफ़्त में शामिल नहीं हुआ, इसलिए इसके पास कोई मुफ़्त कार्यस्थान नहीं है।"
          }
        }
      }
    },
    "/v3/investigator/summary/": {
      "get": {
        "operationId": "investigator_summary",
        "summary": "जांचकर्ता सारांश",
        "description": "स्टेज, कतार की संख्या, आज तैयार की गई और निर्णय ली गई रिपोर्टें, 30-दिवसीय सहमति, कीमतें और प्रत्येक कतार का स्वायत्तता स्तर। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (रीड) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "stage": {
                      "type": "string"
                    },
                    "last_report_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true
                    },
                    "prepared_today": {
                      "type": "integer"
                    },
                    "ready_to_accept": {
                      "type": "integer"
                    },
                    "open": {
                      "type": "integer"
                    },
                    "decided_today": {
                      "type": "integer"
                    },
                    "automation_rate_month": {
                      "type": "number",
                      "nullable": true
                    },
                    "preparing": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          },
          {
            "in": "query",
            "name": "timezone",
            "schema": {
              "type": "string"
            },
            "description": "IANA समय क्षेत्र (उदाहरण के लिए `Europe/Madrid`) जिससे \"आज\" की गणना की जाती है। डिफ़ॉल्ट रूप से UTC।"
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_summary",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_summary()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrieveSummary();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrieveSummary(ctx, didit.InvestigatorRetrieveSummaryParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrieveSummary();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrieveSummary();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_summary\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrieveSummaryAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/queue/": {
      "get": {
        "operationId": "investigator_queue",
        "summary": "Investigator कतार सूचीबद्ध करें",
        "description": "ओपन रिपोर्टें, सबसे पहले **स्वीकार करने के लिए तैयार**, फिर समय सीमा, जोखिम और प्रतीक्षा के आधार पर। `counts` दायरे में आने वाले प्रत्येक प्रकार को कवर करता है। `count` अधिकतम 100 तक सीमित है। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (रीड) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "counts": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InvestigatorQueueRow"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          },
          {
            "in": "query",
            "name": "kind",
            "schema": {
              "type": "string"
            },
            "description": "`session`, `business_session`, `transaction` या `case`, या कॉमा द्वारा अलग किए गए कई मान।"
          },
          {
            "in": "query",
            "name": "queue",
            "schema": {
              "type": "string",
              "enum": [
                "kyc",
                "kyb",
                "aml",
                "transactions",
                "cases"
              ]
            }
          },
          {
            "in": "query",
            "name": "recommendation",
            "schema": {
              "type": "string",
              "enum": [
                "approve",
                "decline",
                "escalate",
                "request"
              ]
            }
          },
          {
            "in": "query",
            "name": "confidence",
            "schema": {
              "type": "string",
              "enum": [
                "high",
                "moderate",
                "low"
              ]
            }
          },
          {
            "in": "query",
            "name": "ready",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "search",
            "schema": {
              "type": "string"
            },
            "description": "नाम, कंपनी, केस शीर्षक, संख्या, लेन-देन ID या आइटम ID।"
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "list_queue",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.investigator.list_queue():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.investigator.listQueue()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Investigator.ListQueueAutoPaging(ctx, didit.InvestigatorListQueueParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.investigator().listQueue()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->investigator->listQueue() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.investigator.list_queue.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Investigator.ListQueueAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/investigator/runs/{run_id}/": {
      "get": {
        "operationId": "investigator_run_retrieve",
        "summary": "Investigator रिपोर्ट प्राप्त करें",
        "description": "एक रन की पूरी रिपोर्ट। 404 जब रन के पास कोई पूर्ण रिपोर्ट नहीं होती है, या इसका आइटम हटा दिया गया था। प्रतिबंधित कुंजियों को `decisions` स्कोप (रीड) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorRunDetail"
                }
              }
            }
          },
          "404": {
            "description": "नहीं मिला, या कोई रिपोर्ट नहीं।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_run",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_run(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrieveRun(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrieveRun(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrieveRun(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrieveRun('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_run(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrieveRunAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/runs/{run_id}/accept/": {
      "post": {
        "operationId": "investigator_run_accept",
        "summary": "एक सिफ़ारिश स्वीकार करें",
        "description": "आइटम के सामान्य पथ के माध्यम से अनुशंसित कार्रवाई लागू करता है, ताकि आपके सामान्य webhook ट्रिगर हों। एक `narrative` इसे संपादित और स्वीकृत बनाता है। प्रतिबंधित कुंजियों को `decisions` स्कोप (राइट) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` (राइट) की भी आवश्यकता होती है। किसी सत्यापन या लेन-देन को एस्केलेट करने से एक केस खुलता है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorDecision"
                }
              }
            }
          },
          "409": {
            "description": "पहले ही निर्णय लिया जा चुका है, रिपोर्ट तैयार नहीं है, या कोई गार्डरेल आइटम को रोक रहा है।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvestigatorAcceptRequest"
              },
              "example": {
                "send_email": false
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "accept_run",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.accept_run(\n    \"11111111-2222-3333-4444-555555555555\",\n    send_email=False,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.acceptRun(\"11111111-2222-3333-4444-555555555555\", {\n  send_email: false,\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.AcceptRun(ctx, \"11111111-2222-3333-4444-555555555555\", didit.InvestigatorAcceptRequest{\n\tSendEmail: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.InvestigatorAcceptRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().acceptRun(\"11111111-2222-3333-4444-555555555555\", InvestigatorAcceptRequest.builder()\n        .sendEmail(false)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->acceptRun('11111111-2222-3333-4444-555555555555', [\n    'send_email' => false,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.accept_run(\n  \"11111111-2222-3333-4444-555555555555\",\n  send_email: false\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.AcceptRunAsync(\"11111111-2222-3333-4444-555555555555\", new InvestigatorAcceptRequest\n{\n    SendEmail = false,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/runs/{run_id}/override/": {
      "post": {
        "operationId": "investigator_run_override",
        "summary": "किसी सिफ़ारिश को ओवरराइड करें",
        "description": "एक श्रेणी और कारण के साथ दूसरी कार्रवाई करता है। साथ ही, अन्वेषक द्वारा अपने दम पर लिए गए निर्णय को भी ओवरराइड करता है, जब तक वह प्रभावी रहता है। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (राइट) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` (राइट) की भी आवश्यकता होती है। किसी सत्यापन या लेन-देन को एस्केलेट करने से एक केस खुल जाता है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorDecision"
                }
              }
            }
          },
          "409": {
            "description": "पहले ही निर्णय लिया जा चुका है, या कोई गार्डरेल आइटम को रोक रहा है।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvestigatorOverrideRequest"
              },
              "example": {
                "action": "decline",
                "category": "evidence_misread",
                "reason": "The proof of address is older than three months."
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "override_run",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.override_run(\n    \"11111111-2222-3333-4444-555555555555\",\n    action=\"decline\",\n    category=\"evidence_misread\",\n    reason=\"The proof of address is older than three months.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.overrideRun(\"11111111-2222-3333-4444-555555555555\", {\n  action: \"decline\",\n  category: \"evidence_misread\",\n  reason: \"The proof of address is older than three months.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.OverrideRun(ctx, \"11111111-2222-3333-4444-555555555555\", didit.InvestigatorOverrideRequest{\n\tAction:   \"decline\",\n\tCategory: \"evidence_misread\",\n\tReason:   \"The proof of address is older than three months.\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.InvestigatorOverrideRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().overrideRun(\"11111111-2222-3333-4444-555555555555\", InvestigatorOverrideRequest.builder()\n        .action(InvestigatorOverrideRequest.Action.of(\"decline\"))\n        .category(InvestigatorOverrideRequest.Category.of(\"evidence_misread\"))\n        .reason(\"The proof of address is older than three months.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->overrideRun('11111111-2222-3333-4444-555555555555', [\n    'action' => 'decline',\n    'category' => 'evidence_misread',\n    'reason' => 'The proof of address is older than three months.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.override_run(\n  \"11111111-2222-3333-4444-555555555555\",\n  action: \"decline\",\n  category: \"evidence_misread\",\n  reason: \"The proof of address is older than three months.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.OverrideRunAsync(\"11111111-2222-3333-4444-555555555555\", new InvestigatorOverrideRequest\n{\n    Action = \"decline\",\n    Category = \"evidence_misread\",\n    Reason = \"The proof of address is older than three months.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/runs/batch-accept/": {
      "post": {
        "operationId": "investigator_batch_accept",
        "summary": "बैच में सिफ़ारिशें स्वीकार करें",
        "description": "\"स्वीकार करने के लिए तैयार\" के रूप में चिह्नित 50 रिपोर्ट तक स्वीकार करता है। प्रत्येक का अपना निर्णय होता है: जिसे स्वीकार नहीं किया जा सकता, उसे उसके कारण के साथ छोड़ दिया जाता है। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (write) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` (write) की भी आवश्यकता होती है। किसी सत्यापन या लेन-देन को एस्केलेट करने पर एक केस खुलता है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorBatchAcceptResponse"
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvestigatorBatchAcceptRequest"
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "batch_accept_runs",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.batch_accept_runs(\n    run_ids=[\"11111111-2222-3333-4444-555555555555\"],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.batchAcceptRuns({\n  run_ids: [\"11111111-2222-3333-4444-555555555555\"],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.BatchAcceptRuns(ctx, didit.InvestigatorBatchAcceptRequest{\n\tRunIDs: []string{\"11111111-2222-3333-4444-555555555555\"},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.InvestigatorBatchAcceptRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().batchAcceptRuns(InvestigatorBatchAcceptRequest.builder()\n        .runIds(List.of(\"11111111-2222-3333-4444-555555555555\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->batchAcceptRuns([\n    'run_ids' => ['11111111-2222-3333-4444-555555555555'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.batch_accept_runs(run_ids: [\"11111111-2222-3333-4444-555555555555\"])\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.BatchAcceptRunsAsync(new InvestigatorBatchAcceptRequest\n{\n    RunIds = new string[] { \"11111111-2222-3333-4444-555555555555\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/transactions/{transaction_id}/": {
      "get": {
        "operationId": "investigator_transaction_retrieve",
        "summary": "लेन-देन की Investigator समीक्षा प्राप्त करें",
        "description": "लेन-देन की नवीनतम समीक्षा, या `investigator: null` जब इसकी कभी समीक्षा नहीं हुई थी। प्रतिबंधित कुंजियों को `decisions` और `transactions` स्कोप (रीड) की आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transaction_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "investigator": {
                      "$ref": "#/components/schemas/InvestigatorBlock"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "इस एप्लिकेशन का लेन-देन नहीं है।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "transaction_id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_transaction",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_transaction(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrieveTransaction(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrieveTransaction(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrieveTransaction(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrieveTransaction('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_transaction(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrieveTransactionAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/guardrails/": {
      "get": {
        "operationId": "investigator_guardrails",
        "summary": "लॉक किए गए गार्डरेल सूचीबद्ध करें",
        "description": "पाँच सुरक्षा उपाय जो प्रत्येक कतार पर लागू होते हैं। उन्हें बंद नहीं किया जा सकता। प्रतिबंधित कुंजियों को `decisions` स्कोप (रीड) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "key": {
                            "type": "string",
                            "enum": [
                              "sanctions_to_person",
                              "no_tipping_off",
                              "no_protected_characteristics",
                              "never_files_reports",
                              "every_decision_logged"
                            ]
                          },
                          "title": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "locked": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "list_guardrails",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.list_guardrails()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.listGuardrails();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.ListGuardrails(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().listGuardrails();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->listGuardrails();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.list_guardrails\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.ListGuardrailsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/dashboard/": {
      "get": {
        "operationId": "investigator_dashboard",
        "summary": "जांचकर्ता डैशबोर्ड",
        "description": "पिछले 30 दिन: समीक्षाएँ, निर्णय, ऑटोमेशन दर, बचाए गए घंटे, खर्च, ओवरराइड, गो-लाइव के बाद से गुणवत्ता नमूने, प्रति-कतार और साप्ताहिक आँकड़े। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (read) आवश्यक है; लेन-देन अलर्ट के लिए `transactions` भी आवश्यक है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "stage": {
                      "type": "string"
                    },
                    "window_days": {
                      "type": "integer"
                    },
                    "reviews": {
                      "type": "integer"
                    },
                    "decided": {
                      "type": "integer"
                    },
                    "automated": {
                      "type": "integer"
                    },
                    "automation_rate": {
                      "type": "number",
                      "nullable": true
                    },
                    "hours_saved": {
                      "type": "number",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_dashboard",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_dashboard()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrieveDashboard();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrieveDashboard(ctx, didit.InvestigatorRetrieveDashboardParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrieveDashboard();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrieveDashboard();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_dashboard\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrieveDashboardAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/performance/": {
      "get": {
        "operationId": "investigator_performance",
        "summary": "जांचकर्ता का प्रदर्शन",
        "description": "एक अवधि के लिए आपकी टीम के साथ सहमति, मात्रा, बचा हुआ समय, विश्वास स्कोर का कैलिब्रेशन, प्रति-कतार परिणाम, ओवरराइड के कारण और असहमति। प्रतिबंधित कुंजियों को `decisions` स्कोप (read) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "period": {
                      "type": "integer"
                    },
                    "start": {
                      "type": "string",
                      "format": "date"
                    },
                    "end": {
                      "type": "string",
                      "format": "date"
                    },
                    "investigated": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          },
          {
            "in": "query",
            "name": "period",
            "schema": {
              "type": "string",
              "enum": [
                "7",
                "30",
                "90"
              ],
              "default": "30"
            },
            "description": "दिन, जो आज समाप्त हो रहे हैं।"
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_performance",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_performance()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrievePerformance();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrievePerformance(ctx, didit.InvestigatorRetrievePerformanceParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrievePerformance();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrievePerformance();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_performance\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrievePerformanceAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/investigator/activity/": {
      "get": {
        "operationId": "investigator_activity",
        "summary": "इन्वेस्टिगेटर गतिविधि सूचीबद्ध करें",
        "description": "अपेंड-ओनली ऑडिट ट्रेल, सबसे नया पहले। एक बैच स्वीकृति एक प्रविष्टि है। प्रति समूह `counts` और `actors` जोड़ता है। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (रीड) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "counts": {
                      "type": "object",
                      "additionalProperties": true
                    },
                    "actors": {
                      "type": "array",
                      "items": {}
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "`id`, `at`, `kind`, `group`, `queue`, `run_id`, `item`, `actor`, `agent_version`, `data`, `report_version`, `steps`, `sources`, `batch`।"
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          },
          {
            "in": "query",
            "name": "group",
            "schema": {
              "type": "string",
              "enum": [
                "agent",
                "decisions",
                "overrides",
                "autonomy"
              ]
            }
          },
          {
            "in": "query",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "description": "Investigator के लिए `agent`, या किसी व्यक्ति का ईमेल।"
          },
          {
            "in": "query",
            "name": "since",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "until",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "list_activity",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.investigator.list_activity():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.investigator.listActivity()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Investigator.ListActivityAutoPaging(ctx, didit.InvestigatorListActivityParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.investigator().listActivity()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->investigator->listActivity() as $item) {\n    print_r($item);\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.investigator.list_activity.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.Investigator.ListActivityAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/investigator/activity/export/": {
      "get": {
        "operationId": "investigator_activity_export",
        "summary": "इन्वेस्टिगेटर गतिविधि एक्सपोर्ट करें",
        "description": "CSV के समान प्रविष्टियाँ, प्रति निर्णय एक पंक्ति, नवीनतम पहले, 10,000 प्रविष्टियों तक। प्रतिबंधित कुंजियों के लिए `decisions` स्कोप (read) की आवश्यकता होती है; लेन-देन अलर्ट के लिए `transactions` की भी आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "identity",
                "transactions"
              ],
              "default": "all"
            },
            "description": "`identity` (सत्र, और ऐसे केस जो किसी लेन-देन नियम द्वारा नहीं खोले गए हैं) या `transactions` (लेन-देन अलर्ट, और ऐसे केस जिन्हें किसी लेन-देन नियम ने खोला है)।"
          },
          {
            "in": "query",
            "name": "group",
            "schema": {
              "type": "string",
              "enum": [
                "agent",
                "decisions",
                "overrides",
                "autonomy"
              ]
            }
          },
          {
            "in": "query",
            "name": "actor",
            "schema": {
              "type": "string"
            },
            "description": "Investigator के लिए `agent`, या किसी व्यक्ति का ईमेल।"
          },
          {
            "in": "query",
            "name": "since",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "until",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "export_activity",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\ncontent = client.investigator.export_activity()\nwith open(\"download.csv\", \"wb\") as file:\n    file.write(content)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import { writeFile } from \"node:fs/promises\";\nimport Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst content = await didit.investigator.exportActivity();\nawait writeFile(\"download.csv\", Buffer.from(await content.arrayBuffer()));"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Investigator.ExportActivity(ctx, didit.InvestigatorExportActivityParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.csv\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.investigator().exportActivity()\n        .writeTo(Path.of(\"download.csv\"));"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$content = $didit->investigator->exportActivity();\n$content->saveTo('download.csv');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ncontent = didit.investigator.export_activity\nFile.binwrite(\"download.csv\", content)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar content = await client.Investigator.ExportActivityAsync();\nawait content.SaveToAsync(\"download.csv\");"
          }
        ]
      }
    },
    "/v3/investigator/settings/": {
      "get": {
        "operationId": "investigator_settings_retrieve",
        "summary": "Investigator सेटिंग्स प्राप्त करें",
        "description": "स्टेज (`none`, `shadow` या `live`), मासिक खर्च सीमा और इस महीने का खर्च। प्रतिबंधित कुंजियों के लिए `applications` स्कोप (पढ़ने) की आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorSettings"
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "retrieve_settings",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.retrieve_settings()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.retrieveSettings();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.RetrieveSettings(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().retrieveSettings();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->retrieveSettings();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.retrieve_settings\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.RetrieveSettingsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "patch": {
        "operationId": "investigator_settings_update",
        "summary": "Investigator सेटिंग्स अपडेट करें",
        "description": "स्टेज, मासिक खर्च सीमा, या दोनों बदलें। `none` से आगे बढ़ने के लिए ऐसे प्लान की आवश्यकता होती है जिसमें Investigator (Growth या उच्चतर) शामिल हो; `live` के लिए एक अनुबंध की भी आवश्यकता होती है जो इसकी कीमत तय करता है, यदि आपके पास कोई है। प्रतिबंधित कुंजियों को `applications` स्कोप (राइट) की आवश्यकता होती है।",
        "tags": [
          "Investigator"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvestigatorSettings"
                }
              }
            }
          },
          "400": {
            "description": "दोनों में से कोई भी फ़ील्ड नहीं भेजा गया, या अमान्य मान है।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "कुंजी में स्कोप की कमी है, आइटम का प्रकार पठनीय नहीं है, या प्लान में Investigator शामिल नहीं है।"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvestigatorSettings"
              },
              "example": {
                "stage": "shadow",
                "monthly_spend_limit": "500.00"
              }
            }
          }
        },
        "x-didit-sdk": {
          "resource": "investigator",
          "method": "update_settings",
          "auth": "api_key",
          "server": true
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.investigator.update_settings(\n    stage=\"shadow\",\n    monthly_spend_limit=\"500.00\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.investigator.updateSettings({\n  stage: \"shadow\",\n  monthly_spend_limit: \"500.00\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Investigator.UpdateSettings(ctx, didit.InvestigatorSettingsParam{\n\tStage:             didit.Some(didit.InvestigatorSettingsStage(\"shadow\")),\n\tMonthlySpendLimit: didit.String(\"500.00\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.InvestigatorSettings;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.investigator().updateSettings(InvestigatorSettings.builder()\n        .stage(InvestigatorSettings.Stage.of(\"shadow\"))\n        .monthlySpendLimit(\"500.00\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->investigator->updateSettings([\n    'stage' => 'shadow',\n    'monthly_spend_limit' => '500.00',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.investigator.update_settings(\n  stage: \"shadow\",\n  monthly_spend_limit: \"500.00\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Investigator.UpdateSettingsAsync(new InvestigatorSettings\n{\n    Stage = new InvestigatorSettingsStage(\"shadow\"),\n    MonthlySpendLimit = \"500.00\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/travel-rule/wallet-addresses/import/": {
      "post": {
        "summary": "वॉलेट पते बड़ी मात्रा में इंपोर्ट करें",
        "description": "एक ही कॉल में JSON या CSV फ़ाइल के रूप में अपनी Travel Rule पता पुस्तिका में 10,000 वॉलेट तक जोड़ें। पते को निजी रखने के लिए वॉलेट को उसके पते द्वारा, उसके लोअरकेस पते के SHA-256 (`address_hash`) द्वारा, या दोनों द्वारा भेजा जा सकता है। यह इंपोर्ट आइडेम्पोटेंट है: पुस्तिका में पहले से मौजूद वॉलेट को `existing` के रूप में रिपोर्ट किया जाता है और उसमें कोई बदलाव नहीं किया जाता है, इसलिए वही फ़ाइल दोबारा भेजी जा सकती है। प्रत्येक पंक्ति को अलग से मान्य किया जाता है, इसलिए एक गलत पंक्ति अन्य पंक्तियों को कभी विफल नहीं करती है। केवल अपने हैश द्वारा इंपोर्ट किया गया वॉलेट उस पते पर किए गए ट्रांसफ़र से मेल खाता है और किसी भी अन्य प्रविष्टि की तरह वॉलेट-स्वामित्व विजेट से सिद्ध किया जा सकता है।",
        "operationId": "importTravelRuleWalletAddresses",
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_addresses",
          "method": "bulk_import",
          "auth": "api_key",
          "server": true
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "required": [
                      "entries"
                    ],
                    "properties": {
                      "entries": {
                        "type": "array",
                        "minItems": 1,
                        "maxItems": 10000,
                        "items": {
                          "$ref": "#/components/schemas/WalletAddressImportRow"
                        }
                      }
                    }
                  },
                  {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 10000,
                    "items": {
                      "$ref": "#/components/schemas/WalletAddressImportRow"
                    }
                  }
                ]
              },
              "example": {
                "entries": [
                  {
                    "address": "0xBeneficiaryWallet01",
                    "chain": "ETH",
                    "holder_name": "Ana Diaz",
                    "holder_vendor_data": "user-042"
                  },
                  {
                    "address_hash": "4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e",
                    "chain": "bitcoin",
                    "holder_vendor_data": "user-043"
                  },
                  {
                    "address": "rExchangeSharedAddress01",
                    "chain": "XRP",
                    "memo": "104729",
                    "holder_name": "Ana Diaz"
                  }
                ]
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "अधिकतम 5 MB की एक UTF-8 CSV फ़ाइल जिसमें इसके कॉलम (पंक्ति फ़ील्ड या उनके उपनाम) नाम देने वाली एक हेडर पंक्ति होती है। खाली सेल को नहीं भेजे गए के रूप में गिना जाता है; जिन कॉलमों को इंपोर्ट नहीं पढ़ता है उन्हें अनदेखा कर दिया जाता है।"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl (JSON)",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/import/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"entries\": [{\"address\": \"0xBeneficiaryWallet01\", \"chain\": \"ETH\", \"holder_name\": \"Ana Diaz\"}, {\"address\": \"rExchangeSharedAddress01\", \"chain\": \"XRP\", \"memo\": \"104729\"}]}'"
          },
          {
            "lang": "curl",
            "label": "curl (CSV)",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/wallet-addresses/import/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -F 'file=@wallets.csv;type=text/csv'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.wallet_addresses.bulk_import(\n    body={\n        \"entries\": [{\n            \"address\": \"0xBeneficiaryWallet01\",\n            \"chain\": \"ETH\",\n            \"holder_name\": \"Ana Diaz\",\n            \"holder_vendor_data\": \"user-042\",\n        }, {\n            \"address_hash\": \"4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e\",\n            \"chain\": \"bitcoin\",\n            \"holder_vendor_data\": \"user-043\",\n        }, {\n            \"address\": \"rExchangeSharedAddress01\",\n            \"chain\": \"XRP\",\n            \"memo\": \"104729\",\n            \"holder_name\": \"Ana Diaz\",\n        }],\n    },\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.walletAddresses.bulkImport({\n  file: await fileFromPath(\"wallet-addresses.csv\"),\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.WalletAddresses.BulkImport(ctx, didit.TravelRuleWalletAddressesBulkImportParams{\n\tFile: didit.Some(didit.FileFromPath(\"wallet-addresses.csv\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport me.didit.Didit;\nimport me.didit.types.TravelRuleWalletAddressesBulkImportParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().walletAddresses().bulkImport(TravelRuleWalletAddressesBulkImportParams.builder()\n        .file(Path.of(\"wallet-addresses.csv\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->walletAddresses->bulkImport([\n    'file' => File::fromPath('wallet-addresses.csv'),\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.wallet_addresses.bulk_import(\n  body: {\n    entries: [{\n      address: \"0xBeneficiaryWallet01\",\n      chain: \"ETH\",\n      holder_name: \"Ana Diaz\",\n      holder_vendor_data: \"user-042\",\n    }, {\n      address_hash: \"4f7d2e1c9b8a7f6e5d4c3b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f2e\",\n      chain: \"bitcoin\",\n      holder_vendor_data: \"user-043\",\n    }, {\n      address: \"rExchangeSharedAddress01\",\n      chain: \"XRP\",\n      memo: \"104729\",\n      holder_name: \"Ana Diaz\",\n    }],\n  }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.WalletAddresses.BulkImportAsync(new TravelRuleWalletAddressesBulkImportParams\n{\n    File = FileUpload.FromPath(\"wallet-addresses.csv\"),\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रत्येक पंक्ति बनाई गई थी, पहले से ही बहीखाते में थी, या किसी पिछली पंक्ति की पुनरावृत्ति थी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletAddressImportReport"
                },
                "example": {
                  "total": 3,
                  "created": 2,
                  "existing": 1,
                  "duplicate": 0,
                  "failed": 0,
                  "rows": [
                    {
                      "row": 1,
                      "status": "existing",
                      "entry_id": "11111111-2222-3333-4444-555555555555",
                      "errors": {},
                      "duplicate_of_row": null
                    },
                    {
                      "row": 2,
                      "status": "created",
                      "entry_id": "22222222-3333-4444-5555-666666666666",
                      "errors": {},
                      "duplicate_of_row": null
                    },
                    {
                      "row": 3,
                      "status": "created",
                      "entry_id": "33333333-4444-5555-6666-777777777777",
                      "errors": {},
                      "duplicate_of_row": null
                    }
                  ]
                }
              }
            }
          },
          "207": {
            "description": "कम से कम एक पंक्ति विफल रही; अन्य पंक्तियों को इंपोर्ट कर लिया गया था। प्रत्येक विफल पंक्ति में उसकी त्रुटियों का उल्लेख है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WalletAddressImportReport"
                },
                "example": {
                  "total": 2,
                  "created": 1,
                  "existing": 0,
                  "duplicate": 0,
                  "failed": 1,
                  "rows": [
                    {
                      "row": 1,
                      "status": "created",
                      "entry_id": "44444444-5555-6666-7777-888888888888",
                      "errors": {},
                      "duplicate_of_row": null
                    },
                    {
                      "row": 2,
                      "status": "failed",
                      "entry_id": null,
                      "errors": {
                        "address": [
                          "Send address, address_hash or both."
                        ]
                      },
                      "duplicate_of_row": null
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "अनुरोध को स्वयं नहीं पढ़ा जा सकता: `entries` और `file` दोनों, या दोनों में से कोई नहीं; 10,000 से अधिक पंक्तियाँ; 5 MB से अधिक फ़ाइल, UTF-8 CSV न होना, हेडर पंक्ति के बिना या पंक्तियों के बिना।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "file": [
                    "At most 10000 rows per import."
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/counterparty-contacts/": {
      "get": {
        "summary": "प्रतिपक्ष संपर्क सूचीबद्ध करें",
        "description": "वे अनुपालन पते जिन पर EMAIL रेल आपके एप्लिकेशन के लिए लिख सकती है: Didit के प्लेटफ़ॉर्म संपर्क और आपके एप्लिकेशन के अपने निजी संपर्क, बाउंस हुए संपर्क भी शामिल, नवीनतम पहले। `limit` (डिफ़ॉल्ट 50) और `offset` के साथ पेजिनेटेड; `count` 100 पर रुक जाता है, इसलिए 100 का अर्थ 100 या अधिक है।",
        "operationId": "listTravelRuleCounterpartyContacts",
        "x-didit-sdk": {
          "resource": "travel_rule.counterparty_contacts",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "counterparty",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "केवल इस डायरेक्टरी प्रविष्टि के संपर्क। UUID होना चाहिए; एक रिक्त मान का अर्थ कोई फ़िल्टर नहीं है।"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "description": "पेज का आकार, डिफ़ॉल्ट 50।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "छोड़ने के लिए पंक्तियां।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/travel-rule/counterparty-contacts/?counterparty={vasp_id}' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.counterparty_contacts.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.counterpartyContacts.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.CounterpartyContacts.ListAutoPaging(ctx, didit.TravelRuleCounterpartyContactsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().counterpartyContacts().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->counterpartyContacts->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.counterparty_contacts.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.CounterpartyContacts.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "संपर्क।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TravelRuleCounterpartyContact"
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "next": null,
                  "previous": null,
                  "results": [
                    {
                      "uuid": "6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b",
                      "counterparty": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
                      "counterparty_name": "Example Counterparty VASP",
                      "email": "compliance@counterparty.example",
                      "name": "Compliance desk",
                      "source": "application",
                      "scope": "application",
                      "created_by": "",
                      "verified_at": null,
                      "is_invalid": false,
                      "invalid_reason": "",
                      "invalid_detail": "",
                      "invalid_at": null,
                      "created_at": "2026-10-19T09:00:00Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "`counterparty` एक UUID नहीं है।",
            "content": {
              "application/json": {
                "example": {
                  "counterparty": [
                    "Must be a valid UUID."
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "एक प्रतिपक्ष संपर्क जोड़ें",
        "description": "एक डायरेक्टरी प्रविष्टि के लिए एक निजी अनुपालन पता जोड़ता है। केवल आपका एप्लिकेशन इसे देखता और उपयोग करता है, और EMAIL रेल किसी भी प्लेटफ़ॉर्म संपर्क से पहले इस पर लिखती है। ऐसा पता जोड़ना जो प्रविष्टि में आपके अपने संपर्कों में पहले से मौजूद है, उस संपर्क को लौटाता है।",
        "operationId": "createTravelRuleCounterpartyContact",
        "x-didit-sdk": {
          "resource": "travel_rule.counterparty_contacts",
          "method": "create",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleCounterpartyContactCreate"
              },
              "example": {
                "counterparty": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
                "email": "compliance@counterparty.example",
                "name": "Compliance desk"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/counterparty-contacts/ \\\n  -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \\\n  -d '{\"counterparty\": \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\", \"email\": \"compliance@counterparty.example\", \"name\": \"Compliance desk\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.counterparty_contacts.create(\n    counterparty=\"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n    email=\"compliance@counterparty.example\",\n    name=\"Compliance desk\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.counterpartyContacts.create({\n  counterparty: \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n  email: \"compliance@counterparty.example\",\n  name: \"Compliance desk\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.CounterpartyContacts.Create(ctx, didit.TravelRuleCounterpartyContactCreate{\n\tCounterparty: \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n\tEmail:        \"compliance@counterparty.example\",\n\tName:         didit.String(\"Compliance desk\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleCounterpartyContactCreate;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().counterpartyContacts().create(TravelRuleCounterpartyContactCreate.builder()\n        .counterparty(\"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\")\n        .email(\"compliance@counterparty.example\")\n        .name(\"Compliance desk\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->counterpartyContacts->create([\n    'counterparty' => '0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91',\n    'email' => 'compliance@counterparty.example',\n    'name' => 'Compliance desk',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.counterparty_contacts.create(\n  counterparty: \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n  email: \"compliance@counterparty.example\",\n  name: \"Compliance desk\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.CounterpartyContacts.CreateAsync(new TravelRuleCounterpartyContactCreate\n{\n    Counterparty = \"0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91\",\n    Email = \"compliance@counterparty.example\",\n    Name = \"Compliance desk\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "201": {
            "description": "संपर्क जोड़ दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleCounterpartyContact"
                },
                "example": {
                  "uuid": "6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b",
                  "counterparty": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
                  "counterparty_name": "Example Counterparty VASP",
                  "email": "compliance@counterparty.example",
                  "name": "Compliance desk",
                  "source": "application",
                  "scope": "application",
                  "created_by": "",
                  "verified_at": null,
                  "is_invalid": false,
                  "invalid_reason": "",
                  "invalid_detail": "",
                  "invalid_at": null,
                  "created_at": "2026-10-19T09:00:00Z"
                }
              }
            }
          },
          "400": {
            "description": "कोई फ़ील्ड अनुपलब्ध या अमान्य है, या किसी डायरेक्टरी प्रविष्टि की यह id नहीं है।",
            "content": {
              "application/json": {
                "example": {
                  "counterparty": [
                    "No directory entry with this id."
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/counterparty-contacts/{contact_uuid}/": {
      "delete": {
        "summary": "एक प्रतिपक्ष संपर्क हटाएं",
        "description": "आपके एप्लिकेशन के स्वयं के संपर्कों में से एक को हटाता है। EMAIL रेल तुरंत इस पर लिखना बंद कर देती है। प्लेटफ़ॉर्म संपर्कों को हटाया नहीं जा सकता।",
        "operationId": "deleteTravelRuleCounterpartyContact",
        "x-didit-sdk": {
          "resource": "travel_rule.counterparty_contacts",
          "method": "delete",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "contact_uuid",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X DELETE https://verification.didit.me/v3/travel-rule/counterparty-contacts/{contact_uuid}/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.travel_rule.counterparty_contacts.delete(\n    \"11111111-2222-3333-4444-555555555555\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.travelRule.counterpartyContacts.delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.TravelRule.CounterpartyContacts.Delete(ctx, \"11111111-2222-3333-4444-555555555555\"); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.travelRule().counterpartyContacts().delete(\"11111111-2222-3333-4444-555555555555\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->travelRule->counterpartyContacts->delete('11111111-2222-3333-4444-555555555555');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.counterparty_contacts.delete(\"11111111-2222-3333-4444-555555555555\")"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.TravelRule.CounterpartyContacts.DeleteAsync(\"11111111-2222-3333-4444-555555555555\");"
          }
        ],
        "responses": {
          "204": {
            "description": "हटा दिया गया।"
          },
          "404": {
            "description": "आपके एप्लिकेशन के किसी भी संपर्क की यह id नहीं है। प्लेटफ़ॉर्म संपर्क भी 404 उत्तर देता है।"
          }
        }
      }
    },
    "/v3/travel-rule/transfers/": {
      "get": {
        "summary": "Travel Rule ट्रांसफर सूचीबद्ध करें",
        "description": "आपकी एप्लिकेशन के Travel Rule ट्रांसफ़र, नवीनतम पहले, `limit` (डिफ़ॉल्ट 50) और `offset` के साथ पृष्ठांकित। पंक्तियों में केवल VASP नाम, वॉलेट और मेमो होते हैं, कभी भी व्यक्तिगत डेटा नहीं। अल्पविराम से अलग किए गए मान एकाधिक मानों का चयन करते हैं। एक अज्ञात मान पैरामीटर का नाम बताते हुए 400 का उत्तर देता है, उदाहरण के लिए `{\"direction\": [\"Unknown value(s): inbound.\"]}`।",
        "operationId": "listTravelRuleTransfers",
        "x-didit-sdk": {
          "resource": "travel_rule.transfers",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "INBOUND, OUTBOUND, या दोनों कॉमा से अलग किए गए। केस-संवेदी।"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "एक या अधिक ट्रांसफ़र स्थितियाँ, अल्पविराम से अलग की गईं।"
          },
          {
            "name": "rail",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP में से एक या अधिक, अल्पविराम से अलग किए गए।"
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "withdrawal, deposit या message, अल्पविराम से अलग किए गए।"
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "लेन-देन की मुद्रा, केस-इनसेंसिटिव।"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "इस दिन (UTC) या इसके बाद बनाए गए ट्रांसफ़र, YYYY-MM-DD।"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "इस दिन (UTC) या इससे पहले बनाए गए ट्रांसफ़र, YYYY-MM-DD।"
          },
          {
            "name": "counterparty",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ से किसी डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य का `id`: उस प्रतिपक्ष के साथ आपके ट्रांसफर। जो मान मान्य id नहीं है, वह 400 का उत्तर देता है।"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "description": "पेज का आकार, डिफ़ॉल्ट 50।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "description": "छोड़ने के लिए पंक्तियां।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/travel-rule/transfers/?direction=OUTBOUND&status=AWAITING_COUNTERPARTY' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.transfers.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.transfers.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.Transfers.ListAutoPaging(ctx, didit.TravelRuleTransfersListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().transfers().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->transfers->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.transfers.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.Transfers.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "ट्रांसफ़र का एक पेज।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TravelRuleTransferRow"
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "next": null,
                  "previous": null,
                  "results": [
                    {
                      "id": "5b0f6c2e-2a4d-4f0e-9a41-0c3f9a7e1d22",
                      "transaction_id": "a3c1e8f4-7b62-4d1a-8e0b-2f9d6c4b7a10",
                      "txn_id": "wd-2026-10-19-0042",
                      "txn_date": "2026-10-19T08:41:12Z",
                      "kind": "withdrawal",
                      "direction": "OUTBOUND",
                      "status": "AWAITING_COUNTERPARTY",
                      "rail": "TRP",
                      "asset": "ETH",
                      "amount": "1.25",
                      "originator_vasp": "Origin CASP SL",
                      "beneficiary_vasp": "Example Counterparty VASP",
                      "originator_wallet": "0x77ccff0cc624a53cd8b8d8703ced826710211ec7",
                      "beneficiary_wallet": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb",
                      "originator_memo": "",
                      "beneficiary_memo": "",
                      "originator_wallet_type": "vasp",
                      "beneficiary_wallet_type": "vasp",
                      "matched_transaction_id": null,
                      "deadline_at": "2026-10-21T08:41:13Z",
                      "created_at": "2026-10-19T08:41:13Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "फ़िल्टर मान अमान्य है।",
            "content": {
              "application/json": {
                "example": {
                  "start_date": [
                    "Use the YYYY-MM-DD format."
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v3/session/imports/providers/": {
      "get": {
        "summary": "माइग्रेशन प्रदाता सूचीबद्ध करें",
        "description": "वे 15 प्रदाता जहाँ से आप सत्यापन माइग्रेट कर सकते हैं: कनेक्ट करने के लिए प्रत्येक को क्या चाहिए, क्या इसका API रिकॉर्ड सूचीबद्ध कर सकता है, इसकी कुंजी के लिए आवश्यक अनुमतियाँ और इसका डिफ़ॉल्ट स्थिति मैपिंग।",
        "operationId": "get_v3_session_imports_providers_list",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "list_providers",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "200": {
            "description": "माइग्रेशन प्रदाता।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "providers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ImportProvider"
                      }
                    },
                    "mapping_targets": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "skipped_statuses": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.list_providers()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.listProviders();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.ListProviders(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().listProviders();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->listProviders();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.list_providers\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.ListProvidersAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/providers/check/": {
      "post": {
        "summary": "प्रदाता कुंजी की जांच करें",
        "description": "माइग्रेशन बनाने से पहले अपनी कुंजी का उपयोग करके प्रदाता की जानकारी पढ़ें। कुछ भी संग्रहीत नहीं किया जाता है।",
        "operationId": "post_v3_session_imports_providers_check",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "check_provider",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "provider": {
                    "type": "string",
                    "enum": [
                      "sumsub",
                      "jumio",
                      "veriff",
                      "onfido",
                      "persona",
                      "metamap",
                      "socure",
                      "idnow",
                      "shufti",
                      "idenfy",
                      "ondato",
                      "trulioo",
                      "au10tix",
                      "complycube",
                      "other"
                    ],
                    "description": "माइग्रेशन स्रोत, `GET /v3/session/imports/providers/` से। जब `source` का मान `provider` हो, तब आवश्यक है।"
                  },
                  "credentials": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "प्रदाता की केवल-पढ़ने योग्य कुंजी, उन फ़ील्ड नामों के साथ जो `credential_fields` में सूचीबद्ध हैं। स्थिर अवस्था में एन्क्रिप्टेड, कभी वापस नहीं की जाती, और इंपोर्ट समाप्त होने पर मिटा दी जाती है। इसे multipart में JSON स्ट्रिंग के रूप में भेजें।"
                  },
                  "options": {
                    "type": "object",
                    "properties": {
                      "region": {
                        "type": "string",
                        "description": "प्रदाता क्षेत्र, इसके `regions` में से एक (Onfido: `eu`, `us`, `ca`)।"
                      }
                    }
                  },
                  "record_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "`api_ids` प्रदाताओं के लिए: आपके एक्सपोर्ट का पहला रिकॉर्ड ID।"
                  }
                },
                "required": [
                  "provider",
                  "credentials"
                ]
              },
              "example": {
                "provider": "sumsub",
                "credentials": {
                  "app_token": "YOUR_PROVIDER_APP_TOKEN",
                  "secret_key": "YOUR_PROVIDER_SECRET_KEY"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "कुंजी रिकॉर्ड पढ़ सकती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "credential_hint": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "प्रदाता ने कुंजी को अस्वीकार कर दिया: `code`, `detail`, `missing_permissions`, `suggested_region`।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.check_provider(\n    provider=\"sumsub\",\n    credentials={\"app_token\": \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\": \"YOUR_PROVIDER_SECRET_KEY\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.checkProvider({\n  provider: \"sumsub\",\n  credentials: { app_token: \"YOUR_PROVIDER_APP_TOKEN\", secret_key: \"YOUR_PROVIDER_SECRET_KEY\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.CheckProvider(ctx, didit.SessionsImportsCheckProviderParams{\n\tProvider:    \"sumsub\",\n\tCredentials: map[string]string{\"app_token\": \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\": \"YOUR_PROVIDER_SECRET_KEY\"},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsImportsCheckProviderParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().checkProvider(SessionsImportsCheckProviderParams.builder()\n        .provider(SessionsImportsCheckProviderParams.Provider.of(\"sumsub\"))\n        .credentials(Map.of(\"app_token\", \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\", \"YOUR_PROVIDER_SECRET_KEY\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->checkProvider([\n    'provider' => 'sumsub',\n    'credentials' => ['app_token' => 'YOUR_PROVIDER_APP_TOKEN', 'secret_key' => 'YOUR_PROVIDER_SECRET_KEY'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.check_provider(\n  provider: \"sumsub\",\n  credentials: { app_token: \"YOUR_PROVIDER_APP_TOKEN\", secret_key: \"YOUR_PROVIDER_SECRET_KEY\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.CheckProviderAsync(new SessionsImportsCheckProviderParams\n{\n    Provider = \"sumsub\",\n    Credentials = new Dictionary<string, string> { [\"app_token\"] = \"YOUR_PROVIDER_APP_TOKEN\", [\"secret_key\"] = \"YOUR_PROVIDER_SECRET_KEY\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/start/": {
      "post": {
        "summary": "ड्राई रन शुरू करें",
        "description": "एक माइग्रेशन शुरू करें जिसका ड्राई रन पूरा हो चुका है (`READY`): वही जॉब वास्तविक रूप से इंपोर्ट करता है, अभी भेजे गए स्टेटस मैपिंग और फ़ेस टेम्पलेट चयन के साथ।",
        "operationId": "post_v3_session_imports_start",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "start",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "status_mapping": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "enum": [
                        "Approved",
                        "Declined",
                        "In Review",
                        "Expired",
                        "Not Finished",
                        "Abandoned"
                      ]
                    },
                    "description": "प्रदाता के डिफ़ॉल्ट स्टेटस मैपिंग में संपादन: स्रोत स्टेटस से Didit स्टेटस। `Not Finished` और `Abandoned` को छोड़ दिया जाता है और गिना जाता है, कभी इंपोर्ट नहीं किया जाता।"
                  },
                  "face_templates": {
                    "type": "boolean",
                    "default": false,
                    "description": "इंपोर्ट की गई सेल्फ़ी से फ़ेस टेम्पलेट बनाएं और एप्लिकेशन के चेहरों और ब्लॉकलिस्ट के विरुद्ध उनकी खोज करें। मिलान केवल समीक्षा के लिए चिह्नित किए जाते हैं। इसके लिए `lawful_basis_confirmed` आवश्यक है।"
                  },
                  "lawful_basis_confirmed": {
                    "type": "boolean",
                    "default": false,
                    "description": "पुष्टि करता है कि आपके पास प्रोसेसर के रूप में Didit के साथ इन सेल्फ़ी को साझा करने का कानूनी आधार है।"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "इंपोर्ट कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "400": {
            "description": "कार्य उस स्थिति में नहीं है जिस पर यह कार्रवाई लागू होती है।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.start(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.start(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Start(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsImportsStartParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().start(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->start('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.start(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.StartAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/pause/": {
      "post": {
        "summary": "इंपोर्ट जॉब को रोकें",
        "description": "कतारबद्ध या चल रहे इंपोर्ट को रोकें।",
        "operationId": "post_v3_session_imports_pause",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "pause",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "इंपोर्ट कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "400": {
            "description": "कार्य उस स्थिति में नहीं है जिस पर यह कार्रवाई लागू होती है।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.pause(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.pause(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Pause(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().pause(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->pause('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.pause(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.PauseAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/resume/": {
      "post": {
        "summary": "इंपोर्ट जॉब फिर से शुरू करें",
        "description": "आपके द्वारा रोके गए इंपोर्ट को फिर से शुरू करें। प्रदाता की रेट लिमिट के कारण रोका गया जॉब अपने आप फिर से शुरू हो जाता है।",
        "operationId": "post_v3_session_imports_resume",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "resume",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "इंपोर्ट कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "400": {
            "description": "कार्य उस स्थिति में नहीं है जिस पर यह कार्रवाई लागू होती है।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.resume(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.resume(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Resume(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().resume(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->resume('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.resume(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.ResumeAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/cancel/": {
      "post": {
        "summary": "इंपोर्ट जॉब रद्द करें",
        "description": "इंपोर्ट रद्द करें। जो इंपोर्ट किया गया था वह बना रहता है; अपलोड की गई फ़ाइल और कुंजी मिटा दी जाती हैं।",
        "operationId": "post_v3_session_imports_cancel",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "cancel",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "इंपोर्ट कार्य।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "400": {
            "description": "कार्य उस स्थिति में नहीं है जिस पर यह कार्रवाई लागू होती है।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.cancel(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.cancel(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Cancel(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().cancel(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->cancel('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.cancel(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.CancelAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/imports/{importId}/retry/": {
      "post": {
        "summary": "माइग्रेशन का पुनः प्रयास करें",
        "description": "एक माइग्रेशन जो समाप्त हो गया था, उसे एक नई कुंजी के साथ एक नए कार्य के रूप में पुनः चलाएं (पुरानी कुंजी मिटा दी गई थी)। यह प्रदाता, वर्कफ़्लो, क्षेत्र, स्थिति मैपिंग और फ़ेस टेम्पलेट्स के विकल्प को बनाए रखता है; Didit में पहले से मौजूद हर चीज़ को छोड़ दिया जाता है।",
        "operationId": "post_v3_session_imports_retry",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "retry",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "importId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "credentials": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "प्रदाता की केवल-पढ़ने योग्य कुंजी, उन फ़ील्ड नामों के साथ जो `credential_fields` में सूचीबद्ध हैं। स्थिर अवस्था में एन्क्रिप्टेड, कभी वापस नहीं की जाती, और इंपोर्ट समाप्त होने पर मिटा दी जाती है। इसे multipart में JSON स्ट्रिंग के रूप में भेजें।"
                  },
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "`api_ids` और `export_file` प्रदाताओं के लिए, रिकॉर्ड ID या एक्सपोर्ट फ़ाइल फिर से।"
                  }
                }
              },
              "example": {
                "credentials": {
                  "app_token": "YOUR_PROVIDER_APP_TOKEN",
                  "secret_key": "YOUR_PROVIDER_SECRET_KEY"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "नया इंपोर्ट जॉब।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionImportJob"
                }
              }
            }
          },
          "400": {
            "description": "माइग्रेशन नहीं है, समाप्त नहीं हुआ है, या प्रदाता ने कुंजी अस्वीकार कर दी है।"
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.retry(\n    \"11111111-2222-3333-4444-555555555555\",\n    credentials={\"app_token\": \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\": \"YOUR_PROVIDER_SECRET_KEY\"},\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.retry(\"11111111-2222-3333-4444-555555555555\", {\n  credentials: { app_token: \"YOUR_PROVIDER_APP_TOKEN\", secret_key: \"YOUR_PROVIDER_SECRET_KEY\" },\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Retry(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsImportsRetryParams{\n\tCredentials: didit.Some(map[string]string{\"app_token\": \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\": \"YOUR_PROVIDER_SECRET_KEY\"}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.Map;\nimport me.didit.Didit;\nimport me.didit.types.SessionsImportsRetryParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().retry(\"11111111-2222-3333-4444-555555555555\", SessionsImportsRetryParams.builder()\n        .credentials(Map.of(\"app_token\", \"YOUR_PROVIDER_APP_TOKEN\", \"secret_key\", \"YOUR_PROVIDER_SECRET_KEY\"))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->retry('11111111-2222-3333-4444-555555555555', [\n    'credentials' => ['app_token' => 'YOUR_PROVIDER_APP_TOKEN', 'secret_key' => 'YOUR_PROVIDER_SECRET_KEY'],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.retry(\n  \"11111111-2222-3333-4444-555555555555\",\n  credentials: { app_token: \"YOUR_PROVIDER_APP_TOKEN\", secret_key: \"YOUR_PROVIDER_SECRET_KEY\" }\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Collections.Generic;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.RetryAsync(\"11111111-2222-3333-4444-555555555555\", new SessionsImportsRetryParams\n{\n    Credentials = new Dictionary<string, string> { [\"app_token\"] = \"YOUR_PROVIDER_APP_TOKEN\", [\"secret_key\"] = \"YOUR_PROVIDER_SECRET_KEY\" },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/import-jobs/": {
      "get": {
        "summary": "इंपोर्ट जॉब्स सूचीबद्ध करें",
        "description": "एप्लिकेशन का प्रत्येक इंपोर्ट एक ही स्वरूप में: सत्यापन इंपोर्ट और माइग्रेशन, व्यक्ति और व्यवसाय।",
        "operationId": "get_v3_import_jobs_list",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "list_jobs",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "scope",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "sessions",
                "users",
                "businesses"
              ],
              "default": "all"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "इंपोर्ट जॉब्स, नवीनतम पहले।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ImportJobSummary"
                      }
                    },
                    "counts": {
                      "type": "object",
                      "properties": {
                        "all": {
                          "type": "integer"
                        },
                        "running_and_waiting": {
                          "type": "integer"
                        },
                        "needs_attention": {
                          "type": "integer"
                        },
                        "done": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.list_jobs()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.listJobs();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.ListJobs(ctx, didit.SessionsImportsListJobsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().listJobs();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->listJobs();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.list_jobs\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.ListJobsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/import-jobs/active/": {
      "get": {
        "summary": "सक्रिय इंपोर्ट जॉब सूचीबद्ध करें",
        "description": "प्रोग्रेस इंडिकेटर के लिए क्या चल रहा है या प्रतीक्षा कर रहा है, साथ ही अभी क्या समाप्त हुआ है।",
        "operationId": "get_v3_import_jobs_active",
        "x-didit-sdk": {
          "resource": "sessions.imports",
          "method": "list_active_jobs",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "responses": {
          "200": {
            "description": "सक्रिय इंपोर्ट जॉब्स।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ImportJobSummary"
                      }
                    },
                    "running": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "अनुपलब्ध, अमान्य, या निरस्त API कुंजी, या कॉलर इस एप्लिकेशन के लिए सत्यापन इंपोर्ट नहीं कर सकता।",
            "content": {
              "application/json": {
                "examples": {
                  "Forbidden": {
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.imports.list_active_jobs()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.imports.listActiveJobs();\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.ListActiveJobs(ctx)\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().imports().listActiveJobs();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->imports->listActiveJobs();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.imports.list_active_jobs\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.Imports.ListActiveJobsAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/organization/{organization_id}/application/{application_id}/transactions/delete/": {
      "delete": {
        "summary": "लेन-देन को बैच में हटाएं",
        "description": "एक या अधिक लेन-देन स्थायी रूप से हटाएं। उन्हें `transaction_uuids` के साथ चुनें, या `delete_all: true` के साथ एप्लिकेशन के प्रत्येक लेन-देन को हटाएं।\n\nहटाया गया लेन-देन उन रिकॉर्ड्स के साथ जाता है जो केवल उसके अपने हैं: इसके पक्ष, टैग, नोट्स, भुगतान विधि लिंक, दस्तावेज़ और उनकी फ़ाइलों का प्रत्येक संग्रहीत संस्करण, नियम रन, अलर्ट, प्रदाता परिणाम, नेटवर्क स्नैपशॉट और Travel Rule डेटा। केस, लोग और कंपनियाँ बनी रहती हैं; हटाए गए लेन-देन से उनका लिंक साफ़ कर दिया जाता है। ड्राफ़्ट नियामक रिपोर्ट इसे सूचीबद्ध करना बंद कर देती हैं और इसके बिना पुनर्गठित की जाती हैं। हटाना स्थायी और अपरिवर्तनीय है; कोई पूर्ववत endpoint नहीं है।\n\nयदि कोई चयनित लेन-देन किसी अंतिम रूप से तैयार नियामक रिपोर्ट में सूचीबद्ध है, तो पूरा अनुरोध `409` के साथ अस्वीकार कर दिया जाता है और कुछ भी नहीं हटाया जाता है। मुख्य भाग `code: in_filed_report` का उपयोग करता है और प्रत्येक लेन-देन और उन रिपोर्टों का नाम देता है जो इसे सूचीबद्ध करती हैं। उन रिपोर्टों को हटाएं, फिर अनुरोध दोहराएं।",
        "operationId": "batch_delete_transactions",
        "x-didit-sdk": {
          "resource": "transactions",
          "method": "batch_delete",
          "auth": "api_key",
          "server": true,
          "scope": "application"
        },
        "tags": [
          "Transactions"
        ],
        "parameters": [
          {
            "name": "organization_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "संगठन UUID।"
          },
          {
            "name": "application_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "एप्लिकेशन UUID।"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "oneOf": [
                  {
                    "title": "Selected transactions",
                    "required": [
                      "transaction_uuids"
                    ],
                    "properties": {
                      "transaction_uuids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "description": "हटाने के लिए Didit लेन-देन UUIDs। आवश्यक जब तक कि `delete_all` सत्य न हो।",
                        "minItems": 1
                      },
                      "delete_all": {
                        "type": "boolean",
                        "enum": [
                          false
                        ],
                        "default": false,
                        "description": "जब आप `transaction_uuids` के साथ लेन-देन चुनते हैं तो इसे छोड़ दें या `false` भेजें।"
                      }
                    }
                  },
                  {
                    "title": "All transactions",
                    "required": [
                      "delete_all"
                    ],
                    "properties": {
                      "delete_all": {
                        "type": "boolean",
                        "enum": [
                          true
                        ],
                        "description": "एप्लिकेशन में प्रत्येक लेन-देन हटाएं। `transaction_uuids` को अनदेखा कर दिया जाता है।"
                      },
                      "transaction_uuids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "description": "जब `delete_all` true हो तब अनदेखा किया जाता है।"
                      }
                    }
                  }
                ]
              },
              "examples": {
                "Selected transactions": {
                  "value": {
                    "transaction_uuids": [
                      "abcdef12-3456-7890-abcd-ef1234567890",
                      "12345678-90ab-cdef-1234-567890abcdef"
                    ]
                  }
                },
                "All transactions": {
                  "value": {
                    "delete_all": true
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl (selected transactions)",
            "source": "curl -X DELETE 'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/transactions/delete/' \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"transaction_uuids\": [\"abcdef12-3456-7890-abcd-ef1234567890\"]}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\nclient = Didit()\n\nclient.transactions.batch_delete(\n    body={\n        \"transaction_uuids\": [\"abcdef12-3456-7890-abcd-ef1234567890\", \"12345678-90ab-cdef-1234-567890abcdef\"],\n    },\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nconst didit = new Didit();\n\nawait didit.transactions.batchDelete({\n  transaction_uuids: [\"abcdef12-3456-7890-abcd-ef1234567890\", \"12345678-90ab-cdef-1234-567890abcdef\"],\n});"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.TransactionsBatchDeleteParams;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nDidit client = new Didit();\n\nclient.transactions().batchDelete(TransactionsBatchDeleteParams.builder()\n        .putAdditionalProperty(\"transaction_uuids\", List.of(\"abcdef12-3456-7890-abcd-ef1234567890\", \"12345678-90ab-cdef-1234-567890abcdef\"))\n        .build());"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\n$didit = new DiditClient();\n\n$didit->transactions->batchDelete([\n    'transaction_uuids' => ['abcdef12-3456-7890-abcd-ef1234567890', '12345678-90ab-cdef-1234-567890abcdef'],\n]);"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n# and DIDIT_APPLICATION_ID.\ndidit = Didit::Client.new\n\ndidit.transactions.batch_delete(\n  body: {\n    transaction_uuids: [\"abcdef12-3456-7890-abcd-ef1234567890\", \"12345678-90ab-cdef-1234-567890abcdef\"],\n  }\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nusing var client = new DiditClient();\n\nawait client.Transactions.BatchDeleteAsync(new TransactionsBatchDeleteParams\n{\n    TransactionUuids = new string[] { \"abcdef12-3456-7890-abcd-ef1234567890\", \"12345678-90ab-cdef-1234-567890abcdef\" },\n});"
          }
        ],
        "responses": {
          "204": {
            "description": "चयनित लेन-देन हटा दिए गए।"
          },
          "400": {
            "description": "कोई लेन-देन चयनकर्ता प्रदान नहीं किया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "transaction_uuids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "example": {
                  "transaction_uuids": [
                    "This field is required unless delete_all is true."
                  ]
                }
              }
            }
          },
          "403": {
            "description": "API कुंजी लेन-देन नहीं हटा सकती। endpoint के लिए `write:transactions` की आवश्यकता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "कम से कम एक चयनित लेन-देन अंतिम रूप दी गई विनियामक रिपोर्ट में सूचीबद्ध है। कुछ भी हटाया नहीं गया है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InFiledReportError"
                }
              }
            }
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/travel-rule/networks/": {
      "get": {
        "summary": "Travel Rule नेटवर्क प्राप्त करें",
        "description": "इस एप्लिकेशन के लिए, प्रत्येक नेटवर्क की वास्तविक स्थिति पढ़ें: क्या यह आपकी स्वयं की सदस्यता के माध्यम से भेजता है या Didit की सदस्यता के माध्यम से, और यह अभी तक ऐसा क्यों नहीं कर सकता है। ड्यू-डिलिजेंस प्रश्नावली और आपके प्रतिभागियों को भी लौटाता है। पढ़ने से कुछ भी नहीं बनता है।",
        "operationId": "getTravelRuleNetworks",
        "x-didit-sdk": {
          "resource": "travel_rule.networks",
          "method": "retrieve",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/networks/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.networks.retrieve()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.networks.retrieve();\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().networks().retrieve();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->networks->retrieve();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.networks.retrieve\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Networks.RetrieveAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क स्थितियाँ, प्रश्नावली और प्रतिभागी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleNetworksOverview"
                },
                "examples": {
                  "Before the questionnaire": {
                    "value": {
                      "platform_networks_enabled": false,
                      "questionnaire": {
                        "status": "draft",
                        "answers": {},
                        "submitted_at": null,
                        "reviewed_at": null,
                        "review_note": "",
                        "history": [],
                        "updated_at": null
                      },
                      "participants": [],
                      "networks": {
                        "gtr": {
                          "rail": "GTR",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "trust": {
                          "rail": "TRUST",
                          "mode": "unavailable",
                          "state": "unavailable",
                          "reason": "own_membership_only",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "verifyvasp": {
                          "rail": "VERIFYVASP",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        },
                        "sygna": {
                          "rail": "SYGNA",
                          "mode": "unavailable",
                          "state": "didit_onboarding",
                          "reason": "didit_membership_not_live",
                          "platform_available": false,
                          "connected": false,
                          "participant": null,
                          "vasps_reachable": 0,
                          "routed_30d": 0
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          }
        }
      }
    },
    "/v3/travel-rule/networks/questionnaire/": {
      "get": {
        "summary": "नेटवर्क प्रश्नावली प्राप्त करें",
        "description": "इस एप्लिकेशन के लिए Didit की नेटवर्क ड्यू-डिलिजेंस प्रश्नावली, उसकी स्थिति और Didit के समीक्षा नोट को पढ़ें। जिस एप्लिकेशन ने कभी इसे सहेजा नहीं है, वह एक खाली ड्राफ़्ट पढ़ता है।",
        "operationId": "getTravelRuleNetworkQuestionnaire",
        "x-didit-sdk": {
          "resource": "travel_rule.networks",
          "method": "retrieve_questionnaire",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET https://verification.didit.me/v3/travel-rule/networks/questionnaire/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.networks.retrieve_questionnaire()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.networks.retrieveQuestionnaire();\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().networks().retrieveQuestionnaire();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->networks->retrieveQuestionnaire();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.networks.retrieve_questionnaire\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Networks.RetrieveQuestionnaireAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "प्रश्नावली।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaire"
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          }
        }
      },
      "put": {
        "summary": "नेटवर्क प्रश्नावली के उत्तर सहेजें",
        "description": "जब प्रश्नावली draft या changes_requested स्थिति में हो, तब उसके उत्तर सहेजें। सहेजना आंशिक होता है: जो उत्तर आप नहीं भेजते हैं वे सुरक्षित रखे जाते हैं।",
        "operationId": "updateTravelRuleNetworkQuestionnaire",
        "x-didit-sdk": {
          "resource": "travel_rule.networks",
          "method": "update_questionnaire",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X PUT https://verification.didit.me/v3/travel-rule/networks/questionnaire/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"legal_name\": \"Example VASP Ltd\", \"incorporation_country\": \"ES\", \"aml_ctf_policy_attested\": true}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.networks.update_questionnaire(\n    legal_name=\"Example VASP Ltd\",\n    incorporation_country=\"ES\",\n    aml_ctf_policy_attested=True,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.networks.updateQuestionnaire({\n  legal_name: \"Example VASP Ltd\",\n  incorporation_country: \"ES\",\n  aml_ctf_policy_attested: true,\n});\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleNetworkQuestionnaireAnswers;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().networks().updateQuestionnaire(TravelRuleNetworkQuestionnaireAnswers.builder()\n        .legalName(\"Example VASP Ltd\")\n        .incorporationCountry(\"ES\")\n        .amlCtfPolicyAttested(true)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->networks->updateQuestionnaire([\n    'legal_name' => 'Example VASP Ltd',\n    'incorporation_country' => 'ES',\n    'aml_ctf_policy_attested' => true,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.networks.update_questionnaire(\n  legal_name: \"Example VASP Ltd\",\n  incorporation_country: \"ES\",\n  aml_ctf_policy_attested: true\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Networks.UpdateQuestionnaireAsync(new TravelRuleNetworkQuestionnaireAnswers\n{\n    LegalName = \"Example VASP Ltd\",\n    IncorporationCountry = \"ES\",\n    AmlCtfPolicyAttested = true,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaireAnswers"
              },
              "example": {
                "legal_name": "Example VASP Ltd",
                "incorporation_country": "ES",
                "aml_ctf_policy_attested": true
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "मर्ज किए गए उत्तरों वाली प्रश्नावली।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaire"
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि, फ़ील्ड के अनुसार व्यवस्थित।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "Didit की सदस्यता के माध्यम से नेटवर्क एक्सेस अभी खुला नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_platform_networks_disabled"
                      ]
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "प्रश्नावली Didit के पास है या निर्णय ले लिया गया है: इसे केवल तभी बदला जा सकता है जब यह draft या changes_requested स्थिति में हो।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_questionnaire_not_editable"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/networks/questionnaire/submit/": {
      "post": {
        "summary": "नेटवर्क प्रश्नावली सबमिट करें",
        "description": "सहेजी गई प्रश्नावली को Didit की समीक्षा के लिए भेजें। सहेजे गए उत्तर पूरे होने चाहिए: lei और data_protection_contact_email को छोड़कर प्रत्येक फ़ील्ड, जिसमें तीनों अटेस्टेशन सही (true) हों। Didit इसे स्वीकृत करता है, परिवर्तनों के लिए कहता है (संपादित करें और फिर से सबमिट करें) या इसे अस्वीकार करता है। आपके द्वारा अनुरोधित नेटवर्क, जब यह लंबित था, इसके स्वीकृत होने पर उनके ऑनबोर्डिंग को सौंप दिए जाते हैं।",
        "operationId": "submitTravelRuleNetworkQuestionnaire",
        "x-didit-sdk": {
          "resource": "travel_rule.networks",
          "method": "submit_questionnaire",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/networks/questionnaire/submit/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.networks.submit_questionnaire()\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.networks.submitQuestionnaire();\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().networks().submitQuestionnaire();\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->networks->submitQuestionnaire();\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.networks.submit_questionnaire\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Networks.SubmitQuestionnaireAsync();\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "सबमिट की गई प्रश्नावली।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaire"
                }
              }
            }
          },
          "400": {
            "description": "सहेजे गए उत्तर फ़ील्ड के अनुसार अधूरे या अमान्य हैं।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "Didit की सदस्यता के माध्यम से नेटवर्क एक्सेस अभी खुला नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_platform_networks_disabled"
                      ]
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "प्रश्नावली Didit के पास है या निर्णय ले लिया गया है: इसे केवल तभी बदला जा सकता है जब यह draft या changes_requested स्थिति में हो।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_questionnaire_not_editable"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/networks/{network}/request/": {
      "post": {
        "summary": "Travel Rule नेटवर्क का अनुरोध करें",
        "description": "किसी ऐसे नेटवर्क पर इस एप्लिकेशन के अपने प्रतिभागी के लिए अनुरोध करें जिसमें Didit की सदस्यता शामिल है (GTR या Sygna)। स्वीकृत प्रश्नावली के बिना प्रतिभागी इसके लिए प्रतीक्षा करता है (questionnaire_pending); इसके होने पर वह नेटवर्क के ऑनबोर्डिंग (submitted_to_network) में जाता है और नेटवर्क द्वारा कोड दिए जाने पर सक्रिय हो जाता है। आइडेम्पोटेंट: एक लंबित, ऑनबोर्डिंग या लाइव प्रतिभागी अपरिवर्तित लौटाया जाता है। यदि नेटवर्क ने पंजीकरण अस्वीकार कर दिया (last_error सेट है), तो पुनः अनुरोध करने पर पुनः प्रयास किया जाता है। TRUST और VerifyVASP केवल आपकी अपनी सदस्यता के माध्यम से ही पहुंच योग्य हैं: TRUST प्रति VASP सदस्यों को स्वीकार करता है, और VerifyVASP Enclave एक VASP ID को सेवा प्रदान करता है।",
        "operationId": "requestTravelRuleNetworkAccess",
        "x-didit-sdk": {
          "resource": "travel_rule.networks",
          "method": "request_access",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "network",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "gtr",
                "sygna"
              ]
            },
            "description": "Didit की सदस्यता के माध्यम से जुड़ने के लिए नेटवर्क।"
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/networks/gtr/request/ \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.networks.request_access(\n    \"your-network\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.networks.requestAccess(\"your-network\");\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().networks().requestAccess(\"your-network\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->networks->requestAccess('your-network');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.networks.request_access(\"your-network\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.Networks.RequestAccessAsync(\"your-network\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "नेटवर्क पर आपका प्रतिभागी।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleNetworkParticipant"
                }
              }
            }
          },
          "400": {
            "description": "अज्ञात नेटवर्क, ऐसा नेटवर्क जिसे Didit सपोर्ट नहीं करता (अपनी सदस्यता कनेक्ट करें), या सैंडबॉक्स एप्लिकेशन।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_network_own_membership_only",
                        "travel_rule_network_sandbox_application"
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य API कुंजी।"
          },
          "403": {
            "description": "Didit की सदस्यता के माध्यम से नेटवर्क एक्सेस अभी खुला नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "travel_rule_platform_networks_disabled"
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/v3/address-validation/": {
      "post": {
        "summary": "किसी पते को सत्यापित करें",
        "description": "पुष्टि करें कि कोई पता मौजूद है और इसे सामान्यीकृत रूप में वापस प्राप्त करें: इसकी डिलीवरी लाइनें, घटक और निर्देशांक। यह केवल पते की पुष्टि करता है; यह कभी भी पते को किसी व्यक्ति से लिंक नहीं करता है।\n\n**अनुरोध।** पता एक पंक्ति (`address`) में या संरचित फ़ील्ड (`address_line_1` और वैकल्पिक रूप से `address_line_2`, `city`, `region`, `postal_code`) के रूप में भेजें, दोनों कभी नहीं, और हमेशा इसका `country` (ISO 3166-1 alpha-2 या alpha-3) भेजें।\n\n**परिणाम।** `address_validation.status` या तो `verified` (इमारत तक पुष्टि की गई), `partially_verified` (केवल सड़क या उससे ऊपर तक पुष्टि की गई), `not_verified` (केवल क्षेत्र या शहर का मिलान हुआ, या कुछ भी नहीं मिला) या `unavailable` (सत्यापन नहीं चल सका) होता है। प्रत्येक पूर्ण अनुरोध के लिए HTTP `200` है, जिसमें `unavailable` भी शामिल है; `unavailable` परिणाम का बाद में पुनः प्रयास करें।\n\n**बिलिंग।** एक लाइव कॉल की कीमत $0.10 प्रति सत्यापित पता है। `unavailable` परिणाम के लिए कोई शुल्क नहीं लिया जाता है। उपयोग रिकॉर्ड के अलावा कुछ भी संग्रहीत नहीं किया जाता है: कोई सत्र नहीं बनाया जाता है और परिणाम केवल इसी रिस्पॉन्स में वापस किया जाता है।\n\n**सैंडबॉक्स।** सैंडबॉक्स कुंजियाँ अनुरोध को सत्यापित करती हैं और क्रेडिट का उपभोग किए बिना हमेशा एक निर्धारक `verified` परिणाम लौटाती हैं जो भेजे गए पते को दोहराता है।\n\n**प्रमाणीकरण।** अपने एप्लिकेशन की API कुंजी `x-api-key` में भेजें। अनुपलब्ध या अमान्य क्रेडेंशियल `403` लौटाते हैं - यह API कभी भी `401` नहीं लौटाती है।\n\n**रेट लिमिट।** POST/PATCH/DELETE endpoints पर प्रति API कुंजी 300 अनुरोध प्रति मिनट का साझा राइट बजट (लेन-देन निर्माण और इवेंट इनजेशन का 600 का एक अलग बजट है)।",
        "operationId": "post_v3_address_validation",
        "x-didit-sdk": {
          "resource": "address_validation",
          "method": "validate",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Standalone APIs"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/address-validation/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"address_line_1\": \"1600 Amphitheatre Pkwy\",\n    \"city\": \"Mountain View\",\n    \"region\": \"CA\",\n    \"postal_code\": \"94043\",\n    \"country\": \"US\"\n  }'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.address_validation.validate(\n    address_line_1=\"1600 Amphitheatre Pkwy\",\n    city=\"Mountain View\",\n    region=\"CA\",\n    postal_code=\"94043\",\n    country=\"US\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.addressValidation.validate({\n  address_line_1: \"1600 Amphitheatre Pkwy\",\n  city: \"Mountain View\",\n  region: \"CA\",\n  postal_code: \"94043\",\n  country: \"US\",\n});\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.AddressValidationRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.addressValidation().validate(AddressValidationRequest.builder()\n        .addressLine1(\"1600 Amphitheatre Pkwy\")\n        .city(\"Mountain View\")\n        .region(\"CA\")\n        .postalCode(\"94043\")\n        .country(\"US\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->addressValidation->validate([\n    'address_line_1' => '1600 Amphitheatre Pkwy',\n    'city' => 'Mountain View',\n    'region' => 'CA',\n    'postal_code' => '94043',\n    'country' => 'US',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.address_validation.validate(\n  address_line_1: \"1600 Amphitheatre Pkwy\",\n  city: \"Mountain View\",\n  region: \"CA\",\n  postal_code: \"94043\",\n  country: \"US\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.AddressValidation.ValidateAsync(new AddressValidationRequest\n{\n    AddressLine1 = \"1600 Amphitheatre Pkwy\",\n    City = \"Mountain View\",\n    Region = \"CA\",\n    PostalCode = \"94043\",\n    Country = \"US\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressValidationRequest"
              },
              "examples": {
                "Structured": {
                  "summary": "संरचित पता फ़ील्ड",
                  "value": {
                    "address_line_1": "1600 Amphitheatre Pkwy",
                    "city": "Mountain View",
                    "region": "CA",
                    "postal_code": "94043",
                    "country": "US"
                  }
                },
                "One line": {
                  "summary": "पूरा पता एक पंक्ति में",
                  "value": {
                    "address": "Paseo de la Castellana 259, 28046 Madrid",
                    "country": "ES"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "सत्यापन पूरा हुआ। `address_validation.status` पढ़ें; पूरे किए गए अनुरोध के लिए HTTP हमेशा `200` होता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressValidationResponse"
                },
                "examples": {
                  "Verified": {
                    "summary": "एक वास्तविक पता, जिसकी भवन स्तर तक पुष्टि की गई है",
                    "value": {
                      "request_id": "6f7d2c1e-1c5a-4a1e-9b8f-2a1f0f4b9c3d",
                      "address_validation": {
                        "status": "verified",
                        "verification_level": "premise",
                        "address": {
                          "address_line_1": "1600 Amphitheatre Pkwy",
                          "address_line_2": null,
                          "city": "Mountain View",
                          "region": "CA",
                          "postal_code": "94043-1351",
                          "country": "US"
                        },
                        "formatted_address": "1600 Amphitheatre Pkwy, Mountain View CA 94043-1351",
                        "latitude": 37.422022,
                        "longitude": -122.08429
                      },
                      "created_at": "2026-10-27T11:20:00.000000+00:00"
                    }
                  },
                  "Not verified": {
                    "summary": "एक काल्पनिक सड़क: केवल शहर का मिलान हुआ",
                    "value": {
                      "request_id": "0b9e3f4a-6c2d-4e8b-a1f7-5d3c2b1a0e9f",
                      "address_validation": {
                        "status": "not_verified",
                        "verification_level": "locality",
                        "address": {
                          "address_line_1": "Calle Inventada Que No Existe 99999 28046",
                          "address_line_2": null,
                          "city": "Madrid",
                          "region": "Madrid",
                          "postal_code": null,
                          "country": "ES"
                        },
                        "formatted_address": "Calle Inventada Que No Existe 99999 28046, Madrid, MADRID, SPAIN",
                        "latitude": 40.42603054,
                        "longitude": -3.68645331
                      },
                      "created_at": "2026-10-27T11:21:00.000000+00:00"
                    }
                  },
                  "Unavailable": {
                    "summary": "सत्यापन नहीं चल सका; कोई शुल्क नहीं लिया गया",
                    "value": {
                      "request_id": "3c1b2a0f-9e8d-4c7b-b6a5-1f0e9d8c7b6a",
                      "address_validation": {
                        "status": "unavailable",
                        "verification_level": null,
                        "address": null,
                        "formatted_address": null,
                        "latitude": null,
                        "longitude": null
                      },
                      "created_at": "2026-10-27T11:22:00.000000+00:00"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/AddressValidationValidationError"
          },
          "403": {
            "$ref": "#/components/responses/AddressValidationPermissionDenied"
          },
          "429": {
            "$ref": "#/components/responses/RateLimitedWrite"
          }
        }
      }
    },
    "/v3/travel-rule/wallet-proofs/": {
      "get": {
        "summary": "समीक्षा के लिए स्क्रीनशॉट वाले वॉलेट प्रमाण सूचीबद्ध करें",
        "description": "स्क्रीनशॉट वॉलेट-स्वामित्व प्रमाणों के लिए आपकी समीक्षा कतार। स्क्रीनशॉट ही एकमात्र ऐसा प्रमाण है जिसे Didit स्वयं नहीं जाँच सकता: एक बार जब अंतिम उपयोगकर्ता इसे विजेट से अपलोड कर देता है, तो यह तब तक PENDING स्थिति में रहता है जब तक कि आप POST /v3/travel-rule/wallet-proofs/{proof_uuid}/decision/ के साथ इसे स्वीकृत या अस्वीकृत नहीं कर देते। सबसे पुराना पहले, ताकि कतार उस प्रमाण से प्रोसेस की जाए जिसने सबसे लंबे समय तक प्रतीक्षा की है। केवल अपलोड किए गए स्क्रीनशॉट दिखाई देते हैं, ऐसा प्रमाण कभी नहीं जिसका अंतिम उपयोगकर्ता ने अभी तक कोई फ़ाइल अपलोड नहीं की है, और आपके द्वारा अपनी एड्रेस बुक से हटाए गए वॉलेट पर कभी नहीं (Didit इन्हें OWNERSHIP_CHANGED के रूप में बंद कर देता है)।",
        "operationId": "listTravelRuleWalletProofs",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_proofs",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "किन प्रमाणों को सूचीबद्ध करना है। डिफ़ॉल्ट रूप से PENDING, जिन पर निर्णय लेना अभी बाकी है।",
            "schema": {
              "type": "string",
              "enum": [
                "PENDING",
                "VERIFIED",
                "REJECTED",
                "EXPIRED"
              ],
              "default": "PENDING"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 50,
              "minimum": 1
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl https://verification.didit.me/v3/travel-rule/wallet-proofs/?status=PENDING \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.wallet_proofs.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.walletProofs.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().walletProofs().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->walletProofs->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.wallet_proofs.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.WalletProofs.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ],
        "responses": {
          "200": {
            "description": "पेजिनेटेड स्क्रीनशॉट प्रमाण। संख्या 100 तक सटीक है और 100 से अधिक होने पर अधिकतम 100 पर सीमित है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TravelRuleWalletProofReview"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "अज्ञात स्थिति।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य x-api-key।"
          },
          "403": {
            "description": "कॉलर के पास लेन-देन अनुमति का अभाव है।"
          }
        }
      }
    },
    "/v3/travel-rule/wallet-proofs/{proof_uuid}/decision/": {
      "post": {
        "summary": "स्क्रीनशॉट वॉलेट प्रमाण स्वीकृत या अस्वीकृत करें",
        "description": "अपनी समीक्षा कतार से स्क्रीनशॉट प्रमाण पर निर्णय लें। approve प्रमाण और एड्रेस बुक प्रविष्टि को सत्यापित करता है और उस ट्रांसफ़र पर स्वामित्व लागू करता है जिसके लिए विजेट सत्र बनाया गया था, ठीक वैसे ही जैसे एक सत्यापित हस्ताक्षर करता है। एक स्क्रीनशॉट कभी भी उस ट्रांसफ़र की पुष्टि नहीं करता जिसे किसी अन्य Didit ग्राहक ने INTERNAL रेल पर भेजा था: इसके लिए एक हस्ताक्षरित संदेश या टेस्ट डिपॉज़िट की आवश्यकता होती है। reject प्रमाण को failure_reason REVIEW_REJECTED के साथ REJECTED के रूप में बंद कर देता है; अंतिम उपयोगकर्ता विजेट से एक नया प्रमाण शुरू कर सकता है। नोट को प्रमाण के साथ रखा जाता है।",
        "operationId": "decideTravelRuleWalletProof",
        "x-didit-sdk": {
          "resource": "travel_rule.wallet_proofs",
          "method": "decide",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "proof_uuid",
            "in": "path",
            "required": true,
            "description": "समीक्षा कतार से proof_id।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWalletProofDecision"
              },
              "example": {
                "decision": "approve",
                "note": "Address matches the wallet app."
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/wallet-proofs/{proof_uuid}/decision/ \\\n  -H 'x-api-key: YOUR_API_KEY' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"decision\": \"approve\", \"note\": \"Address matches the wallet app.\"}'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.wallet_proofs.decide(\n    \"11111111-2222-3333-4444-555555555555\",\n    decision=\"approve\",\n    note=\"Address matches the wallet app.\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.walletProofs.decide(\"11111111-2222-3333-4444-555555555555\", {\n  decision: \"approve\",\n  note: \"Address matches the wallet app.\",\n});\nconsole.log(result);"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleWalletProofDecision;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().walletProofs().decide(\"11111111-2222-3333-4444-555555555555\", TravelRuleWalletProofDecision.builder()\n        .decision(TravelRuleWalletProofDecision.Decision.of(\"approve\"))\n        .note(\"Address matches the wallet app.\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->walletProofs->decide('11111111-2222-3333-4444-555555555555', [\n    'decision' => 'approve',\n    'note' => 'Address matches the wallet app.',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.wallet_proofs.decide(\n  \"11111111-2222-3333-4444-555555555555\",\n  decision: \"approve\",\n  note: \"Address matches the wallet app.\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.WalletProofs.DecideAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleWalletProofDecision\n{\n    Decision = \"approve\",\n    Note = \"Address matches the wallet app.\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "निर्णीत प्रमाण।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWalletProofReview"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य निर्णय, या 512 वर्णों से अधिक लंबा नोट।"
          },
          "401": {
            "description": "अनुपलब्ध या अमान्य x-api-key।"
          },
          "403": {
            "description": "कॉलर के पास लेन-देन अनुमति का अभाव है।"
          },
          "404": {
            "description": "आपके एप्लिकेशन में इस id वाला कोई सबमिट किया गया स्क्रीनशॉट प्रमाण नहीं है।"
          },
          "409": {
            "description": "प्रमाण पहले ही तय हो चुका है (बॉडी में इसकी स्थिति दी गई है), या कोड OWNERSHIP_CHANGED: विजेट सत्र बनाए जाने के बाद वॉलेट का धारक बदल गया या वॉलेट हटा दिया गया, इसलिए प्रमाण बंद हो गया है और वर्तमान धारक को एक नए प्रमाण की आवश्यकता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          }
        }
      }
    },
    "/v3/travel-rule/widget/{token}/proofs/": {
      "post": {
        "summary": "वॉलेट-स्वामित्व प्रमाण शुरू करें",
        "description": "विजेट सत्र token-आधारित सार्वजनिक endpoint, किसी API कुंजी की आवश्यकता नहीं है: जब अंतिम उपयोगकर्ता कोई प्रमाण विधि चुनता है, तो होस्टेड विजेट इसे कॉल करता है। कोई प्रमाण केवल इसी कॉल से मौजूद होता है और आपके प्रमाण फ़नल में गिना जाता है। वही विधि फिर से चुनने पर दूसरा शुरू करने के बजाय पहले से खुला प्रमाण (200, वही चैलेंज या डिपॉज़िट राशि) वापस आ जाता है; दूसरी विधि चुनने पर अधूरा प्रमाण METHOD_SWITCHED के रूप में बंद हो जाता है, सिवाय सबमिट किए गए स्क्रीनशॉट या परीक्षण डिपॉज़िट के जिसकी अभी भी जांच की जा रही हो। MESSAGE_SIGNING साइन करने के लिए चैलेंज लौटाता है; SATOSHI_TEST डिपॉज़िट पता, सटीक राशि और विंडो लौटाता है; SELF_DECLARATION तुरंत सत्यापित हो जाता है (status VERIFIED)। चेन फ़ैमिली के अनुसार सत्यापित हस्ताक्षर प्रारूप: EVM चेन personal_sign (EIP-191) हस्ताक्षर लेते हैं, hex एन्कोडेड; Bitcoin एक BIP-137 signmessage हस्ताक्षर (P2PKH, P2SH-P2WPKH और P2WPKH पते) या एक BIP-322 सरल हस्ताक्षर (P2WPKH और P2TR पते) लेता है, base64 एन्कोडेड; Solana चैलेंज पर एक Ed25519 हस्ताक्षर लेता है, base58 एन्कोडेड; Tron एक signMessageV2 (TIP-191) हस्ताक्षर लेता है, hex एन्कोडेड। एक BIP-322 पूर्ण या धन का प्रमाण हस्ताक्षर, या एक मल्टीसिग पता, SIGNATURE_UNSUPPORTED_SCHEME के साथ विफल हो जाता है।",
        "operationId": "createTravelRuleWidgetProof",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "create_widget_proof",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "description": "विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleWidgetProofCreate"
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"method\": \"MESSAGE_SIGNING\"}'"
          }
        ],
        "responses": {
          "201": {
            "description": "एक नया PENDING प्रमाण (SELF_DECLARATION के लिए VERIFIED)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofSummary"
                }
              }
            }
          },
          "200": {
            "description": "इस विधि के लिए पहले से खुला प्रमाण, पुनः शुरू किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofSummary"
                }
              }
            }
          },
          "400": {
            "description": "अमान्य body, एक ऐसा वॉलेट जो ट्रांसफ़र से मेल नहीं खाता, SCREENSHOT की अनुमति नहीं है, या जब विधि चेन पर उपलब्ध न हो तो CHAIN_UNSUPPORTED कोड।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          },
          "403": {
            "description": "इस एप्लिकेशन के लिए SELF_DECLARATION की अनुमति नहीं है।"
          },
          "404": {
            "description": "अज्ञात token।"
          },
          "409": {
            "description": "कोड OWNERSHIP_CHANGED: सत्र मिंट होने के बाद वॉलेट का धारक बदल गया या वॉलेट हटा दिया गया था; वर्तमान धारक के लिए एक नया सत्र मिंट करें। SATOSHI_TEST के लिए भी लौटाया जाता है जब सत्र में कोई satoshi_deposit_address नहीं होता है, और जब सत्र में कोई प्रयास शेष नहीं रहता है (कोई कोड नहीं; मुख्य भाग में max_attempts, attempts_used और attempts_remaining 0 होता है): एक नया सत्र मिंट करें।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          },
          "410": {
            "description": "सत्र समाप्त हो गया।"
          }
        }
      }
    },
    "/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/": {
      "post": {
        "summary": "वॉलेट-स्वामित्व के प्रमाण का साक्ष्य सबमिट करें",
        "description": "विजेट सत्र token-आधारित सार्वजनिक endpoint, किसी API कुंजी की आवश्यकता नहीं है। प्रमाण की विधि के अनुसार आवश्यक साक्ष्य भेजें: MESSAGE_SIGNING के लिए हस्ताक्षर, SATOSHI_TEST के लिए txid (JSON), या SCREENSHOT के लिए एक फ़ाइल (मल्टीपार्ट)। प्रत्येक सबमिशन को एक प्रयास के रूप में गिना जाता है। ऐसा हस्ताक्षर जो सत्यापित नहीं होता है, या ऐसा डिपॉज़िट जो मेल नहीं खाता है, एक कोड के साथ 400 रिस्पॉन्स देता है और प्रमाण को PENDING छोड़ देता है ताकि अंतिम उपयोगकर्ता पुनः प्रयास कर सके। ऐसा डिपॉज़िट जो देखा गया है लेकिन अभी तक कन्फ़र्म नहीं हुआ है, status PENDING के साथ 200 रिस्पॉन्स देता है और विंडो बंद होने तक स्वचालित रूप से फिर से जांचा जाता है। एक स्क्रीनशॉट status PENDING के साथ 200 रिस्पॉन्स देता है और आपकी समीक्षा कतार (GET /v3/travel-rule/wallet-proofs/) में प्रतीक्षा करता है। एक EXPIRED या REJECTED प्रमाण बाद में कभी भी सत्यापित नहीं होता है: एक नया प्रमाण शुरू करें। चेन फ़ैमिली के अनुसार सत्यापित हस्ताक्षर प्रारूप: EVM चेन personal_sign (EIP-191) हस्ताक्षर लेते हैं, hex एन्कोडेड; Bitcoin एक BIP-137 signmessage हस्ताक्षर (P2PKH, P2SH-P2WPKH और P2WPKH पते) या एक BIP-322 सरल हस्ताक्षर (P2WPKH और P2TR पते) लेता है, base64 एन्कोडेड; Solana चैलेंज पर एक Ed25519 हस्ताक्षर लेता है, base58 एन्कोडेड; Tron एक signMessageV2 (TIP-191) हस्ताक्षर लेता है, hex एन्कोडेड। एक BIP-322 पूर्ण या धन का प्रमाण हस्ताक्षर, या एक मल्टीसिग पता, SIGNATURE_UNSUPPORTED_SCHEME के साथ विफल हो जाता है।",
        "operationId": "verifyTravelRuleWidgetProof",
        "x-didit-sdk": {
          "resource": "travel_rule",
          "method": "verify_widget_proof",
          "auth": "public",
          "server": false
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {}
        ],
        "parameters": [
          {
            "name": "token",
            "in": "path",
            "required": true,
            "description": "विजेट सत्र बनाए जाने पर लौटाया गया अपारदर्शी सत्र token।",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "proof_id",
            "in": "path",
            "required": true,
            "description": "प्रूफ़ शुरू होने पर लौटाया गया proof_id।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "signature": {
                    "type": "string",
                    "description": "MESSAGE_SIGNING: प्रमाण के चैलेंज पर वॉलेट का हस्ताक्षर।"
                  },
                  "txid": {
                    "type": "string",
                    "description": "SATOSHI_TEST: परीक्षण डिपॉज़िट की लेन-देन ID।"
                  }
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "SCREENSHOT: अंतिम उपयोगकर्ता के वॉलेट ऐप में वॉलेट को दिखाने वाली एक छवि।"
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://verification.didit.me/v3/travel-rule/widget/{token}/proofs/{proof_id}/verify/ \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"signature\": \"0x...\"}'"
          }
        ],
        "responses": {
          "200": {
            "description": "VERIFIED, या अभी भी PENDING (समीक्षा की प्रतीक्षा में एक स्क्रीनशॉट, एक डिपॉज़िट जो अभी इंडेक्स नहीं हुआ है या अभी कन्फ़र्म नहीं हुआ है, कोड DEPOSIT_NOT_FOUND या DEPOSIT_UNCONFIRMED के साथ)।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofVerifyResult"
                }
              }
            }
          },
          "400": {
            "description": "साक्ष्य मौजूद नहीं है; एक असफल प्रयास जो प्रमाण को PENDING रखता है ताकि अंतिम उपयोगकर्ता पुनः प्रयास कर सके (कोड SIGNATURE_INVALID, SIGNATURE_UNSUPPORTED_SCHEME या DEPOSIT_LOOKUP_FAILED); या एक परीक्षण डिपॉज़िट जो प्रमाण को अस्वीकार करता है (कोड DEPOSIT_MISMATCH, DEPOSIT_STALE या TXID_REUSED, स्थिति REJECTED, सत्र की प्रयास-गणनाओं सहित): किसी विधि को दोबारा चुनने से एक नया प्रमाण शुरू होता है जब तक attempts_remaining 0 से अधिक है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          },
          "404": {
            "description": "अज्ञात token, या इस सत्र पर ऐसा कोई प्रमाण नहीं है।"
          },
          "409": {
            "description": "कोड OWNERSHIP_CHANGED (प्रमाण इसके साथ बंद हो जाता है); एक बंद प्रमाण (REJECTED या EXPIRED), इसकी स्थिति के साथ, जिस कोड के साथ यह बंद हुआ और सत्र के प्रयासों की गणना: नया प्रमाण शुरू करने के लिए फिर से एक विधि चुनें; या एक SELF_DECLARATION प्रमाण, जो शुरू होने पर सत्यापित हो जाता है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          },
          "410": {
            "description": "सत्र समाप्त हो गया, या सतोशी परीक्षण विंडो बंद होने पर कोड WINDOW_EXPIRED।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleWidgetProofError"
                }
              }
            }
          }
        }
      }
    },
    "/v3/id-verification/wallets/verifications/{request_id}/response/": {
      "post": {
        "operationId": "submit_wallet_verification_response",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "submit_verification_response",
          "auth": "api_key",
          "server": true
        },
        "description": "Digital Credentials API वॉलेट्स (Google Wallet): ऐसे सत्यापन के लिए जिसका next_action request_digital_credential है, वॉलेट द्वारा आपके पेज या ऐप पर लौटाया गया डेटा भेजें। Didit इसे डिक्रिप्ट करता है, विश्वसनीय जारीकर्ता रूट्स के विरुद्ध जारीकर्ता के हस्ताक्षर की जाँच करता है, प्रत्येक लौटाए गए मान की उसके हस्ताक्षरित डाइजेस्ट के विरुद्ध जाँच करता है, और आपके मूल (origin) और इस अनुरोध पर डिवाइस हस्ताक्षर की जाँच करता है, फिर सत्यापन का निर्णय लेता है: सत्यापित (एक बार बिल किया गया) या त्रुटि कोड के साथ अस्वीकृत। एकल उपयोग: दूसरा सबमिशन निर्णय लिए गए सत्यापन को लौटाता है।",
        "summary": "एक वॉलेट रिस्पॉन्स सबमिट करें",
        "parameters": [
          {
            "in": "path",
            "name": "request_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "वह request_id जो start endpoint ने लौटाया था।",
            "required": true
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletDigitalCredentialResponseRequest"
              },
              "example": {
                "response": {
                  "protocol": "openid4vp-v1-signed",
                  "data": {
                    "response": "<compact JWE returned by the wallet>"
                  }
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletDigitalCredentialResponseRequest"
              },
              "example": {
                "response": {
                  "protocol": "openid4vp-v1-signed",
                  "data": {
                    "response": "<compact JWE returned by the wallet>"
                  }
                }
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletDigitalCredentialResponseRequest"
              },
              "example": {
                "response": {
                  "protocol": "openid4vp-v1-signed",
                  "data": {
                    "response": "<compact JWE returned by the wallet>"
                  }
                }
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "google_wallet",
                      "name": "Google Wallet",
                      "issuing_authority": "Google Wallet (ID pass) and US state issuers (mobile driving licence)"
                    },
                    "country": "USA",
                    "status": "Approved",
                    "outcome": "verified",
                    "error": null,
                    "interaction": "digital_credentials",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": null,
                    "identity": {
                      "full_name": "Alex Example",
                      "first_name": "Alex",
                      "last_name": "Example",
                      "date_of_birth": "1990-01-31",
                      "nationality": "USA",
                      "issuing_state": "USA"
                    },
                    "attributes": {
                      "document_number": "X0000000",
                      "document_expiry_date": "2030-01-31"
                    },
                    "level_of_assurance": "substantial",
                    "verified_at": "2026-01-01T10:01:00Z",
                    "signature_valid": true,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं (x-api-key या Authorization: Bearer)।"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि not_found: इस एप्लिकेशन के किसी भी वॉलेट सत्यापन में यह request_id नहीं है।"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]})।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि not_a_digital_credentials_wallet: यह सत्यापन वॉलेट रिस्पॉन्स नहीं लेता है।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट को सत्यापित नहीं कर सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/verifications/REQUEST_ID/response/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"response\": {\n    \"protocol\": \"openid4vp-v1-signed\",\n    \"data\": {\n      \"response\": \"<compact JWE returned by the wallet>\"\n    }\n  }\n}'"
          }
        ]
      }
    },
    "/v3/id-verification/wallets/google-wallet/": {
      "post": {
        "operationId": "start_google_wallet_wallet_verification",
        "x-didit-sdk": {
          "resource": "id_wallets",
          "method": "start_google_wallet",
          "auth": "api_key",
          "server": true
        },
        "description": "बिना किसी वर्कफ़्लो के Google Wallet साइन-इन (Google Wallet (ID पास) और अमेरिकी राज्य जारीकर्ता (मोबाइल ड्राइविंग लाइसेंस); USA, GBR, BRA, SGP, TWN) शुरू करें। केवल एक बार बिल किया जाता है, सिर्फ तभी जब पहचान सत्यापित हो जाती है। रिस्पॉन्स में Didit द्वारा आपके एप्लिकेशन के लिए हस्ताक्षरित अनुरोध के साथ next_action.type=request_digital_credential शामिल होता है, जो केवल origin से उपयोग करने योग्य है। वहाँ उपयोगकर्ता जेस्चर के दौरान, next_action.digital_credentials.request को navigator.credentials.get({digital: ...}) पर (या Android Credential Manager को GetDigitalCredentialOption requestJson के रूप में) पास करें, फिर वॉलेट जो लौटाता है उसे /v3/id-verification/wallets/verifications/{request_id}/response/ पर POST करें। जब वॉलेट किसी अन्य डिवाइस पर होता है, तो ब्राउज़र अपना स्वयं का QR कोड प्रस्तुत करता है। सैंडबॉक्स एप्लिकेशनों को एक डिटरमिनिस्टिक सिमुलेशन (simulated: true) मिलता है जो प्रदाता से कभी संपर्क नहीं करता।",
        "summary": "Google Wallet सत्यापन प्रारंभ करें",
        "parameters": [
          {
            "in": "header",
            "name": "Idempotency-Key",
            "schema": {
              "type": "string"
            },
            "description": "वैकल्पिक पुनः प्रयास-सुरक्षा कुंजी (अधिकतम 255 वर्ण)। समान कुंजी, वॉलेट और बॉडी के साथ पुनः प्रयास करने पर दूसरा साइन-इन शुरू किए बिना मूल सत्यापन वापस मिलता है; किसी अन्य वॉलेट या बॉडी के साथ समान कुंजी 409 idempotency_key_reused लौटाती है।"
          }
        ],
        "tags": [
          "Digital ID wallets"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGoogleWalletWalletVerificationStartRequest"
              },
              "example": {
                "country": "USA",
                "vendor_data": "your-customer-reference",
                "metadata": {
                  "reference": "example"
                },
                "origin": "https://app.example.com"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGoogleWalletWalletVerificationStartRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/DigitalIdWalletApiGoogleWalletWalletVerificationStartRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "ApiKeyAuth": []
          },
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResponse"
                },
                "example": {
                  "request_id": "00000000-0000-4000-8000-000000000001",
                  "wallet_verification": {
                    "wallet": {
                      "id": "google_wallet",
                      "name": "Google Wallet",
                      "issuing_authority": "Google Wallet (ID pass) and US state issuers (mobile driving licence)"
                    },
                    "country": "USA",
                    "status": "Not Finished",
                    "outcome": "pending",
                    "error": null,
                    "interaction": "digital_credentials",
                    "simulated": false,
                    "expires_at": "2026-01-01T10:10:00Z",
                    "next_action": {
                      "type": "request_digital_credential",
                      "digital_credentials": {
                        "protocol": "openid4vp-v1-signed",
                        "request": {
                          "requests": [
                            {
                              "protocol": "openid4vp-v1-signed",
                              "data": {
                                "request": "<compact JWS signed by Didit>"
                              }
                            }
                          ]
                        }
                      }
                    },
                    "identity": null,
                    "attributes": null,
                    "level_of_assurance": null,
                    "verified_at": null,
                    "signature_valid": null,
                    "credential_type": "person_identification"
                  },
                  "vendor_data": "your-customer-reference",
                  "metadata": {
                    "reference": "example"
                  },
                  "created_at": "2026-01-01T10:00:00Z"
                }
              }
            },
            "description": ""
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartBadRequest"
                }
              }
            },
            "description": "फ़ील्ड सत्यापन त्रुटियाँ ({field: [messages]}), या त्रुटि return_url_invalid, return_url_not_allowed, origin_invalid, origin_not_allowed, invalid_personal_code, invalid_phone_number या idempotency_key_invalid।"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationStartForbidden"
                }
              }
            },
            "description": "क्रेडेंशियल मौजूद नहीं हैं ({detail}), या त्रुटि wallet_unavailable, insufficient_credits या contract_rate_missing।"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि idempotency_key_reused या idempotency_key_in_progress (Retry-After के साथ)।"
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_provider_unavailable: प्रदाता प्रारंभ नहीं हो सका; कुछ भी नहीं बनाया गया था।"
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
                }
              }
            },
            "description": "त्रुटि wallet_not_configured: यह एनवायरनमेंट वॉलेट तक नहीं पहुंच सकता।"
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "cURL",
            "source": "curl --request POST \\\n  --url https://verification.didit.me/v3/id-verification/wallets/google-wallet/ \\\n  --header 'x-api-key: YOUR_API_KEY' \\\n  --header 'Idempotency-Key: your-unique-attempt-key' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n  \"country\": \"USA\",\n  \"vendor_data\": \"your-customer-reference\",\n  \"metadata\": {\n    \"reference\": \"example\"\n  },\n  \"origin\": \"https://app.example.com\"\n}'"
          }
        ],
        "x-didit-wallet-id": "google_wallet"
      }
    },
    "/v3/session/{sessionId}/kyb/documents/": {
      "post": {
        "summary": "सत्र में KYB दस्तावेज़ अपलोड करें",
        "description": "होस्ट किए गए पेज के बजाय अपने स्वयं के सर्वर से व्यवसाय सत्यापन सत्र के KYB दस्तावेज़ चरण में एक या अधिक कॉर्पोरेट दस्तावेज़ (निगमन के लेख, शेयरधारक रजिस्टर, निगमन प्रमाणपत्र, ...) अपलोड करें। Didit होस्ट की गई पाइपलाइन चलाता है: संपीड़न, OCR, छेड़छाड़ और क्रॉस-दस्तावेज़ जांच, दस्तावेज़ समूहीकरण, और आवश्यक दस्तावेज़ समूह संतुष्ट होने पर सत्र को आगे बढ़ाता है। इस चरण के लिए एक समान शुल्क लगता है, चाहे आप कितनी भी फ़ाइलें भेजें। सत्र खुला होना चाहिए और KYB दस्तावेज़ चरण में होना चाहिए, और रजिस्ट्री चरण में चुनी गई कंपनी मौजूद होनी चाहिए। दस्तावेज़ों में नामित व्यक्तियों को `GET /v3/session/{sessionId}/kyb/extracted-parties/` के साथ पढ़ें। `write:businesses` आवश्यक है।",
        "operationId": "post_v3_session_kyb_documents",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "upload_kyb_documents",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "documents"
                ],
                "properties": {
                  "documents": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "अपलोड करने के लिए फ़ाइलें: JPG, JPEG, PNG, TIFF, WEBP, PDF या उनका ZIP संग्रह। कम्प्रेशन से पहले 50 MB तक की PDF, 6 MB तक की फ़ोटो।"
                  },
                  "document_passwords": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "समान क्रम में, `documents` में प्रति फ़ाइल एक प्रविष्टि: संरक्षित PDF का पासवर्ड, किसी भी अन्य फ़ाइल के लिए खाली।"
                  },
                  "document_group": {
                    "type": "string",
                    "enum": [
                      "LEGAL_PRESENCE",
                      "COMPANY_DETAILS",
                      "OWNERSHIP_STRUCTURE",
                      "REPRESENTATIVES_AUTHORIZATION"
                    ],
                    "description": "वह आवश्यक दस्तावेज़ समूह जिसके लिए यह अपलोड उत्तर है।"
                  },
                  "locale": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "अगले चरण के रिस्पॉन्स का अनुवाद करने के लिए उपयोग किया जाने वाला लोकेल।"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "दस्तावेज़ संसाधित किए गए। जब प्रत्येक आवश्यक समूह संतुष्ट हो जाता है तो सत्र आगे बढ़ता है और `next_step` अगले चरण का नाम बताता है; अन्यथा यह दस्तावेज़ चरण पर ही रहता है और `document_groups` व `document_answer` बताते हैं कि अभी क्या कमी है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean"
                    },
                    "next_step": {
                      "type": "string",
                      "nullable": true,
                      "description": "अपलोड के बाद सत्र जिस चरण पर है।"
                    },
                    "kyb_status": {
                      "type": "string",
                      "description": "कंपनी जांच की स्थिति।"
                    },
                    "document_answer": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "प्रति अपलोड किए गए दस्तावेज़ का परिणाम और शेष बचे अपलोड।"
                    }
                  },
                  "additionalProperties": true
                },
                "example": {
                  "valid": true,
                  "next_step": "KYB_KEY_PEOPLE",
                  "kyb_status": "In Progress"
                }
              }
            }
          },
          "400": {
            "description": "एक दस्तावेज़ अस्वीकार कर दिया गया (छेड़छाड़, अपठनीय या असमर्थित) या सत्र में अभी तक कोई KYB कंपनी नहीं है। प्रयास शेष रहने तक किसी अन्य फ़ाइल के साथ पुनः प्रयास करें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "message": "No KYB company found. Submit company data first."
                }
              }
            }
          },
          "402": {
            "description": "दस्तावेज़ चरण के लिए संगठन के पास कोई क्रेडिट नहीं बचा है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Insufficient credits."
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, किसी अन्य एप्लिकेशन से संबंधित है या स्कोप्ड कुंजी की सीमाओं से बाहर है; कोई विवरण उनमें अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          },
          "409": {
            "description": "सत्र समाप्त हो चुका है (`kyb_session_not_writable`) या KYB दस्तावेज़ चरण पर नहीं है (`kyb_step_mismatch`, जिसमें `next_step` उस चरण का नाम बताता है जिस पर वह है)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string"
                    },
                    "next_step": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "The session is not on the step this operation completes.",
                  "code": "kyb_step_mismatch",
                  "next_step": "KYB_REGISTRY"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/DocumentProcessingBusy"
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.upload_kyb_documents(\n    \"33333333-4444-5555-6666-777777777777\",\n    documents=[open(\"document.pdf\", \"rb\")],\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit, { fileFromPath } from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.uploadKybDocuments(\"33333333-4444-5555-6666-777777777777\", {\n  documents: [await fileFromPath(\"document.pdf\")],\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UploadKYBDocuments(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsUploadKYBDocumentsParams{\n\tDocuments: []didit.File{didit.FileFromPath(\"document.pdf\")},\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.nio.file.Path;\nimport java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SessionsUploadKybDocumentsParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().uploadKybDocuments(\"33333333-4444-5555-6666-777777777777\", SessionsUploadKybDocumentsParams.builder()\n        .documents(List.of(Path.of(\"document.pdf\")))\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\nuse Didit\\File;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->uploadKybDocuments('33333333-4444-5555-6666-777777777777', [\n    'documents' => [File::fromPath('document.pdf')],\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.upload_kyb_documents(\n  \"33333333-4444-5555-6666-777777777777\",\n  documents: [Pathname(\"document.pdf\")]\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UploadKybDocumentsAsync(\"33333333-4444-5555-6666-777777777777\", new SessionsUploadKybDocumentsParams\n{\n    Documents = new FileUpload[] { FileUpload.FromPath(\"document.pdf\") },\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/extracted-parties/": {
      "get": {
        "summary": "अपलोड किए गए दस्तावेज़ों द्वारा नामित पक्षों की सूची बनाएं",
        "description": "इस KYB सत्र में अपलोड किए गए दस्तावेज़ों में नामित शेयरधारकों और निदेशकों को लौटाएँ, जिन्हें प्रति व्यक्ति मर्ज किया गया है और उन दस्तावेज़ों से संबद्ध किया गया है जिनमें उनका नाम है। पुष्टि करने के लिए उन्हें अपने आवेदक को दिखाएँ, फिर पार्टी ड्राफ़्ट endpoints के साथ उन्हें घोषित करें। एक रेंज रेंज ही रहती है: `ownership_percent.text` मूल, शब्दशः लिखे गए आंकड़े को बनाए रखता है और `min` / `max` उससे पढ़े गए नंबरों को बनाए रखते हैं। यहाँ किसी को भी UBO के रूप में लेबल नहीं किया गया है; यह तब तय किया जाता है जब पार्टियों को सबमिट किया जाता है, वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड से। यही सूची सत्र निर्णय में `document_verifications[].extracted_parties` के रूप में होती है। इसके लिए `read:businesses` या `read:sessions` की आवश्यकता होती है।",
        "operationId": "get_v3_session_kyb_extracted_parties",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_kyb_extracted_parties",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "वर्तमान दस्तावेज़ों द्वारा नामित पक्ष।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "parties",
                    "document_count"
                  ],
                  "properties": {
                    "parties": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "entity_type": {
                            "type": "string",
                            "enum": [
                              "person",
                              "company"
                            ]
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "appointment_date": {
                            "type": "string",
                            "nullable": true
                          },
                          "designation": {
                            "type": "string",
                            "nullable": true
                          },
                          "roles": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "role": {
                                  "type": "string",
                                  "enum": [
                                    "director",
                                    "non_executive_director",
                                    "secretary",
                                    "chairman",
                                    "ubo",
                                    "shareholder",
                                    "representative",
                                    "founder",
                                    "legal_advisor",
                                    "authorized_signatory",
                                    "trustee",
                                    "beneficiary",
                                    "settlor",
                                    "protector",
                                    "company_officer",
                                    "investor",
                                    "other"
                                  ]
                                },
                                "ownership_percent": {
                                  "type": "object",
                                  "properties": {
                                    "text": {
                                      "type": "string",
                                      "nullable": true,
                                      "description": "स्वामित्व का आंकड़ा ठीक वैसा ही जैसा दस्तावेज़ में बताया गया है, जैसे कि `25-50%`, `>50%` या `NO EXHIBE`।"
                                    },
                                    "min": {
                                      "type": "number",
                                      "nullable": true,
                                      "description": "`text` से पढ़ी गई निचली संख्या; जब इसमें none लिखा हो तो null।"
                                    },
                                    "max": {
                                      "type": "number",
                                      "nullable": true,
                                      "description": "`text` से पढ़ी गई ऊपरी संख्या; जब कोई संख्या न हो तो null।"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "documents": {
                            "type": "array",
                            "description": "अपलोड किए गए दस्तावेज़ जिनमें इस पक्ष का नाम था।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "document_uuid": {
                                  "type": "string",
                                  "format": "uuid"
                                },
                                "document_type": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "document_subtype": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "original_filename": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "status": {
                                  "type": "string",
                                  "nullable": true
                                }
                              }
                            }
                          }
                        }
                      },
                      "description": "अपलोड किए गए दस्तावेज़ों में उल्लिखित शेयरधारक और निदेशक, प्रति व्यक्ति मर्ज किए गए। यहाँ किसी को भी UBO के रूप में लेबल नहीं किया जाता है: यह पार्टियों के सबमिट होने पर तय किया जाता है।"
                    },
                    "document_count": {
                      "type": "integer",
                      "description": "अपलोड किए गए दस्तावेज़ों की संख्या जिनसे सूची पढ़ी गई थी।"
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                },
                "example": {
                  "parties": [
                    {
                      "name": "Ana Lopez",
                      "entity_type": "person",
                      "first_name": "Ana",
                      "last_name": "Lopez",
                      "appointment_date": null,
                      "designation": "Administrador unico",
                      "roles": [
                        {
                          "role": "shareholder",
                          "ownership_percent": {
                            "text": "60%",
                            "min": 60,
                            "max": 60
                          }
                        }
                      ],
                      "documents": [
                        {
                          "document_uuid": "0a3f1e2c-7c2f-4a1b-9d55-2f8d2a5d6b41",
                          "document_type": "OWNERSHIP_STRUCTURE",
                          "document_subtype": "ARTICLES_OF_INCORPORATION",
                          "original_filename": "acta_constitutiva.pdf",
                          "status": "Approved"
                        }
                      ]
                    }
                  ],
                  "document_count": 1,
                  "node_id": "node_kyb_documents"
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, किसी अन्य एप्लिकेशन से संबंधित है या स्कोप्ड कुंजी की सीमाओं से बाहर है; कोई विवरण उनमें अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.list_kyb_extracted_parties(\n    \"33333333-4444-5555-6666-777777777777\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.listKybExtractedParties(\"33333333-4444-5555-6666-777777777777\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ListKYBExtractedParties(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsListKYBExtractedPartiesParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().listKybExtractedParties(\"33333333-4444-5555-6666-777777777777\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->listKybExtractedParties('33333333-4444-5555-6666-777777777777');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.list_kyb_extracted_parties(\"33333333-4444-5555-6666-777777777777\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ListKybExtractedPartiesAsync(\"33333333-4444-5555-6666-777777777777\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/parties/drafts/": {
      "get": {
        "summary": "KYB पार्टी ड्राफ़्ट सूचीबद्ध करें",
        "description": "इस KYB सत्र के लिए आपके द्वारा तैयार किए जा रहे पक्षों की सूची बनाएं, सबसे पुराने पहले। ड्राफ्ट एक घोषित पक्ष नहीं है: यह निर्णय या कंसोल में दिखाई नहीं देता है और जब तक आप इसे `POST /v3/session/{sessionId}/kyb/parties/submit/` के साथ सबमिट नहीं करते तब तक कोई सत्यापन सत्र नहीं बनाता है। `write:businesses` की आवश्यकता होती है।",
        "operationId": "get_v3_session_kyb_party_drafts",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "list_kyb_party_drafts",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "संग्रहीत ड्राफ़्ट।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "parties": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "draft_id",
                          "created_at",
                          "updated_at",
                          "party"
                        ],
                        "properties": {
                          "draft_id": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "created_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "updated_at": {
                            "type": "string",
                            "format": "date-time"
                          },
                          "party": {
                            "type": "object",
                            "required": [
                              "entity_type",
                              "nationality"
                            ],
                            "properties": {
                              "entity_type": {
                                "type": "string",
                                "enum": [
                                  "person",
                                  "company"
                                ],
                                "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                              },
                              "full_name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "किसी व्यक्ति का पूरा नाम। इसे भेजें, या `first_name` और `last_name` भेजें।"
                              },
                              "first_name": {
                                "type": "string",
                                "maxLength": 128
                              },
                              "last_name": {
                                "type": "string",
                                "maxLength": 128
                              },
                              "role": {
                                "type": "string",
                                "enum": [
                                  "director",
                                  "non_executive_director",
                                  "secretary",
                                  "chairman",
                                  "ubo",
                                  "shareholder",
                                  "representative",
                                  "founder",
                                  "legal_advisor",
                                  "authorized_signatory",
                                  "trustee",
                                  "beneficiary",
                                  "settlor",
                                  "protector",
                                  "company_officer",
                                  "investor",
                                  "other"
                                ],
                                "description": "पक्ष द्वारा धारित भूमिका। `roles` के साथ विनिमेय; दोनों भेजे जाने पर वे मर्ज हो जाते हैं।"
                              },
                              "roles": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "director",
                                    "non_executive_director",
                                    "secretary",
                                    "chairman",
                                    "ubo",
                                    "shareholder",
                                    "representative",
                                    "founder",
                                    "legal_advisor",
                                    "authorized_signatory",
                                    "trustee",
                                    "beneficiary",
                                    "settlor",
                                    "protector",
                                    "company_officer",
                                    "investor",
                                    "other"
                                  ]
                                },
                                "description": "पार्टी द्वारा धारण की गई प्रत्येक भूमिका। एक व्यक्ति को कम से कम एक भूमिका की आवश्यकता होती है (यहाँ या `role` में)।"
                              },
                              "position": {
                                "type": "string",
                                "maxLength": 128,
                                "description": "किसी व्यक्ति का पदनाम।"
                              },
                              "date_of_birth": {
                                "type": "string",
                                "format": "date",
                                "nullable": true
                              },
                              "company_name": {
                                "type": "string",
                                "maxLength": 255,
                                "description": "कंपनी पक्षकार का नाम। जब `entity_type` `company` हो तो आवश्यक है।"
                              },
                              "registration_number": {
                                "type": "string",
                                "maxLength": 100,
                                "description": "कंपनी पक्ष की पंजीकरण संख्या।"
                              },
                              "email": {
                                "type": "string",
                                "format": "email",
                                "description": "सत्यापन लिंक कहाँ भेजा जाता है। तब आवश्यक होता है जब पक्ष को सत्यापन पूरा करना होता है, जो वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड पर निर्भर करता है।"
                              },
                              "ownership_percent": {
                                "type": "number",
                                "nullable": true,
                                "description": "कंपनी का वह हिस्सा जिसका स्वामी वह पक्ष है।"
                              },
                              "nationality": {
                                "type": "string",
                                "maxLength": 100,
                                "description": "किसी व्यक्ति की राष्ट्रीयता, या किसी कंपनी के निगमन का देश। प्रत्येक पक्ष के लिए आवश्यक।"
                              },
                              "phone_number": {
                                "type": "string",
                                "maxLength": 32
                              },
                              "custom_fields": {
                                "type": "object",
                                "additionalProperties": true,
                                "description": "वर्कफ़्लो-परिभाषित अतिरिक्त फ़ील्ड।"
                              },
                              "skip_verification": {
                                "type": "boolean",
                                "default": false,
                                "description": "इस पक्ष के सत्यापन को छोड़ने का अनुरोध करें। केवल तभी मान्य होता है जब वर्कफ़्लो की प्रमुख व्यक्ति सेटिंग्स में पक्ष की भूमिका छोड़ने की अनुमति देती है।"
                              }
                            }
                          }
                        }
                      }
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                },
                "example": {
                  "parties": [
                    {
                      "draft_id": "5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d",
                      "created_at": "2026-10-31T10:00:00Z",
                      "updated_at": "2026-10-31T10:00:00Z",
                      "party": {
                        "entity_type": "person",
                        "first_name": "Ana",
                        "last_name": "Lopez",
                        "roles": [
                          "ubo",
                          "director"
                        ],
                        "ownership_percent": 60,
                        "nationality": "MEX",
                        "email": "ana.lopez@example.com",
                        "date_of_birth": "1984-06-12"
                      }
                    }
                  ],
                  "node_id": "node_kyb_key_people"
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, किसी अन्य एप्लिकेशन से संबंधित है या स्कोप्ड कुंजी की सीमाओं से बाहर है; कोई विवरण उनमें अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.list_kyb_party_drafts(\n    \"33333333-4444-5555-6666-777777777777\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.listKybPartyDrafts(\"33333333-4444-5555-6666-777777777777\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ListKYBPartyDrafts(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsListKYBPartyDraftsParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().listKybPartyDrafts(\"33333333-4444-5555-6666-777777777777\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->listKybPartyDrafts('33333333-4444-5555-6666-777777777777');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.list_kyb_party_drafts(\"33333333-4444-5555-6666-777777777777\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ListKybPartyDraftsAsync(\"33333333-4444-5555-6666-777777777777\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "post": {
        "summary": "एक KYB पार्टी ड्राफ़्ट बनाएं",
        "description": "इस KYB सत्र के लिए आपके द्वारा तैयार की जा रही सूची में एक पक्ष (एक व्यक्ति या एक कंपनी) जोड़ें। वही फ़ील्ड और नियम लागू होते हैं जो होस्टेड Key People स्क्रीन पर होते हैं: एक व्यक्ति के लिए `full_name` या `first_name` और `last_name`, कम से कम एक भूमिका और एक राष्ट्रीयता की आवश्यकता होती है; एक कंपनी के लिए `company_name` और `nationality` में निगमन का देश आवश्यक है। `POST /v3/session/{sessionId}/kyb/parties/submit/` तक कुछ भी घोषित या बिल नहीं किया जाता है। `write:businesses` की आवश्यकता है।",
        "operationId": "post_v3_session_kyb_party_drafts",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "create_kyb_party_draft",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "entity_type",
                  "nationality"
                ],
                "properties": {
                  "entity_type": {
                    "type": "string",
                    "enum": [
                      "person",
                      "company"
                    ],
                    "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                  },
                  "full_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "किसी व्यक्ति का पूरा नाम। इसे भेजें, या `first_name` और `last_name` भेजें।"
                  },
                  "first_name": {
                    "type": "string",
                    "maxLength": 128
                  },
                  "last_name": {
                    "type": "string",
                    "maxLength": 128
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "director",
                      "non_executive_director",
                      "secretary",
                      "chairman",
                      "ubo",
                      "shareholder",
                      "representative",
                      "founder",
                      "legal_advisor",
                      "authorized_signatory",
                      "trustee",
                      "beneficiary",
                      "settlor",
                      "protector",
                      "company_officer",
                      "investor",
                      "other"
                    ],
                    "description": "पक्ष द्वारा धारित भूमिका। `roles` के साथ विनिमेय; दोनों भेजे जाने पर वे मर्ज हो जाते हैं।"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "director",
                        "non_executive_director",
                        "secretary",
                        "chairman",
                        "ubo",
                        "shareholder",
                        "representative",
                        "founder",
                        "legal_advisor",
                        "authorized_signatory",
                        "trustee",
                        "beneficiary",
                        "settlor",
                        "protector",
                        "company_officer",
                        "investor",
                        "other"
                      ]
                    },
                    "description": "पार्टी द्वारा धारण की गई प्रत्येक भूमिका। एक व्यक्ति को कम से कम एक भूमिका की आवश्यकता होती है (यहाँ या `role` में)।"
                  },
                  "position": {
                    "type": "string",
                    "maxLength": 128,
                    "description": "किसी व्यक्ति का पदनाम।"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "nullable": true
                  },
                  "company_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "कंपनी पक्षकार का नाम। जब `entity_type` `company` हो तो आवश्यक है।"
                  },
                  "registration_number": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "कंपनी पक्ष की पंजीकरण संख्या।"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "सत्यापन लिंक कहाँ भेजा जाता है। तब आवश्यक होता है जब पक्ष को सत्यापन पूरा करना होता है, जो वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड पर निर्भर करता है।"
                  },
                  "ownership_percent": {
                    "type": "number",
                    "nullable": true,
                    "description": "कंपनी का वह हिस्सा जिसका स्वामी वह पक्ष है।"
                  },
                  "nationality": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "किसी व्यक्ति की राष्ट्रीयता, या किसी कंपनी के निगमन का देश। प्रत्येक पक्ष के लिए आवश्यक।"
                  },
                  "phone_number": {
                    "type": "string",
                    "maxLength": 32
                  },
                  "custom_fields": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "वर्कफ़्लो-परिभाषित अतिरिक्त फ़ील्ड।"
                  },
                  "skip_verification": {
                    "type": "boolean",
                    "default": false,
                    "description": "इस पक्ष के सत्यापन को छोड़ने का अनुरोध करें। केवल तभी मान्य होता है जब वर्कफ़्लो की प्रमुख व्यक्ति सेटिंग्स में पक्ष की भूमिका छोड़ने की अनुमति देती है।"
                  }
                }
              },
              "example": {
                "entity_type": "person",
                "first_name": "Ana",
                "last_name": "Lopez",
                "roles": [
                  "ubo",
                  "director"
                ],
                "ownership_percent": 60,
                "nationality": "MEX",
                "email": "ana.lopez@example.com",
                "date_of_birth": "1984-06-12"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "ड्राफ़्ट बनाया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "draft_id",
                    "created_at",
                    "updated_at",
                    "party"
                  ],
                  "properties": {
                    "draft_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "party": {
                      "type": "object",
                      "required": [
                        "entity_type",
                        "nationality"
                      ],
                      "properties": {
                        "entity_type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "company"
                          ],
                          "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                        },
                        "full_name": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "किसी व्यक्ति का पूरा नाम। इसे भेजें, या `first_name` और `last_name` भेजें।"
                        },
                        "first_name": {
                          "type": "string",
                          "maxLength": 128
                        },
                        "last_name": {
                          "type": "string",
                          "maxLength": 128
                        },
                        "role": {
                          "type": "string",
                          "enum": [
                            "director",
                            "non_executive_director",
                            "secretary",
                            "chairman",
                            "ubo",
                            "shareholder",
                            "representative",
                            "founder",
                            "legal_advisor",
                            "authorized_signatory",
                            "trustee",
                            "beneficiary",
                            "settlor",
                            "protector",
                            "company_officer",
                            "investor",
                            "other"
                          ],
                          "description": "पक्ष द्वारा धारित भूमिका। `roles` के साथ विनिमेय; दोनों भेजे जाने पर वे मर्ज हो जाते हैं।"
                        },
                        "roles": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "director",
                              "non_executive_director",
                              "secretary",
                              "chairman",
                              "ubo",
                              "shareholder",
                              "representative",
                              "founder",
                              "legal_advisor",
                              "authorized_signatory",
                              "trustee",
                              "beneficiary",
                              "settlor",
                              "protector",
                              "company_officer",
                              "investor",
                              "other"
                            ]
                          },
                          "description": "पार्टी द्वारा धारण की गई प्रत्येक भूमिका। एक व्यक्ति को कम से कम एक भूमिका की आवश्यकता होती है (यहाँ या `role` में)।"
                        },
                        "position": {
                          "type": "string",
                          "maxLength": 128,
                          "description": "किसी व्यक्ति का पदनाम।"
                        },
                        "date_of_birth": {
                          "type": "string",
                          "format": "date",
                          "nullable": true
                        },
                        "company_name": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "कंपनी पक्षकार का नाम। जब `entity_type` `company` हो तो आवश्यक है।"
                        },
                        "registration_number": {
                          "type": "string",
                          "maxLength": 100,
                          "description": "कंपनी पक्ष की पंजीकरण संख्या।"
                        },
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "सत्यापन लिंक कहाँ भेजा जाता है। तब आवश्यक होता है जब पक्ष को सत्यापन पूरा करना होता है, जो वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड पर निर्भर करता है।"
                        },
                        "ownership_percent": {
                          "type": "number",
                          "nullable": true,
                          "description": "कंपनी का वह हिस्सा जिसका स्वामी वह पक्ष है।"
                        },
                        "nationality": {
                          "type": "string",
                          "maxLength": 100,
                          "description": "किसी व्यक्ति की राष्ट्रीयता, या किसी कंपनी के निगमन का देश। प्रत्येक पक्ष के लिए आवश्यक।"
                        },
                        "phone_number": {
                          "type": "string",
                          "maxLength": 32
                        },
                        "custom_fields": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "वर्कफ़्लो-परिभाषित अतिरिक्त फ़ील्ड।"
                        },
                        "skip_verification": {
                          "type": "boolean",
                          "default": false,
                          "description": "इस पक्ष के सत्यापन को छोड़ने का अनुरोध करें। केवल तभी मान्य होता है जब वर्कफ़्लो की प्रमुख व्यक्ति सेटिंग्स में पक्ष की भूमिका छोड़ने की अनुमति देती है।"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "draft_id": "5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d",
                  "created_at": "2026-10-31T10:00:00Z",
                  "updated_at": "2026-10-31T10:00:00Z",
                  "party": {
                    "entity_type": "person",
                    "first_name": "Ana",
                    "last_name": "Lopez",
                    "roles": [
                      "ubo",
                      "director"
                    ],
                    "ownership_percent": 60,
                    "nationality": "MEX",
                    "email": "ana.lopez@example.com",
                    "date_of_birth": "1984-06-12"
                  }
                }
              }
            }
          },
          "400": {
            "description": "एक पार्टी फ़ील्ड अमान्य है या कोई आवश्यक फ़ील्ड अनुपस्थित है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "non_field_errors": [
                    "Person parties require at least one role."
                  ]
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, किसी अन्य एप्लिकेशन से संबंधित है या स्कोप्ड कुंजी की सीमाओं से बाहर है; कोई विवरण उनमें अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          },
          "409": {
            "description": "सत्र समाप्त हो चुका है (`kyb_session_not_writable`)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "This verification session is no longer accepting changes.",
                  "code": "kyb_session_not_writable"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.create_kyb_party_draft(\n    \"33333333-4444-5555-6666-777777777777\",\n    entity_type=\"person\",\n    first_name=\"Ana\",\n    last_name=\"Lopez\",\n    roles=[\"ubo\", \"director\"],\n    date_of_birth=\"1984-06-12\",\n    email=\"ana.lopez@example.com\",\n    ownership_percent=60.0,\n    nationality=\"MEX\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.createKybPartyDraft(\"33333333-4444-5555-6666-777777777777\", {\n  entity_type: \"person\",\n  first_name: \"Ana\",\n  last_name: \"Lopez\",\n  roles: [\"ubo\", \"director\"],\n  date_of_birth: \"1984-06-12\",\n  email: \"ana.lopez@example.com\",\n  ownership_percent: 60.0,\n  nationality: \"MEX\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.CreateKYBPartyDraft(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsCreateKYBPartyDraftParams{\n\tEntityType:       \"person\",\n\tFirstName:        didit.String(\"Ana\"),\n\tLastName:         didit.String(\"Lopez\"),\n\tRoles:            didit.Some([]didit.SessionsCreateKYBPartyDraftParamsRoles{\"ubo\", \"director\"}),\n\tDateOfBirth:      didit.String(\"1984-06-12\"),\n\tEmail:            didit.String(\"ana.lopez@example.com\"),\n\tOwnershipPercent: didit.Float(60.0),\n\tNationality:      \"MEX\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import java.time.LocalDate;\nimport java.util.List;\nimport me.didit.Didit;\nimport me.didit.types.SessionsCreateKybPartyDraftParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().createKybPartyDraft(\"33333333-4444-5555-6666-777777777777\", SessionsCreateKybPartyDraftParams.builder()\n        .entityType(SessionsCreateKybPartyDraftParams.EntityType.of(\"person\"))\n        .firstName(\"Ana\")\n        .lastName(\"Lopez\")\n        .roles(List.of(SessionsCreateKybPartyDraftParams.Roles.of(\"ubo\"), SessionsCreateKybPartyDraftParams.Roles.of(\"director\")))\n        .dateOfBirth(LocalDate.parse(\"1984-06-12\"))\n        .email(\"ana.lopez@example.com\")\n        .ownershipPercent(60.0)\n        .nationality(\"MEX\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->createKybPartyDraft('33333333-4444-5555-6666-777777777777', [\n    'entity_type' => 'person',\n    'first_name' => 'Ana',\n    'last_name' => 'Lopez',\n    'roles' => ['ubo', 'director'],\n    'date_of_birth' => '1984-06-12',\n    'email' => 'ana.lopez@example.com',\n    'ownership_percent' => 60.0,\n    'nationality' => 'MEX',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.create_kyb_party_draft(\n  \"33333333-4444-5555-6666-777777777777\",\n  entity_type: \"person\",\n  first_name: \"Ana\",\n  last_name: \"Lopez\",\n  roles: [\"ubo\", \"director\"],\n  date_of_birth: \"1984-06-12\",\n  email: \"ana.lopez@example.com\",\n  ownership_percent: 60.0,\n  nationality: \"MEX\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.CreateKybPartyDraftAsync(\"33333333-4444-5555-6666-777777777777\", new SessionsCreateKybPartyDraftParams\n{\n    EntityType = \"person\",\n    FirstName = \"Ana\",\n    LastName = \"Lopez\",\n    Roles = new SessionsCreateKybPartyDraftParamsRoles[] { \"ubo\", \"director\" },\n    DateOfBirth = \"1984-06-12\",\n    Email = \"ana.lopez@example.com\",\n    OwnershipPercent = 60.0,\n    Nationality = \"MEX\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/parties/drafts/{draftId}/": {
      "patch": {
        "summary": "एक KYB पक्ष ड्राफ्ट संपादित करें",
        "description": "किसी एक पार्टी ड्राफ़्ट के फ़ील्ड बदलें। संपादन संग्रहीत ड्राफ़्ट में मर्ज कर दिया जाता है और मर्ज की गई पार्टी को समग्र रूप से मान्य किया जाता है, इसलिए ऐसा संपादन जो पार्टी को अधूरा छोड़ दे, अस्वीकार कर दिया जाता है। `first_name` या `last_name` को बदलने से संग्रहीत पूरा नाम बदल जाता है। `write:businesses` की आवश्यकता है।",
        "operationId": "patch_v3_session_kyb_party_draft",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "update_kyb_party_draft",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "draftId",
            "in": "path",
            "required": true,
            "description": "पार्टी ड्राफ्ट का UUID (बनाए जाने पर लौटाया गया `draft_id`)।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "पार्टी फ़ील्ड का कोई भी सबसेट। संपादन संग्रहीत ड्राफ़्ट में मर्ज हो जाता है और मर्ज की गई पार्टी को पूरी तरह से मान्य किया जाता है, इसलिए जो ड्राफ़्ट संपादन से पहले सबमिट किया जा सकता था, वह इसके बाद भी सबमिट किया जा सकता है।",
                "properties": {
                  "entity_type": {
                    "type": "string",
                    "enum": [
                      "person",
                      "company"
                    ],
                    "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                  },
                  "full_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "किसी व्यक्ति का पूरा नाम। इसे भेजें, या `first_name` और `last_name` भेजें।"
                  },
                  "first_name": {
                    "type": "string",
                    "maxLength": 128
                  },
                  "last_name": {
                    "type": "string",
                    "maxLength": 128
                  },
                  "role": {
                    "type": "string",
                    "enum": [
                      "director",
                      "non_executive_director",
                      "secretary",
                      "chairman",
                      "ubo",
                      "shareholder",
                      "representative",
                      "founder",
                      "legal_advisor",
                      "authorized_signatory",
                      "trustee",
                      "beneficiary",
                      "settlor",
                      "protector",
                      "company_officer",
                      "investor",
                      "other"
                    ],
                    "description": "पक्ष द्वारा धारित भूमिका। `roles` के साथ विनिमेय; दोनों भेजे जाने पर वे मर्ज हो जाते हैं।"
                  },
                  "roles": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "director",
                        "non_executive_director",
                        "secretary",
                        "chairman",
                        "ubo",
                        "shareholder",
                        "representative",
                        "founder",
                        "legal_advisor",
                        "authorized_signatory",
                        "trustee",
                        "beneficiary",
                        "settlor",
                        "protector",
                        "company_officer",
                        "investor",
                        "other"
                      ]
                    },
                    "description": "पार्टी द्वारा धारण की गई प्रत्येक भूमिका। एक व्यक्ति को कम से कम एक भूमिका की आवश्यकता होती है (यहाँ या `role` में)।"
                  },
                  "position": {
                    "type": "string",
                    "maxLength": 128,
                    "description": "किसी व्यक्ति का पदनाम।"
                  },
                  "date_of_birth": {
                    "type": "string",
                    "format": "date",
                    "nullable": true
                  },
                  "company_name": {
                    "type": "string",
                    "maxLength": 255,
                    "description": "कंपनी पक्षकार का नाम। जब `entity_type` `company` हो तो आवश्यक है।"
                  },
                  "registration_number": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "कंपनी पक्ष की पंजीकरण संख्या।"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "सत्यापन लिंक कहाँ भेजा जाता है। तब आवश्यक होता है जब पक्ष को सत्यापन पूरा करना होता है, जो वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड पर निर्भर करता है।"
                  },
                  "ownership_percent": {
                    "type": "number",
                    "nullable": true,
                    "description": "कंपनी का वह हिस्सा जिसका स्वामी वह पक्ष है।"
                  },
                  "nationality": {
                    "type": "string",
                    "maxLength": 100,
                    "description": "किसी व्यक्ति की राष्ट्रीयता, या किसी कंपनी के निगमन का देश। प्रत्येक पक्ष के लिए आवश्यक।"
                  },
                  "phone_number": {
                    "type": "string",
                    "maxLength": 32
                  },
                  "custom_fields": {
                    "type": "object",
                    "additionalProperties": true,
                    "description": "वर्कफ़्लो-परिभाषित अतिरिक्त फ़ील्ड।"
                  },
                  "skip_verification": {
                    "type": "boolean",
                    "default": false,
                    "description": "इस पक्ष के सत्यापन को छोड़ने का अनुरोध करें। केवल तभी मान्य होता है जब वर्कफ़्लो की प्रमुख व्यक्ति सेटिंग्स में पक्ष की भूमिका छोड़ने की अनुमति देती है।"
                  }
                }
              },
              "example": {
                "ownership_percent": 55
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "ड्राफ़्ट अपडेट किया गया।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "draft_id",
                    "created_at",
                    "updated_at",
                    "party"
                  ],
                  "properties": {
                    "draft_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "party": {
                      "type": "object",
                      "required": [
                        "entity_type",
                        "nationality"
                      ],
                      "properties": {
                        "entity_type": {
                          "type": "string",
                          "enum": [
                            "person",
                            "company"
                          ],
                          "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
                        },
                        "full_name": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "किसी व्यक्ति का पूरा नाम। इसे भेजें, या `first_name` और `last_name` भेजें।"
                        },
                        "first_name": {
                          "type": "string",
                          "maxLength": 128
                        },
                        "last_name": {
                          "type": "string",
                          "maxLength": 128
                        },
                        "role": {
                          "type": "string",
                          "enum": [
                            "director",
                            "non_executive_director",
                            "secretary",
                            "chairman",
                            "ubo",
                            "shareholder",
                            "representative",
                            "founder",
                            "legal_advisor",
                            "authorized_signatory",
                            "trustee",
                            "beneficiary",
                            "settlor",
                            "protector",
                            "company_officer",
                            "investor",
                            "other"
                          ],
                          "description": "पक्ष द्वारा धारित भूमिका। `roles` के साथ विनिमेय; दोनों भेजे जाने पर वे मर्ज हो जाते हैं।"
                        },
                        "roles": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "director",
                              "non_executive_director",
                              "secretary",
                              "chairman",
                              "ubo",
                              "shareholder",
                              "representative",
                              "founder",
                              "legal_advisor",
                              "authorized_signatory",
                              "trustee",
                              "beneficiary",
                              "settlor",
                              "protector",
                              "company_officer",
                              "investor",
                              "other"
                            ]
                          },
                          "description": "पार्टी द्वारा धारण की गई प्रत्येक भूमिका। एक व्यक्ति को कम से कम एक भूमिका की आवश्यकता होती है (यहाँ या `role` में)।"
                        },
                        "position": {
                          "type": "string",
                          "maxLength": 128,
                          "description": "किसी व्यक्ति का पदनाम।"
                        },
                        "date_of_birth": {
                          "type": "string",
                          "format": "date",
                          "nullable": true
                        },
                        "company_name": {
                          "type": "string",
                          "maxLength": 255,
                          "description": "कंपनी पक्षकार का नाम। जब `entity_type` `company` हो तो आवश्यक है।"
                        },
                        "registration_number": {
                          "type": "string",
                          "maxLength": 100,
                          "description": "कंपनी पक्ष की पंजीकरण संख्या।"
                        },
                        "email": {
                          "type": "string",
                          "format": "email",
                          "description": "सत्यापन लिंक कहाँ भेजा जाता है। तब आवश्यक होता है जब पक्ष को सत्यापन पूरा करना होता है, जो वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड पर निर्भर करता है।"
                        },
                        "ownership_percent": {
                          "type": "number",
                          "nullable": true,
                          "description": "कंपनी का वह हिस्सा जिसका स्वामी वह पक्ष है।"
                        },
                        "nationality": {
                          "type": "string",
                          "maxLength": 100,
                          "description": "किसी व्यक्ति की राष्ट्रीयता, या किसी कंपनी के निगमन का देश। प्रत्येक पक्ष के लिए आवश्यक।"
                        },
                        "phone_number": {
                          "type": "string",
                          "maxLength": 32
                        },
                        "custom_fields": {
                          "type": "object",
                          "additionalProperties": true,
                          "description": "वर्कफ़्लो-परिभाषित अतिरिक्त फ़ील्ड।"
                        },
                        "skip_verification": {
                          "type": "boolean",
                          "default": false,
                          "description": "इस पक्ष के सत्यापन को छोड़ने का अनुरोध करें। केवल तभी मान्य होता है जब वर्कफ़्लो की प्रमुख व्यक्ति सेटिंग्स में पक्ष की भूमिका छोड़ने की अनुमति देती है।"
                        }
                      }
                    }
                  }
                },
                "example": {
                  "draft_id": "5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d",
                  "created_at": "2026-10-31T10:00:00Z",
                  "updated_at": "2026-10-31T10:00:00Z",
                  "party": {
                    "entity_type": "person",
                    "first_name": "Ana",
                    "last_name": "Lopez",
                    "roles": [
                      "ubo",
                      "director"
                    ],
                    "ownership_percent": 55,
                    "nationality": "MEX",
                    "email": "ana.lopez@example.com",
                    "date_of_birth": "1984-06-12"
                  }
                }
              }
            }
          },
          "400": {
            "description": "मर्ज किया गया पक्ष अमान्य है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "non_field_errors": [
                    "Person parties require at least one role."
                  ]
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र या ड्राफ़्ट मौजूद नहीं है, या सत्र उस कुंजी के एप्लिकेशन या स्कोप्ड कुंजी की सीमाओं से बाहर है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          },
          "409": {
            "description": "सत्र समाप्त हो चुका है (`kyb_session_not_writable`)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "This verification session is no longer accepting changes.",
                  "code": "kyb_session_not_writable"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.update_kyb_party_draft(\n    \"33333333-4444-5555-6666-777777777777\",\n    \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\",\n    ownership_percent=55.0,\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.updateKybPartyDraft(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\",\n  {\n    ownership_percent: 55.0,\n  },\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateKYBPartyDraft(ctx, \"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\", didit.SessionsUpdateKYBPartyDraftParams{\n\tOwnershipPercent: didit.Float(55.0),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsUpdateKybPartyDraftParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().updateKybPartyDraft(\"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\", SessionsUpdateKybPartyDraftParams.builder()\n        .ownershipPercent(55.0)\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->updateKybPartyDraft('33333333-4444-5555-6666-777777777777', '5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d', [\n    'ownership_percent' => 55.0,\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.update_kyb_party_draft(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\",\n  ownership_percent: 55.0\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.UpdateKybPartyDraftAsync(\"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\", new SessionsUpdateKybPartyDraftParams\n{\n    OwnershipPercent = 55.0,\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      },
      "delete": {
        "summary": "एक KYB पार्टी ड्राफ्ट हटाएं",
        "description": "एक पार्टी ड्राफ़्ट हटाएं। घोषित पार्टियां प्रभावित नहीं होती हैं। `write:businesses` आवश्यक है।",
        "operationId": "delete_v3_session_kyb_party_draft",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "delete_kyb_party_draft",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "draftId",
            "in": "path",
            "required": true,
            "description": "पार्टी ड्राफ्ट का UUID (बनाए जाने पर लौटाया गया `draft_id`)।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "ड्राफ़्ट हटाया गया। कोई बॉडी नहीं है।"
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र या ड्राफ़्ट मौजूद नहीं है, या सत्र उस कुंजी के एप्लिकेशन या स्कोप्ड कुंजी की सीमाओं से बाहर है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          },
          "409": {
            "description": "सत्र समाप्त हो चुका है (`kyb_session_not_writable`)।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "This verification session is no longer accepting changes.",
                  "code": "kyb_session_not_writable"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nclient.sessions.delete_kyb_party_draft(\n    \"33333333-4444-5555-6666-777777777777\",\n    \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\",\n)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nawait didit.sessions.deleteKybPartyDraft(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\",\n);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nif err := client.Sessions.DeleteKYBPartyDraft(ctx, \"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\", didit.SessionsDeleteKYBPartyDraftParams{}); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nclient.sessions().deleteKybPartyDraft(\"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\");"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$didit->sessions->deleteKybPartyDraft('33333333-4444-5555-6666-777777777777', '5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d');"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.sessions.delete_kyb_party_draft(\n  \"33333333-4444-5555-6666-777777777777\",\n  \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\"\n)"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait client.Sessions.DeleteKybPartyDraftAsync(\"33333333-4444-5555-6666-777777777777\", \"5b0d7a52-9d3e-4f0c-8c6a-0e5f3a1b2c4d\");"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/kyb/parties/submit/": {
      "post": {
        "summary": "KYB पार्टी ड्राफ़्ट सबमिट करें",
        "description": "संग्रहीत ड्राफ़्ट को कंपनी के प्रमुख व्यक्तियों के रूप में घोषित करें। यह आपकी API कुंजी के तहत होस्ट किया गया प्रमुख व्यक्ति चरण है: Didit वर्कफ़्लो की भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड से यह तय करता है कि किन पक्षों को सत्यापित किया जाना चाहिए, उनमें से प्रत्येक के लिए एक व्यक्तिगत KYC सत्र (या कॉर्पोरेट स्वामी के लिए KYB सब-सत्र) बनाता है, वर्कफ़्लो द्वारा मांगे गए ईमेल भेजता है, और सत्र को आगे बढ़ाता है। प्रत्येक चाइल्ड सत्र का बिल होस्ट किए गए फ़्लो की तरह ही लिया जाता है। ड्राफ़्ट उपयोग कर लिए जाते हैं। एक सफल सबमिट के बाद कॉल दोहराने से कुछ नहीं बदलता है और यह `already_submitted: true` और पहले से मौजूद पक्षों के साथ `200` का उत्तर देता है। सत्र प्रमुख व्यक्ति चरण पर होना चाहिए। प्रत्येक व्यक्ति को उनका `kyc_session_url` भेजें, या इसे एम्बेड करें। इसके लिए `write:businesses` आवश्यक है।",
        "operationId": "post_v3_session_kyb_parties_submit",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "submit_kyb_parties",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "व्यवसाय सत्यापन (KYB) सत्र का UUID। यह API कुंजी के एप्लिकेशन से संबंधित होना चाहिए।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "33333333-4444-5555-6666-777777777777"
            }
          },
          {
            "name": "node_id",
            "in": "query",
            "required": false,
            "description": "KYB चरण का वर्कफ़्लो नोड। केवल तभी आवश्यक जब वर्कफ़्लो में एक से अधिक KYB नोड हों; डिफ़ॉल्ट रूप से Didit सत्र के अपने नोड का उपयोग करता है।",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "locale": {
                    "type": "string",
                    "maxLength": 10,
                    "description": "सत्र जिस चरण में आगे बढ़ता है, उसके रिस्पॉन्स का अनुवाद करने के लिए उपयोग किया जाने वाला लोकेल।"
                  }
                }
              },
              "example": {
                "locale": "es"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "घोषित (या पहले से घोषित) पक्ष।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean"
                    },
                    "next_step": {
                      "type": "string",
                      "nullable": true,
                      "description": "सत्र जिस चरण पर है।"
                    },
                    "status": {
                      "type": "string",
                      "description": "व्यवसाय सत्र की स्थिति।"
                    },
                    "advanced": {
                      "type": "boolean",
                      "description": "`true` जब इस कॉल ने पक्षों की घोषणा की और सत्र को आगे बढ़ाया।"
                    },
                    "already_submitted": {
                      "type": "boolean",
                      "description": "`true` जब पक्षों को पहले के कॉल द्वारा घोषित किया गया था।"
                    },
                    "kyb_key_people_status": {
                      "type": "string"
                    },
                    "parties": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/KYBKeyPeopleParty"
                      }
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "next_step": "FINISHED",
                  "status": "In Progress",
                  "advanced": true,
                  "already_submitted": false,
                  "kyb_key_people_status": "In Progress",
                  "parties": []
                }
              }
            }
          },
          "402": {
            "description": "चाइल्ड सत्यापन सत्रों के लिए संगठन के पास कोई क्रेडिट नहीं बचा है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Insufficient credits."
                }
              }
            }
          },
          "401": {
            "description": "स्कोप्ड API कुंजी की समय-सीमा समाप्त हो गई है। यह एकमात्र मामला है जो `401` लौटाता है: अनुपलब्ध, अमान्य या निरस्त कुंजी `403` लौटाती है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Expired key": {
                    "summary": "कुंजी की समाप्ति तिथि बीत चुकी है",
                    "value": {
                      "detail": "This API key has expired."
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "प्रमाणीकरण या प्राधिकरण विफलता। अनुपस्थित कुंजी `403` लौटाती है, और किसी अन्य एप्लिकेशन की कुंजी, इस endpoint के लिए आवश्यक अनुमति के बिना वाली स्कोप्ड कुंजी, तथा कुंजी की IP अनुमति सूची (allowlist) के बाहर से किया गया अनुरोध भी यही लौटाता है; गलत, निरस्त या समय-सीमा समाप्त कुंजी `401` लौटाती है। उन्हें `detail` द्वारा पहचानें।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Missing or invalid credentials": {
                    "summary": "कोई x-api-key हेडर नहीं है, या कुंजी सत्यापन में विफल रही",
                    "value": {
                      "detail": "Authentication credentials were not provided or are invalid."
                    }
                  },
                  "Other application": {
                    "summary": "एक मान्य कुंजी जो सत्र से भिन्न एप्लिकेशन से संबंधित है",
                    "value": {
                      "detail": "You do not have permission to perform this action."
                    }
                  },
                  "Scoped key without decisions write": {
                    "summary": "स्कोप्ड कुंजी में decisions: write की कमी है",
                    "value": {
                      "detail": "This API key has no write access to decisions."
                    }
                  },
                  "IP not allowed": {
                    "summary": "कुंजी की IP अनुमति सूची से बाहर का अनुरोध",
                    "value": {
                      "detail": "This API key can't be used from this IP address."
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "सत्र मौजूद नहीं है, हटा दिया गया था, किसी अन्य एप्लिकेशन से संबंधित है या स्कोप्ड कुंजी की सीमाओं से बाहर है; कोई विवरण उनमें अंतर नहीं करता है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "example": {
                  "detail": "Session not found."
                }
              }
            }
          },
          "409": {
            "description": "`kyb_no_party_drafts`: सबमिट करने के लिए कुछ भी नहीं है। `kyb_parties_already_submitted`: पार्टियों के घोषित होने के बाद ड्राफ़्ट जोड़े गए थे। `kyb_step_mismatch`: सत्र प्रमुख व्यक्ति चरण पर नहीं है (`next_step` इसके चरण का नाम बताता है)। `kyb_session_not_writable`: सत्र समाप्त हो चुका है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    },
                    "code": {
                      "type": "string"
                    },
                    "next_step": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "There are no draft parties to submit.",
                  "code": "kyb_no_party_drafts"
                }
              }
            }
          },
          "429": {
            "description": "रेट लिमिट पार हो गई: प्रति मिनट प्रति API कुंजी 300 राइट (POST, PATCH, DELETE) अनुरोध। पुनः प्रयास करने से पहले `Retry-After` सेकंड प्रतीक्षा करें; `X-RateLimit-*` हेडर बजट दिखाते हैं।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string",
                      "description": "मानव-पठनीय त्रुटि संदेश।"
                    }
                  }
                },
                "examples": {
                  "Rate limited": {
                    "summary": "वर्तमान मिनट का बजट समाप्त हो गया",
                    "value": {
                      "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
                    }
                  }
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "पुनः प्रयास करने से पहले प्रतीक्षा करने के सेकंड।",
                "schema": {
                  "type": "integer",
                  "minimum": 1,
                  "example": 30
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.submit_kyb_parties(\n    \"33333333-4444-5555-6666-777777777777\",\n    locale=\"es\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.submitKybParties(\"33333333-4444-5555-6666-777777777777\", {\n  locale: \"es\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.SubmitKYBParties(ctx, \"33333333-4444-5555-6666-777777777777\", didit.SessionsSubmitKYBPartiesParams{\n\tLocale: didit.String(\"es\"),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.SessionsSubmitKybPartiesParams;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().submitKybParties(\"33333333-4444-5555-6666-777777777777\", SessionsSubmitKybPartiesParams.builder()\n        .locale(\"es\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->submitKybParties('33333333-4444-5555-6666-777777777777', [\n    'locale' => 'es',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.submit_kyb_parties(\n  \"33333333-4444-5555-6666-777777777777\",\n  locale: \"es\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.SubmitKybPartiesAsync(\"33333333-4444-5555-6666-777777777777\", new SessionsSubmitKybPartiesParams\n{\n    Locale = \"es\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    },
    "/v3/session/{sessionId}/files-export/": {
      "post": {
        "summary": "सत्र की प्रत्येक फ़ाइल एक्सपोर्ट करें",
        "description": "मूल गुणवत्ता में उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र की प्रत्येक छवि, वीडियो और दस्तावेज़ के साथ एक ZIP तैयार करना शुरू करें: फ़ाइलें ZIP में वैसे ही संग्रहीत की जाती हैं जैसे उन्हें कैप्चर किया गया था, उन्हें कभी दोबारा कंप्रेस नहीं किया जाता है। एक्सपोर्ट के साथ `202` उत्तर देता है; इसे `GET /v3/session/{sessionId}/files-export/{exportId}/` से तब तक पढ़ें जब तक कि `status` `READY` न हो जाए, फिर `download_url` डाउनलोड करें। जब तक उसी सत्र का एक्सपोर्ट तैयार किया जा रहा होता है, तब तक नए एक्सपोर्ट के बजाय वही एक्सपोर्ट लौटाया जाता है।\n\nZIP तैयार होने के 24 घंटे बाद हटा दिया जाता है, और सत्र हटाए जाने पर तुरंत हटा दिया जाता है। हटाए गए सत्र को एक्सपोर्ट नहीं किया जा सकता है। दिया गया प्रत्येक एक्सपोर्ट और प्रत्येक डाउनलोड लिंक सत्र के ऑडिट लॉग में लिखा जाता है। स्कोप्ड API कुंजी को `media: read` और `decisions: read` की आवश्यकता होती है; कंसोल उपयोगकर्ता को सत्र पढ़ने के विशेषाधिकार की आवश्यकता होती है।",
        "operationId": "post_v3_session_files_export",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "export_files",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है। हटाया गया सत्र `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/files-export/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.export_files(\n    \"11111111-2222-3333-4444-555555555555\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.exportFiles(\"11111111-2222-3333-4444-555555555555\");\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.ExportFiles(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().exportFiles(\"11111111-2222-3333-4444-555555555555\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->exportFiles('11111111-2222-3333-4444-555555555555');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.export_files(\"11111111-2222-3333-4444-555555555555\")\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.ExportFilesAsync(\"11111111-2222-3333-4444-555555555555\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "202": {
            "description": "एक्सपोर्ट, तैयार किया जा रहा है।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionFilesExport"
                },
                "example": {
                  "export_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                  "session_id": "11111111-2222-3333-4444-555555555555",
                  "status": "PENDING",
                  "file_count": null,
                  "size_bytes": null,
                  "download_url": null,
                  "expires_at": null,
                  "error": null,
                  "created_at": "2026-10-29T12:00:03Z",
                  "completed_at": null
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/session/{sessionId}/files-export/{exportId}/": {
      "get": {
        "summary": "सत्र फ़ाइलें एक्सपोर्ट प्राप्त करें",
        "description": "`POST /v3/session/{sessionId}/files-export/` के साथ शुरू किए गए एक्सपोर्ट की प्रगति। एक बार जब `status`, `READY` हो जाता है, तो `download_url` ZIP का एक हस्ताक्षरित URL होता है जो थोड़े समय के लिए मान्य रहता है; `expires_at` तक एक नया URL प्राप्त करने के लिए एक्सपोर्ट को फिर से पढ़ें। प्रत्येक रीड जो डाउनलोड लिंक प्रदान करता है, सत्र के ऑडिट लॉग में लिखा जाता है। हटाए गए सत्र का एक्सपोर्ट `404` लौटाता है।",
        "operationId": "get_v3_session_files_export",
        "x-didit-sdk": {
          "resource": "sessions",
          "method": "get_files_export",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Sessions"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "description": "सत्यापन सत्र का UUID (`POST /v3/session/` द्वारा लौटाया गया `session_id`)। उपयोगकर्ता सत्यापन (KYC) और व्यवसाय सत्यापन (KYB) दोनों सत्र ID स्वीकार करता है। हटाया गया सत्र `404` लौटाता है।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "11111111-2222-3333-4444-555555555555"
            }
          },
          {
            "name": "exportId",
            "in": "path",
            "required": true,
            "description": "`POST /v3/session/{sessionId}/files-export/` द्वारा लौटाया गया `export_id`।",
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
            }
          }
        ],
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X GET 'https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/files-export/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/' \\\n  -H 'x-api-key: YOUR_API_KEY'"
          },
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.sessions.get_files_export(\n    \"11111111-2222-3333-4444-555555555555\",\n    \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.sessions.getFilesExport(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\n);\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.GetFilesExport(ctx, \"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.sessions().getFilesExport(\"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\");\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->sessions->getFilesExport('11111111-2222-3333-4444-555555555555', 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee');\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.sessions.get_files_export(\n  \"11111111-2222-3333-4444-555555555555\",\n  \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.Sessions.GetFilesExportAsync(\"11111111-2222-3333-4444-555555555555\", \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\");\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ],
        "responses": {
          "200": {
            "description": "एक्सपोर्ट।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SessionFilesExport"
                },
                "example": {
                  "export_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
                  "session_id": "11111111-2222-3333-4444-555555555555",
                  "status": "READY",
                  "file_count": 9,
                  "size_bytes": 18734120,
                  "download_url": "https://storage.example.com/session/11111111-2222-3333-4444-555555555555/files-export/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/session-42-files.zip?X-Amz-Signature=...",
                  "expires_at": "2026-10-30T12:00:41Z",
                  "error": null,
                  "created_at": "2026-10-29T12:00:03Z",
                  "completed_at": "2026-10-29T12:00:41Z"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    },
    "/v3/travel-rule/unmatched/": {
      "get": {
        "summary": "बेमेल Travel Rule डिपॉज़िट सूचीबद्ध करें",
        "description": "इनबाउंड डिपॉज़िट जो अभी भी प्रेषक VASP के Travel Rule डेटा की प्रतीक्षा कर रहे हैं: उनका ट्रांसफ़र `AWAITING_COUNTERPARTY`, `NOT_ENOUGH_COUNTERPARTY_DATA` या `COUNTERPARTY_VASP_NOT_FOUND` है, उनके साथ कोई प्राप्त संदेश युग्मित नहीं है, और किसी ने भी उनका मैन्युअल रूप से मिलान नहीं किया है। पंक्तियाँ और फ़िल्टर `GET /v3/travel-rule/transfers/` के समान ही हैं, नवीनतम पहले, `limit` (डिफ़ॉल्ट 50) और `offset` के साथ पृष्ठांकित। प्रेषक VASP द्वारा भेजे गए संदेश के साथ किसी डिपॉज़िट को `POST /v3/travel-rule/unmatched/{transaction_uuid}/match/` के साथ युग्मित करें।",
        "operationId": "listUnmatchedTravelRuleDeposits",
        "x-didit-sdk": {
          "resource": "travel_rule.unmatched_deposits",
          "method": "list",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "INBOUND, OUTBOUND, या दोनों कॉमा से अलग किए गए। केस-संवेदी।"
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "एक या अधिक ट्रांसफ़र स्थितियाँ, अल्पविराम से अलग की गईं।"
          },
          {
            "name": "rail",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP में से एक या अधिक, अल्पविराम से अलग किए गए।"
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "withdrawal, deposit या message, अल्पविराम से अलग किए गए।"
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "लेन-देन की मुद्रा, केस-इनसेंसिटिव।"
          },
          {
            "name": "start_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "इस दिन (UTC) या इसके बाद बनाए गए ट्रांसफ़र, YYYY-MM-DD।"
          },
          {
            "name": "end_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "इस दिन (UTC) या इससे पहले बनाए गए ट्रांसफ़र, YYYY-MM-DD।"
          },
          {
            "name": "counterparty",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "GET /v3/travel-rule/vasps/ से किसी डायरेक्टरी प्रविष्टि या Didit नेटवर्क सदस्य का `id`: उस प्रतिपक्ष के साथ आपके ट्रांसफर। जो मान मान्य id नहीं है, वह 400 का उत्तर देता है।"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000000
            },
            "description": "पेज का आकार, डिफ़ॉल्ट 50।"
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 1000000
            },
            "description": "छोड़ने के लिए पंक्तियां।"
          }
        ],
        "responses": {
          "200": {
            "description": "बेमेल डिपॉज़िट का एक पेज।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "next": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous": {
                      "type": "string",
                      "nullable": true
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/TravelRuleTransferRow"
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "next": null,
                  "previous": null,
                  "results": [
                    {
                      "id": "7d3a1c55-0b9e-4d52-8a3c-1f6e2b9d4a08",
                      "transaction_id": "c41f9b2e-5a8d-4e0c-9f17-3b6d8a2e5c91",
                      "txn_id": "dep-2026-10-20-0007",
                      "txn_date": "2026-10-19T08:41:12Z",
                      "kind": "deposit",
                      "direction": "INBOUND",
                      "status": "AWAITING_COUNTERPARTY",
                      "rail": "TRP",
                      "asset": "ETH",
                      "amount": "1.25",
                      "originator_vasp": "",
                      "beneficiary_vasp": "Example Counterparty VASP",
                      "originator_wallet": "0x77ccff0cc624a53cd8b8d8703ced826710211ec7",
                      "beneficiary_wallet": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb",
                      "originator_memo": "",
                      "beneficiary_memo": "",
                      "originator_wallet_type": "vasp",
                      "beneficiary_wallet_type": "vasp",
                      "matched_transaction_id": null,
                      "deadline_at": null,
                      "created_at": "2026-10-19T08:41:13Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "फ़िल्टर मान अमान्य है।",
            "content": {
              "application/json": {
                "example": {
                  "start_date": [
                    "Use the YYYY-MM-DD format."
                  ]
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nfor item in client.travel_rule.unmatched_deposits.list():\n    print(item)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nfor await (const item of didit.travelRule.unmatchedDeposits.list()) {\n  console.log(item);\n}"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.UnmatchedDeposits.ListAutoPaging(ctx, didit.TravelRuleUnmatchedDepositsListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nfor (var item : client.travelRule().unmatchedDeposits().list()) {\n    System.out.println(item);\n}"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\nforeach ($didit->travelRule->unmatchedDeposits->list() as $item) {\n    print_r($item->toArray());\n}"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\ndidit.travel_rule.unmatched_deposits.list.auto_paging_each do |item|\n  puts item.to_h\nend"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nawait foreach (var item in await client.TravelRule.UnmatchedDeposits.ListAsync())\n{\n    Console.WriteLine(JsonSerializer.Serialize(item));\n}"
          }
        ]
      }
    },
    "/v3/travel-rule/unmatched/{transaction_uuid}/match/": {
      "post": {
        "summary": "प्राप्त संदेश से Travel Rule जमा का मिलान करें",
        "operationId": "matchUnmatchedTravelRuleDeposit",
        "x-didit-sdk": {
          "resource": "travel_rule.unmatched_deposits",
          "method": "match",
          "auth": "api_key",
          "server": true
        },
        "tags": [
          "Travel Rule"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "description": "एक इनबाउंड डिपॉज़िट, जो अभी भी प्रेषक डेटा की प्रतीक्षा कर रहा है, उसे प्रेषक VASP द्वारा उसके लिए भेजे गए Travel Rule संदेश के साथ जोड़ें। डिपॉज़िट संदेश के प्रेषक डेटा, प्रतिपक्ष VASP और रेल को ग्रहण करता है, और दोनों ट्रांसफ़र अपनी टाइमलाइन पर मिलान रिकॉर्ड करते हैं। `transaction_uuid`, `GET /v3/travel-rule/unmatched/` से प्राप्त डिपॉज़िट का `transaction_id` है। बॉडी में मौजूद `transaction_id`, `GET /v3/travel-rule/transfers/?kind=message` की किसी पंक्ति से प्राप्त संदेश का `transaction_id` है; ट्रांसफ़र का अपना `id` नहीं मिलता है। संदेश उसी एसेट के लिए होना चाहिए जिसके लिए डिपॉज़िट है। Console से हटाया गया डिपॉज़िट या संदेश `404` का रिस्पॉन्स देता है; जो पहले ही आगे बढ़ चुका है (मिलान हो चुका है, या अब प्रतीक्षा में नहीं है) वह `409` का रिस्पॉन्स देता है।",
        "parameters": [
          {
            "name": "transaction_uuid",
            "in": "path",
            "required": true,
            "description": "मिलान न किए गए डिपॉज़िट का `transaction_id`।",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleManualMatchRequest"
              },
              "example": {
                "transaction_id": "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "मिलान के बाद दोनों ट्रांसफर।",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TravelRuleManualMatchResponse"
                },
                "example": {
                  "deposit": {
                    "id": "7d3a1c55-0b9e-4d52-8a3c-1f6e2b9d4a08",
                    "transaction_id": "c41f9b2e-5a8d-4e0c-9f17-3b6d8a2e5c91",
                    "txn_id": "dep-2026-10-20-0007",
                    "txn_date": "2026-10-19T08:41:12Z",
                    "kind": "deposit",
                    "direction": "INBOUND",
                    "status": "AWAITING_COUNTERPARTY",
                    "rail": "TRP",
                    "asset": "ETH",
                    "amount": "1.25",
                    "originator_vasp": "Example Counterparty VASP",
                    "beneficiary_vasp": "Example Counterparty VASP",
                    "originator_wallet": "0x77ccff0cc624a53cd8b8d8703ced826710211ec7",
                    "beneficiary_wallet": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb",
                    "originator_memo": "",
                    "beneficiary_memo": "",
                    "originator_wallet_type": "vasp",
                    "beneficiary_wallet_type": "vasp",
                    "matched_transaction_id": "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24",
                    "deadline_at": null,
                    "created_at": "2026-10-19T08:41:13Z"
                  },
                  "message": {
                    "id": "2b8e6f10-9c3a-47d1-b5e2-0a4c7d9f3e66",
                    "transaction_id": "e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24",
                    "txn_id": "msg-2026-10-20-0003",
                    "txn_date": "2026-10-19T08:41:12Z",
                    "kind": "message",
                    "direction": "INBOUND",
                    "status": "COMPLETED",
                    "rail": "TRP",
                    "asset": "ETH",
                    "amount": "1.25",
                    "originator_vasp": "Origin CASP SL",
                    "beneficiary_vasp": "Example Counterparty VASP",
                    "originator_wallet": "0x77ccff0cc624a53cd8b8d8703ced826710211ec7",
                    "beneficiary_wallet": "0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb",
                    "originator_memo": "",
                    "beneficiary_memo": "",
                    "originator_wallet_type": "vasp",
                    "beneficiary_wallet_type": "vasp",
                    "matched_transaction_id": null,
                    "deadline_at": "2026-10-21T08:41:13Z",
                    "created_at": "2026-10-19T08:41:13Z"
                  }
                }
              }
            }
          },
          "400": {
            "description": "सत्यापन त्रुटि: `transaction_id` गायब है, स्वयं डिपॉज़िट है, प्राप्त Travel Rule संदेश नहीं है, या डिपॉज़िट की तुलना में किसी भिन्न संपत्ति के लिए है; या पाथ में मौजूद लेन-देन इनबाउंड डिपॉज़िट नहीं है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Error": {
                    "value": {
                      "transaction_id": [
                        "The travel rule message is for a different asset than the deposit."
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "description": "अज्ञात डिपॉज़िट या संदेश, या उनमें से कोई एक हटा दिया गया था।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "detail": "No TravelRuleTransfer matches the given query."
                }
              }
            }
          },
          "409": {
            "description": "जमा अब प्रेषक के डेटा की प्रतीक्षा नहीं कर रहा है, या संदेश पहले से ही किसी जमा से मेल खा चुका है।",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Error": {
                    "value": {
                      "detail": "This deposit is no longer waiting for originator data."
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "python",
            "label": "Python",
            "source": "from didit import Didit\n\n# Reads DIDIT_API_KEY.\nclient = Didit()\n\nresult = client.travel_rule.unmatched_deposits.match(\n    \"11111111-2222-3333-4444-555555555555\",\n    transaction_id=\"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\",\n)\nprint(result)"
          },
          {
            "lang": "javascript",
            "label": "Node.js",
            "source": "import Didit from \"@didit-protocol/sdk-node\";\n\n// Reads DIDIT_API_KEY.\nconst didit = new Didit();\n\nconst result = await didit.travelRule.unmatchedDeposits.match(\"11111111-2222-3333-4444-555555555555\", {\n  transaction_id: \"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\",\n});\nconsole.log(result);"
          },
          {
            "lang": "go",
            "label": "Go",
            "source": "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.UnmatchedDeposits.Match(ctx, \"11111111-2222-3333-4444-555555555555\", didit.TravelRuleManualMatchRequest{\n\tTransactionID: \"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\",\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
          },
          {
            "lang": "java",
            "label": "Java",
            "source": "import me.didit.Didit;\nimport me.didit.types.TravelRuleManualMatchRequest;\n\n// Reads DIDIT_API_KEY.\nDidit client = new Didit();\n\nvar result = client.travelRule().unmatchedDeposits().match(\"11111111-2222-3333-4444-555555555555\", TravelRuleManualMatchRequest.builder()\n        .transactionId(\"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\")\n        .build());\nSystem.out.println(result);"
          },
          {
            "lang": "php",
            "label": "PHP",
            "source": "<?php\n\nrequire 'vendor/autoload.php';\n\nuse Didit\\DiditClient;\n\n// Reads DIDIT_API_KEY.\n$didit = new DiditClient();\n\n$result = $didit->travelRule->unmatchedDeposits->match('11111111-2222-3333-4444-555555555555', [\n    'transaction_id' => 'e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24',\n]);\nprint_r($result->toArray());"
          },
          {
            "lang": "ruby",
            "label": "Ruby",
            "source": "require \"didit\"\n\n# Reads DIDIT_API_KEY.\ndidit = Didit::Client.new\n\nresult = didit.travel_rule.unmatched_deposits.match(\n  \"11111111-2222-3333-4444-555555555555\",\n  transaction_id: \"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\"\n)\nputs result.to_h"
          },
          {
            "lang": "csharp",
            "label": ".NET",
            "source": "using System;\nusing System.Text.Json;\nusing Didit;\n\n// Reads DIDIT_API_KEY.\nusing var client = new DiditClient();\n\nvar result = await client.TravelRule.UnmatchedDeposits.MatchAsync(\"11111111-2222-3333-4444-555555555555\", new TravelRuleManualMatchRequest\n{\n    TransactionId = \"e90a4d7b-1c2f-4b83-a6d5-8f0e3c1b7a24\",\n});\nConsole.WriteLine(JsonSerializer.Serialize(result));"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "DocumentAIDetectedCode": {
        "type": "object",
        "required": [
          "type",
          "page_number",
          "position",
          "x",
          "y",
          "width",
          "height",
          "page_width",
          "page_height",
          "raw_payload",
          "parsed_payload"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "पहचाना गया सिम्बोलॉजी, उदाहरण के लिए `QR_CODE`, `CODE_128`, `EAN_13`, `DATA_MATRIX`, या `PDF_417`।"
          },
          "page_number": {
            "type": "integer",
            "minimum": 1,
            "description": "1-आधारित पेज संख्या।"
          },
          "position": {
            "type": "array",
            "nullable": true,
            "description": "रेंडर किए गए पेज के पिक्सेल निर्देशांक में पहचाना गया बहुभुज। कोई विश्वसनीय स्थान उपलब्ध न होने पर `null`।",
            "items": {
              "type": "array",
              "minItems": 2,
              "maxItems": 2,
              "items": {
                "type": "integer"
              }
            }
          },
          "x": {
            "type": "integer",
            "nullable": true,
            "description": "रेंडर किए गए पेज पिक्सेल में बाउंडिंग बॉक्स का बायाँ किनारा।"
          },
          "y": {
            "type": "integer",
            "nullable": true,
            "description": "रेंडर किए गए पेज के पिक्सेल में बाउंडिंग बॉक्स का ऊपरी किनारा।"
          },
          "width": {
            "type": "integer",
            "nullable": true,
            "description": "रेंडर किए गए पेज के पिक्सल में बाउंडिंग-बॉक्स की चौड़ाई।"
          },
          "height": {
            "type": "integer",
            "nullable": true,
            "description": "रेंडर किए गए पेज के पिक्सल में बाउंडिंग-बॉक्स की ऊंचाई।"
          },
          "page_width": {
            "type": "integer",
            "description": "रेंडर किए गए पेज की चौड़ाई पिक्सेल में।"
          },
          "page_height": {
            "type": "integer",
            "description": "रेंडर किए गए पेज की ऊंचाई पिक्सेल में।"
          },
          "raw_payload": {
            "type": "string",
            "description": "उपलब्ध होने पर base64 स्ट्रिंग के रूप में रॉ डिकोडर payload; अन्यथा एक खाली स्ट्रिंग।"
          },
          "parsed_payload": {
            "nullable": true,
            "description": "डिकोड की गई स्ट्रिंग या संरचित मान। `null` जब कोड का पता चला था लेकिन उसे डिकोड नहीं किया जा सका।"
          }
        }
      },
      "SessionImportJob": {
        "type": "object",
        "required": [
          "uuid",
          "status",
          "import_type",
          "source_format",
          "source_filename",
          "total_rows",
          "processed_rows",
          "created_count",
          "updated_count",
          "skipped_count",
          "failed_count"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "इंपोर्ट जॉब id। प्रगति को पोल करने और पंक्ति त्रुटियों को प्राप्त करने के लिए इस मान का उपयोग करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED",
              "PAUSED",
              "CANCELLED",
              "READY"
            ]
          },
          "import_type": {
            "type": "string",
            "enum": [
              "user_verification",
              "business_verification",
              "status_rules",
              "transactions"
            ]
          },
          "source_format": {
            "type": "string",
            "enum": [
              "csv",
              "ndjson"
            ]
          },
          "source_filename": {
            "type": "string"
          },
          "total_rows": {
            "type": "integer",
            "format": "int64"
          },
          "processed_rows": {
            "type": "integer",
            "format": "int64"
          },
          "checkpoint_row": {
            "type": "integer",
            "format": "int64"
          },
          "created_count": {
            "type": "integer",
            "format": "int64"
          },
          "updated_count": {
            "type": "integer",
            "format": "int64"
          },
          "skipped_count": {
            "type": "integer",
            "format": "int64"
          },
          "failed_count": {
            "type": "integer",
            "format": "int64"
          },
          "total_media_bytes": {
            "type": "integer",
            "format": "int64"
          },
          "last_error": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "queued",
              "running",
              "paused",
              "completed",
              "errors",
              "failed",
              "cancelled"
            ],
            "description": "कार्य की स्थिति जैसा कि कंसोल दिखाता है; `errors` अस्वीकृत पंक्तियों वाला एक पूर्ण कार्य है।"
          },
          "source": {
            "type": "string",
            "enum": [
              "file",
              "api",
              "provider"
            ]
          },
          "provider": {
            "type": "string",
            "description": "माइग्रेशन स्रोत; फ़ाइल या API इंपोर्ट के लिए खाली।"
          },
          "provider_options": {
            "type": "object"
          },
          "credential_hint": {
            "type": "string",
            "description": "माइग्रेशन द्वारा रखी गई कुंजी के पहले वर्ण। कुंजी स्वयं कभी नहीं लौटाई जाती है।"
          },
          "credentials_expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resumes_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब प्रदाता की रेट लिमिट द्वारा रोका गया कोई जॉब अपने आप फिर से शुरू हो जाता है।"
          },
          "status_mapping": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "is_dry_run": {
            "type": "boolean"
          },
          "dry_run_summary": {
            "type": "object",
            "description": "ड्राई रन में क्या पाया गया: `total`, `by_status`, `already_in_didit`, `same_person`, `not_finished`, `failed`, `unmapped_statuses`।"
          },
          "face_templates_enabled": {
            "type": "boolean"
          },
          "lawful_basis_confirmed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "not_finished_count": {
            "type": "integer",
            "format": "int64"
          },
          "same_person_count": {
            "type": "integer",
            "format": "int64"
          },
          "face_templates_count": {
            "type": "integer",
            "format": "int64"
          },
          "face_duplicates_count": {
            "type": "integer",
            "format": "int64"
          },
          "face_blocklist_hits_count": {
            "type": "integer",
            "format": "int64"
          },
          "created_by_name": {
            "type": "string",
            "nullable": true
          },
          "created_by_email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "SessionImportError": {
        "type": "object",
        "required": [
          "uuid",
          "row_number",
          "error",
          "raw_row"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "row_number": {
            "type": "integer",
            "format": "int64"
          },
          "external_id": {
            "type": "string",
            "nullable": true
          },
          "error": {
            "type": "string"
          },
          "raw_row": {
            "type": "object",
            "additionalProperties": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BrandingCustomizationUpdate": {
        "type": "object",
        "description": "आंशिक ब्रांडिंग अपडेट बॉडी। केवल वे फ़ील्ड प्रदान करें जिन्हें आप बदलना चाहते हैं। हेक्स रंग `#RRGGBB` या `#RRGGBBAA` स्वीकार करते हैं। कस्टम डोमेन और व्हाइट लेबल ईमेल यहाँ स्वीकार नहीं किए जाते हैं।",
        "properties": {
          "color_primary": {
            "type": "string",
            "description": "हेडर / प्राथमिक टेक्स्ट का रंग।"
          },
          "color_secondary": {
            "type": "string",
            "description": "पैराग्राफ / द्वितीयक टेक्स्ट रंग।"
          },
          "color_background": {
            "type": "string",
            "description": "पेज की पृष्ठभूमि का रंग।"
          },
          "color_panel": {
            "type": "string",
            "description": "पैनल / एक्सेंट रंग।"
          },
          "color_panel_10": {
            "type": "string",
            "description": "10% अपारदर्शिता पर पैनल रंग।"
          },
          "color_on_panel_1": {
            "type": "string",
            "description": "पैनल पर सहायक टेक्स्ट का रंग।"
          },
          "color_on_panel_2": {
            "type": "string",
            "description": "पैनलों पर पिल / बैज का रंग।"
          },
          "color_on_background": {
            "type": "string",
            "description": "बैकग्राउंड पर टेक्स्ट का रंग।"
          },
          "color_button_1": {
            "type": "string",
            "description": "प्राथमिक बटन का रंग।"
          },
          "color_button_2": {
            "type": "string",
            "description": "द्वितीयक बटन का रंग।"
          },
          "color_button_text_1": {
            "type": "string",
            "description": "प्राथमिक बटन टेक्स्ट का रंग।"
          },
          "color_button_text_2": {
            "type": "string",
            "description": "द्वितीयक बटन के टेक्स्ट का रंग।"
          },
          "color_pill_text": {
            "type": "string",
            "description": "पिल्स, इनपुट और चयनकर्ताओं के लिए टेक्स्ट का रंग।"
          },
          "border_radius_panel": {
            "type": "integer",
            "minimum": 0,
            "description": "पिक्सेल में पैनल कॉर्नर रेडियस।"
          },
          "border_radius_buttons": {
            "type": "integer",
            "minimum": 0,
            "description": "पिक्सल में बटन कॉर्नर रेडियस।"
          },
          "font_family": {
            "type": "string",
            "description": "Google फ़ॉन्ट फ़ैमिली का नाम (उदा. `Inter`, `AR One Sans`)।"
          },
          "font_weight": {
            "type": "string",
            "description": "चयनित फ़ैमिली के लिए उपलब्ध फ़ॉन्ट वेट (उदा. `regular`, `500`, `700`)।"
          },
          "app_public_name": {
            "type": "string",
            "nullable": true,
            "description": "सत्यापन फ़्लो में दिखाया जाने वाला सार्वजनिक नाम।"
          },
          "privacy_policy_url": {
            "type": "string",
            "nullable": true,
            "description": "अंतिम उपयोगकर्ता को दिखाया गया गोपनीयता नीति URL।"
          },
          "skip_welcome_screen": {
            "type": "boolean",
            "description": "प्रारंभिक स्वागत स्क्रीन छोड़ें।"
          },
          "disable_login_with_didit": {
            "type": "boolean",
            "description": "Didit से लॉगिन करने वाली स्क्रीन दिखाने के बजाय अतिथि के रूप में जारी रखें। जब कस्टम डोमेन कॉन्फ़िगर किया गया हो, तो इसे वापस `false` पर सेट नहीं किया जा सकता (400)।"
          },
          "hide_progress_bar": {
            "type": "boolean",
            "description": "फ़्लो के दौरान प्रोग्रेस बार छिपाएं।"
          },
          "callback_seconds": {
            "type": "integer",
            "minimum": 0,
            "description": "कॉलबैक URL पर रीडायरेक्ट करने से पहले विलंब (सेकंड)।"
          },
          "delete_logo_square": {
            "type": "boolean",
            "description": "जब `true` होता है, तो वर्तमान वर्गाकार लोगो को हटा देता है।"
          },
          "delete_logo_rectangular": {
            "type": "boolean",
            "description": "जब `true` होता है, तो वर्तमान आयताकार लोगो को हटा देता है।"
          },
          "delete_logo_rectangular_dark": {
            "type": "boolean",
            "description": "जब `true` होता है, तो वर्तमान डार्क-मोड लोगो को हटा देता है, और `logo_rectangular_dark` तब `null` दिखाता है। यदि वही मल्टीपार्ट अनुरोध `image_rectangular_dark` भी अपलोड करता है, तो अपलोड प्राथमिकता लेता है।"
          },
          "delete_favicon": {
            "type": "boolean",
            "description": "जब `true` होता है, तो वर्तमान फ़ेविकॉन को हटा देता है।"
          }
        }
      },
      "BrandingCustomization": {
        "type": "object",
        "description": "एप्लिकेशन के लिए व्हाइट लेबल ब्रांडिंग: रंग, फ़ॉन्ट, रेडियस, लोगो URL और UI/UX विकल्प। लोगो URL केवल पढ़ने के लिए हैं (उन्हें इमेज अपलोड करके सेट करें)। कस्टम डोमेन और व्हाइट लेबल ईमेल शामिल नहीं हैं।",
        "properties": {
          "color_primary": {
            "type": "string"
          },
          "color_secondary": {
            "type": "string"
          },
          "color_background": {
            "type": "string"
          },
          "color_panel": {
            "type": "string"
          },
          "color_panel_10": {
            "type": "string"
          },
          "color_on_panel_1": {
            "type": "string"
          },
          "color_on_panel_2": {
            "type": "string"
          },
          "color_on_background": {
            "type": "string"
          },
          "color_button_1": {
            "type": "string"
          },
          "color_button_2": {
            "type": "string"
          },
          "color_button_text_1": {
            "type": "string"
          },
          "color_button_text_2": {
            "type": "string"
          },
          "color_pill_text": {
            "type": "string"
          },
          "border_radius_panel": {
            "type": "integer"
          },
          "border_radius_buttons": {
            "type": "integer"
          },
          "font_family": {
            "type": "string"
          },
          "font_weight": {
            "type": "string"
          },
          "font_url": {
            "type": "string",
            "nullable": true,
            "description": "केवल-पढ़ने योग्य। चयनित फ़ैमिली के लिए रिज़ॉल्व किया गया Google Fonts स्टाइलशीट URL।"
          },
          "logo_square": {
            "type": "string",
            "nullable": true,
            "description": "वर्गाकार लोगो का केवल-पढ़ने योग्य URL। `image_square` के माध्यम से अपलोड करें।"
          },
          "logo_rectangular": {
            "type": "string",
            "nullable": true,
            "description": "आयताकार लोगो का केवल-पढ़ने योग्य URL। `image_rectangular` के माध्यम से अपलोड करें।"
          },
          "logo_rectangular_dark": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "केवल-पढ़ने योग्य। डार्क मोड के लिए आयताकार लोगो का अस्थायी हस्ताक्षरित URL, जो डार्क बैकग्राउंड पर दिखाया जाता है। जब कोई डार्क लोगो सेट नहीं होता है या आपके खाते के लिए आयताकार लोगो नहीं दिखाए जाते हैं, तो `null` होता है। इसे `image_rectangular_dark` के साथ अपलोड करें।"
          },
          "favicon": {
            "type": "string",
            "nullable": true,
            "description": "फ़ेविकॉन का केवल-पढ़ने योग्य URL। `image_favicon` के माध्यम से अपलोड करें।"
          },
          "app_public_name": {
            "type": "string",
            "nullable": true
          },
          "privacy_policy_url": {
            "type": "string",
            "nullable": true
          },
          "skip_welcome_screen": {
            "type": "boolean"
          },
          "disable_login_with_didit": {
            "type": "boolean"
          },
          "hide_progress_bar": {
            "type": "boolean"
          },
          "callback_seconds": {
            "type": "integer"
          }
        }
      },
      "WebhookEvent": {
        "type": "string",
        "description": "समर्थित webhook इवेंट का नाम। `subscribed_events` में इन सटीक स्ट्रिंग्स का उपयोग करें; असमर्थित मान अस्वीकृत कर दिए जाते हैं।",
        "enum": [
          "status.updated",
          "data.updated",
          "user.status.updated",
          "user.data.updated",
          "business.status.updated",
          "business.data.updated",
          "activity.created",
          "transaction.created",
          "transaction.status.updated",
          "travel_rule.status.updated",
          "workflow.compliance_changed",
          "transaction_rule_suggestions.created",
          "auth.signup",
          "auth.login",
          "auth.login_failed",
          "auth.password_reset_requested",
          "auth.password_reset_completed",
          "auth.mfa_changed",
          "auth.new_device",
          "auth.account_locked",
          "investigator.report.ready",
          "investigator.decision.automated",
          "investigator.decision.overridden",
          "investigator.decision.contested",
          "investigator.question.raised",
          "investigator.automation.paused",
          "investigator.rfi.answered",
          "investigator.rfi.overdue",
          "investigator.drift.detected",
          "investigator.sla.breached",
          "investigator.qa.failed",
          "investigator.external.report.ready"
        ]
      },
      "WebhookSubscribedEvents": {
        "type": "array",
        "description": "इस webhook गंतव्य के लिए इवेंट फ़िल्टर। Didit केवल उन webhook को डिलीवर करता है जिनका इवेंट प्रकार इनमें से किसी एक मान से सटीक रूप से मेल खाता है — कोई वाइल्डकार्ड सब्सक्रिप्शन नहीं है। भेजे जाने पर, सूची में कम से कम एक मान्य इवेंट होना चाहिए (एक स्पष्ट `[]` को 400 के साथ अस्वीकार कर दिया जाता है); ऐसा गंतव्य जिसकी सूची खाली है (निर्माण के समय फ़ील्ड छोड़ दिया गया) कुछ भी प्राप्त नहीं करता है। अपडेट करने पर सूची पूरी तरह से बदल दी जाती है, कभी मर्ज नहीं की जाती।",
        "minItems": 1,
        "uniqueItems": true,
        "items": {
          "$ref": "#/components/schemas/WebhookEvent"
        },
        "example": [
          "status.updated",
          "data.updated"
        ]
      },
      "PhoneVerificationSendResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन का सत्र id। `Retry` भेजने पर मूल भेजने के समान `request_id` लौटता है। यह id Business Console में दिखाई देता है, एक फ़ाइनलाइज़ किए गए `POST /v3/phone/check/` द्वारा फिर से लौटाया जाता है, और इसे `GET /v3/session/{sessionId}/decision/` पर पास किया जा सकता है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Success",
              "Retry",
              "Blocked"
            ],
            "description": "`Success` — OTP एक नए सत्यापन पर भेजा गया। `Retry` — पिछले प्रेषण द्वारा बनाए गए लंबित सत्यापन के लिए OTP पुनः भेजा गया। `Blocked` — धोखाधड़ी-रोधी परत ने भेजने से मना कर दिया; सत्यापन तुरंत `Declined` के रूप में फ़ाइनलाइज़ कर दिया जाता है और कुछ भी बिल नहीं किया जाता है।"
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "description": "कोई संदेश भेजना `Blocked` क्यों था (उदा., `repeated_attempts`, `suspicious`, `spam`)। `Success` और `Retry` पर `null`।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "सत्र पर संग्रहीत `vendor_data` का इको (पहली बार भेजे गए डेटा से)।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "सत्र पर संग्रहीत `metadata` का इको (पहली बार भेजे गए डेटा से)।"
          }
        }
      },
      "PhoneVerificationCheckResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "`Approved`/`Declined` पर: मिलान किए गए सत्यापन की सत्र id — `POST /v3/phone/send/` द्वारा लौटाए गए `request_id` के समान। `Failed` और `Expired or Not Found` पर: एक यादृच्छिक वन-ऑफ़ UUID जिसे बाद में देखा नहीं जा सकता।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "Declined",
              "Failed",
              "Expired or Not Found"
            ],
            "description": "`Approved` — सही कोड, अस्वीकृति का कोई जोखिम नहीं। `Declined` — अंतिम: अस्वीकृति का कोई जोखिम मेल खा गया या प्रयास सीमा (3) समाप्त हो गई। `Failed` — गलत कोड, प्रयास शेष हैं। `Expired or Not Found` — पिछले 5 मिनट में इस नंबर के लिए कोई लंबित सत्यापन नहीं।"
          },
          "message": {
            "type": "string",
            "description": "गलत कोड के बाद शेष प्रयासों की संख्या सहित परिणाम का मानव-पठनीय स्पष्टीकरण।"
          },
          "phone": {
            "type": "object",
            "nullable": true,
            "description": "पूर्ण फ़ोन रिपोर्ट। केवल अंतिम परिणामों (`Approved`/`Declined`) पर मौजूद (शून्येतर); `Failed` पर `null` और `Expired or Not Found` पर अनुपस्थित।",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "Approved",
                  "Declined",
                  "In Review",
                  "Not Finished",
                  "Expired"
                ],
                "description": "फ़ोन सत्यापन की अंतिम स्थिति। अंतिम रूप दी गई जाँचों के लिए शीर्ष-स्तरीय `status` से मेल खाती है।"
              },
              "phone_number_prefix": {
                "type": "string",
                "description": "शुरुआती `+` के साथ देश का कॉलिंग कोड (उदा., `+1`)।",
                "example": "+1"
              },
              "phone_number": {
                "type": "string",
                "description": "देश के कॉलिंग कोड के बिना राष्ट्रीय नंबर।",
                "example": "4155552671"
              },
              "full_number": {
                "type": "string",
                "description": "E.164 प्रारूप में पूरा नंबर।",
                "example": "+14155552671"
              },
              "country_code": {
                "type": "string",
                "nullable": true,
                "description": "नंबर का ISO 3166-1 alpha-2 देश।",
                "example": "US"
              },
              "country_name": {
                "type": "string",
                "description": "`country_code` से प्राप्त देश का पूरा नाम।",
                "example": "United States"
              },
              "carrier": {
                "type": "object",
                "description": "नंबर को सेवा प्रदान करने वाला वर्तमान नेटवर्क, जो फ़ाइनलाइज़ेशन के समय चलाए गए कैरियर लुकअप से प्राप्त होता है।",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "कैरियर का नाम। जब लुकअप इसे पहचान नहीं सका तो खाली स्ट्रिंग।"
                  },
                  "type": {
                    "type": "string",
                    "description": "लुकअप द्वारा रिपोर्ट किया गया लाइन प्रकार: `mobile`, `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`, `premium_rate`, `pager`, `payphone`, `satellite`, `service`, `shared_cost`, `short_codes_commercial`, `calling_cards`, `local_rate`, `universal_access`, `voice_mail`, `other`, या `unknown`।"
                  }
                }
              },
              "is_disposable": {
                "type": "boolean",
                "description": "`true` जब नंबर किसी अस्थायी/बर्नर नंबर सेवा से संबंधित हो।"
              },
              "is_virtual": {
                "type": "boolean",
                "description": "`true` जब लाइन का प्रकार वर्चुअल हो (`voip`, `isp`, या `vpn`)।"
              },
              "verification_method": {
                "type": "string",
                "description": "वह चैनल जिसने डिलीवरी की पुष्टि होने के बाद वास्तव में OTP डिलीवर किया (उदा. `whatsapp`, `sms`); तब तक, अनुरोधित चैनल।"
              },
              "verification_attempts": {
                "type": "integer",
                "description": "इस सत्यापन के लिए OTP भेजे जाने की संख्या (1, या पुनः प्रयास के बाद 2)।"
              },
              "verified_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब सही कोड दर्ज किया गया था। `null` यदि सत्यापन कभी स्वीकृत नहीं हुआ था।"
              },
              "warnings": {
                "type": "array",
                "description": "सत्यापन के दौरान रिकॉर्ड की गई जोखिम चेतावनियां (डुप्लिकेट, डिस्पोजेबल, VoIP, प्रयास सीमा पार, ब्लॉकलिस्ट, आदि)। कोई न होने पर खाली ऐरे।",
                "items": {
                  "type": "object",
                  "properties": {
                    "feature": {
                      "type": "string",
                      "description": "सुविधा जिसने चेतावनी उत्पन्न की। यहाँ हमेशा `PHONE`।"
                    },
                    "risk": {
                      "type": "string",
                      "description": "मशीन-पठनीय जोखिम कोड।"
                    },
                    "additional_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "जोखिम-विशिष्ट संदर्भ (उदा., डुप्लिकेट जोखिमों के लिए डुप्लिकेट सत्र id)। जब जोखिम में कोई अतिरिक्त डेटा नहीं होता है तो `null`।"
                    },
                    "log_type": {
                      "type": "string",
                      "enum": [
                        "error",
                        "warning",
                        "information"
                      ],
                      "description": "गंभीरता। `error` जोखिम सत्यापन को अस्वीकृत करते हैं, `warning` इसे समीक्षा के लिए फ़्लैग करती है, `information` स्टेटस को प्रभावित किए बिना रिकॉर्ड की जाती है।"
                    },
                    "short_description": {
                      "type": "string",
                      "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                    },
                    "long_description": {
                      "type": "string",
                      "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                    }
                  }
                }
              },
              "lifecycle": {
                "type": "array",
                "description": "सत्यापन का कालानुक्रमिक ऑडिट ट्रेल। इवेंट `type` इनमें से एक है: `PHONE_VERIFICATION_MESSAGE_SENT`, `PHONE_VERIFICATION_RETRY_MESSAGE_SENT`, `PHONE_VERIFICATION_BLOCKED`, `PHONE_DELIVERY_DELIVERED`, `PHONE_DELIVERY_UNDELIVERABLE`, `VALID_CODE_ENTERED`, `INVALID_CODE_ENTERED`, `PHONE_VERIFICATION_APPROVED`, `PHONE_VERIFICATION_DECLINED`, `PHONE_VERIFICATION_IN_REVIEW`, `PHONE_VERIFICATION_EXPIRED`।",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "इवेंट प्रकार।"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time",
                      "description": "जब इवेंट हुआ था।"
                    },
                    "details": {
                      "type": "object",
                      "nullable": true,
                      "description": "इवेंट-विशिष्ट payload। भेजने वाले इवेंट्स: `{status, reason, channel, actual_channel}` (डिलीवरी की पुष्टि होने के बाद `actual_channel` भरा जाता है)। डिलीवरी इवेंट्स: `{channel, status}`। कोड-प्रविष्टि इवेंट्स: `{code_tried, status}`। अंतिम-स्थिति इवेंट्स: `null`, या अस्वीकृत अथवा समीक्षाधीन होने पर `{reason}`।"
                    },
                    "fee": {
                      "type": "number",
                      "description": "इस इवेंट के लिए बिल की गई USD राशि। केवल भेजने के इवेंट (डिलीवरी कीमत) पर गैर-शून्य; कोड प्रविष्टियों, डिलीवरी पुष्टिकरणों और स्थिति इवेंट के लिए 0।"
                    }
                  }
                }
              },
              "matches": {
                "type": "array",
                "description": "आपके एप्लिकेशन (KYC, KYB, या API) के अन्य सत्र जहाँ एक अलग उपयोगकर्ता (अलग `vendor_data`) द्वारा समान फ़ोन नंबर का उपयोग किया गया था। अधिकतम 5 प्रविष्टियाँ, मौजूद होने पर सिंथेटिक सूची-प्रविष्टि ब्लॉकलिस्ट मिलान सबसे पहले (सत्र-व्युत्पन्न मिलान क्वेरी क्रम बनाए रखते हैं)। कोई मिलान न होने पर खाली ऐरे।",
                "items": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "उस अन्य सत्यापन का सत्र id जिसने इस फ़ोन नंबर का उपयोग किया था।"
                    },
                    "session_number": {
                      "type": "integer",
                      "description": "उस सत्र की मानव-पठनीय अनुक्रमिक संख्या।"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "उस सत्र का `vendor_data`।"
                    },
                    "verification_date": {
                      "type": "string",
                      "description": "जब वह सत्र बनाया गया था (`YYYY-MM-DDTHH:MM:SSZ`)।"
                    },
                    "phone_number": {
                      "type": "string",
                      "description": "मिलान किया गया फ़ोन नंबर।"
                    },
                    "status": {
                      "type": "string",
                      "description": "उस सत्र की स्थिति (उदा., `Approved`, `Declined`, `In Progress`)।"
                    },
                    "is_blocklisted": {
                      "type": "boolean",
                      "description": "क्या फ़ोन नंबर आपके एप्लिकेशन की ब्लॉकलिस्ट में है।"
                    },
                    "api_service": {
                      "type": "string",
                      "nullable": true,
                      "description": "API-प्रकार के सत्रों के लिए, स्टैंडअलोन API जिसने इसे बनाया (उदा. `PHONE_VERIFICATION`); नियमित सत्यापन सत्रों के लिए `null`।"
                    },
                    "source": {
                      "type": "string",
                      "description": "मिलान कहाँ पाया गया था। आमतौर पर `session`; किसी संगठन सूची प्रविष्टि के माध्यम से ब्लॉकलिस्ट हिट होने पर `source: \"list_entry\"` और null `session_id`/`session_number` के साथ एक सिंथेटिक मिलान पहले जोड़ा जाता है।"
                    }
                  }
                }
              },
              "phone_social": {
                "$ref": "#/components/schemas/PhoneSocialFootprint"
              },
              "phone_intelligence": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PhoneIntelligence"
                  }
                ],
                "description": "फ़ोन इंटेलिजेंस सिग्नल। केवल तभी मौजूद होते हैं जब जाँच पर `enable_enrichment` `true` था।"
              }
            }
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "मिलान किए गए सत्यापन के सत्र का `vendor_data`। `Expired or Not Found` पर `null`।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "मेल खाने वाले सत्यापन के सत्र का `metadata`। `Expired or Not Found` पर `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस जांच के रिस्पॉन्स का टाइमस्टैम्प।"
          }
        }
      },
      "EmailVerificationSendResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन का सत्र id। `Retry` भेजने पर मूल भेजने के समान `request_id` लौटता है। यह id Business Console में दिखाई देता है, फ़ाइनलाइज़ किए गए `POST /v3/email/check/` द्वारा फिर से लौटाया जाता है, और इसे `GET /v3/session/{sessionId}/decision/` पर पास किया जा सकता है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Success",
              "Retry",
              "Undeliverable"
            ],
            "description": "`Success` — OTP को एक नए सत्यापन पर ईमेल किया गया (बिल किया गया)। `Retry` — पिछले प्रेषण द्वारा बनाए गए लंबित सत्यापन के लिए नया OTP ईमेल किया गया (निःशुल्क)। `Undeliverable` — पता डिलीवरी सत्यापन में विफल रहा या संदेश नहीं भेजा जा सका; सत्यापन को तुरंत `Declined` के रूप में फ़ाइनलाइज़ कर दिया जाता है और कुछ भी बिल नहीं किया जाता है।"
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "email_can_not_be_delivered",
              null
            ],
            "description": "`status` के `Undeliverable` होने पर `email_can_not_be_delivered`; अन्यथा `null`।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "सत्र पर संग्रहीत `vendor_data` का इको (पहली बार भेजे गए डेटा से)।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "सत्र पर संग्रहीत `metadata` का इको (पहली बार भेजे गए डेटा से)।"
          }
        }
      },
      "EmailVerificationCheckResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "`Approved`/`Declined` पर: मिलान किए गए सत्यापन की सत्र id — `POST /v3/email/send/` द्वारा लौटाए गए `request_id` के समान। `Failed` और `Expired or Not Found` पर: एक यादृच्छिक वन-ऑफ़ UUID जिसे बाद में देखा नहीं जा सकता।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "Declined",
              "Failed",
              "Expired or Not Found"
            ],
            "description": "`Approved` — सही कोड, अस्वीकृति का कोई जोखिम नहीं। `Declined` — अंतिम: अस्वीकृति का कोई जोखिम मेल खा गया या प्रयास सीमा (3) समाप्त हो गई। `Failed` — गलत कोड, प्रयास शेष हैं। `Expired or Not Found` — पिछले 5 मिनट में इस पते के लिए कोई लंबित सत्यापन नहीं।"
          },
          "message": {
            "type": "string",
            "description": "गलत कोड के बाद शेष प्रयासों की संख्या सहित परिणाम का मानव-पठनीय स्पष्टीकरण।"
          },
          "email": {
            "type": "object",
            "nullable": true,
            "description": "पूर्ण ईमेल रिपोर्ट। केवल अंतिम परिणामों (`Approved`/`Declined`) पर मौजूद (null नहीं); `Failed` पर `null` और `Expired or Not Found` पर अनुपस्थित।",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "Approved",
                  "Declined",
                  "In Review",
                  "Not Finished",
                  "Expired"
                ],
                "description": "ईमेल सत्यापन की अंतिम स्थिति। अंतिम रूप दी गई जाँचों के लिए शीर्ष-स्तरीय `status` से मेल खाती है।"
              },
              "email": {
                "type": "string",
                "format": "email",
                "description": "सत्यापित ईमेल पता।",
                "example": "alice@example.com"
              },
              "is_breached": {
                "type": "boolean",
                "description": "`true` जब पता ज्ञात डेटा ब्रीच में दिखाई देता है (अंतिम रूप दिए जाने पर ब्रीच इंटेलिजेंस लुकअप चलाया गया)।"
              },
              "breaches": {
                "type": "array",
                "description": "इस पते वाले अधिकतम 5 सबसे हालिया ज्ञात डेटा उल्लंघन। जब `is_breached` मान `false` हो तो खाली ऐरे (या छोड़ा गया)।",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "उल्लंघन पहचानकर्ता।"
                    },
                    "domain": {
                      "type": "string",
                      "description": "उल्लंघन से प्रभावित सेवा का डोमेन।"
                    },
                    "breach_date": {
                      "type": "string",
                      "format": "date",
                      "description": "उल्लंघन होने की तारीख।"
                    },
                    "breach_emails_count": {
                      "type": "integer",
                      "description": "उल्लंघन में उजागर हुए खातों की कुल संख्या।"
                    },
                    "description": {
                      "type": "string",
                      "description": "उल्लंघन का मानव-पठनीय विवरण (HTML मार्कअप हो सकता है)।"
                    },
                    "logo_path": {
                      "type": "string",
                      "description": "उल्लंघित सेवा के लोगो का URL।"
                    },
                    "data_classes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "उजागर किए गए डेटा की श्रेणियां, snake_case में (उदा., `email_addresses`, `passwords`)।"
                    },
                    "is_verified": {
                      "type": "boolean",
                      "description": "क्या उल्लंघन को वैध के रूप में सत्यापित किया गया है।"
                    }
                  }
                }
              },
              "is_disposable": {
                "type": "boolean",
                "description": "`true` जब डोमेन किसी ज्ञात डिस्पोज़ेबल/अस्थायी-मेल प्रदाता से संबंधित हो।"
              },
              "is_undeliverable": {
                "type": "boolean",
                "description": "`true` जब पता मेल प्राप्त नहीं कर सकता (विफल सिंटैक्स या DNS/MX सत्यापन, या संदेश बाउंस हो गया)।"
              },
              "verification_attempts": {
                "type": "integer",
                "description": "इस सत्यापन के लिए OTP भेजे जाने की संख्या (1, या पुनः प्रयास के बाद 2)।"
              },
              "verified_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब सही कोड दर्ज किया गया था। `null` यदि सत्यापन कभी स्वीकृत नहीं हुआ था।"
              },
              "warnings": {
                "type": "array",
                "description": "सत्यापन के दौरान रिकॉर्ड की गई जोखिम चेतावनियां (डुप्लिकेट, ब्रीच, डिस्पोजेबल, अनडिलीवरेबल, प्रयास सीमा पार, ब्लॉकलिस्ट, आदि)। कोई न होने पर खाली ऐरे।",
                "items": {
                  "type": "object",
                  "properties": {
                    "feature": {
                      "type": "string",
                      "description": "सुविधा जिसने चेतावनी उत्पन्न की। यहाँ हमेशा `EMAIL`।"
                    },
                    "risk": {
                      "type": "string",
                      "description": "मशीन-पठनीय जोखिम कोड।"
                    },
                    "additional_data": {
                      "type": "object",
                      "nullable": true,
                      "description": "जोखिम-विशिष्ट संदर्भ (उदा., डुप्लिकेट जोखिमों के लिए डुप्लिकेट सत्र id)। जब जोखिम में कोई अतिरिक्त डेटा नहीं होता है तो `null`।"
                    },
                    "log_type": {
                      "type": "string",
                      "enum": [
                        "error",
                        "warning",
                        "information"
                      ],
                      "description": "गंभीरता। `error` जोखिम सत्यापन को अस्वीकृत करते हैं, `warning` इसे समीक्षा के लिए फ़्लैग करती है, `information` स्टेटस को प्रभावित किए बिना रिकॉर्ड की जाती है।"
                    },
                    "short_description": {
                      "type": "string",
                      "description": "जोखिम का मानव-पठनीय एक पंक्ति का सारांश।"
                    },
                    "long_description": {
                      "type": "string",
                      "description": "जोखिम का मानव-पठनीय स्पष्टीकरण।"
                    }
                  }
                }
              },
              "lifecycle": {
                "type": "array",
                "description": "सत्यापन का कालानुक्रमिक ऑडिट ट्रेल। इवेंट `type` इनमें से एक है: `EMAIL_VERIFICATION_MESSAGE_SENT`, `EMAIL_VERIFICATION_RETRY_MESSAGE_SENT`, `VALID_CODE_ENTERED`, `INVALID_CODE_ENTERED`, `EMAIL_VERIFICATION_APPROVED`, `EMAIL_VERIFICATION_DECLINED`, `EMAIL_VERIFICATION_IN_REVIEW`, `EMAIL_VERIFICATION_EXPIRED`।",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "इवेंट प्रकार।"
                    },
                    "timestamp": {
                      "type": "string",
                      "format": "date-time",
                      "description": "जब इवेंट हुआ था।"
                    },
                    "details": {
                      "type": "object",
                      "nullable": true,
                      "description": "इवेंट-विशिष्ट payload। भेजने वाले इवेंट्स: `{status, reason}`। कोड-प्रविष्टि इवेंट्स: `{code_tried, status}`। अंतिम-स्थिति इवेंट्स: `null`, या अस्वीकृत अथवा समीक्षाधीन होने पर `{reason}`।"
                    },
                    "fee": {
                      "type": "number",
                      "description": "इस इवेंट के लिए बिल की गई USD राशि। केवल पहली बार सफलतापूर्वक भेजे जाने पर गैर-शून्य; पुनः प्रयासों, कोड प्रविष्टियों और स्थिति इवेंट्स के लिए 0।"
                    }
                  }
                }
              },
              "matches": {
                "type": "array",
                "description": "आपके एप्लिकेशन (KYC, KYB, या API) के अन्य सत्र जहाँ एक ही ईमेल पते का उपयोग किसी भिन्न उपयोगकर्ता (भिन्न `vendor_data`) द्वारा किया गया था। 5 प्रविष्टियों तक; उपस्थित होने पर एक सिंथेटिक सूची-प्रविष्टि ब्लॉकलिस्ट मिलान पहले जोड़ा जाता है (और केवल तब जब कोई सत्र-व्युत्पन्न ब्लॉकलिस्टेड ईमेल मौजूद न हो) — सत्र-व्युत्पन्न मिलान created_at क्रम बनाए रखते हैं। कोई मिलान न होने पर खाली ऐरे।",
                "items": {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "उस अन्य सत्यापन का सत्र id जिसने इस ईमेल पते का उपयोग किया था।"
                    },
                    "session_number": {
                      "type": "integer",
                      "description": "उस सत्र की मानव-पठनीय अनुक्रमिक संख्या।"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "उस सत्र का `vendor_data`।"
                    },
                    "verification_date": {
                      "type": "string",
                      "description": "जब वह सत्र बनाया गया था (`YYYY-MM-DDTHH:MM:SSZ`)।"
                    },
                    "email": {
                      "type": "string",
                      "description": "मिलान किया गया ईमेल पता।"
                    },
                    "status": {
                      "type": "string",
                      "description": "उस सत्र की स्थिति (उदा., `Approved`, `Declined`, `In Progress`)।"
                    },
                    "is_blocklisted": {
                      "type": "boolean",
                      "description": "क्या ईमेल पता आपके एप्लिकेशन की ब्लॉकलिस्ट में है।"
                    },
                    "api_service": {
                      "type": "string",
                      "nullable": true,
                      "description": "API-प्रकार के सत्रों के लिए, स्टैंडअलोन API जिसने इसे बनाया (उदा. `PHONE_VERIFICATION`); नियमित सत्यापन सत्रों के लिए `null`।"
                    },
                    "source": {
                      "type": "string",
                      "description": "मिलान कहाँ पाया गया था। आमतौर पर `session`; किसी संगठन सूची प्रविष्टि के माध्यम से ब्लॉकलिस्ट हिट होने पर `source: \"list_entry\"` और null `session_id`/`session_number` के साथ एक सिंथेटिक मिलान पहले जोड़ा जाता है।"
                    }
                  }
                }
              },
              "email_social": {
                "$ref": "#/components/schemas/EmailSocialFootprint"
              },
              "email_intelligence": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/EmailIntelligence"
                  }
                ],
                "description": "ईमेल इंटेलिजेंस संकेत। केवल तभी मौजूद होते हैं जब जांच में `enable_enrichment` का मान `true` था।"
              }
            }
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "मिलान किए गए सत्यापन के सत्र का `vendor_data`। `Expired or Not Found` पर `null`।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "मेल खाने वाले सत्यापन के सत्र का `metadata`। `Expired or Not Found` पर `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस जांच के रिस्पॉन्स का टाइमस्टैम्प।"
          }
        }
      },
      "WorkflowListItem": {
        "type": "object",
        "description": "सूची दृश्य में एक वर्कफ़्लो संस्करण।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "प्रति-संस्करण UUID। get/update/delete के लिए `{settings_uuid}` के रूप में और सत्र बनाते समय `workflow_id` के रूप में उपयोग करें।"
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "description": "एक ही वर्कफ़्लो के प्रत्येक संस्करण द्वारा साझा की गई स्थिर समूह ID। संस्करण 1 के लिए `uuid` के बराबर है।"
          },
          "workflow_label": {
            "type": "string",
            "description": "वर्कफ़्लो के लिए डिस्प्ले नाम।"
          },
          "workflow_type": {
            "type": "string",
            "nullable": true,
            "description": "सरल वर्कफ़्लो के लिए आधार प्रकार: `kyc`, `kyb`, `adaptive_age_verification`, `biometric_authentication`, आदि। बिना KYB सुविधा वाले ग्राफ़-आधारित वर्कफ़्लो के लिए `null`।"
          },
          "is_default": {
            "type": "boolean",
            "description": "क्या यह नए सत्रों के लिए डिफ़ॉल्ट वर्कफ़्लो है।"
          },
          "is_archived": {
            "type": "boolean"
          },
          "is_white_label_enabled": {
            "type": "boolean",
            "description": "क्या इस वर्कफ़्लो के साथ बनाए गए सत्रों पर व्हाइट लेबल कस्टमाइज़ेशन लागू होता है।"
          },
          "total_price": {
            "type": "number",
            "description": "प्रति सत्यापन USD में निश्चित कीमत (JSON संख्या, DATABASE_VALIDATION और PHONE_VERIFICATION जैसी परिवर्तनीय-मूल्य वाली सुविधाओं को छोड़कर)।"
          },
          "min_price": {
            "type": "number",
            "description": "वर्कफ़्लो-ग्राफ़ पथों में सबसे सस्ती निश्चित कीमत, USD में।"
          },
          "max_price": {
            "type": "number",
            "description": "वर्कफ़्लो-ग्राफ़ के सभी पाथ में सबसे महंगी निश्चित कीमत, USD में।"
          },
          "features": {
            "type": "string",
            "description": "सक्षम सुविधाएँ एकल `\" + \"`-जुड़ी स्ट्रिंग के रूप में, उदा. `\"OCR + LIVENESS + FACE_MATCH\"`। सूची प्राप्त करने के लिए `\" + \"` पर विभाजित करें।"
          },
          "is_simple_workflow": {
            "type": "boolean",
            "description": "True जब वर्कफ़्लो में कोई कस्टम वर्कफ़्लो ग्राफ़ न हो।"
          },
          "is_editable": {
            "type": "boolean",
            "description": "सही जब यह संस्करण `draft` होता है (ड्राफ़्ट सीधे संपादित किए जा सकते हैं; प्रकाशित संस्करण Console में अपरिवर्तनीय होते हैं)।"
          },
          "workflow_url": {
            "type": "string",
            "format": "uri",
            "description": "इस वर्कफ़्लो के लिए सार्वजनिक साझा करने योग्य सत्यापन URL (`https://verify.didit.me/u/<token>`)।"
          },
          "max_retry_attempts": {
            "type": "integer",
            "description": "अस्वीकृत सत्यापन के बाद अनुमत अधिकतम पुनः प्रयास (0-10)।"
          },
          "retry_window_days": {
            "type": "integer",
            "nullable": true,
            "description": "पुनः प्रयासों की गणना के लिए दिनों में रोलिंग विंडो (1-365)। `null` = सर्वकालिक सीमा।"
          },
          "session_expiration_time": {
            "type": "integer",
            "description": "किसी अधूरे सत्र की समय-सीमा समाप्त होने से पहले के सेकंड (3600-2419200)।"
          },
          "version": {
            "type": "integer",
            "description": "`workflow_id` समूह के भीतर संस्करण संख्या, 1 से शुरू होती है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ],
            "description": "संस्करण स्थिति। नए सत्र किसी समूह के नवीनतम `published` संस्करण का उपयोग करते हैं।"
          },
          "has_draft": {
            "type": "boolean",
            "description": "True जब इस `workflow_id` समूह का कोई भी संस्करण वर्तमान में ड्राफ़्ट हो।"
          },
          "created_by": {
            "type": "object",
            "nullable": true,
            "description": "यह संस्करण किसने बनाया: `{name, email, type}` जहाँ `type` या तो `user` (कंसोल उपयोगकर्ता, `email` सेट है) या `api_key` (`name` क्लाइंट आईडी है, `email` null है) है। कोई निर्माता रिकॉर्ड न होने पर `null`।",
            "properties": {
              "name": {
                "type": "string"
              },
              "email": {
                "type": "string",
                "nullable": true
              },
              "type": {
                "type": "string",
                "enum": [
                  "user",
                  "api_key"
                ]
              }
            }
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "SimpleWorkflowRequest": {
        "type": "object",
        "description": "एक सरल रैखिक वर्कफ़्लो बनाएँ। API आंतरिक रूप से इस सुविधा सूची को एक नोड-आधारित वर्कफ़्लो ग्राफ़ में बदल देता है। सख्त फ़ील्ड व्हाइटलिस्ट: यहाँ सूचीबद्ध नहीं की गई किसी भी कुंजी (जिसमें `workflow_type` भी शामिल है) को 400 के साथ अस्वीकृत कर दिया जाता है।",
        "required": [
          "features"
        ],
        "properties": {
          "workflow_label": {
            "type": "string",
            "maxLength": 50,
            "default": "ID Verification",
            "description": "वर्कफ़्लो के लिए डिस्प्ले नाम (अधिकतम 50 वर्ण)। छोड़े जाने पर डिफ़ॉल्ट रूप से `\"ID Verification\"` होता है — इसे हमेशा सेट करें ताकि वर्कफ़्लो अलग पहचाने जा सकें।",
            "example": "Standard KYC"
          },
          "is_default": {
            "type": "boolean",
            "description": "इस वर्कफ़्लो को नए सत्रों के लिए डिफ़ॉल्ट के रूप में सेट करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ],
            "description": "सत्रों के लिए तैयार एक प्रकाशित वर्कफ़्लो बनाने के लिए इस फ़ील्ड को छोड़ दें। `draft` का उपयोग केवल तभी करें जब आप बिना प्रकाशित किए सहेजना चाहते हों।"
          },
          "features": {
            "type": "array",
            "minItems": 1,
            "description": "निष्पादन क्रम में सत्यापन सुविधाएं। API प्रत्येक आइटम को अगले से लिंक करता है और स्वचालित रूप से एक अंतिम स्थिति नोड जोड़ता है।",
            "items": {
              "$ref": "#/components/schemas/SimpleWorkflowFeature"
            }
          },
          "is_white_label_enabled": {
            "type": "boolean",
            "description": "इस वर्कफ़्लो के साथ बनाए गए सत्रों के लिए व्हाइट लेबल कस्टमाइज़ेशन सक्षम करें।",
            "default": false
          },
          "is_desktop_allowed": {
            "type": "boolean",
            "description": "सत्यापन फ़्लो को डेस्कटॉप ब्राउज़र पर चलने की अनुमति दें।",
            "default": false
          },
          "max_retry_attempts": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "default": 3,
            "description": "अस्वीकृत सत्यापन के बाद अनुमत अधिकतम पुनः प्रयास। `0` पहले अस्वीकार के बाद उपयोगकर्ता को ब्लॉक कर देता है।"
          },
          "retry_window_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365,
            "nullable": true,
            "default": 7,
            "description": "पुनः प्रयासों की गणना के लिए दिनों में रोलिंग विंडो। `null` सर्वकालिक सीमा लागू करता है।"
          },
          "face_liveness_max_attempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "default": 3,
            "description": "प्रति सत्र अधिकतम लाइवनेस सबमिशन। डिफ़ॉल्ट 3: एक प्रारंभिक प्रयास और दो पुनः प्रयास। यह मान जनरेट किए गए लाइवनेस और आयु अनुमान वर्कफ़्लो नोड्स में भी कॉपी किया जाता है, जब तक कि सुविधा-स्तरीय कॉन्फ़िगरेशन इसे ओवरराइड न करे।"
          },
          "face_match_max_attempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "default": 3,
            "description": "प्रति सत्र अधिकतम चेहरा मिलान सबमिशन। डिफ़ॉल्ट 3: एक प्रारंभिक प्रयास और दो पुनः प्रयास। यह मान जनरेट किए गए चेहरा मिलान वर्कफ़्लो नोड्स में भी कॉपी किया जाता है, जब तक कि सुविधा-स्तरीय कॉन्फ़िगरेशन इसे ओवरराइड न करे।"
          },
          "session_expiration_time": {
            "type": "integer",
            "minimum": 3600,
            "maximum": 2419200,
            "default": 604800,
            "description": "किसी अधूरे सत्र की समय-सीमा समाप्त होने से पहले के सेकंड। न्यूनतम 1 घंटा (3600), अधिकतम 4 सप्ताह (2419200)।"
          }
        }
      },
      "SimpleWorkflowUpdateRequest": {
        "type": "object",
        "description": "वर्कफ़्लो मेटाडेटा अपडेट करें या पूरी लीनियर सुविधा सूची को बदलें। सख्त फ़ील्ड श्वेतसूची: यहाँ सूचीबद्ध नहीं की गई किसी भी कुंजी को 400 के साथ अस्वीकार कर दिया जाता है।",
        "properties": {
          "workflow_label": {
            "type": "string",
            "maxLength": 50,
            "description": "वर्कफ़्लो के लिए डिस्प्ले नाम (अधिकतम 50 वर्ण)।"
          },
          "is_default": {
            "type": "boolean",
            "description": "इस वर्कफ़्लो को नए सत्रों के लिए डिफ़ॉल्ट के रूप में सेट करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ],
            "description": "वर्ज़निंग को नियंत्रित करता है। वर्तमान वर्ज़न को उसी स्थान पर अपडेट करने के लिए छोड़ दें (ड्राफ़्ट स्वतः प्रकाशित हो जाते हैं)। पहले से प्रकाशित वर्ज़न पर `published` एक नया वर्ज़न बनाता है और लौटाता है। `draft` केवल तभी मान्य होता है जब वर्ज़न अभी भी ड्राफ़्ट हो।"
          },
          "features": {
            "type": "array",
            "minItems": 1,
            "description": "यदि प्रदान किया जाता है, तो यह संपूर्ण सुविधा क्रम और कॉन्फ़िगरेशन को बदल देता है।",
            "items": {
              "$ref": "#/components/schemas/SimpleWorkflowFeature"
            }
          },
          "is_white_label_enabled": {
            "type": "boolean",
            "description": "इस वर्कफ़्लो के साथ बनाए गए सत्रों के लिए व्हाइट लेबल कस्टमाइज़ेशन सक्षम करें।"
          },
          "is_desktop_allowed": {
            "type": "boolean",
            "description": "सत्यापन फ़्लो को डेस्कटॉप ब्राउज़र पर चलने की अनुमति दें।"
          },
          "max_retry_attempts": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "description": "अस्वीकृत सत्यापन के बाद अनुमत अधिकतम पुनः प्रयास। `0` पहले अस्वीकार के बाद उपयोगकर्ता को ब्लॉक कर देता है।"
          },
          "retry_window_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365,
            "nullable": true,
            "description": "पुनः प्रयासों की गणना के लिए दिनों में रोलिंग विंडो। `null` सर्वकालिक सीमा लागू करता है।"
          },
          "face_liveness_max_attempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "description": "प्रति सत्र अधिकतम लाइवनेस सबमिशन। यह मान जनरेट किए गए लाइवनेस और आयु अनुमान वर्कफ़्लो नोड्स में भी कॉपी किया जाता है, जब तक कि सुविधा-स्तरीय कॉन्फ़िगरेशन इसे ओवरराइड न करे।"
          },
          "face_match_max_attempts": {
            "type": "integer",
            "minimum": 1,
            "maximum": 3,
            "description": "प्रति सत्र अधिकतम चेहरा मिलान सबमिशन। यह मान जनरेट किए गए चेहरा मिलान वर्कफ़्लो नोड्स में भी कॉपी किया जाता है, जब तक कि सुविधा-स्तरीय कॉन्फ़िगरेशन इसे ओवरराइड न करे।"
          },
          "session_expiration_time": {
            "type": "integer",
            "minimum": 3600,
            "maximum": 2419200,
            "description": "किसी अधूरे सत्र की समय-सीमा समाप्त होने से पहले के सेकंड। न्यूनतम 1 घंटा (3600), अधिकतम 4 सप्ताह (2419200)।"
          }
        }
      },
      "SimpleWorkflowFeature": {
        "type": "object",
        "required": [
          "feature"
        ],
        "properties": {
          "feature": {
            "type": "string",
            "description": "चलाने के लिए सुविधा। यहाँ दिखाए गए बड़े अक्षरों वाले मानों का उपयोग करें।",
            "enum": [
              "OCR",
              "NFC",
              "LIVENESS",
              "FACE_MATCH",
              "PROOF_OF_ADDRESS",
              "QUESTIONNAIRE",
              "DOCUMENT_AI",
              "PHONE_VERIFICATION",
              "EMAIL_VERIFICATION",
              "DATABASE_VALIDATION",
              "AML",
              "IP_ANALYSIS",
              "AGE_ESTIMATION",
              "KYB_REGISTRY",
              "KYB_DOCUMENTS",
              "KYB_KEY_PEOPLE",
              "SIGNATURE"
            ]
          },
          "config": {
            "type": "object",
            "description": "सुविधा-विशिष्ट सेटिंग्स। `QUESTIONNAIRE` के लिए, प्रश्नावली निर्माण endpoint द्वारा लौटाए गए `questionnaire_id` के साथ `questionnaire_uuid` शामिल करें। `SIGNATURE` के लिए, लाइव होने वाले वर्कफ़्लो को हस्ताक्षर करने के लिए एक दस्तावेज़ की आवश्यकता होती है: `signature_documents_source` को `session` या `both` पर सेट करें ताकि प्रत्येक सत्र अपना दस्तावेज़ ला सके, या `status: \"draft\"` भेजें और प्रकाशित करने से पहले दस्तावेज़ जोड़ें। जब वर्कफ़्लो पर `signature_availability.aes`, `false` होता है, तो `signature_level: \"aes\"` को `aes_not_available` के साथ अस्वीकार कर दिया जाता है। `OCR` के लिए, `methods` यह चुनता है कि प्रत्येक देश कौन से पहचान सत्यापन तरीकों का उपयोग कर सकता है (दस्तावेज़ कैप्चर, किसी सरकारी या अन्य आधिकारिक स्रोत से गैर-दस्तावेज़ लुकअप, और डिजिटल पहचान वॉलेट); इसे छोड़ दें तो प्रत्येक देश केवल दस्तावेज़ कैप्चर पर रहेगा। `SIGNATURE` के लिए, [ई-हस्ताक्षर सेटिंग्स](/hi/management-api/workflows/feature-configs#ई-हस्ताक्षर) देखें: `signature_level` फ़िलहाल `simple` (डिफ़ॉल्ट, किसी पहचान सत्यापन, ईमेल या फ़ोन की आवश्यकता नहीं है) और `aes` स्वीकार करता है, और वर्कफ़्लो दस्तावेज़ों और उनके फ़ील्ड्स को कंसोल में प्रबंधित किया जाता है, इसलिए API के माध्यम से `signature_documents_source: \"session\"` के साथ प्रति सत्र दस्तावेज़ और फ़ील्ड भेजें।",
            "additionalProperties": true
          },
          "label": {
            "type": "string",
            "description": "इस वर्कफ़्लो नोड के लिए वैकल्पिक आंतरिक लेबल।"
          }
        }
      },
      "ReviewItem": {
        "type": "object",
        "description": "सत्र के समीक्षा / गतिविधि फ़ीड में एक प्रविष्टि। स्थिति परिवर्तन `previous_status`, `new_status`, `previous_value`, `new_value`, और `changed_fields` ले जाते हैं; टिप्पणियाँ `comment` और (कंसोल टिप्पणियों के लिए) `mentioned_emails` ले जाती हैं; शेष फ़ील्ड `null` या खाली होते हैं जब वे गतिविधि प्रकार पर लागू नहीं होते हैं।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "इस फ़ीड प्रविष्टि का विशिष्ट पहचानकर्ता।",
            "example": "de0561bc-5583-4409-9171-1a31a4c8a5f4"
          },
          "activity_type": {
            "type": "string",
            "enum": [
              "COMMENT",
              "STATUS_UPDATED",
              "KYC_DATA_UPDATED",
              "POA_DATA_UPDATED",
              "FILE_ADDED",
              "FILE_REMOVED",
              "AML_ONGOING_MATCH",
              "AML_STATUS_UPDATED",
              "AML_HIT_STATUS_UPDATED",
              "KYB_DATA_UPDATED",
              "KYB_DOCUMENT_UPLOADED",
              "TAG_ADDED",
              "TAG_REMOVED",
              "FEATURE_OVERRIDE_PENDING",
              "FEATURE_OVERRIDE_APPLIED",
              "FEATURE_OVERRIDE_CANCELLED"
            ],
            "description": "यह प्रविष्टि किस प्रकार की गतिविधि रिकॉर्ड करती है। `STATUS_UPDATED` पंक्तियाँ मैन्युअल निर्णयों (`PATCH /v3/session/{session_id}/update-status/`) से और `POST …/reviews/` के माध्यम से जोड़ी गई प्रविष्टियों से आती हैं (जो कोई स्थिति रिकॉर्ड न होने पर भी डिफ़ॉल्ट रूप से इसी प्रकार की होती हैं)। `COMMENT` पंक्तियाँ Console समीक्षकों से आती हैं; Console विवरण-पेज दृश्यों को भी `metadata.system_event = \"DETAIL_VIEWED\"` से चिह्नित `COMMENT` पंक्तियों के रूप में संग्रहीत किया जाता है। शेष प्रकार डेटा संपादन, फ़ाइल परिवर्तन, टैग और AML निगरानी गतिविधि को ट्रैक करते हैं। STATUS_UPDATED पंक्तियाँ केवल update-status endpoint और मैन्युअल समीक्षा पोस्ट द्वारा ही नहीं, बल्कि सिस्टम एक्टर्स (उदा. actor_type SYSTEM के साथ सतत AML निगरानी, और स्वचालित सुविधा-स्थिति अपडेट) द्वारा भी लिखी जाती हैं। `FEATURE_OVERRIDE_PENDING`, `FEATURE_OVERRIDE_APPLIED` और `FEATURE_OVERRIDE_CANCELLED` एक जाँच की स्थिति के ओवरराइड (`PATCH /v3/session/{session_id}/features/{node_id}/update-status/`) को रिकॉर्ड करते हैं: फ़्लो समाप्त होने की प्रतीक्षा करने का अनुरोध किया गया, लागू किया गया, या रद्द किया गया। वे जाँच की स्थिति को `previous_value` / `new_value` (`{\"status\": ...}`) में ले जाते हैं, `previous_status` और `new_status` को `null` छोड़ते हैं, और ओवरराइड को `metadata` (`feature_override_id`, `node_id`, `feature_model`, `forced`, `state`, `cancel_reason`) में नामित करते हैं। अनुरोध के लिए प्रविष्टि समीक्षक की `comment` ले जाती है; फ़्लो समाप्त होने पर लागू किए गए ओवरराइड को `actor_type` `SYSTEM` के साथ रिकॉर्ड किया जाता है।",
            "example": "STATUS_UPDATED"
          },
          "actor_display": {
            "type": "string",
            "description": "मानव-पठनीय लेखक लेबल, क्रम में हल किया गया: कर्ता का पूरा नाम → Console खाता पहचानकर्ता → `actor_email` का स्थानीय भाग → `\"API Client\"` (`API_KEY` अभिनेताओं के लिए) → `\"System\"` (`SYSTEM` अभिनेताओं के लिए) → `\"Unknown\"`। `POST …/reviews/` के माध्यम से बनाई गई प्रविष्टियाँ हमेशा `\"Unknown\"` प्रदर्शित करती हैं क्योंकि वह endpoint कोई कर्ता एट्रिब्यूशन रिकॉर्ड नहीं करता है।",
            "example": "API Client"
          },
          "actor_email": {
            "type": "string",
            "nullable": true,
            "description": "कार्रवाई करने वाले कंसोल उपयोगकर्ता का ईमेल। API कुंजी और सिस्टम एक्टर के लिए `null`।",
            "example": null
          },
          "actor_type": {
            "type": "string",
            "enum": [
              "API_KEY",
              "CONSOLE_USER",
              "SYSTEM"
            ],
            "description": "कार्रवाई किसने की: एक API कुंजी, एक कंसोल उपयोगकर्ता, या स्वयं Didit (`SYSTEM`, उदाहरण के लिए AML सतत निगरानी)। `POST …/reviews/` के माध्यम से बनाई गई प्रविष्टियाँ कॉलर की परवाह किए बिना डिफ़ॉल्ट `CONSOLE_USER` रखती हैं।",
            "example": "API_KEY"
          },
          "new_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "इस प्रविष्टि द्वारा दर्ज की गई सत्र स्थिति (स्थिति अपडेट के लिए)। टिप्पणियों और डेटा-परिवर्तन प्रविष्टियों के लिए `null`।",
            "example": "Approved"
          },
          "previous_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "बदलाव से पहले सत्र का स्टेटस। update-status endpoint द्वारा लिखी गई `STATUS_UPDATED` प्रविष्टियों में भरा जाता है; `POST …/reviews/` के माध्यम से जोड़ी गई प्रविष्टियों में `null` होता है। सिस्टम द्वारा लिखी गई STATUS_UPDATED पंक्तियों में भी भरा जाता है।",
            "example": "In Review"
          },
          "comment": {
            "type": "string",
            "nullable": true,
            "description": "प्रविष्टि से जुड़ा मुक्त-पाठ नोट, या `null`।",
            "example": "Document re-checked manually; address matches."
          },
          "mentioned_emails": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "email"
            },
            "description": "टिप्पणी में `@email` से उल्लिखित कंसोल उपयोगकर्ता। इस API के माध्यम से बनाई गई प्रविष्टियों के लिए हमेशा खाली — उल्लेख प्रोसेसिंग केवल कंसोल की सुविधा है।",
            "example": []
          },
          "previous_value": {
            "type": "object",
            "nullable": true,
            "description": "कार्रवाई से पहले बदले गए डेटा का स्नैपशॉट, उदाहरण के लिए स्थिति परिवर्तन पर `{\"status\": \"In Review\"}`। जब कुछ भी नहीं बदला गया हो तो `null`।",
            "example": {
              "status": "In Review"
            }
          },
          "new_value": {
            "type": "object",
            "nullable": true,
            "description": "कार्रवाई के बाद बदले गए डेटा का स्नैपशॉट, उदाहरण के लिए `{\"status\": \"Approved\"}`। जब कुछ भी नहीं बदला गया हो तो `null`।",
            "example": {
              "status": "Approved"
            }
          },
          "changed_fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इस गतिविधि द्वारा संशोधित फ़ील्ड्स के नाम (उदा. `[\"status\"]`)। टिप्पणियों और `POST …/reviews/` के माध्यम से जोड़ी गई प्रविष्टियों के लिए खाली।",
            "example": [
              "status"
            ]
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "सिस्टम द्वारा जनरेट की गई प्रविष्टियों के लिए अतिरिक्त संदर्भ। Console विवरण-पेज व्यूज़ में `{\"system_event\": \"DETAIL_VIEWED\", \"detail_type\": \"verification\"}` होता है ताकि उन्हें नोटिफ़िकेशन लॉजिक से फ़िल्टर किया जा सके। Console में इसके लेखक द्वारा संपादित किए गए `COMMENT` में `edited_at` होता है, जो अंतिम संपादन का ISO 8601 समय है (`comment` और `mentioned_emails` फिर संपादित टेक्स्ट और उसके मेंशन रखते हैं)। सामान्य प्रविष्टियों के लिए `null`।",
            "example": null
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब प्रविष्टि लिखी गई थी, ISO 8601 UTC।",
            "example": "2026-06-12T00:19:31.918735Z"
          }
        }
      },
      "QuestionnaireListItem": {
        "type": "object",
        "description": "सूची दृश्य में एक प्रश्नावली संस्करण।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "प्रति-संस्करण UUID। get/update/delete के लिए `{questionnaire_uuid}` के रूप में और वर्कफ़्लो के QUESTIONNAIRE सुविधा कॉन्फ़िगरेशन में `questionnaire_uuid` के रूप में उपयोग करें।"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default_language": {
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "is_simple_questionnaire": {
            "type": "boolean",
            "description": "इस API के माध्यम से बनाई गई रैखिक प्रश्नावलियों के लिए True; Console में निर्मित ग्राफ़-आधारित प्रश्नावलियों के लिए false।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "question_types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "उत्तर देने योग्य प्रश्नों के अपरकेस एलिमेंट प्रकार, निर्माण क्रम में (उदा. `SHORT_TEXT`, `MULTIPLE_CHOICE`, `FILE_UPLOAD`)। संरचनात्मक `SECTION_HEADER` और `SEPARATOR` एलिमेंट शामिल नहीं हैं। प्रति प्रश्न एक प्रविष्टि, इसलिए मान दोहराए जा सकते हैं।"
          },
          "workflow_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इस प्रश्नावली का उपयोग करने वाले वर्कफ़्लोज़ के नाम। वर्तमान में इस endpoint पर हमेशा `[]` (केवल Console लिस्टिंग में पॉप्युलेट किया गया)।"
          },
          "questionnaire_group_id": {
            "type": "string",
            "format": "uuid",
            "description": "स्थिर पहचानकर्ता जो एक ही प्रश्नावली के सभी संस्करणों को समूहित करता है।"
          },
          "version": {
            "type": "integer",
            "description": "समूह के भीतर संस्करण संख्या, 1 से शुरू होती है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ]
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "यह संस्करण कब प्रकाशित हुआ था। ड्राफ़्ट के लिए `null`।"
          },
          "is_editable": {
            "type": "boolean",
            "description": "सही जब यह संस्करण एक `draft` होता है।"
          }
        }
      },
      "SimpleQuestionnaireRequest": {
        "type": "object",
        "description": "एक सरल रैखिक प्रश्नावली बनाएँ। API `form_elements` को आंतरिक प्रश्नावली ग्राफ़ में बदल देता है।",
        "required": [
          "title",
          "languages",
          "form_elements"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "प्रश्नावली के लिए आंतरिक नाम।"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "description": "प्रत्येक लेबल में शामिल भाषाएँ। इसमें `en` शामिल होना चाहिए।",
            "items": {
              "type": "string"
            },
            "example": [
              "en"
            ]
          },
          "default_language": {
            "type": "string",
            "description": "डिफ़ॉल्ट भाषा। `languages` में शामिल होनी चाहिए।",
            "example": "en"
          },
          "is_active": {
            "type": "boolean",
            "default": true
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ],
            "description": "वर्कफ़्लो के लिए तैयार एक प्रकाशित प्रश्नावली बनाने के लिए इस फ़ील्ड को छोड़ दें।"
          },
          "form_elements": {
            "type": "array",
            "minItems": 1,
            "description": "प्रश्न उसी सटीक क्रम में होने चाहिए जिस क्रम में उपयोगकर्ताओं को उन्हें देखना चाहिए। ब्रांचिंग और सशर्त फ़ील्ड समर्थित नहीं हैं।",
            "items": {
              "$ref": "#/components/schemas/SimpleQuestionnaireElement"
            }
          }
        }
      },
      "SimpleQuestionnaireUpdateRequest": {
        "type": "object",
        "description": "प्रश्नावली मेटाडेटा अपडेट करें या पूरी लीनियर `form_elements` सूची को बदलें।",
        "properties": {
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default_language": {
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ]
          },
          "form_elements": {
            "type": "array",
            "minItems": 1,
            "description": "यदि प्रदान किया जाता है, तो यह पूरी लीनियर प्रश्न सूची को बदल देता है।",
            "items": {
              "$ref": "#/components/schemas/SimpleQuestionnaireElement"
            }
          }
        }
      },
      "SimpleQuestionnaireElement": {
        "type": "object",
        "required": [
          "element_type",
          "label"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "वैकल्पिक स्थिर प्रश्न id। यदि छोड़ दिया जाता है, तो API `q1`, `q2`, आदि जनरेट करता है। पठनीयता के लिए लोअरकेस अक्षरों, संख्याओं और अंडरस्कोर का उपयोग करें।",
            "example": "source_of_funds"
          },
          "element_type": {
            "type": "string",
            "description": "प्रश्न प्रकार। API इन लोअरकेस मानों और उनके अपरकेस समकक्षों को स्वीकार करता है।",
            "enum": [
              "short_text",
              "long_text",
              "dropdown",
              "single_choice",
              "multiple_choice",
              "number",
              "image",
              "file_upload",
              "time",
              "email",
              "address",
              "phone",
              "country",
              "date_picker",
              "consent",
              "section_header",
              "separator",
              "heading",
              "paragraph"
            ]
          },
          "label": {
            "type": "object",
            "description": "भाषा कोड के अनुसार प्रश्न लेबल, उदाहरण के लिए `{ \"en\": \"Source of funds\" }`।",
            "additionalProperties": {
              "type": "string"
            }
          },
          "description": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "placeholder": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            }
          },
          "is_required": {
            "type": "boolean",
            "default": false
          },
          "options": {
            "type": "array",
            "description": "`dropdown`, `single_choice`, और `multiple_choice` के लिए उपयोग करें। यदि `value` छोड़ दिया जाता है, तो API विकल्प लेबल से एक जनरेट करता है।",
            "items": {
              "type": "object",
              "required": [
                "label"
              ],
              "properties": {
                "value": {
                  "type": "string"
                },
                "label": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "max_files": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "description": "`file_upload` या `image` के साथ उपयोग करें।"
          },
          "validation": {
            "type": "object",
            "nullable": true,
            "description": "`short_text`, `long_text`, या `number` के लिए वैकल्पिक प्रारूप सत्यापन। जब उपयोगकर्ता फ़ील्ड भरता है तब लागू किया जाता है (वे तब तक आगे नहीं बढ़ सकते जब तक यह मान्य न हो जाए) और सबमिशन पर API द्वारा पुनः जाँचा जाता है।",
            "properties": {
              "pattern": {
                "type": "string",
                "description": "रेगुलर एक्सप्रेशन (ECMA-262 सबसेट) जिससे मान पूरी तरह मेल खाना चाहिए। `short_text` और `long_text` के लिए। ^/$ एंकर न जोड़ें; पूरे मान का मिलान किया जाता है।"
              },
              "min_length": {
                "type": "integer",
                "minimum": 0,
                "description": "वर्णों की न्यूनतम संख्या। `short_text` और `long_text` के लिए।"
              },
              "max_length": {
                "type": "integer",
                "minimum": 0,
                "description": "वर्णों की अधिकतम संख्या। `short_text` और `long_text` के लिए।"
              },
              "min": {
                "type": "number",
                "description": "न्यूनतम संख्यात्मक मान। `number` के लिए।"
              },
              "max": {
                "type": "number",
                "description": "अधिकतम संख्यात्मक मान। `number` के लिए।"
              },
              "error_message": {
                "type": "object",
                "description": "सत्यापन विफल होने पर दिखाया जाने वाला अनुवादित संदेश, भाषा कोड द्वारा कुंजीबद्ध।",
                "additionalProperties": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "QuestionnaireDetail": {
        "type": "object",
        "description": "GET, POST (बनाएँ) और PATCH (अपडेट करें) endpoint से लौटाया गया पूर्ण प्रश्नावली विवरण।",
        "properties": {
          "questionnaire_id": {
            "type": "string",
            "format": "uuid",
            "description": "प्रश्नावली का विशिष्ट पहचानकर्ता। वर्कफ़्लो से या बाद के अपडेट/डिलीट अनुरोधों में प्रश्नावली का संदर्भ देते समय इस id का उपयोग करें।"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default_language": {
            "type": "string"
          },
          "is_active": {
            "type": "boolean"
          },
          "is_simple_questionnaire": {
            "type": "boolean"
          },
          "graph": {
            "type": "object",
            "description": "start_node और nodes मैप के साथ ग्राफ़ संरचना।"
          },
          "sections": {
            "type": "array",
            "description": "अनुभागों में समूहीकृत प्रश्नावली सामग्री (ग्राफ़ से प्राप्त)।",
            "items": {
              "type": "object"
            }
          },
          "questionnaire_group_id": {
            "type": "string",
            "format": "uuid",
            "description": "स्थिर पहचानकर्ता जो एक ही प्रश्नावली के सभी संस्करणों को समूहित करता है।"
          },
          "version": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ]
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "is_editable": {
            "type": "boolean",
            "description": "True जब प्रश्नावली को अभी भी उसी स्थान पर संपादित किया जा सकता है (ड्राफ़्ट संस्करण)।"
          }
        }
      },
      "UserListItem": {
        "type": "object",
        "description": "एक सत्यापित उपयोगकर्ता।",
        "properties": {
          "didit_internal_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस उपयोगकर्ता के लिए Didit का स्थायी आंतरिक UUID।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस उपयोगकर्ता के लिए आपका विशिष्ट पहचानकर्ता (सत्र बनाते समय पास किया गया)। जब कोई वेंडर पहचानकर्ता प्रदान नहीं किया गया था, तो यह null हो सकता है।"
          },
          "display_name": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा सेट किया गया कस्टम प्रदर्शन नाम"
          },
          "full_name": {
            "type": "string",
            "nullable": true,
            "description": "सत्यापित दस्तावेज़ों से निकाला गया पूरा नाम"
          },
          "date_of_birth": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "effective_name": {
            "type": "string",
            "nullable": true,
            "description": "सर्वोत्तम उपलब्ध नाम: यदि सेट है तो display_name, अन्यथा full_name"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "FLAGGED",
              "BLOCKED"
            ],
            "description": "उपयोगकर्ता रिकॉर्ड की लाइफ़साइकिल स्थिति (सत्र स्थिति नहीं)। `ACTIVE` डिफ़ॉल्ट है, `FLAGGED` उपयोगकर्ता को मैन्युअल ध्यान के लिए चिह्नित करता है, `BLOCKED` इस `vendor_data` के लिए नए सत्रों को रोकता है।"
          },
          "portrait_image_url": {
            "type": "string",
            "nullable": true,
            "description": "उपयोगकर्ता की पोर्ट्रेट फ़ोटो का प्री-साइन किया गया URL (कुछ घंटों के बाद समाप्त हो जाता है)"
          },
          "session_count": {
            "type": "integer",
            "description": "इस उपयोगकर्ता के लिए सत्यापन सत्रों की कुल संख्या"
          },
          "approved_count": {
            "type": "integer",
            "description": "स्वीकृत सत्रों की संख्या"
          },
          "declined_count": {
            "type": "integer",
            "description": "अस्वीकृत सत्रों की संख्या"
          },
          "in_review_count": {
            "type": "integer",
            "description": "समीक्षाधीन सत्रों की संख्या"
          },
          "issuing_states": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इस उपयोगकर्ता के स्वीकृत ID दस्तावेज़ों पर देखे गए जारीकर्ता देशों के ISO 3166-1 alpha-3 कोड, उदा. `[\"USA\", \"ESP\"]`। कोई न होने पर खाली ऐरे।"
          },
          "approved_emails": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इस उपयोगकर्ता के स्वीकृत सत्रों से एकत्र किए गए सत्यापित ईमेल पते, उदा. `[\"john@example.com\"]`।"
          },
          "approved_phones": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इस उपयोगकर्ता के स्वीकृत सत्रों से एकत्र किए गए सत्यापित फ़ोन नंबर, उदा. `[\"+14155551234\"]`।"
          },
          "features": {
            "type": "object",
            "description": "इस उपयोगकर्ता के सभी सत्रों में प्रति-सुविधा एकत्रित स्थिति। संभावित कुंजियाँ: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`, `QUESTIONNAIRE`, `EMAIL_VERIFICATION`, `PHONE`, `AML`, `IP_ANALYSIS`, `AGE_ESTIMATION`, `DATABASE_VALIDATION`। संभावित मान: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub Requested`।"
          },
          "features_list": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "feature": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                }
              }
            },
            "description": "`features` जैसा ही डेटा, `{feature, status}` ऑब्जेक्ट्स के एक क्रमबद्ध ऐरे के रूप में।"
          },
          "last_session_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सबसे हाल के सत्र का टाइमस्टैम्प"
          },
          "first_session_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "पहले सत्र का टाइमस्टैम्प"
          },
          "last_activity_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "इस उपयोगकर्ता की सबसे हाल की गतिविधि का टाइमस्टैम्प (सत्र, लेन-देन, स्थिति परिवर्तन, डेटा संपादन, आदि)।"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                }
              }
            },
            "description": "इस उपयोगकर्ता को असाइन किए गए टैग"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BlocklistItem": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "face",
              "document",
              "phone",
              "email"
            ]
          },
          "session_id": {
            "type": "string",
            "format": "uuid"
          },
          "session_number": {
            "type": "integer"
          },
          "blocklisted_at": {
            "type": "string",
            "format": "date-time"
          },
          "face_image": {
            "type": "string",
            "nullable": true
          },
          "document_type": {
            "type": "string",
            "nullable": true
          },
          "document_number": {
            "type": "string",
            "nullable": true
          },
          "phone_number": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "UserDetailItem": {
        "type": "object",
        "description": "पूर्ण उपयोगकर्ता विवरण। मेटाडेटा, टिप्पणियों और updated_at के साथ UserListItem का विस्तार करता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/UserListItem"
          },
          {
            "type": "object",
            "properties": {
              "metadata": {
                "type": "object",
                "description": "कस्टम मेटाडेटा JSON जिसे आपने इस उपयोगकर्ता से जोड़ा है। डिफ़ॉल्ट `{}` है।"
              },
              "tags": {
                "type": "array",
                "description": "टैग असाइनमेंट। ध्यान दें: विवरण रिस्पॉन्स पर प्रत्येक प्रविष्टि एक टैग *लिंक* ऑब्जेक्ट (`{uuid, tag: {...}, added_by_email, added_by_name, created_at}`) होती है, जो सूची रिस्पॉन्स पर उपयोग किए जाने वाले फ़्लैट `{uuid, name, color}` आकार से भिन्न है।",
                "items": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid",
                      "description": "टैग असाइनमेंट का UUID (स्वयं टैग नहीं)।"
                    },
                    "tag": {
                      "type": "object",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "name": {
                          "type": "string"
                        },
                        "color": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string",
                          "nullable": true
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "didit",
                            "custom"
                          ]
                        },
                        "created_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "updated_at": {
                          "type": "string",
                          "format": "date-time"
                        }
                      }
                    },
                    "added_by_email": {
                      "type": "string",
                      "nullable": true
                    },
                    "added_by_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "comment_type": {
                      "type": "string",
                      "enum": [
                        "COMMENT",
                        "STATUS_CHANGED",
                        "METADATA_UPDATED",
                        "TAG_ADDED",
                        "TAG_REMOVED",
                        "PROFILE_UPDATED"
                      ]
                    },
                    "comment": {
                      "type": "string",
                      "nullable": true
                    },
                    "actor_email": {
                      "type": "string",
                      "nullable": true
                    },
                    "actor_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "previous_status": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "ACTIVE",
                        "FLAGGED",
                        "BLOCKED",
                        null
                      ]
                    },
                    "new_status": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "ACTIVE",
                        "FLAGGED",
                        "BLOCKED",
                        null
                      ]
                    },
                    "previous_value": {
                      "type": "object",
                      "nullable": true,
                      "description": "PROFILE_UPDATED प्रविष्टियों के लिए पिछले फ़ील्ड मान।"
                    },
                    "new_value": {
                      "type": "object",
                      "nullable": true,
                      "description": "PROFILE_UPDATED प्रविष्टियों के लिए नए फ़ील्ड मान।"
                    },
                    "changed_fields": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "PROFILE_UPDATED प्रविष्टि द्वारा बदले गए फ़ील्ड्स के नाम।"
                    },
                    "metadata": {
                      "type": "object",
                      "nullable": true
                    },
                    "mentioned_emails": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "description": "इस उपयोगकर्ता के लिए गतिविधि लॉग और टिप्पणियाँ (स्थिति परिवर्तन, प्रोफ़ाइल संपादन, मैन्युअल नोट्स)।"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "BusinessListItem": {
        "type": "object",
        "description": "एक सत्यापित व्यवसाय।",
        "properties": {
          "didit_internal_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस व्यवसाय के लिए Didit का स्थायी आंतरिक UUID।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस व्यवसाय के लिए आपका विशिष्ट पहचानकर्ता (सत्र बनाते समय पास किया गया)। जब कोई वेंडर पहचानकर्ता प्रदान नहीं किया गया था, तो यह null हो सकता है।"
          },
          "display_name": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा सेट किया गया कस्टम प्रदर्शन नाम"
          },
          "legal_name": {
            "type": "string",
            "nullable": true,
            "description": "रजिस्ट्री या मैन्युअल प्रविष्टि से आधिकारिक कानूनी नाम"
          },
          "registration_number": {
            "type": "string",
            "nullable": true,
            "description": "कंपनी पंजीकरण या निगमन संख्या"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "निगमन का देश (ISO 3166-1 alpha-2, उदा. `GB`, `US`)।"
          },
          "effective_name": {
            "type": "string",
            "nullable": true,
            "description": "सर्वोत्तम उपलब्ध नाम: यदि सेट है तो display_name, अन्यथा legal_name"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "FLAGGED",
              "BLOCKED"
            ],
            "description": "व्यवसाय रिकॉर्ड की लाइफ़साइकिल स्थिति (सत्र स्थिति नहीं)। `ACTIVE` डिफ़ॉल्ट है, `FLAGGED` इसे मैन्युअल ध्यान के लिए चिह्नित करता है, `BLOCKED` इस `vendor_data` के लिए नए सत्रों को रोकता है।"
          },
          "session_count": {
            "type": "integer",
            "description": "इस व्यवसाय के लिए सत्यापन सत्रों की कुल संख्या"
          },
          "approved_count": {
            "type": "integer",
            "description": "स्वीकृत सत्रों की संख्या"
          },
          "declined_count": {
            "type": "integer",
            "description": "अस्वीकृत सत्रों की संख्या"
          },
          "in_review_count": {
            "type": "integer",
            "description": "समीक्षाधीन सत्रों की संख्या"
          },
          "features": {
            "type": "object",
            "description": "इस व्यवसाय के सभी KYB सत्रों में प्रति-सुविधा एकत्रित स्थिति। वर्तमान में एकमात्र कुंजी `KYB` (रजिस्ट्री कंपनी जाँच स्थिति) है। संभावित मान: `Approved`, `Declined`, `In Review`, `Not Finished`, `Resub Requested`।"
          },
          "features_list": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "feature": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                }
              }
            },
            "description": "`features` जैसा ही डेटा, `{feature, status}` ऑब्जेक्ट्स के एक क्रमबद्ध ऐरे के रूप में।"
          },
          "last_session_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सबसे हाल के सत्र का टाइमस्टैम्प"
          },
          "first_session_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "पहले सत्र का टाइमस्टैम्प"
          },
          "last_activity_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सबसे हाल की गतिविधि का टाइमस्टैम्प (स्थिति परिवर्तन, सत्र अपडेट, आदि)"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                }
              }
            },
            "description": "इस व्यवसाय को असाइन किए गए टैग"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BusinessDetailItem": {
        "type": "object",
        "description": "पूर्ण व्यवसाय विवरण। मेटाडेटा और updated_at के साथ BusinessListItem का विस्तार करता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/BusinessListItem"
          },
          {
            "type": "object",
            "properties": {
              "metadata": {
                "type": "object",
                "description": "कस्टम मेटाडेटा JSON जिसे आपने इस व्यवसाय से जोड़ा है। डिफ़ॉल्ट `{}` है।"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        ]
      },
      "TransactionDetail": {
        "type": "object",
        "description": "एक लेन-देन के लिए पूर्ण निगरानी रिकॉर्ड, जैसा कि `GET /v3/transactions/{transaction_id}/` और `POST /v3/transactions/` द्वारा लौटाया जाता है।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "Didit-स्थायी लेन-देन आइडेंटिफ़ायर। फ़ॉलो-अप कॉल के लिए `{transaction_id}` के रूप में उपयोग करें।"
          },
          "environment": {
            "type": "string",
            "enum": [
              "live",
              "sandbox"
            ],
            "description": "उस एप्लिकेशन का एनवायरनमेंट जिसके पास लेन-देन का स्वामित्व है। एक `sandbox` लेन-देन संग्रहीत किया जाता है लेकिन उसका कभी मूल्यांकन, स्क्रीनिंग, अधिसूचना या बिलिंग नहीं की जाती है, इसलिए इसके खाली `rule_runs` का अर्थ \"मूल्यांकन नहीं किया गया\" है।"
          },
          "transaction_number": {
            "type": "integer",
            "description": "कंसोल में दिखाया गया एप्लिकेशन-स्कोप क्रमिक लेन-देन नंबर (उदा. `4123`)।"
          },
          "txn_id": {
            "type": "string",
            "description": "निर्माण के समय आपके द्वारा प्रदान किया गया `transaction_id` (अधिकतम 128 वर्ण)। प्रति एप्लिकेशन अद्वितीय।"
          },
          "txn_date": {
            "type": "string",
            "format": "date-time",
            "description": "लेन-देन कब हुआ (`transaction_at` से; डिफ़ॉल्ट रूप से सबमिशन का समय)।"
          },
          "zone_id": {
            "type": "string",
            "nullable": true,
            "description": "निर्माण के समय प्रदान किया गया IANA समय क्षेत्र पहचानकर्ता।"
          },
          "transaction_type": {
            "type": "string",
            "description": "संग्रहीत शीर्ष-स्तरीय श्रेणी: `finance`, `kyc`, `travelRule`, `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`, `gamblingBonusChange`, `auditTrailEvent`। ध्यान दें कि कई शब्दों वाले मान camelCase में वापस दिए जाते हैं, भले ही उन्हें snake_case में सबमिट किया गया हो।"
          },
          "action_type": {
            "type": "string",
            "description": "श्रेणी के भीतर उप-प्रकार (जैसे `deposit`, `withdrawal`, `transfer`)। प्रदान न किए जाने पर डिफ़ॉल्ट रूप से श्रेणी पर सेट होता है।"
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ],
            "description": "विषय (subject) के सापेक्ष दिशा। सबमिट किए गए केस की परवाह किए बिना अपरकेस में संग्रहीत किया जाता है (इनपुट पर `in`/`out`/`inbound`/`outbound` स्वीकार किए जाते हैं)।"
          },
          "status": {
            "type": "string",
            "enum": [
              "APPROVED",
              "IN_REVIEW",
              "DECLINED",
              "AWAITING_USER"
            ],
            "description": "वर्तमान निगरानी निर्णय। लेन-देन `APPROVED` के रूप में बनाए जाते हैं; नियम उन्हें समकालिक रूप से `IN_REVIEW`/`DECLINED` में बदल सकते हैं।"
          },
          "source": {
            "type": "string",
            "enum": [
              "LIVE",
              "IMPORTED"
            ],
            "description": "रिकॉर्ड की उत्पत्ति कैसे हुई: API या SDK के माध्यम से सबमिट किए गए लेन-देन के लिए `LIVE`, कंसोल इंपोर्ट के माध्यम से लोड किए गए लेन-देन के लिए `IMPORTED`।"
          },
          "amount": {
            "type": "string",
            "description": "अनुगामी शून्यों को हटाकर दशमलव स्ट्रिंग के रूप में लेन-देन राशि (उदा. `\"1500\"`, `\"0.5\"`, `\"0.123456789012345678\"`)। 18 दशमलव स्थानों तक।"
          },
          "currency": {
            "type": "string",
            "description": "`amount` का मुद्रा कोड। कोई भी ISO 4217 वर्णमाला कोड स्वीकार किया जाता है (उदा. `EUR`, `USD`, `NGN`), साथ ही क्रिप्टो एसेट सिंबल (उदा. `BTC`) भी। वर्तमान में प्रचलन में मौजूद कोड को प्राथमिकता दें। प्रत्येक स्वीकृत कोड के लिए विनिमय दर उपलब्ध नहीं होती है: जब कोड के लिए कोई दर उपलब्ध नहीं होती (उदाहरण के लिए ISO अकाउंटिंग यूनिट `XSU`, या कोई क्रिप्टो सिंबल जिसका मूल्य Didit निर्धारित नहीं करता), तो स्वचालित रूपांतरण विफल हो जाता है और `preferred_currency_amount` तब तक null वापस किया जाता है जब तक कि अनुरोध में पहले से रूपांतरित `amount_in_default_currency` प्रदान न किया गया हो।"
          },
          "currency_type": {
            "type": "string",
            "nullable": true,
            "description": "`fiat` या `crypto`, जैसा कि `currency_kind` में सबमिट किया गया है।"
          },
          "amount_in_default_currency": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा प्रदान की गई पूर्व-रूपांतरित राशि, अंत में आने वाले शून्यों को हटाकर एक दशमलव स्ट्रिंग के रूप में।"
          },
          "default_currency_code": {
            "type": "string",
            "nullable": true
          },
          "preferred_currency_amount": {
            "type": "string",
            "nullable": true,
            "description": "`amount` को एप्लिकेशन की पसंदीदा मुद्रा में परिवर्तित किया गया, जब उपलब्ध हो।"
          },
          "preferred_currency_code": {
            "type": "string",
            "nullable": true
          },
          "payment_details": {
            "type": "string",
            "nullable": true,
            "description": "सबमिशन से प्राप्त मुक्त-पाठ भुगतान संदर्भ या मेमो।"
          },
          "payment_txn_id": {
            "type": "string",
            "nullable": true,
            "description": "`payment_reference_id` से बाहरी भुगतान प्रणाली संदर्भ (उदा. ब्लॉकचेन लेन-देन हैश)।"
          },
          "score": {
            "type": "integer",
            "description": "नियमों द्वारा संचित जोखिम स्कोर (आमतौर पर 0–100)। अधिक = अधिक जोखिम भरा।"
          },
          "severity": {
            "type": "string",
            "nullable": true,
            "enum": [
              "UNKNOWN",
              "LOW",
              "MEDIUM",
              "HIGH",
              "CRITICAL"
            ],
            "description": "नियमों/प्रदाताओं द्वारा निर्धारित श्रेणीबद्ध जोखिम गंभीरता (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`)। जब तक कोई इसे सेट नहीं करता तब तक `null`।"
          },
          "decision_reason_code": {
            "type": "string",
            "nullable": true,
            "description": "वर्तमान `status` का मशीन-पठनीय कारण।"
          },
          "decision_reason_label": {
            "type": "string",
            "nullable": true,
            "description": "`decision_reason_code` के लिए मानव-पठनीय लेबल।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आवेदक के `vendor_data` की सुविधा के लिए प्रतिलिपि।"
          },
          "metadata": {
            "type": "object",
            "description": "निर्माण समय पर सबमिट किए गए अनुसार `subject` और `counterparty` payload का स्नैपशॉट।"
          },
          "props": {
            "type": "object",
            "description": "निर्माण के समय आपके द्वारा प्रदान किए गए `custom_properties`। प्रत्येक कुंजी को नियम शर्तों में `custom_values.<key>` के रूप में संदर्भित किया जा सकता है।"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "color": {
                  "type": "string"
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "didit",
                    "custom"
                  ],
                  "description": "क्या टैग Didit प्रीसेट है या कस्टम टैग।"
                }
              }
            },
            "description": "लेन-देन से जुड़े टैग (मैन्युअल रूप से या नियमों द्वारा)।"
          },
          "parties": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "APPLICANT",
                    "REMITTER",
                    "BENEFICIARY",
                    "COUNTERPARTY"
                  ],
                  "description": "पक्ष की भूमिका। बनाने वाला endpoint `APPLICANT` (विषय) और `COUNTERPARTY` असाइन करता है।"
                },
                "entity_type": {
                  "type": "string",
                  "enum": [
                    "individual",
                    "company",
                    "external",
                    "unhostedWallet"
                  ]
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "USER",
                    "BUSINESS",
                    "EXTERNAL"
                  ],
                  "description": "`USER`/`BUSINESS` पक्ष `vendor_data` के माध्यम से Didit के स्वामित्व वाली इकाई से वापस लिंक होते हैं। `EXTERNAL` पक्षों के पीछे कोई Didit इकाई नहीं होती है।"
                },
                "vendor_data": {
                  "type": "string",
                  "nullable": true,
                  "description": "आपका आंतरिक उपयोगकर्ता/व्यवसाय पहचानकर्ता।"
                },
                "full_name": {
                  "type": "string",
                  "nullable": true
                },
                "first_name": {
                  "type": "string",
                  "nullable": true
                },
                "last_name": {
                  "type": "string",
                  "nullable": true
                },
                "country_code": {
                  "type": "string",
                  "nullable": true,
                  "description": "सबमिट किए गए `address.country` से देश कोड (आमतौर पर ISO 3166-1 alpha-3)।"
                },
                "dob": {
                  "type": "string",
                  "format": "date",
                  "nullable": true,
                  "description": "सबमिट किए गए `date_of_birth` से जन्म तिथि।"
                },
                "address": {
                  "type": "object",
                  "description": "प्रस्तुत किया गया पता ऑब्जेक्ट। छोड़े जाने पर `{}`।"
                },
                "institution_info": {
                  "type": "object",
                  "description": "जैसा सबमिट किया गया है, वैसा संस्था विवरण। छोड़े जाने पर `{}`।"
                },
                "device": {
                  "type": "object",
                  "description": "सामान्यीकृत डिवाइस संदर्भ, जिसमें IP प्रदान किए जाने पर network_context के अंतर्गत सर्वर-साइड IP संवर्धन (जियोलोकेशन, VPN/डेटा-सेंटर फ़्लैग) शामिल है।",
                  "properties": {
                    "fingerprint": {
                      "type": "string",
                      "description": "विशिष्ट डिवाइस फ़िंगरप्रिंट।"
                    },
                    "persistent_device_id": {
                      "type": "string",
                      "description": "स्थिर क्रॉस-सत्र डिवाइस पहचानकर्ता (v2 फ़िंगरप्रिंट स्कीमा)।"
                    },
                    "user_agent": {
                      "type": "string",
                      "description": "ब्राउज़र या ऐप का user agent स्ट्रिंग।"
                    },
                    "browser_family": {
                      "type": "string",
                      "description": "ब्राउज़र फ़ैमिली (उदा. Chrome, Firefox, Safari)।"
                    },
                    "browser_version": {
                      "type": "string",
                      "description": "ब्राउज़र वर्ज़न स्ट्रिंग।"
                    },
                    "platform": {
                      "type": "string",
                      "description": "प्लेटफ़ॉर्म पहचानकर्ता (web, ios, android, macos, windows, linux)।"
                    },
                    "os_family": {
                      "type": "string",
                      "description": "ऑपरेटिंग सिस्टम फ़ैमिली (उदा. iOS, Android, Windows)।"
                    },
                    "os_version": {
                      "type": "string",
                      "description": "ऑपरेटिंग सिस्टम संस्करण स्ट्रिंग।"
                    },
                    "accept_language": {
                      "type": "string",
                      "description": "Accept-Language हेडर मान।"
                    },
                    "session_id": {
                      "type": "string",
                      "description": "सत्र पहचानकर्ता (मेटाडेटा में संग्रहीत)।"
                    },
                    "session_age_ms": {
                      "type": "number",
                      "description": "सत्र की आयु मिलीसेकंड में।"
                    },
                    "network_context": {
                      "type": "object",
                      "description": "IP पते और जियो-लोकेशन के साथ नेटवर्क संदर्भ।",
                      "properties": {
                        "ip_address": {
                          "type": "string",
                          "description": "क्लाइंट का IP पता।"
                        },
                        "ip_country_code": {
                          "type": "string",
                          "description": "IP का जियो-रिज़ॉल्व्ड देश (ISO 3166-1 alpha-3)।"
                        },
                        "latitude": {
                          "type": "number",
                          "description": "IP का भौगोलिक अक्षांश।"
                        },
                        "longitude": {
                          "type": "number",
                          "description": "IP का भौगोलिक देशांतर।"
                        }
                      }
                    }
                  }
                },
                "external_party_snapshot": {
                  "type": "object",
                  "nullable": true,
                  "description": "`EXTERNAL` पक्षों के लिए पक्ष डेटा की फ़्रोज़न प्रति। पक्ष के Didit उपयोगकर्ता या व्यवसाय से जुड़े होने तक `null` रहता है।"
                }
              }
            },
            "description": "लेन-देन पक्ष (आवेदक, प्रतिपक्ष)।"
          },
          "payment_methods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "payment_method_type": {
                  "type": "string",
                  "enum": [
                    "bank_card",
                    "bank_account",
                    "e_wallet",
                    "crypto_wallet",
                    "unhosted_wallet",
                    "other"
                  ]
                },
                "label": {
                  "type": "string",
                  "nullable": true
                },
                "fingerprint": {
                  "type": "string",
                  "nullable": true,
                  "description": "`type:account_id:issuing_country` पर SHA-256 — समान साधन के पुनः उपयोग को सहसंबंधित करने के लिए स्थिर पहचानकर्ता।"
                },
                "account_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "खाता पहचानकर्ता (IBAN, वॉलेट पता, कार्ड token, …)।"
                },
                "issuing_country": {
                  "type": "string",
                  "nullable": true
                },
                "owner_kind": {
                  "type": "string",
                  "enum": [
                    "USER",
                    "BUSINESS",
                    "EXTERNAL"
                  ]
                },
                "vendor_data": {
                  "type": "string",
                  "nullable": true,
                  "description": "स्वामित्व रखने वाले उपयोगकर्ता/व्यवसाय के लिए आपका पहचानकर्ता।"
                },
                "owner_name": {
                  "type": "string",
                  "nullable": true
                },
                "institution_info": {
                  "type": "object"
                },
                "details": {
                  "type": "object",
                  "description": "प्रस्तुत किया गया रॉ `payment_method` ऑब्जेक्ट।"
                },
                "external_owner_snapshot": {
                  "type": "object",
                  "nullable": true
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "SOURCE",
                    "DESTINATION",
                    "FUNDING",
                    "BENEFICIARY"
                  ],
                  "description": "लेन-देन में इस पद्धति का उपयोग कैसे किया गया था। create endpoint दिशा से `SOURCE`/`DESTINATION` असाइन करता है (आउटबाउंड: विषय = SOURCE; इनबाउंड: विषय = DESTINATION)।"
                }
              }
            },
            "description": "लेन-देन से जुड़ी भुगतान विधियां।"
          },
          "documents": {
            "type": "array",
            "description": "कंसोल से लेन-देन से जुड़ी फ़ाइलें। कोई न होने पर `[]`।",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "label": {
                  "type": "string",
                  "nullable": true
                },
                "note": {
                  "type": "string",
                  "nullable": true
                },
                "uploaded_by": {
                  "type": "string",
                  "nullable": true
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "files": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "file_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "अल्पकालिक हस्ताक्षरित डाउनलोड URL; इसे संग्रहीत करने के बजाय आवश्यकता पड़ने पर प्राप्त करें।"
                      },
                      "original_filename": {
                        "type": "string",
                        "nullable": true
                      },
                      "file_size": {
                        "type": "integer",
                        "nullable": true
                      }
                    }
                  }
                }
              }
            }
          },
          "activities": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "activity_type": {
                  "type": "string",
                  "description": "उदा. `TRANSACTION_CREATED`, `TRANSACTION_NOTE_ADDED`, `TRANSACTION_STATUS_CHANGED`।"
                },
                "source": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "nullable": true
                },
                "title": {
                  "type": "string",
                  "nullable": true
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "metadata": {
                  "type": "object"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "description": "गतिविधि लॉग प्रविष्टियाँ (निर्माण, नोट्स, मैन्युअल समीक्षा, स्थिति परिवर्तन)।"
          },
          "alerts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "title": {
                  "type": "string"
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "severity": {
                  "type": "string",
                  "enum": [
                    "UNKNOWN",
                    "LOW",
                    "MEDIUM",
                    "HIGH",
                    "CRITICAL"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "OPEN",
                    "INVESTIGATING",
                    "AWAITING_USER",
                    "PENDING_SAR",
                    "SAR_FILED",
                    "RESOLVED",
                    "DISMISSED"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "RULE",
                    "PROVIDER",
                    "MANUAL"
                  ]
                },
                "metadata": {
                  "type": "object"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "due_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                }
              }
            },
            "description": "वर्तमान में हमेशा खाली। एक खुला अलर्ट `IN_REVIEW` या `AWAITING_USER` स्थिति वाला लेन-देन होता है।"
          },
          "rule_runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "rule": {
                  "type": "string",
                  "format": "uuid",
                  "description": "निष्पादित हुए नियम का UUID।"
                },
                "rule_title": {
                  "type": "string"
                },
                "rule_description": {
                  "type": "string",
                  "nullable": true
                },
                "rule_category": {
                  "type": "string"
                },
                "matched": {
                  "type": "boolean",
                  "description": "क्या नियम की शर्तें इस लेन-देन से मेल खाती हैं। केवल मेल खाने वाले नियमों के लिए ही रन रिकॉर्ड किया जाता है, इसलिए लाइव मूल्यांकन हमेशा `true` रखते हैं।"
                },
                "is_test": {
                  "type": "boolean",
                  "description": "True जब नियम TEST मोड में चला (स्थिति/स्कोर पर कोई प्रभाव नहीं)।"
                },
                "mode": {
                  "type": "string",
                  "enum": [
                    "ACTIVE",
                    "DISABLED",
                    "TEST"
                  ]
                },
                "severity": {
                  "type": "string",
                  "nullable": true
                },
                "score_delta": {
                  "type": "integer",
                  "description": "इस नियम की `add_score` कार्रवाइयों द्वारा जोड़ा गया स्कोर।"
                },
                "status_target": {
                  "type": "string",
                  "nullable": true,
                  "description": "यदि कोई हो, तो `change_status` कार्रवाई द्वारा सेट किया गया स्टेटस।"
                },
                "action_summary": {
                  "type": "string",
                  "nullable": true,
                  "description": "नियम द्वारा निष्पादित कार्रवाइयों का सारांश, `; ` के साथ जुड़ा हुआ (उदा. `score +30; change_status:IN_REVIEW; add_tag:high_risk_country`)। भाग: `score +N`, `change_status:<STATUS>`, `add_tag:<name>`, `add_note`, `add_to_list`, `open_case`। जब नियम ने कोई कार्रवाई निष्पादित नहीं की तो `null`।"
                },
                "metadata": {
                  "type": "object",
                  "description": "मूल्यांकन विवरण: `scope_match`, `conditions[]` और `aggregations[]`। प्रत्येक शर्त प्रविष्टि में `field`, `operator`, `expected_value`, लेन-देन से पढ़ा गया `current_value`, `matched`, `group_index` और `group_logic` होता है। प्रत्येक एकत्रीकरण प्रविष्टि (गति / गणना / योग) में `metric`, `field`, `operator`, `expected_value`, कुल मूल्यांकन का `computed_value`, `window`, `filters`, `matched` और `sample_references` होता है; स्थगित अतुल्यकालिक (async) एकत्रीकरण में `computed_value: null` और `deferred: true` होता है। एक नेस्टेड शर्त समूह `operator` `any_of` या `all_of`, `field` null, और इसके स्वयं के `conditions` के तहत इसके सदस्यों के परिणामों के साथ एक `conditions[]` प्रविष्टि है।"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "description": "प्रति-नियम निष्पादन परिणाम — कौन सा नियम ट्रिगर हुआ, और उसका स्कोर पर क्या प्रभाव पड़ा।"
          },
          "provider_results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "provider": {
                  "type": "string"
                },
                "result_type": {
                  "type": "string",
                  "enum": [
                    "FIAT_MONITORING",
                    "WALLET_SCREENING",
                    "TRANSACTION_SCREENING",
                    "TRAVEL_RULE",
                    "NETWORK_GRAPH",
                    "CUSTOM"
                  ]
                },
                "status": {
                  "type": "string"
                },
                "severity": {
                  "type": "string",
                  "nullable": true
                },
                "score": {
                  "type": "integer"
                },
                "summary": {
                  "type": "string",
                  "nullable": true
                },
                "payload": {
                  "type": "object",
                  "description": "रॉ प्रदाता रिस्पॉन्स payload।"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            },
            "description": "रॉ प्रदाता payloads (AML स्क्रीनिंग, ब्लॉकचेन एनालिटिक्स, आदि)।"
          },
          "travel_rule": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionTravelRule"
              }
            ],
            "description": "Travel Rule ट्रांसफ़र या जाँच। तब पॉप्युलेट होता है जब `travel_rule_details` सबमिट किया गया था, और तब भी जब Travel Rule सक्षम हो और लेन-देन `transaction_category: travelRule` के साथ बनाया गया था (Didit बिना `travel_rule_details` के भी एक्सचेंज स्वयं शुरू करता है)। कोई ट्रांसफ़र या जाँच मौजूद न होने पर `null`। इनबाउंड ट्रांसफ़र पर, प्रतिपक्ष का `originator_data` और `beneficiary_data` तब तक मास्क रहता है (`data_masked: true`) जब तक कि वॉलेट स्वामित्व की पुष्टि नहीं हो जाती।"
          },
          "network_snapshot": {
            "type": "object",
            "nullable": true,
            "description": "नियम इंजन द्वारा उपयोग किए जाने वाले संबंधित लेन-देन/पक्षों का ग्राफ़ स्नैपशॉट। या तो लेन-देन के साथ सबमिट किया गया `network_snapshot` या वह ग्राफ़ जो Didit एक सफल AML वॉलेट स्क्रीनिंग से बनाता है (जो सबमिट किए गए स्नैपशॉट को बदल देता है)। दोनों में से किसी के भी मौजूद न होने पर `null`।",
            "properties": {
              "uuid": {
                "type": "string",
                "format": "uuid"
              },
              "nodes": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "edges": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "metrics": {
                "type": "object"
              }
            }
          },
          "remediation": {
            "type": "object",
            "nullable": true,
            "description": "पुनः सत्यापन आवश्यक होने पर उपयोगकर्ता को पेश किया जाने वाला समाधान सत्र। `action_required` द्वारा अधिक्रमित, जो कि कैननिकल ब्लॉक है; बैकवर्ड कम्पैटिबिलिटी के लिए रखा गया है।",
            "properties": {
              "session_id": {
                "type": "string"
              },
              "session_token": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "status": {
                "type": "string"
              }
            }
          },
          "action_required": {
            "type": "object",
            "nullable": true,
            "description": "इस लेन-देन को पूरा करने के लिए आवश्यक लंबित अंतिम उपयोगकर्ता कार्रवाई, या कोई न होने पर null। Didit SDK डिफ़ॉल्ट रूप से कार्रवाई को स्वचालित रूप से लॉन्च करते हैं और इसके समाप्त होने पर लेन-देन को रीफ़्रेश करते हैं। `type` द्वारा विभेदित दो प्रकार: `verification_session` (एक नियम कार्रवाई द्वारा बनाया गया होस्टेड सत्यापन सत्र) और `wallet_ownership` (Travel Rule ट्रांसफर के लिए ऑटो-मिंट किया गया वॉलेट-स्वामित्व विजेट सत्र जिसे वॉलेट नियंत्रण के प्रमाण की आवश्यकता होती है, जो `auto_wallet_verification` Travel Rule सेटिंग द्वारा नियंत्रित होता है)। जब दोनों लागू हो सकते हों, तो `wallet_ownership` को प्राथमिकता दी जाती है क्योंकि यह Travel Rule एक्सचेंज को रोकता है।",
            "oneOf": [
              {
                "$ref": "#/components/schemas/TransactionVerificationSessionAction"
              },
              {
                "$ref": "#/components/schemas/TransactionWalletOwnershipAction"
              }
            ],
            "discriminator": {
              "propertyName": "type",
              "mapping": {
                "verification_session": "#/components/schemas/TransactionVerificationSessionAction",
                "wallet_ownership": "#/components/schemas/TransactionWalletOwnershipAction"
              }
            }
          },
          "cost_breakdown": {
            "type": "object",
            "nullable": true,
            "description": "इस लेन-देन की लागत: `total_price` और `items`, प्रति शुल्क एक, प्रत्येक में `usage_type`, `price`, `details` और `created_at` के साथ। उसी लेन-देन की दोबारा स्क्रीनिंग एक नया आइटम होती है।"
          }
        }
      },
      "TravelRuleSettingsDetail": {
        "type": "object",
        "properties": {
          "is_enabled": {
            "type": "boolean",
            "description": "क्या इस एप्लिकेशन पर आउटबाउंड `travelRule` लेन-देन के लिए प्रबंधित Travel Rule वार्ता प्रवाह सक्रिय है।"
          },
          "jurisdiction": {
            "type": "string",
            "maxLength": 8,
            "description": "आपके VASP का संचालन क्षेत्राधिकार कोड। डिफ़ॉल्ट `\"EU\"`। Didit इसे उस व्यवस्था पर मैप करता है जिसे वह आपके Travel Rule लेन-देन पर `travel_rule_regime` के रूप में दर्ज करता है (उदाहरण के लिए `EU` या कोई EU सदस्य कोड `eu` बन जाता है), जिस पर लेन-देन नियम आधारित हो सकते हैं। Didit नेटवर्क द्वारा आपकी प्रोफ़ाइल सूचीबद्ध करने के बाद, अन्य Didit ग्राहक इसे VASP डायरेक्टरी में आपके क्षेत्राधिकार के रूप में देखते हैं।"
          },
          "name_matching_strictness": {
            "type": "string",
            "enum": [
              "NONE",
              "STRICT",
              "CONTAINS",
              "DEFAULT",
              "FUZZY"
            ],
            "description": "किसी ट्रांसफर के COMPLETED तक पहुँचने से पहले लाभार्थी के नामों का कितना सटीक मिलान होना चाहिए। `CONTAINS` एक ऐसे नाम को स्वीकार करता है जिसके सभी शब्द दूसरे में दिखाई देते हैं।"
          },
          "confirmation_timeout_hours": {
            "type": "integer",
            "minimum": 1,
            "description": "घंटे जितने समय तक एक AWAITING_COUNTERPARTY ट्रांसफ़र अपुष्ट रह सकता है, इससे पहले कि आवधिक स्वीपर इसकी समय-सीमा समाप्त कर दे। डिफ़ॉल्ट 48।"
          },
          "timeout_outcome": {
            "type": "string",
            "enum": [
              "HOLD",
              "REJECT",
              "PROCEED"
            ],
            "description": "ट्रांसफ़र की समय-सीमा समाप्त होने पर अंतर्निहित लेन-देन का क्या होता है। डिफ़ॉल्ट HOLD। sunrise_policy और non_responsive_policy लागू होने और सेट होने पर वरीयता लेते हैं।"
          },
          "threshold_amount": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग, आपकी एप्लिकेशन की डिफ़ॉल्ट मुद्रा में। न्यूनतम ट्रांसफ़र राशि जो प्रबंधित एक्सचेंज को ट्रिगर करती है; इससे कम के ट्रांसफ़र सीधे NOT_APPLICABLE में हल हो जाते हैं। Didit आपकी डिफ़ॉल्ट मुद्रा में कनवर्ट की गई लेन-देन राशि, या आपके द्वारा भेजे गए `amount_in_default_currency` की तुलना करता है; जब कोई कनवर्ट की गई राशि उपलब्ध नहीं होती है, तो थ्रेशोल्ड लागू नहीं होता है। डिफ़ॉल्ट \"0.00\" है (EU TFR कोई न्यूनतम राशि लागू नहीं करता है)।"
          },
          "ownership_validation_mode": {
            "type": "string",
            "enum": [
              "FULL",
              "SIMPLIFIED",
              "AUTOMATED"
            ],
            "description": "वॉलेट के स्वामित्व के लिए कितने प्रमाण की आवश्यकता होती है। `FULL` को हमेशा एक प्रमाण (हस्ताक्षरित संदेश, परीक्षण जमा या समीक्षित स्क्रीनशॉट) की आवश्यकता होती है, अंतिम उपयोगकर्ता की बात मात्र कभी नहीं। `SIMPLIFIED`, `simplified_validation_threshold` से नीचे स्व-घोषणा और इससे ऊपर प्रमाण स्वीकार करता है। `AUTOMATED` एड्रेस बुक और पुराने प्रमाणों को अपने आप उत्तर देने देता है, जिसमें `allow_self_declaration` सत्य होने पर स्व-घोषणाएं भी शामिल हैं। डिफ़ॉल्ट `AUTOMATED`।"
          },
          "simplified_validation_threshold": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग, डिफ़ॉल्ट \"0.00\"। `SIMPLIFIED` मोड में इस राशि (थ्रेशोल्ड मुद्रा में) से कम का ट्रांसफ़र स्व-घोषणा स्वीकार करता है। उस मुद्रा में बिना किसी राशि वाले ट्रांसफ़र को इससे अधिक माना जाता है।"
          },
          "data_sharing_fields": {
            "$ref": "#/components/schemas/TravelRuleDataSharingFields"
          },
          "matching_rules": {
            "$ref": "#/components/schemas/TravelRuleMatchingRules"
          },
          "legal_name": {
            "type": "string",
            "description": "आपके VASP का कानूनी नाम। is_enabled को true सेट करने के लिए आवश्यक (गैर-रिक्त)।"
          },
          "lei": {
            "type": "string",
            "description": "आपका कानूनी इकाई पहचानकर्ता (Legal Entity Identifier), जो VASP निर्देशिका में दिखाई देता है।"
          },
          "compliance_email": {
            "type": "string",
            "format": "email",
            "description": "आपकी VASP प्रोफ़ाइल के लिए अनुपालन संपर्क ईमेल। Didit नेटवर्क आपकी प्रोफ़ाइल को तभी सूचीबद्ध करता है जब इस पते की पुष्टि ईमेल द्वारा भेजे गए लिंक (POST /v3/travel-rule/settings/compliance-email/confirmation/) के माध्यम से हो जाती है; इसे बदलने के लिए एक नई पुष्टि की आवश्यकता होती है।"
          },
          "is_discoverable": {
            "type": "boolean",
            "description": "क्या आपकी VASP प्रोफ़ाइल Didit नेटवर्क में सूचीबद्ध की जा सकती है: अन्य Didit ग्राहकों द्वारा GET /v3/travel-rule/vasps/ में खोजी जा सकती है और INTERNAL रेल पर संपर्क की जा सकती है। लिस्टिंग के लिए एक लाइव एप्लिकेशन, Travel Rule का सक्रिय होना, एक कानूनी नाम और एक पुष्ट अनुपालन ईमेल की भी आवश्यकता होती है; didit_network बताता है कि कौन से अनुपलब्ध हैं। डिफ़ॉल्ट रूप से true।"
          },
          "inbound_auto_accept": {
            "type": "boolean",
            "description": "true होने पर, ऐसी इनबाउंड TRP पूछताछ जिसके लाभार्थी का वॉलेट मेल खाते नाम के साथ एक सत्यापित एड्रेस-बुक प्रविष्टि है, स्वचालित रूप से स्वीकृत हो जाती है। false होने पर, वह पूछताछ ON_HOLD में तब तक प्रतीक्षा करती है जब तक कि आप स्वामित्व endpoint का उपयोग करके इसे स्वीकृत या अस्वीकृत नहीं कर देते। INTERNAL-रेल और डिपॉज़िट के बाद के ट्रांसफर प्रभावित नहीं होते हैं। डिफ़ॉल्ट रूप से true।"
          },
          "allow_self_declaration": {
            "type": "boolean",
            "description": "true होने पर, वॉलेट-स्वामित्व विजेट फ़ॉलबैक प्रमाण विधि के रूप में स्व-घोषणा की पेशकश करता है। डिफ़ॉल्ट रूप से true।"
          },
          "allow_screenshot_proof": {
            "type": "boolean",
            "description": "true होने पर, वॉलेट-स्वामित्व विजेट स्वामित्व साक्ष्य विधि के रूप में स्क्रीनशॉट अपलोड करने की पेशकश करता है। डिफ़ॉल्ट रूप से true।"
          },
          "auto_wallet_verification": {
            "type": "boolean",
            "description": "true होने पर, ऐसे आउटबाउंड Travel Rule ट्रांसफर को सबमिट करना जिसमें अंतिम उपयोगकर्ता द्वारा वॉलेट नियंत्रण के प्रमाण की आवश्यकता होती है, स्वचालित रूप से लेन-देन से जुड़ा एक वॉलेट-स्वामित्व विजेट सत्र बनाता है और इसे लेन-देन के action_required ब्लॉक में प्रदर्शित करता है। डिफ़ॉल्ट रूप से true।"
          },
          "vasp_attribution_enabled": {
            "type": "boolean",
            "description": "true होने पर, एक आउटबाउंड Travel Rule ट्रांसफर जिसे कोई रेल रूट नहीं कर सकती, ब्लॉकचेन एनालिटिक्स के माध्यम से एट्रिब्यूट किया जाता है: गंतव्य वॉलेट को उसके स्वामी VASP के साथ हल किया जाता है, निकाय को ट्रांसफर पर और VASP डायरेक्टरी में रिकॉर्ड किया जाता है, और एट्रिब्यूट किए गए नाम के साथ रेल को एक बार फिर चलाया जाता है। डिफ़ॉल्ट रूप से true।"
          },
          "counterparty_screening_enabled": {
            "type": "boolean",
            "description": "प्रतिपक्ष VASPs की ऑप्ट-इन प्रतिबंध और प्रतिकूल मीडिया स्क्रीनिंग, जिसकी बिलिंग प्रति स्क्रीनिंग कंपनी AML स्क्रीनिंग कीमत पर की जाती है। चालू होने पर, Didit उस प्रतिपक्ष VASP की स्क्रीनिंग करता है जिस तक आउटबाउंड एक्सचेंज पहुँचता है (30 दिनों से कम पुरानी स्क्रीनिंग का पुनः उपयोग करते हुए) और आप POST /v3/travel-rule/vasps/{vasp_id}/screening/ के साथ किसी एक VASP की स्क्रीनिंग कर सकते हैं। डिफ़ॉल्ट false: किसी की भी स्क्रीनिंग या बिलिंग नहीं की जाती है।"
          },
          "sunrise_policy": {
            "type": "string",
            "enum": [
              "",
              "HOLD",
              "REJECT",
              "PROCEED"
            ],
            "description": "समय-सीमा समाप्त ट्रांसफर अपने लेन-देन के साथ क्या करता है जब प्रतिपक्ष sunrise_jurisdictions के किसी ऐसे क्षेत्राधिकार में डायरेक्टरी प्रविष्टि हो, जो अभी तक Travel Rule लागू नहीं करता है: HOLD इसे समीक्षा में भेजता है, REJECT इसे अस्वीकृत करता है, PROCEED इसकी स्थिति को अपरिवर्तित छोड़ता है। खाली (डिफ़ॉल्ट) timeout_outcome का पालन करता है। non_responsive_policy से पहले लागू होता है।"
          },
          "sunrise_jurisdictions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "readOnly": true,
            "description": "केवल-पढ़ने योग्य। वे देश (ISO 3166 alpha-2) जिन्हें Didit Travel Rule सनराइज अवधि में मानता है, जहाँ sunrise_policy लागू होती है। वर्तमान में CO, KH और VN। कोई भी अन्य क्षेत्राधिकार, और एक खाली या अज्ञात क्षेत्राधिकार, timeout_outcome का पालन करता है।"
          },
          "non_responsive_policy": {
            "type": "string",
            "enum": [
              "",
              "HOLD",
              "REJECT",
              "PROCEED"
            ],
            "description": "समय-सीमा समाप्त ट्रांसफर अपने लेन-देन के साथ क्या करता है जब प्रतिपक्ष एक ऐसी डायरेक्टरी प्रविष्टि हो जिसकी प्रतिक्रिया UNRESPONSIVE हो: HOLD, REJECT या PROCEED, जैसा कि timeout_outcome के लिए होता है। खाली (डिफ़ॉल्ट) timeout_outcome का पालन करता है। दोनों उपयुक्त होने पर sunrise_policy पहले लागू होती है।"
          },
          "travel_address": {
            "type": "string",
            "description": "केवल-पढ़ने योग्य। आपके VASP का अपना Travel Address - एन्कोडेड इनबाउंड TRP पूछताछ endpoint जिसका उपयोग अन्य VASP आप तक पहुँचने के लिए करते हैं। जब `is_enabled` false हो तो खाली होता है।"
          },
          "disabled_networks": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "GTR",
                "TRUST",
                "VERIFYVASP",
                "SYGNA"
              ]
            },
            "description": "वे नेटवर्क जिन्होंने प्लेटफ़ॉर्म सदस्यता से बाहर रहने का विकल्प चुना है। आपकी कनेक्टेड स्वयं की सदस्यताओं को अक्षम नहीं करता है या अनुपलब्ध नेटवर्क का प्रावधान नहीं करता है।",
            "default": []
          },
          "networks": {
            "type": "object",
            "readOnly": true,
            "description": "प्रति नेटवर्क, यह एप्लिकेशन कैसे भेजेगा और यह क्यों नहीं भेज सकता। GTR सहित कोई भी नेटवर्क डिफ़ॉल्ट रूप से शामिल नहीं है: नेटवर्क आपकी अपनी कनेक्टेड सदस्यता के माध्यम से या Didit की सदस्यता के माध्यम से पहुंचा जा सकता है, एक बार उस नेटवर्क की Didit की सदस्यता लाइव हो जाने और उस पर आपका अपना प्रतिभागी सक्रिय हो जाने पर। यह लाइव स्थिति या डिलीवरी की जांच नहीं है।",
            "properties": {
              "gtr": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "trust": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "verifyvasp": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "sygna": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              }
            }
          },
          "didit_network": {
            "type": "object",
            "readOnly": true,
            "description": "क्या Didit नेटवर्क आपके VASP प्रोफ़ाइल को सूचीबद्ध करता है, ताकि अन्य Didit ग्राहक इसे डायरेक्टरी में ढूँढ सकें और INTERNAL रेल पर इस तक पहुँच सकें, और प्रत्येक शर्त जो यह अभी भी पूरी नहीं करता है।",
            "properties": {
              "listed": {
                "type": "boolean"
              },
              "missing": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "travel_rule_off",
                    "sandbox_application",
                    "not_discoverable",
                    "legal_name_missing",
                    "compliance_email_missing",
                    "compliance_email_unconfirmed",
                    "excluded_by_staff",
                    "internal_organization"
                  ]
                },
                "description": "सूचीबद्ध होने पर खाली। compliance_email_unconfirmed: POST /v3/travel-rule/settings/compliance-email/confirmation/ के साथ पुष्टि भेजें और ईमेल किए गए लिंक को खोलें। excluded_by_staff: Didit ने एप्लिकेशन को परीक्षण, डेमो या आंतरिक के रूप में चिह्नित किया।"
              },
              "compliance_email_confirmed": {
                "type": "boolean",
                "description": "क्या वर्तमान compliance_email की पुष्टि ईमेल में भेजे गए लिंक के माध्यम से की गई थी।"
              }
            }
          }
        }
      },
      "TravelRuleSettingsUpdate": {
        "type": "object",
        "properties": {
          "is_enabled": {
            "type": "boolean"
          },
          "legal_name": {
            "type": "string",
            "maxLength": 255
          },
          "lei": {
            "type": "string",
            "maxLength": 20
          },
          "jurisdiction": {
            "type": "string",
            "maxLength": 8
          },
          "name_matching_strictness": {
            "type": "string",
            "enum": [
              "NONE",
              "STRICT",
              "CONTAINS",
              "DEFAULT",
              "FUZZY"
            ],
            "description": "`CONTAINS` ऐसे एक नाम को स्वीकार करता है जिसके सभी शब्द दूसरे नाम में मौजूद हों।"
          },
          "confirmation_timeout_hours": {
            "type": "integer",
            "minimum": 1
          },
          "timeout_outcome": {
            "type": "string",
            "enum": [
              "HOLD",
              "REJECT",
              "PROCEED"
            ]
          },
          "compliance_email": {
            "type": "string",
            "format": "email",
            "description": "आपकी VASP प्रोफ़ाइल के लिए अनुपालन संपर्क ईमेल। Didit नेटवर्क आपकी प्रोफ़ाइल को तभी सूचीबद्ध करता है जब इस पते की पुष्टि ईमेल द्वारा भेजे गए लिंक (POST /v3/travel-rule/settings/compliance-email/confirmation/) के माध्यम से हो जाती है; इसे बदलने के लिए एक नई पुष्टि की आवश्यकता होती है।"
          },
          "is_discoverable": {
            "type": "boolean",
            "description": "क्या आपकी VASP प्रोफ़ाइल Didit नेटवर्क में सूचीबद्ध की जा सकती है: अन्य Didit ग्राहकों द्वारा GET /v3/travel-rule/vasps/ में खोजी जा सकती है और INTERNAL रेल पर संपर्क की जा सकती है। लिस्टिंग के लिए एक लाइव एप्लिकेशन, Travel Rule का सक्रिय होना, एक कानूनी नाम और एक पुष्ट अनुपालन ईमेल की भी आवश्यकता होती है; didit_network बताता है कि कौन से अनुपलब्ध हैं। डिफ़ॉल्ट रूप से true।"
          },
          "threshold_amount": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग, शून्य या अधिक, आपकी एप्लिकेशन की डिफ़ॉल्ट मुद्रा में। न्यूनतम ट्रांसफ़र राशि जो प्रबंधित एक्सचेंज को ट्रिगर करती है।"
          },
          "ownership_validation_mode": {
            "type": "string",
            "enum": [
              "FULL",
              "SIMPLIFIED",
              "AUTOMATED"
            ],
            "description": "समान नाम का रिस्पॉन्स फ़ील्ड देखें।"
          },
          "simplified_validation_threshold": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग, 0 या अधिक।"
          },
          "data_sharing_fields": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleDataSharingFields"
              }
            ],
            "description": "प्रति इकाई प्रकार मर्ज किया गया: जिस इकाई प्रकार को आप छोड़ देते हैं, वह अपना वर्तमान विकल्प बनाए रखता है। ऐसा विकल्प जो आपकी `jurisdiction` व्यवस्था (EU TFR या FATF Recommendation 16) के प्रेषक दायित्वों को पूरा नहीं कर सकता, जिसमें एक खाली सूची भी शामिल है, उसे `400` के साथ अस्वीकार कर दिया जाता है।"
          },
          "matching_rules": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleMatchingRules"
              }
            ],
            "description": "प्रति इकाई प्रकार और उसके अंदर प्रति फ़ील्ड मर्ज किया गया। वह फ़ील्ड जिसकी तुलना वह इकाई प्रकार नहीं करता है (उदाहरण के लिए `company` के लिए `date_of_birth`), उसे `400` के साथ अस्वीकार कर दिया जाता है।"
          },
          "inbound_auto_accept": {
            "type": "boolean"
          },
          "allow_self_declaration": {
            "type": "boolean"
          },
          "allow_screenshot_proof": {
            "type": "boolean",
            "description": "true होने पर, वॉलेट-स्वामित्व विजेट स्वामित्व साक्ष्य विधि के रूप में स्क्रीनशॉट अपलोड करने की पेशकश करता है। डिफ़ॉल्ट रूप से true।"
          },
          "auto_wallet_verification": {
            "type": "boolean"
          },
          "vasp_attribution_enabled": {
            "type": "boolean"
          },
          "counterparty_screening_enabled": {
            "type": "boolean",
            "description": "प्रतिपक्ष VASPs की ऑप्ट-इन प्रतिबंध और प्रतिकूल मीडिया स्क्रीनिंग, जिसकी बिलिंग प्रति स्क्रीनिंग कंपनी AML स्क्रीनिंग कीमत पर की जाती है। चालू होने पर, Didit उस प्रतिपक्ष VASP की स्क्रीनिंग करता है जिस तक आउटबाउंड एक्सचेंज पहुँचता है (30 दिनों से कम पुरानी स्क्रीनिंग का पुनः उपयोग करते हुए) और आप POST /v3/travel-rule/vasps/{vasp_id}/screening/ के साथ किसी एक VASP की स्क्रीनिंग कर सकते हैं। डिफ़ॉल्ट false: किसी की भी स्क्रीनिंग या बिलिंग नहीं की जाती है।"
          },
          "sunrise_policy": {
            "type": "string",
            "enum": [
              "",
              "HOLD",
              "REJECT",
              "PROCEED"
            ],
            "description": "HOLD, REJECT, PROCEED, या timeout_outcome का पालन करने के लिए खाली। इसी नाम का रिस्पॉन्स फ़ील्ड देखें।"
          },
          "non_responsive_policy": {
            "type": "string",
            "enum": [
              "",
              "HOLD",
              "REJECT",
              "PROCEED"
            ],
            "description": "HOLD, REJECT, PROCEED, या timeout_outcome का पालन करने के लिए खाली। इसी नाम का रिस्पॉन्स फ़ील्ड देखें।"
          },
          "disabled_networks": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "GTR",
                "TRUST",
                "VERIFYVASP",
                "SYGNA"
              ]
            },
            "description": "वे नेटवर्क जिन्होंने प्लेटफ़ॉर्म सदस्यता से बाहर रहने का विकल्प चुना है। आपकी कनेक्टेड स्वयं की सदस्यताओं को अक्षम नहीं करता है या अनुपलब्ध नेटवर्क का प्रावधान नहीं करता है।",
            "default": []
          }
        },
        "description": "सभी फ़ील्ड वैकल्पिक हैं; PUT एक आंशिक अपडेट लागू करता है।"
      },
      "WalletAddressEntry": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "address": {
            "type": "string",
            "description": "वॉलेट पता; केवल इसके हैश द्वारा इंपोर्ट की गई प्रविष्टि के लिए `\"\"`। यह प्रत्येक एप्लिकेशन, चेन और मेमो के लिए अद्वितीय है और केस की परवाह किए बिना पते की तुलना करता है। किसी प्रविष्टि को हटाने के बाद, आप उसी पते को फिर से पंजीकृत कर सकते हैं।"
          },
          "chain": {
            "type": "string",
            "description": "पते के लिए चेन token, उदाहरण के लिए `ETH` या `BTC`। जब Didit किसी ट्रांसफ़र को रूट या पंजीकृत करता है, तो यह वॉलेट पते पर और, जब ट्रांसफ़र में चेन शामिल होती है, तो केस को नज़रअंदाज़ करते हुए इस मान पर भी एड्रेस बुक प्रविष्टियों का मिलान करता है। ट्रांसफ़र की चेन `beneficiary_data.chain` होती है, जिसे लेन-देन की क्रिप्टो चेन या मुद्रा प्रतीक (उदाहरण के लिए `ETH`) से भरा जाता है जब आप इसे नहीं भेजते हैं, या डिपॉज़िट के बाद पंजीकरण की `chain` होती है, इसलिए हर जगह एक ही token का उपयोग करें। खाली चेन वाली प्रविष्टि किसी भी चेन से मेल खाती है। bitcoin पर पंजीकृत एक Lightning भुगतानकर्ता (नोड id या Lightning Address) को `LIGHTNING` पर लोअरकेस में संग्रहीत किया जाता है, जहां Lightning ट्रांसफ़र का मिलान किया जाता है। ज्ञात चेन एक कैनोनिकल पहचानकर्ता के तहत संग्रहीत की जाती हैं, चाहे आप कोई भी वर्तनी भेजें: \"ethereum\", \"Ethereum\" और \"ERC20\" सभी ETH के रूप में संग्रहीत होते हैं, \"BNB Smart Chain\" और \"BEP20\" BNB के रूप में, \"tron\" TRX के रूप में। एक अज्ञात चेन नाम दिए गए रूप में ही रखा जाता है।"
          },
          "holder_vendor_data": {
            "type": "string",
            "description": "धारक के लिए आपका आंतरिक पहचानकर्ता।"
          },
          "holder_name": {
            "type": "string",
            "description": "वॉलेट धारक का नाम, जिसका उपयोग लाभार्थी नाम मिलान के लिए किया जाता है।"
          },
          "entity_type": {
            "type": "string",
            "description": "फ़्री टेक्स्ट, डिफ़ॉल्ट रूप से \"individual\"।"
          },
          "is_ownership_verified": {
            "type": "boolean",
            "description": "केवल-पढ़ने योग्य। क्या इस पते का स्वामित्व सिद्ध हो चुका है।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "travel_address": {
            "type": "string",
            "description": "इस वॉलेट के लिए प्रतिपक्ष VASP का Travel Address, यदि ज्ञात हो। Didit को इस लाभार्थी के ट्रांसफ़र TRP द्वारा समर्थित संपत्तियों (BTC, ETH, और किसी नामित नेटवर्क पर USDC) के लिए TRP रेल पर रूट करने की अनुमति देता है।"
          },
          "address_hash": {
            "type": "string",
            "description": "केवल-पढ़ने योग्य। लोअरकेस पते का SHA-256, लोअरकेस हेक्स में। केवल इसके हैश द्वारा इंपोर्ट की गई प्रविष्टि का मिलान इसी से किया जाता है।"
          },
          "memo": {
            "type": "string",
            "description": "मेमो नेटवर्क (XRP, XLM, EOS, ATOM, HBAR) पर वॉलेट का हिस्सा बनने वाला डेस्टिनेशन टैग या मेमो; पूरे पते के लिए `\"\"`। मेमो वाली प्रविष्टि केवल उस मेमो को निर्दिष्ट करने वाले ट्रांसफ़र से मेल खाती है; बिना मेमो वाली प्रविष्टि पूरे पते से मेल खाती है।"
          },
          "receiving_travel_address": {
            "type": "string",
            "readOnly": true,
            "description": "इस वॉलेट के लिए आपका प्रति-वॉलेट Travel Address: इसे भेजने वाले VASP को दें ताकि उसकी TRP पूछताछ इस वॉलेट का नाम निर्दिष्ट करे। किसी अन्य VASP के रूप में रिकॉर्ड किए गए वॉलेट के लिए, जब Travel Rule बंद हो, और आपकी VASP प्रोफ़ाइल सहेजे जाने से पहले यह खाली रहता है।"
          }
        }
      },
      "WalletAddressEntryCreate": {
        "type": "object",
        "required": [
          "address"
        ],
        "properties": {
          "address": {
            "type": "string",
            "maxLength": 128,
            "description": "वॉलेट पता। XRP X-पता उसके क्लासिक पते और उसके टैग के रूप में संग्रहीत किया जाता है, इसलिए यह उन ट्रांसफ़र से मेल खाता है जो इनमें से किसी भी रूप को निर्दिष्ट करते हैं।"
          },
          "chain": {
            "type": "string",
            "maxLength": 32,
            "description": "पते के लिए चेन token, उदाहरण के लिए `ETH` या `BTC`। जब Didit किसी ट्रांसफ़र को रूट या पंजीकृत करता है, तो यह वॉलेट पते पर और, जब ट्रांसफ़र में कोई चेन शामिल होती है, तो केस को नज़रअंदाज़ करते हुए इस मान पर भी एड्रेस बुक प्रविष्टियों का मिलान करता है। किसी ट्रांसफ़र की चेन `beneficiary_data.chain` होती है, जो लेन-देन की क्रिप्टो चेन या मुद्रा प्रतीक (उदाहरण के लिए `ETH`) से भरी जाती है जब आप इसे नहीं भेजते हैं, या बाद में जमा पंजीकरण की `chain` होती है, इसलिए हर जगह एक ही token का उपयोग करें। रिक्त चेन वाली प्रविष्टि किसी भी चेन से मेल खाती है। ज्ञात चेन एक कैनोनिकल पहचानकर्ता के तहत संग्रहीत की जाती हैं, चाहे आप कोई भी वर्तनी भेजें: \"ethereum\", \"Ethereum\" और \"ERC20\" सभी ETH के रूप में संग्रहीत किए जाते हैं, \"BNB Smart Chain\" और \"BEP20\" BNB के रूप में, \"tron\" TRX के रूप में। किसी अज्ञात चेन नाम को वैसे ही रखा जाता है जैसा दिया गया है।"
          },
          "holder_vendor_data": {
            "type": "string",
            "maxLength": 255
          },
          "holder_name": {
            "type": "string",
            "maxLength": 255
          },
          "entity_type": {
            "type": "string",
            "default": "individual",
            "maxLength": 16
          },
          "self_declared": {
            "type": "boolean",
            "default": false,
            "description": "केवल-राइट। सही होने पर, प्रविष्टि को पहले से ही SELF_DECLARATION प्रमाण के माध्यम से स्वामित्व-सत्यापित बनाया जाता है। यदि आपकी Travel Rule सेटिंग्स में `allow_self_declaration` बंद है, तो 400 लौटाता है।"
          },
          "travel_address": {
            "type": "string",
            "description": "वैकल्पिक। इस वॉलेट के लिए प्रतिपक्ष VASP का Travel Address, जो TRP द्वारा समर्थित संपत्तियों (BTC, ETH, और नामित नेटवर्क पर USDC) के लिए TRP रूटिंग को सक्षम करता है। एक अमान्य Travel Address 400 लौटाता है।",
            "maxLength": 512
          },
          "memo": {
            "type": "string",
            "maxLength": 256,
            "description": "वैकल्पिक। डेस्टिनेशन टैग या मेमो जो वॉलेट का हिस्सा है। XRP: एक डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (एक JSON संख्या स्वीकार की जाती है)। XLM: 28 बाइट्स तक का टेक्स्ट मेमो, 64-बिट id या हेक्स में 32-बाइट हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट कोई मेमो नहीं लेते: यदि दिया जाए तो `400` मिलता है। Alias: `destinationTag` या `destination_tag`।"
          }
        }
      },
      "WalletAddressEntryUpdate": {
        "type": "object",
        "properties": {
          "holder_name": {
            "type": "string",
            "maxLength": 255
          },
          "holder_vendor_data": {
            "type": "string",
            "maxLength": 255
          },
          "entity_type": {
            "type": "string",
            "maxLength": 16
          },
          "travel_address": {
            "type": "string",
            "maxLength": 512
          }
        },
        "description": "PATCH एक आंशिक अपडेट है; रिस्पॉन्स केवल holder_name, holder_vendor_data, entity_type, travel_address, receiving_travel_address, label, और owner_type को दर्शाता है।"
      },
      "TravelRuleTransferDetail": {
        "type": "object",
        "description": "स्वामित्व-पुष्टि और समाप्त/रद्द endpoints द्वारा लौटाया गया पूर्ण स्थानांतरण ऑब्जेक्ट। जब तक किसी इनबाउंड स्थानांतरण के वॉलेट स्वामित्व की पुष्टि नहीं हो जाती, तब तक प्रतिपक्ष का `originator_data` और `beneficiary_data` मास्क होकर वापस आते हैं (प्रत्येक शब्द का पहला अक्षर रखा जाता है; वॉलेट, चेन और VASP रूटिंग पठनीय रहते हैं) और `data_masked` true होता है।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "AWAITING_COUNTERPARTY",
              "ON_HOLD",
              "COMPLETED",
              "FINISHED",
              "CANCELLED",
              "EXPIRED",
              "COUNTERPARTY_MISMATCHED_DATA",
              "COUNTERPARTY_VASP_NOT_FOUND",
              "COUNTERPARTY_VASP_NOT_REACHABLE",
              "UNCONFIRMED_OWNERSHIP",
              "COUNTERPARTY_VASP_GENERAL_DECLINE",
              "NOT_ENOUGH_COUNTERPARTY_DATA",
              "NOT_APPLICABLE"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ]
          },
          "rail": {
            "type": "string",
            "nullable": true,
            "enum": [
              "INTERNAL",
              "TRP",
              "GTR",
              "TRUST",
              "VERIFYVASP",
              "SYGNA",
              "EMAIL",
              "TEST_VASP",
              null
            ],
            "description": "वह रेल जिसके माध्यम से ट्रांसफर रूट किया गया था, या null जब कोई रेल नहीं चुना गया था (उदाहरण के लिए थ्रेशोल्ड से नीचे, एक स्व-होस्टेड प्रतिपक्ष वॉलेट, जमा के बाद का पंजीकरण, या कोई पहुँच योग्य प्रतिपक्ष न होने पर)। INTERNAL का अर्थ है दोनों पक्ष Didit एप्लिकेशन हैं; EMAIL का अर्थ है कि प्रतिपक्ष तक ईमेल किए गए पिकअप लिंक द्वारा पहुँचा गया था। TEST_VASP का अर्थ है कि Didit Test VASP ने सैंडबॉक्स ट्रांसफर का उत्तर दिया। GTR, VERIFYVASP और SYGNA पर, Didit नेटवर्क के रिस्पॉन्स से या हर 5 मिनट में इसे पोल करके प्रतिपक्ष का उत्तर पढ़ता है। TRUST केवल भेजता है, इसलिए TRUST ट्रांसफर तब तक AWAITING_COUNTERPARTY बना रहता है जब तक कि इसकी समय-सीमा समाप्त न हो जाए। नेटवर्क रेल का उपयोग केवल तभी किया जाता है जब आपने उस नेटवर्क के लिए अपनी सदस्यता कनेक्ट की हो। इसे लेन-देन बनाने का अनुरोध रिस्पॉन्स लौटाने के बाद चुना जाता है, इसलिए यह उस रिस्पॉन्स में null होता है।"
          },
          "protocol": {
            "type": "string",
            "nullable": true
          },
          "ivms_version": {
            "type": "string",
            "example": "ivms101.2023"
          },
          "required": {
            "type": "boolean"
          },
          "ownership_confirmed": {
            "type": "boolean",
            "nullable": true
          },
          "deadline_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "timeline": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "status": {
                  "type": "string"
                },
                "at": {
                  "type": "string",
                  "format": "date-time"
                },
                "detail": {
                  "type": "string"
                },
                "name_match": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/TravelRuleNameMatch"
                    }
                  ],
                  "nullable": true,
                  "description": "नाम तुलना जो इस प्रविष्टि ने तय की, `detail` के बगल में। उन प्रविष्टियों पर अनुपस्थित जिन्होंने किसी नाम की तुलना नहीं की।"
                },
                "reason": {
                  "type": "string",
                  "description": "केवल उस संक्रमण की प्रविष्टि पर मौजूद जो विफल डिलीवरी के कारण हुआ था: `email_undeliverable` या `delivery_failed`, वह मान जो ट्रांसफ़र का `reason` रिपोर्ट करता है।"
                }
              }
            }
          },
          "counterparty_vasp": {
            "type": "object",
            "nullable": true,
            "properties": {
              "name": {
                "type": "string"
              },
              "lei": {
                "type": "string"
              },
              "dd_score": {
                "type": "integer",
                "description": "0 से 100 तक ड्यू-डिलिजेंस स्कोर, जहाँ अधिक स्कोर बेहतर होता है। VASP डायरेक्टरी के समान पैमाना।"
              },
              "dd_score_breakdown": {
                "type": "object",
                "description": "dd_score में प्रति-घटक योगदान, VASP डायरेक्टरी (jurisdiction, verification, protocol, lei, history, essentials, responsiveness) के अनुसार प्रति घटक एक ऑब्जेक्ट, प्रत्येक {points, max, reason, detail}। प्रतिपक्ष का मूल्यांकन होने तक {}।",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "points": {
                      "type": "number",
                      "description": "इस घटक के लिए दिए गए अंक।"
                    },
                    "max": {
                      "type": "integer",
                      "description": "अधिकतम अंक जो यह घटक दे सकता है।"
                    },
                    "reason": {
                      "type": "string",
                      "description": "घटक के निर्णय का मशीन-पठनीय कोड।"
                    },
                    "detail": {
                      "type": "string",
                      "description": "प्रदान किए गए अंकों का मानव-पठनीय कारण।"
                    }
                  }
                }
              },
              "dd_assessed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब उचित जाँच-पड़ताल मूल्यांकन अंतिम बार चला था। जब तक प्रतिपक्ष का मूल्यांकन न किया गया हो तब तक Null।"
              }
            }
          },
          "originator_data": {
            "type": "object",
            "description": "प्रेषक पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक प्रतिपक्ष के मान छिपाए जाते हैं।"
          },
          "beneficiary_data": {
            "type": "object",
            "description": "लाभार्थी पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक प्रतिपक्ष के मान छिपे रहते हैं।"
          },
          "name_match": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleNameMatch"
              }
            ],
            "nullable": true,
            "description": "नाम तुलना जिसने ट्रांसफर तय किया, या एक बार चलने तक null। जब तक पक्ष मास्क किए गए हों, और INTERNAL एक्सचेंज की अन्य ग्राहक की प्रति पर, `transfer_name`, `compared_name`, `matched_names` और `mismatched_names` छिपे होते हैं। `score` और `matched` असहमत हो सकते हैं: `matched` सख्ती का पालन करता है, `score` दोनों पूरे नामों की समानता है।"
          },
          "data_match": {
            "$ref": "#/components/schemas/TravelRuleDataMatch"
          },
          "mismatched_fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "`data_match.mismatched_fields` के लिए शॉर्टकट। कुछ भी भिन्न न होने पर खाली।"
          },
          "data_unmasked": {
            "$ref": "#/components/schemas/TravelRuleDataUnmasked"
          },
          "data_masked": {
            "type": "boolean",
            "description": "सही जब इस रिस्पॉन्स में प्रतिपक्ष का व्यक्तिगत डेटा मास्क किया गया हो।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "delivery": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleDelivery"
              }
            ],
            "description": "इस स्थानांतरण द्वारा दूसरे पक्ष को भेजे जाने वाले नवीनतम संदेश की स्थिति। Null जब स्थानांतरण को कभी कोई संदेश भेजने की आवश्यकता नहीं थी (उदाहरण के लिए `threshold_amount` से कम, घोषित स्व-होस्टेड वॉलेट, या सनराइज़ पंजीकरण)।"
          },
          "discovery": {
            "type": "array",
            "description": "Didit ने प्रतिपक्ष की खोज कैसे की, निष्पादित प्रत्येक चरण के लिए एक प्रविष्टि। जब कोई खोज नहीं चली, उदाहरण के लिए इनबाउंड ट्रांसफ़र पर, तो रिक्त।",
            "items": {
              "$ref": "#/components/schemas/TravelRuleDiscoveryStep"
            }
          },
          "reason": {
            "type": "string",
            "description": "एक `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफर क्यों अटका हुआ है; किसी अन्य स्थिति के लिए `\"\"`। एक विफल डिलीवरी इसे पहले तय करती है, केवल `COUNTERPARTY_VASP_NOT_REACHABLE` पर: `email_undeliverable` (मेल प्रदाता ने अनुपालन ईमेल को अस्वीकार कर दिया और आज़माने के लिए कोई पता नहीं बचा: जब इसे भेजा गया था, रिमाइंडर पर, या बाद में रिपोर्ट किए गए स्थायी बाउंस के रूप में) या `delivery_failed` (जो रेल डिलीवर कर रही थी वह स्थायी रूप से विफल हो गई: एक नेटवर्क रेल ने संदेश को अस्वीकार कर दिया या उसके पुनः प्रयास समाप्त हो गए, एक `TRP` पहचान होस्ट ने उत्तर नहीं दिया, या प्रतिपक्ष के `TRP` होस्ट ने पूछताछ स्वीकार नहीं की)। अन्यथा `discovery` ट्रेस इसे तय करता है: `awaiting_end_user` (किसी भी चरण ने ऐसे प्रतिपक्ष का नाम नहीं दिया जिस तक Didit पहुँच सके), `directory_match_no_route` (एक चरण ने एक निर्देशिका VASP का नाम दिया जिसका कोई रूट नहीं है), `picked_member_without_proven_wallet` (अंतिम उपयोगकर्ता ने ऐसे Didit ग्राहक को चुना जिसने वॉलेट पर नियंत्रण साबित नहीं किया है), या `no_directory_match` जब ट्रेस कोई अन्य कारण नहीं देता है। पुनः भेजना ट्रांसफर को आगे बढ़ाता है, इसलिए कारण साफ़ हो जाता है। देखें [ट्रांसफर क्यों अटका हुआ है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।"
          },
          "next_actions": {
            "type": "array",
            "description": "ट्रांसफ़र को क्या आगे बढ़ाता है; `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` को छोड़कर किसी भी स्थिति के लिए `[]`। `email_undeliverable` `update_compliance_email`, फिर `resend` प्रदान करता है। `delivery_failed` `resend` प्रदान करता है। डिस्कवरी कारण `select_counterparty_vasp`, `declare_self_hosted`, `add_vasp_hint` और `resend` प्रदान करता है।",
            "items": {
              "$ref": "#/components/schemas/TravelRuleNextAction"
            }
          },
          "chain_details": {
            "$ref": "#/components/schemas/TravelRuleChainDetails"
          }
        }
      },
      "TravelRuleOwnershipConfirmRequest": {
        "type": "object",
        "required": [
          "confirmed"
        ],
        "properties": {
          "confirmed": {
            "type": "boolean",
            "description": "स्वामित्व की पुष्टि के लिए true, इसे अस्वीकार करने के लिए false।"
          },
          "wallet_address": {
            "type": "string",
            "default": "",
            "description": "इनबाउंड TRP ट्रांसफ़र: वह भुगतान पता जो आपके स्वीकृत करने पर Didit प्रेषक VASP को लौटाता है। डिफ़ॉल्ट रूप से मिलान की गई एड्रेस बुक प्रविष्टि का पता, फिर beneficiary_data.wallet_address होता है। घोषित स्व-होस्टेड वॉलेट ट्रांसफ़र पर जिसमें किसी प्रतिपक्ष वॉलेट का नाम नहीं है, वह वॉलेट जिसके स्वामित्व को आपने सत्यापित किया है; इसके बिना अनुरोध 400 के साथ अस्वीकृत कर दिया जाता है। अन्य ट्रांसफ़र के लिए अनदेखा किया जाता है।"
          }
        }
      },
      "TravelRuleTransferPatchRequest": {
        "type": "object",
        "description": "इनमें से ठीक एक प्रदान करें: payment_txn_id (finish), action=cancel, action=resend, compliance_email के साथ action=update_compliance_email, wallet_address के साथ action=update_originator_wallet, या beneficiary_vasp के साथ action=beneficiary_vasp।",
        "properties": {
          "payment_txn_id": {
            "type": "string",
            "description": "ऑन-चेन लेन-देन हैश। इसके लिए ट्रांसफ़र का COMPLETED स्थिति में आउटबाउंड ट्रांसफ़र होना आवश्यक है।"
          },
          "action": {
            "type": "string",
            "enum": [
              "cancel",
              "resend",
              "update_compliance_email",
              "update_originator_wallet",
              "beneficiary_vasp"
            ],
            "description": "\"cancel\" किसी गैर-टर्मिनल ट्रांसफर को रद्द करता है। \"resend\" COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE, या NOT_ENOUGH_COUNTERPARTY_DATA में अटके आउटबाउंड ट्रांसफर के लिए रूटिंग को फिर से चलाता है। \"update_compliance_email\" उन तीन स्थितियों में से किसी एक में मौजूद आउटबाउंड ट्रांसफर पर उस अनुपालन ईमेल को बदलता है जिस पर अनुरोध भेजा जाता है; इसके बाद \"resend\" भेजें। \"update_originator_wallet\" उस वॉलेट को रिकॉर्ड करता है जिससे वास्तव में धनराशि निकली थी (`wallet_address`, `memo`)। \"beneficiary_vasp\" उन स्थितियों में से किसी एक में मौजूद आउटबाउंड ट्रांसफर के लिए प्रतिपक्ष VASP को स्वयं निर्दिष्ट करता है (`beneficiary_vasp` आवश्यक है): इसे उस VASP पर रूट किया जाता है और फिर से भेजा जाता है।"
          },
          "compliance_email": {
            "type": "string",
            "format": "email",
            "maxLength": 254,
            "description": "`action: update_compliance_email` के साथ आवश्यक है। इसे इस ट्रांसफर के `beneficiary_data.counterparty_vasp_email` के रूप में रखा जाता है: यह केवल इसी ट्रांसफर से संबंधित है और किसी डायरेक्टरी प्रविष्टि या संपर्क सूची में शामिल नहीं होता है।"
          },
          "wallet_address": {
            "type": "string",
            "maxLength": 128,
            "description": "`action: update_originator_wallet` के साथ: वह वॉलेट जिससे धनराशि निकली है। जब ट्रांसफ़र के UTXO इनपुट ज्ञात हों, तो यह उनमें से एक होना चाहिए।"
          },
          "memo": {
            "type": "string",
            "maxLength": 256,
            "description": "`action: update_originator_wallet` के साथ: मेमो नेटवर्क पर वॉलेट का मेमो या टैग। वैकल्पिक।"
          },
          "beneficiary_vasp": {
            "type": "string",
            "format": "uuid",
            "description": "action=beneficiary_vasp के साथ आवश्यक है: `GET /v3/travel-rule/vasps/` से डायरेक्टरी VASP की `id`। आपकी पसंद हर स्वचालित खोज चरण से ऊपर होती है, जो इसे कभी ओवरराइड नहीं करता है।"
          }
        }
      },
      "VaspDirectoryEntry": {
        "type": "object",
        "description": "डायरेक्टरी का एक VASP या Didit नेटवर्क का कोई सदस्य, उन रूट्स के साथ जो आपके एप्लिकेशन के पास इसके लिए उपलब्ध हैं। कोई ग्राहक Didit नेटवर्क का सदस्य केवल तभी होता है जब उसका एप्लिकेशन लाइव हो, उसका Travel Rule चालू हो, उसकी प्रोफ़ाइल खोजी जा सकने योग्य हो, उसका एक कानूनी नाम और एक पुष्टिकृत अनुपालन ईमेल हो, और Didit ने एप्लिकेशन को टेस्ट, डेमो या आंतरिक के रूप में चिह्नित न किया हो। प्रत्येक पंक्ति में साझा उचित-परिश्रम मूल्यांकन (dd_score, risk_level, responsiveness, essential_checks) और आपके एप्लिकेशन का अपना निर्णय, निकाय स्क्रीनिंग और प्रश्नावलियाँ भी शामिल होती हैं, जिन्हें कोई अन्य ग्राहक नहीं देख सकता।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "GET /v3/travel-rule/vasps/{vasp_id}/ के लिए एंट्री की id।"
          },
          "kind": {
            "type": "string",
            "enum": [
              "directory",
              "didit"
            ],
            "description": "साझा डायरेक्टरी की प्रविष्टि के लिए directory; Didit नेटवर्क के सदस्य के लिए didit।"
          },
          "name": {
            "type": "string"
          },
          "lei": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string",
            "description": "ISO 3166 देश कोड, जैसा कि स्रोत प्रदान करता है।"
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "VASP के वेब डोमेन। Didit नेटवर्क सदस्यों के लिए हमेशा खाली।"
          },
          "reachable": {
            "type": "boolean",
            "description": "क्या आपके एप्लिकेशन के पास इस VASP के लिए, या किसी ब्रांड के लिए इसकी संस्थाओं में से किसी एक के लिए कोई उपलब्ध रूट है। Didit नेटवर्क सदस्य के लिए हमेशा true, सैंडबॉक्स एप्लिकेशन को छोड़कर, जहाँ प्रत्येक पंक्ति false होती है।"
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "trading_name",
                    "other_legal_name",
                    "network_name",
                    "attribution",
                    "merged",
                    "staff"
                  ],
                  "description": "trading_name, other_legal_name (वैश्विक LEI रजिस्टर से), network_name (Travel Rule नेटवर्क पर नाम), attribution (ब्लॉकचेन एनालिटिक्स द्वारा VASP के वॉलेट को दिया गया इकाई नाम), merged (इस प्रविष्टि में मर्ज की गई डुप्लिकेट प्रविष्टि का नाम) या staff।"
                }
              }
            },
            "description": "अन्य नाम जिनसे VASP जाना जाता है।"
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Travel Rule नेटवर्क की सदस्य डायरेक्टरी में इस VASP की वर्तमान लिस्टिंग। TRISA लिस्टिंग बताती है कि TRISA पर VASP कौन है; Didit के पास कोई TRISA रेल नहीं है, इसलिए यह कभी रूट नहीं होता है।",
              "properties": {
                "network": {
                  "type": "string",
                  "enum": [
                    "GTR",
                    "TRUST",
                    "VERIFYVASP",
                    "SYGNA",
                    "TRISA"
                  ]
                },
                "code": {
                  "type": "string",
                  "description": "उस नेटवर्क पर VASP का पहचानकर्ता।"
                },
                "listed_name": {
                  "type": "string",
                  "description": "वह नाम जिसके अंतर्गत नेटवर्क VASP को सूचीबद्ध करता है।"
                },
                "country": {
                  "type": "string",
                  "description": "नेटवर्क द्वारा सूचीबद्ध देश, जब यह कोई देश प्रदान करता है।"
                },
                "verified_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "Didit कर्मियों ने लिस्टिंग को कब सत्यापित किया। सार्वजनिक डायरेक्टरी से पढ़ी गई लिस्टिंग के लिए Null।"
                },
                "last_seen_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "स्रोत ने अंतिम बार लिस्टिंग कब दिखाई थी। जिस लिस्टिंग को स्रोत ने तीन सप्ताह तक नहीं दिखाया है, उसे हटा दिया जाता है।"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "trisa_directory",
                    "staff"
                  ],
                  "description": "लिस्टिंग कहाँ से आती है: सार्वजनिक TRISA डायरेक्टरी, या Didit स्टाफ़।"
                }
              }
            }
          },
          "routes": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "एक तरीका जिससे आपका एप्लिकेशन इस VASP को Travel Rule डेटा डिलीवर कर सकता है, उस क्रम में जिसमें डिस्पैच उन्हें आज़माता है। नेटवर्क रूट के लिए उस नेटवर्क पर सदस्यता की आवश्यकता होती है: आपकी अपनी (Marketplace में कनेक्टेड) या Didit की जब Didit के पास एक हो। इसके बिना रूट को कारण सहित अनुपलब्ध के रूप में सूचीबद्ध किया जाता है, कभी भी VASP तक पहुंचने के तरीके के रूप में नहीं।",
              "properties": {
                "rail": {
                  "type": "string",
                  "enum": [
                    "INTERNAL",
                    "TRP",
                    "GTR",
                    "TRUST",
                    "VERIFYVASP",
                    "SYGNA",
                    "EMAIL"
                  ]
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "available",
                    "unavailable"
                  ]
                },
                "reason": {
                  "type": "string",
                  "enum": [
                    "",
                    "no_membership",
                    "network_switched_off",
                    "sandbox_application"
                  ],
                  "description": "अनुपलब्ध रूट का उपयोग क्यों नहीं किया जा सकता: no_membership (न तो आपके पास और न ही Didit के पास उस नेटवर्क पर सदस्यता है), network_switched_off (आपने अपनी सेटिंग्स में उस नेटवर्क को बंद कर दिया है) या sandbox_application (सैंडबॉक्स एप्लिकेशन केवल Didit Test VASP को भेजता है, इसलिए इसके लिए कोई रूट उपलब्ध नहीं है)। रूट उपलब्ध होने पर खाली।"
                },
                "via": {
                  "type": "string",
                  "enum": [
                    "",
                    "own_membership",
                    "didit_membership",
                    "directory",
                    "contact",
                    "didit_network"
                  ],
                  "description": "एक उपलब्ध मार्ग तक कैसे पहुंचा जाता है: नेटवर्क रेल के लिए own_membership या didit_membership, डायरेक्टरी द्वारा सत्यापित TRP endpoint के लिए directory, EMAIL रेल के लिए contact, Didit नेटवर्क सदस्य के लिए didit_network। मार्ग अनुपलब्ध होने पर रिक्त।"
                }
              }
            }
          },
          "umbrella": {
            "type": "object",
            "nullable": true,
            "description": "वह ब्रांड जिसकी यह प्रविष्टि विनियमित इकाई है। जब यह किसी का हिस्सा नहीं होता है तो null होता है।",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "entities": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "किसी ब्रांड की एक विनियमित इकाई: वह कानूनी इकाई जो ट्रांसफर प्राप्त करती है।",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "lei": {
                  "type": "string"
                },
                "jurisdiction": {
                  "type": "string"
                },
                "reachable": {
                  "type": "boolean",
                  "description": "क्या आपके एप्लिकेशन के पास इसके लिए कोई उपलब्ध रूट है।"
                }
              }
            },
            "description": "किसी ब्रांड के लिए, उसके ट्रांसफ़र प्राप्त करने वाली विनियमित संस्थाएँ। ब्रांड को नाम देने वाला ट्रांसफ़र उस क्षेत्राधिकार में पहुंच योग्य संस्था के पास जाता है जिसका वह उल्लेख करता है (beneficiary_data.counterparty_vasp_jurisdiction), अन्यथा गंतव्य वॉलेट से जुड़े ब्लॉकचेन एनालिटिक्स एट्रिब्यूशन से संबद्ध संस्था के पास, अन्यथा कोई क्षेत्राधिकार न बताए जाने पर एकमात्र पहुंच योग्य संस्था के पास जाता है। समान रूप से उपयुक्त दो संस्थाओं के बीच कभी अनुमान नहीं लगाया जाता है।"
          },
          "contacts": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "एक अनुपालन संपर्क जिसे EMAIL रेल लिख सकता है।",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "email": {
                  "type": "string",
                  "format": "email"
                },
                "name": {
                  "type": "string"
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "staff",
                    "application",
                    "learned"
                  ],
                  "description": "staff: Didit द्वारा क्यूरेट किया गया; application: आपके एप्लिकेशन द्वारा जोड़ा गया; learned: एक पता जिसने अपने रिस्पॉन्स लिंक के माध्यम से Travel Rule अनुरोध का उत्तर दिया।"
                },
                "scope": {
                  "type": "string",
                  "enum": [
                    "platform",
                    "application"
                  ],
                  "description": "platform संपर्कों का उपयोग प्रत्येक Didit ग्राहक के ट्रांसफ़र के लिए किया जाता है; application संपर्क आपके एप्लिकेशन के लिए निजी होते हैं, जो केवल अपने स्वयं के संपर्क देखता है।"
                },
                "verified_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "जब इस पते पर किसी ने अनुरोध का उत्तर दिया। Null जब तक उत्तर नहीं दिया गया हो।"
                }
              }
            },
            "description": "इस VASP के लिए प्लेटफ़ॉर्म के संपर्क और आपके एप्लिकेशन के अपने संपर्क।"
          },
          "dd_status": {
            "type": "string",
            "enum": [
              "NOT_STARTED",
              "IN_PROGRESS",
              "COMPLETED",
              "REJECTED"
            ],
            "description": "dd_score के सत्यापन घटक द्वारा स्कोर की गई, एंट्री की Didit सत्यापन स्थिति। Didit नेटवर्क सदस्य के लिए हमेशा COMPLETED।"
          },
          "dd_score": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "maximum": 100,
            "description": "डायरेक्टरी प्रविष्टि का साझा ड्यू-डिलिजेंस स्कोर, 0 से 100, जहाँ स्कोर जितना अधिक हो, उतना ही सुरक्षित माना जाता है (dd_score_semantic देखें): dd_score_breakdown के अंकों का योग। Didit नेटवर्क सदस्य के लिए null, जिसे स्कोर नहीं दिया जाता है। जिस प्रविष्टि का अभी तक आकलन नहीं हुआ है (dd_assessed_at null) वह खाली risk_level के साथ 0 दिखाती है, इसलिए रॉ स्कोर के बजाय risk_level पढ़ें।"
          },
          "reachable_rails": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INTERNAL",
                "TRP",
                "GTR",
                "TRUST",
                "VERIFYVASP",
                "SYGNA",
                "EMAIL"
              ]
            },
            "description": "एंट्री पर रिकॉर्ड किए गए रेल्स। आपका एप्लिकेशन आज क्या उपयोग कर सकता है, इसके लिए रूट पढ़ें।"
          },
          "is_didit_customer": {
            "type": "boolean",
            "description": "Didit नेटवर्क के किसी सदस्य के लिए true (इनके लिए dd_status हमेशा COMPLETED, dd_score null और risk_level खाली होता है) और Didit ग्राहक से जुड़ी डायरेक्टरी प्रविष्टि के लिए true।"
          },
          "dd_score_breakdown": {
            "type": "object",
            "description": "dd_score के प्रत्येक घटक के लिए एक ऑब्जेक्ट। घटक, उनका वेटेज (अधिकतम) और उनके कारण कोड: jurisdiction, 25 (jurisdiction_not_high_risk, jurisdiction_high_risk, jurisdiction_unknown); verification, 15 (dd_status_completed, dd_status_in_progress, dd_status_not_started, dd_status_rejected); protocol, 15 (native_rail, email_only, no_rail); lei, 10 (lei_valid, lei_missing); history, 10 (history, no_history); essentials, 15 (essential_checks, no_essential_checks); responsiveness, 10 (responsive, unresponsive, responsiveness_unknown)। Didit नेटवर्क सदस्य के लिए खाली।",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "points": {
                  "type": "number",
                  "description": "घटक द्वारा योगदान किए गए अंक, एक दशमलव स्थान तक पूर्णांकित।"
                },
                "max": {
                  "type": "integer",
                  "description": "घटक का भार: वह अधिकतम अंक जो यह योगदान देता है।"
                },
                "reason": {
                  "type": "string",
                  "description": "घटक के निर्णय का मशीन-पठनीय कोड।"
                },
                "detail": {
                  "type": "string",
                  "description": "एक पंक्ति का अंग्रेज़ी स्पष्टीकरण।"
                }
              }
            }
          },
          "dd_assessed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब dd_score, risk_level और responsiveness अंतिम बार परिकलित किए गए थे: प्रविष्टि के साथ विनिमय पूरा होने, समाप्त होने, समय-सीमा समाप्त होने, बेमेल होने या अस्वीकृत होने के बाद, जब Didit प्रविष्टि को रीफ़्रेश या क्युरेट करता है, और साप्ताहिक डायरेक्टरी रीफ़्रेश में। Didit नेटवर्क सदस्य के लिए Null।"
          },
          "dd_score_semantic": {
            "type": "string",
            "enum": [
              "higher_is_safer"
            ],
            "description": "dd_score किस दिशा में इंगित करता है: हमेशा higher_is_safer।"
          },
          "risk_level": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH",
              ""
            ],
            "description": "वह बैंड जिसमें dd_score आता है: LOW (70 या अधिक), MEDIUM (40 से 69) या HIGH (40 से कम)। Didit नेटवर्क सदस्य के लिए और अभी तक मूल्यांकित न की गई प्रविष्टि के लिए रिक्त। जोखिम के साथ इस पर फ़िल्टर करें। आपकी अपनी फ़्लैग की गई स्क्रीनिंग कभी भी इस साझा मान को नहीं बदलती है: यह इसके बजाय आपके नियमों में counterparty_risk_level को HIGH बनाती है।"
          },
          "responsiveness": {
            "type": "object",
            "description": "क्या VASP Travel Rule अनुरोधों का उत्तर देता है: पिछले 90 दिनों में Didit ग्राहकों द्वारा इसकी ओर शुरू किए गए अनुरोधों का वह हिस्सा जिसका उसने उत्तर दिया। केवल नेटवर्क या प्रोटोकॉल रेल पर भेजे गए अनुरोध, या किसी साझा पते (एंट्री का अनुपालन पता या प्लेटफ़ॉर्म संपर्क) पर ईमेल द्वारा भेजे गए अनुरोध ही गिने जाते हैं; ग्राहक द्वारा टाइप किए गए पते पर या ग्राहक के निजी संपर्क पर भेजा गया अनुरोध कभी नहीं गिना जाता। समय-सीमा समाप्त अनुरोध अनुत्तरित होता है; एक पूर्ण एक्सचेंज, अस्वीकृति या डेटा बेमेल एक उत्तर है; रद्द किया गया अनुरोध या पहुंच से बाहर की रेल दोनों में से कुछ भी नहीं है। Didit नेटवर्क सदस्य के लिए हमेशा शून्य गणना के साथ UNKNOWN होता है।",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "RESPONSIVE",
                  "UNRESPONSIVE",
                  "UNKNOWN"
                ],
                "description": "विंडो में 5 से कम तय किए गए अनुरोधों के साथ UNKNOWN; जब उनमें से 10 प्रतिशत से भी कम का उत्तर दिया गया हो तब UNRESPONSIVE; अन्यथा RESPONSIVE।"
              },
              "answered": {
                "type": "integer",
                "description": "विंडो में तय किए गए अनुरोध जिनका VASP ने उत्तर दिया।"
              },
              "total": {
                "type": "integer",
                "description": "विंडो में तय किए गए अनुरोध: उत्तर दिए गए और समय-सीमा समाप्त हुए।"
              },
              "computed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          },
          "essential_checks": {
            "type": "object",
            "description": "किसी डायरेक्टरी एंट्री की एसेंशियल-चेक्स रिपोर्ट, जो केवल प्लेटफ़ॉर्म के सत्यापित स्रोतों से बनाई गई है: पंजीकरण (एक आधिकारिक रजिस्टर VASP को सूचीबद्ध करता है: EU का अंतरिम MiCA रजिस्टर, सार्वजनिक TRISA डायरेक्टरी या वैश्विक LEI रजिस्टर), लाइसेंस (एक MiCA प्राधिकरण रिकॉर्ड पर है और वर्तमान है), डोमेन (एंट्री का डोमेन इसके TRP endpoint या उसके रजिस्टर द्वारा दी गई वेबसाइट से मेल खाता है) और lei (इसका LEI रिकॉर्ड सक्रिय है, जारी किया गया है और एंट्री के नामों और देश के अनुरूप है)। dd_score का essentials घटक उन जाँचों में पास होने वाली जाँचों का अनुपात है जिन पर निर्णय हो चुका है। जब तक साप्ताहिक डायरेक्टरी रीफ़्रेश पहली बार एंट्री की जाँच नहीं करता तब तक खाली रहता है, और Didit नेटवर्क सदस्य के लिए हमेशा खाली रहता है।",
            "properties": {
              "level": {
                "type": "string",
                "enum": [
                  "essential"
                ]
              },
              "checked_at": {
                "type": "string",
                "format": "date-time"
              },
              "checks": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "enum": [
                        "registration",
                        "licence",
                        "domain",
                        "lei"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "pass",
                        "fail",
                        "unknown"
                      ],
                      "description": "unknown जब रिकॉर्ड में कोई स्रोत इस जाँच का निर्णय नहीं ले सकता।"
                    },
                    "reason": {
                      "type": "string",
                      "description": "निर्णय का मशीन-पठनीय कोड।"
                    },
                    "detail": {
                      "type": "string",
                      "description": "एक पंक्ति का अंग्रेज़ी स्पष्टीकरण।"
                    }
                  }
                }
              },
              "passed": {
                "type": "integer"
              },
              "failed": {
                "type": "integer"
              },
              "unknown": {
                "type": "integer"
              },
              "total": {
                "type": "integer"
              }
            }
          },
          "decision": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleCounterpartyDecision"
              }
            ],
            "nullable": true,
            "description": "इस VASP पर आपकी एप्लिकेशन का निर्णय, या बिना किसी स्वयं के निर्णय वाली इकाई के लिए उसके ब्रांड का (inherited_from में ब्रांड का नाम होता है)। कोई न होने पर Null। आपकी एप्लिकेशन के लिए निजी।"
          },
          "entity_screening": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleCounterpartyScreening"
              }
            ],
            "nullable": true,
            "description": "इस VASP की आपकी एप्लिकेशन द्वारा प्रतिबंधों और प्रतिकूल मीडिया की नवीनतम स्क्रीनिंग। जब आपने कभी इसकी स्क्रीनिंग नहीं की हो तो Null। आपकी एप्लिकेशन के लिए निजी।"
          },
          "questionnaires": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TravelRuleCounterpartyQuestionnaire"
            },
            "description": "इस VASP के साथ आपकी एप्लिकेशन की ड्यू डिलिजेंस प्रश्नावलियाँ, नवीनतम पहले। आपकी एप्लिकेशन के लिए निजी।"
          }
        },
        "example": {
          "id": "0d6f3c2a-6a1e-4c55-9a39-1f2b0c7d8e91",
          "kind": "directory",
          "name": "Example Counterparty VASP",
          "lei": "529900EXAMPLECPTY001",
          "jurisdiction": "DE",
          "domains": [
            "counterparty.example"
          ],
          "reachable": true,
          "aliases": [
            {
              "name": "Example Counterparty",
              "kind": "trading_name"
            }
          ],
          "networks": [
            {
              "network": "GTR",
              "code": "EXAMPLE01",
              "listed_name": "Example Counterparty VASP",
              "country": "DE",
              "verified_at": "2026-10-12T09:30:00Z",
              "last_seen_at": "2026-10-12T09:30:00Z",
              "source": "staff"
            }
          ],
          "routes": [
            {
              "rail": "GTR",
              "status": "unavailable",
              "reason": "no_membership",
              "via": ""
            },
            {
              "rail": "EMAIL",
              "status": "available",
              "reason": "",
              "via": "contact"
            }
          ],
          "umbrella": null,
          "entities": [],
          "contacts": [
            {
              "id": "6c1f9b8e-2d4a-4f7e-8b3c-5a9d0e1f2a3b",
              "email": "travelrule@counterparty.example",
              "name": "Travel Rule desk",
              "source": "staff",
              "scope": "platform",
              "verified_at": null
            }
          ],
          "dd_status": "NOT_STARTED",
          "dd_score": 62,
          "dd_score_breakdown": {
            "jurisdiction": {
              "points": 25.0,
              "max": 25,
              "reason": "jurisdiction_not_high_risk",
              "detail": "DEU is not on the high-risk jurisdiction list"
            },
            "verification": {
              "points": 3.8,
              "max": 15,
              "reason": "dd_status_not_started",
              "detail": "due diligence status NOT_STARTED"
            },
            "protocol": {
              "points": 6.0,
              "max": 15,
              "reason": "email_only",
              "detail": "reachable over the email fallback only"
            },
            "lei": {
              "points": 10.0,
              "max": 10,
              "reason": "lei_valid",
              "detail": "valid LEI on record"
            },
            "history": {
              "points": 5.0,
              "max": 10,
              "reason": "no_history",
              "detail": "no exchange history"
            },
            "essentials": {
              "points": 7.5,
              "max": 15,
              "reason": "no_essential_checks",
              "detail": "no decided essential check yet"
            },
            "responsiveness": {
              "points": 5.0,
              "max": 10,
              "reason": "responsiveness_unknown",
              "detail": "0 decided recent requests, too few to judge"
            }
          },
          "dd_assessed_at": "2026-10-12T09:30:00Z",
          "dd_score_semantic": "higher_is_safer",
          "risk_level": "MEDIUM",
          "responsiveness": {
            "status": "UNKNOWN",
            "answered": 0,
            "total": 0,
            "computed_at": "2026-10-12T09:30:00Z"
          },
          "essential_checks": {},
          "reachable_rails": [
            "GTR",
            "EMAIL"
          ],
          "is_didit_customer": false,
          "decision": {
            "decision": "APPROVED",
            "reason": "Licensed in DE, questionnaire reviewed",
            "decided_by": "",
            "updated_at": "2026-10-14T10:05:00Z",
            "inherited_from": null
          },
          "entity_screening": {
            "id": "7a1d2c3b-4e5f-4a6b-8c7d-9e0f1a2b3c4d",
            "status": "Approved",
            "total_hits": 0,
            "score": null,
            "screened_at": "2026-10-14T09:58:00Z",
            "fresh": true,
            "flagged": false
          },
          "questionnaires": [
            {
              "id": "8b7a6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
              "status": "ANSWERED",
              "form_version": "1",
              "sent_to": "travelrule@counterparty.example",
              "sent_at": "2026-09-02T08:00:00Z",
              "expires_at": "2026-10-02T08:00:00Z",
              "answered_at": "2026-09-04T15:20:00Z",
              "valid_until": "2027-09-04T15:20:00Z",
              "current": true,
              "answers": {
                "legal_name": "Example Counterparty VASP, incorporated in the example jurisdiction.",
                "licensing": "Crypto-asset service provider authorised under MiCA by its national regulator, licence active.",
                "jurisdictions": "EU and EEA. We do not serve the United States.",
                "aml_program": "Written AML/CFT policy, annual independent review, last completed in March 2026.",
                "compliance_officer": "Head of Compliance, reachable at compliance@counterparty.example.",
                "sanctions_screening": "Customers at onboarding and daily; counterparties on every transfer.",
                "transaction_monitoring": "Rule-based monitoring with analyst review; suspicious activity reports filed with the FIU.",
                "travel_rule": "TRP and email; we answer requests within one business day.",
                "custody": "Segregated customer wallets held with a qualified custodian, insured.",
                "ownership": "No shareholder holds 25 percent or more; parent company Example Holding Group.",
                "record_keeping": "Five-year record-keeping for Travel Rule and transaction data, as our regulator requires.",
                "data_protection": "Encrypted at rest and in transit, stored in the EU."
              }
            }
          ]
        }
      },
      "TravelRuleCounterpartyDecision": {
        "type": "object",
        "description": "किसी प्रतिपक्ष VASP पर आपकी एप्लिकेशन का निर्णय। आपकी एप्लिकेशन के लिए निजी: यह साझा डायरेक्टरी प्रविष्टि को कभी नहीं बदलता है और दूसरा ग्राहक इसे कभी नहीं देखता है। यह केवल आपके लेन-देन नियमों (counterparty_dd_status नियम फ़ील्ड और travel-rule-counterparty-blocked तथा travel-rule-counterparty-restricted प्रीसेट) के माध्यम से कार्य करता है; यह ट्रांसफ़र को रूट करने के तरीके को कभी नहीं बदलता है।",
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "APPROVED",
              "RESTRICTED",
              "BLOCKED"
            ],
            "description": "APPROVED: आपकी टीम ने प्रतिपक्ष को मंज़ूरी दे दी है। RESTRICTED: समीक्षा के बाद इसमें ट्रांसफ़र आगे बढ़ सकते हैं। BLOCKED: आपकी टीम ने इसे अस्वीकार कर दिया है।"
          },
          "reason": {
            "type": "string",
            "maxLength": 255,
            "description": "आपके द्वारा दिया गया मुक्त-पाठ कारण, कोई न होने पर खाली।"
          },
          "decided_by": {
            "type": "string",
            "description": "कंसोल उपयोगकर्ता जिसने निर्णय लिया या अंतिम बार बदला। जब इसे किसी API कुंजी द्वारा लिया गया हो, तब यह रिक्त होता है।"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "inherited_from": {
            "type": "object",
            "nullable": true,
            "description": "वह ब्रांड जिसके निर्णय का यह इकाई पालन करती है क्योंकि आपने इकाई पर स्वयं कोई निर्णय नहीं लिया है। जब निर्णय प्रतिपक्ष का अपना होता है तो Null होता है।",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "name": {
                "type": "string"
              }
            }
          }
        }
      },
      "TravelRuleCounterpartyDecisionResponse": {
        "type": "object",
        "properties": {
          "decision": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleCounterpartyDecision"
              }
            ],
            "nullable": true,
            "description": "आपके एप्लिकेशन के लिए प्रतिपक्ष पर लागू होने वाला निर्णय: इसका अपना, अन्यथा (किसी ब्रांड की इकाई के लिए) ब्रांड का। कुछ न होने पर null।"
          }
        }
      },
      "TravelRuleCounterpartyDecisionRequest": {
        "type": "object",
        "required": [
          "decision"
        ],
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "APPROVED",
              "RESTRICTED",
              "BLOCKED"
            ]
          },
          "reason": {
            "type": "string",
            "maxLength": 255,
            "description": "वैकल्पिक। पिछले कारण को बदल देता है; इसे हटाने के लिए इसे छोड़ दें।"
          }
        }
      },
      "TravelRuleCounterpartyScreening": {
        "type": "object",
        "description": "प्रतिपक्ष इकाई की प्रतिबंध और प्रतिकूल मीडिया की एक स्क्रीनिंग, जो आपके एप्लिकेशन के लिए चलाई गई और बिल की गई है। आपके एप्लिकेशन के लिए निजी: दूसरा ग्राहक इसे कभी नहीं देख सकता।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "In Review",
              "Declined"
            ],
            "description": "स्वीकृत: किसी भी संभावित मिलान पर ध्यान देने की आवश्यकता नहीं है। समीक्षाधीन या अस्वीकृत: संभावित प्रतिबंध या प्रतिकूल मीडिया मिलान।"
          },
          "total_hits": {
            "type": "integer",
            "description": "स्क्रीनिंग ने कितने संभावित मिलान लौटाए।"
          },
          "score": {
            "type": "number",
            "nullable": true,
            "description": "संभावित मिलानों में उच्चतम जोखिम स्कोर। कुछ भी मेल न खाने पर Null।"
          },
          "screened_at": {
            "type": "string",
            "format": "date-time"
          },
          "fresh": {
            "type": "boolean",
            "description": "क्या स्क्रीनिंग fresh_days (30 दिन) से कम पुरानी है। एक नई स्क्रीनिंग का पुनः उपयोग किया जाता है बजाय इसके कि फिर से बिल किया जाए।"
          },
          "flagged": {
            "type": "boolean",
            "description": "true जब तक स्क्रीनिंग ताज़ा है और इसकी status In Review या Declined है। जब तक आपकी नवीनतम स्क्रीनिंग फ़्लैग की गई है और प्रतिपक्ष स्क्रीनिंग चालू रहती है, तब तक आपके नियमों में counterparty_risk_level HIGH रहता है।"
          }
        }
      },
      "TravelRuleCounterpartyScreeningStatus": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "आपकी counterparty_screening_enabled Travel Rule सेटिंग। डिफ़ॉल्ट रूप से बंद; इसके बंद रहने के दौरान किसी भी चीज़ की स्क्रीनिंग या बिलिंग नहीं की जाती है।"
          },
          "price": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग, USD में: एक स्क्रीनिंग पर आपके संगठन की कितनी लागत आती है, कंपनी AML स्क्रीनिंग की कीमत।"
          },
          "fresh_days": {
            "type": "integer",
            "description": "स्क्रीनिंग कितने दिनों तक ताज़ा रहती है और पुनः उपयोग की जाती है।"
          },
          "screening": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleCounterpartyScreening"
              }
            ],
            "nullable": true,
            "description": "प्रतिपक्ष की आपकी नवीनतम स्क्रीनिंग। जब आपने कभी इसकी स्क्रीनिंग नहीं की हो तो Null।"
          }
        }
      },
      "TravelRuleCounterpartyScreeningRequest": {
        "type": "object",
        "properties": {
          "refresh": {
            "type": "boolean",
            "default": false,
            "description": "true होने पर ताज़ा स्क्रीनिंग मौजूद होने पर भी फिर से स्क्रीनिंग होती है (और फिर से बिल किया जाता है)।"
          }
        }
      },
      "TravelRuleCounterpartyScreeningResult": {
        "type": "object",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "screened",
              "reused"
            ],
            "description": "screened: एक नई स्क्रीनिंग चलाई गई और बिल की गई (201)। reused: एक ताज़ा स्क्रीनिंग लौटाई गई और कोई शुल्क नहीं लिया गया (200)।"
          },
          "screening": {
            "$ref": "#/components/schemas/TravelRuleCounterpartyScreening"
          }
        }
      },
      "TravelRuleCounterpartyQuestionnaire": {
        "type": "object",
        "description": "एक ड्यू-डिलिजेंस प्रश्नावली जो आपके एप्लिकेशन ने प्रतिपक्ष को भेजी थी: Didit की मानक प्रश्नावली, एकल-उपयोग उत्तर लिंक के साथ रिकॉर्ड में दर्ज अनुपालन ईमेल पते पर भेजी गई। आपके एप्लिकेशन के लिए निजी।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "SENT",
              "ANSWERED",
              "EXPIRED"
            ],
            "description": "SENT: उत्तरों की प्रतीक्षा की जा रही है। ANSWERED: प्रतिपक्ष ने प्रत्येक प्रश्न का उत्तर दिया। EXPIRED: उत्तर लिंक बिना उत्तर दिए बंद हो गया (इसकी समय-सीमा समाप्त हो गई, या एक नई प्रश्नावली ने इसे बदल दिया), या उत्तरों ने valid_until पार कर लिया।"
          },
          "form_version": {
            "type": "string",
            "description": "Didit की मानक प्रश्नावली का संस्करण जिससे उत्तर संबंधित हैं। वर्तमान में 1।"
          },
          "sent_to": {
            "type": "string",
            "format": "email"
          },
          "sent_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "उत्तर देने की अंतिम तिथि, भेजने के 30 दिन बाद। इसके बाद लिंक काम करना बंद कर देता है।"
          },
          "answered_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "valid_until": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "उत्तर कितने समय तक अद्यतित रहते हैं: उत्तर देने के 365 दिन बाद तक। उत्तर दिए जाने तक Null।"
          },
          "current": {
            "type": "boolean",
            "description": "true जब तक प्रश्नावली ANSWERED है और valid_until समाप्त नहीं हुआ है।"
          },
          "answers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "प्रश्न id द्वारा कुंजीबद्ध उत्तर: legal_name, licensing, jurisdictions, aml_program, compliance_officer, sanctions_screening, transaction_monitoring, travel_rule, custody, ownership, record_keeping, data_protection। प्रत्येक उत्तर 2,000 वर्णों तक का है। उत्तर दिए जाने तक खाली।"
          }
        }
      },
      "TravelRuleCounterpartyQuestionnaireRequest": {
        "type": "object",
        "properties": {
          "sent_to": {
            "type": "string",
            "format": "email",
            "description": "वैकल्पिक। प्रतिपक्ष के लिए रिकॉर्ड में मौजूद अनुपालन पता: डायरेक्टरी प्रविष्टि के लिए उसका अनुपालन पता या आपके एप्लिकेशन द्वारा देखा जाने वाला कोई संपर्क, Didit नेटवर्क सदस्य के लिए उसका पुष्टिकृत अनुपालन ईमेल। डिफ़ॉल्ट: वह पता जिस पर प्रतिपक्ष को Travel Rule ईमेल भेजा जाता है (पहले आपका अपना संपर्क, फिर प्लेटफ़ॉर्म संपर्क, फिर प्रविष्टि का अनुपालन पता)।"
          }
        }
      },
      "TravelRuleCounterpartyQuestionnaireList": {
        "type": "object",
        "properties": {
          "questionnaires": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TravelRuleCounterpartyQuestionnaire"
            },
            "description": "नवीनतम पहले।"
          }
        }
      },
      "TravelRulePickupInfo": {
        "type": "object",
        "description": "ईमेल किए गए पिकअप लिंक के पीछे का लंबित एक्सचेंज, जैसा कि प्रतिपक्ष का रिस्पॉन्स पेज दिखाता है।",
        "properties": {
          "reference": {
            "type": "string",
            "format": "uuid",
            "description": "ट्रांसफर का uuid, जैसा कि भेजने वाले VASP का कंसोल दिखाता है।"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time"
          },
          "originator_vasp_name": {
            "type": "string"
          },
          "originator_vasp_lei": {
            "type": "string"
          },
          "recipient_vasp_name": {
            "type": "string",
            "description": "प्रतिपक्ष VASP जिसे अनुरोध संबोधित किया गया है।"
          },
          "language": {
            "type": "string",
            "description": "प्रतिपक्ष के क्षेत्राधिकार के अनुसार अनुरोध ईमेल और रिस्पॉन्स पेज की भाषा।"
          },
          "amount": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "fiat_amount": {
            "type": "string",
            "description": "प्रेषक द्वारा दिया गया परिवर्तित मान, या रिक्त।"
          },
          "fiat_currency": {
            "type": "string"
          },
          "chain": {
            "type": "string"
          },
          "beneficiary_wallet": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "ivms_version": {
            "type": "string"
          },
          "deadline_at": {
            "type": "string",
            "format": "date-time",
            "description": "लिंक रिस्पॉन्स देना कब बंद कर देता है।"
          },
          "reminders_sent": {
            "type": "integer"
          },
          "contact": {
            "type": "string",
            "description": "लिंक का `?contact=` मान, जो वापस भेजा जाता है; लिंक में कोई न होने पर खाली रहता है।"
          },
          "decline_reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "data_mismatch",
                "not_our_customer",
                "wallet_not_hosted",
                "sanctions",
                "risk_appetite",
                "jurisdiction",
                "insufficient_data",
                "other"
              ]
            },
            "description": "वे मान जिन्हें `decline_reason` स्वीकार करता है।"
          },
          "join_invitation": {
            "type": "object",
            "description": "क्या प्रतिपक्ष के पास निःशुल्क Didit में शामिल होने का सक्रिय आमंत्रण है। आमंत्रण लिंक केवल आमंत्रित पते पर भेजे गए ईमेल में जाता है, इसलिए यहाँ `url` खाली है।",
            "properties": {
              "eligible": {
                "type": "boolean"
              },
              "url": {
                "type": "string"
              }
            }
          },
          "originator_data": {
            "type": "object",
            "description": "प्रेषक फ़ील्ड जिन्हें भेजने वाला VASP साझा करता है (`data_sharing_fields`)। नाम और वॉलेट हमेशा शामिल होते हैं।"
          },
          "beneficiary_data": {
            "type": "object"
          },
          "ivms_request": {
            "type": "object",
            "description": "IVMS 101 ऑब्जेक्ट के रूप में वही अनुरोध। जब `data_masked` सत्य होता है तो छोड़ दिया जाता है।"
          },
          "data_masked": {
            "type": "boolean",
            "description": "इस endpoint पर हमेशा false: ईमेल अनुरोध आउटबाउंड होता है, और प्रेषक का अपना उपयोगकर्ता कभी मास्क नहीं किया जाता है।"
          }
        }
      },
      "TravelRulePickupRespondRequest": {
        "type": "object",
        "required": [
          "decision"
        ],
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "accept",
              "decline"
            ]
          },
          "beneficiary_name": {
            "type": "string",
            "description": "लाभार्थी का नाम जैसा कि आपके रिकॉर्ड में है, जिसे भेजने वाले VASP के नाम नियम के अनुसार संसाधित किया गया है। जब यह लाभार्थी का नाम देता है तो `ivms_response` को प्राथमिकता मिलती है।",
            "maxLength": 255
          },
          "decline_reason": {
            "type": "string",
            "enum": [
              "",
              "data_mismatch",
              "not_our_customer",
              "wallet_not_hosted",
              "sanctions",
              "risk_appetite",
              "jurisdiction",
              "insufficient_data",
              "other"
            ],
            "description": "आप क्यों अस्वीकार करते हैं। भेजने वाले VASP की ट्रांसफ़र टाइमलाइन पर रिकॉर्ड किया जाता है। जब आप कोई कारण नहीं देते हैं तो रिक्त (डिफ़ॉल्ट)।"
          },
          "decline_detail": {
            "type": "string",
            "maxLength": 512,
            "description": "फ़्री टेक्स्ट; आवश्यक जब `decision` `decline` हो और `decline_reason` `other` हो।"
          },
          "ivms_response": {
            "type": "object",
            "description": "आपका पूर्ण IVMS 101 रिस्पॉन्स। इसका लाभार्थी नाम `beneficiary_name` पर प्राथमिकता लेता है।"
          },
          "contact": {
            "type": "string",
            "format": "uuid",
            "description": "वह संपर्क जिसे लिंक भेजा गया था, लिंक के `?contact=` मान से। जब बॉडी में इसे छोड़ दिया जाता है, तो `contact` क्वेरी पैरामीटर का उपयोग किया जाता है।"
          }
        }
      },
      "TravelRuleInboundRequest": {
        "type": "object",
        "required": [
          "chain",
          "txid",
          "wallet_address",
          "amount",
          "currency"
        ],
        "properties": {
          "chain": {
            "type": "string",
            "description": "वह चेन जिस पर डिपॉज़िट सेटल हुआ, उदाहरण के लिए `ETH`। इसे लोअरकेस में संग्रहीत किया जाता है और आपकी वॉलेट पता पुस्तिका की प्रविष्टियों के साथ केस-इनसेंसिटिव रूप से तुलना की जाती है, इसलिए वहाँ उसी चेन token का उपयोग करें।",
            "maxLength": 32
          },
          "txid": {
            "type": "string",
            "description": "ऑन-चेन लेन-देन हैश। wallet_address के साथ डिडुप किया गया।",
            "maxLength": 128
          },
          "wallet_address": {
            "type": "string",
            "description": "गंतव्य वॉलेट जिस पर आपको डिपॉज़िट प्राप्त हुआ। एक XRP X-address को उसके क्लासिक पते और टैग में विभाजित किया जाता है।",
            "maxLength": 128
          },
          "amount": {
            "type": "string",
            "description": "दशमलव स्ट्रिंग के रूप में डिपॉज़िट राशि, शून्य या उससे अधिक, अधिकतम 18 दशमलव स्थानों तक।"
          },
          "currency": {
            "type": "string",
            "description": "डिपॉज़िट एसेट, उदाहरण के लिए \"USDC\"।",
            "maxLength": 16
          },
          "originator_data": {
            "type": "object",
            "description": "भेजने वाले VASP से प्रेषक का विवरण, यदि ज्ञात हो, एक फ़्लैट ऑब्जेक्ट के रूप में जैसे `{\"name\": \"...\"}`। Didit इससे name (या full_name), first_name, last_name और vendor_data पढ़ता है।",
            "additionalProperties": true
          },
          "beneficiary_data": {
            "type": "object",
            "description": "लाभार्थी विवरण (आपका ग्राहक), एक फ़्लैट ऑब्जेक्ट के रूप में जैसे कि `{\"name\": \"...\"}`। Didit मिलान की गई एड्रेस बुक प्रविष्टि के holder_name से नाम का मिलान करता है, और अनुरोध से wallet_address और chain सेट करता है।",
            "additionalProperties": true
          },
          "originating_vasp": {
            "type": "object",
            "description": "भेजने वाले VASP का वैकल्पिक विवरण। यह केवल इसी ट्रांसफ़र पर रहता है (`metadata.originating_vasp`, और GET /v3/travel-rule/transfers/ में ट्रांसफ़र का प्रेषक VASP); यह कभी भी किसी साझा VASP डायरेक्टरी प्रविष्टि को बनाता, संपादित या लिंक नहीं करता है।",
            "properties": {
              "name": {
                "type": "string",
                "maxLength": 255
              },
              "lei": {
                "type": "string",
                "maxLength": 20,
                "description": "वैकल्पिक। एक मान्य 20-वर्ण वाला ISO 17442 LEI, या रिक्त।"
              },
              "travel_address": {
                "type": "string",
                "description": "प्रेषक का Travel Address, इस स्थानांतरण पर दर्ज किया गया।",
                "maxLength": 512
              }
            }
          },
          "memo": {
            "type": "string",
            "maxLength": 256,
            "description": "वैकल्पिक। मेमो नेटवर्क पर डिपॉज़िट का डेस्टिनेशन टैग या मेमो: साझा डिपॉज़िट पते पर यह आपके ग्राहकों को अलग पहचानता है, और उस मेमो के लिए एड्रेस-बुक प्रविष्टि का मिलान किया जाता है। XRP: एक डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (JSON संख्या स्वीकृत है)। XLM: 28 बाइट्स तक का एक टेक्स्ट मेमो, हेक्स में 64-बिट id या 32-बाइट हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट कोई मेमो नहीं लेते हैं: वहां मेमो होने पर `400` मिलता है। उपनाम: `destinationTag` या `destination_tag`।"
          },
          "utxo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleUtxo"
              }
            ],
            "description": "वैकल्पिक, केवल UTXO चेन्स। डिपॉज़िट लेन-देन के इनपुट और आउटपुट: प्रेषक का वॉलेट घोषित `originator_data.wallet_address` होता है, अन्यथा सबसे बड़ा इनपुट होता है।"
          }
        }
      },
      "TravelRuleInboundResponse": {
        "type": "object",
        "properties": {
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "description": "इनबाउंड डिपॉज़िट के लिए Didit लेन-देन UUID।"
          },
          "txn_id": {
            "type": "string",
            "description": "इनबाउंड लेन-देन का txn_id: Didit द्वारा उत्पन्न जब Didit ने लेन-देन बनाया, या आपका अपना जब किसी लावारिस डिपॉज़िट का पुनः उपयोग किया गया।"
          },
          "created": {
            "type": "boolean",
            "description": "true जब इस कॉल ने ट्रांसफर पंजीकृत किया (HTTP 201); false जब उसी txid और wallet_address के लिए ट्रांसफर पहले से मौजूद था (HTTP 200)।"
          },
          "travel_rule": {
            "$ref": "#/components/schemas/TravelRuleTransferDetail"
          }
        }
      },
      "TravelRuleTestVaspInboundRequest": {
        "type": "object",
        "required": [
          "beneficiary_wallet_address"
        ],
        "properties": {
          "beneficiary_wallet_address": {
            "type": "string",
            "description": "गंतव्य वॉलेट पता। Didit Test VASP इसे भेजता है, जिसका मिलान एसेट की चेन पर आपकी वॉलेट पता पुस्तिका से किया जाता है। बिना किसी मैचिंग एंट्री वाले वॉलेट को स्वीकार कर लिया जाता है और इनबाउंड लेन-देन को ON_HOLD के रूप में बुक किया जाता है।"
          },
          "scenario": {
            "type": "string",
            "enum": [
              "accept",
              "name_mismatch"
            ],
            "default": "accept",
            "description": "Didit Test VASP लाभार्थी को क्या घोषित करता है। `accept` धारक का अपना नाम घोषित करता है; `name_mismatch` ऐसा नाम घोषित करता है जिससे कोई भी धारक सहमत नहीं होता। निर्णय स्वयं हमेशा आपका होता है।"
          },
          "chain": {
            "type": "string",
            "default": "ETH",
            "description": "एसेट की चेन।"
          },
          "amount": {
            "type": "string",
            "default": "1",
            "description": "दशमलव स्ट्रिंग के रूप में राशि।"
          },
          "currency": {
            "type": "string",
            "default": "ETH",
            "description": "एसेट कोड।"
          },
          "reference": {
            "type": "string",
            "description": "वैकल्पिक आइडेम्पोटेंसी कुंजी। समान मान के साथ दोहराने पर वह ट्रांसफ़र वापस मिलता है जिसे पहली कॉल ने बुक किया था।"
          }
        }
      },
      "TravelRuleTestVaspInboundResponse": {
        "type": "object",
        "properties": {
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "description": "इनबाउंड ट्रांसफ़र का Didit लेन-देन UUID।"
          },
          "txn_id": {
            "type": "string",
            "description": "Didit द्वारा जनरेट किया गया txn_id।"
          },
          "scenario": {
            "type": "string",
            "description": "वह परिदृश्य जो चला।"
          },
          "travel_rule_status": {
            "type": "string",
            "description": "वह स्थिति जिस पर आपके एप्लिकेशन का अपना निर्णय पहुंचा।"
          },
          "detail": {
            "type": "string",
            "description": "ट्रांसफ़र उस स्थिति पर क्यों पहुँचा।"
          },
          "test_vasp": {
            "type": "boolean",
            "description": "हमेशा true: प्रेषक Didit Test VASP था।"
          },
          "travel_rule": {
            "$ref": "#/components/schemas/TravelRuleTransferDetail"
          }
        }
      },
      "TravelRuleWidgetSessionCreate": {
        "type": "object",
        "properties": {
          "wallet_address": {
            "type": "string",
            "description": "सत्यापित करने के लिए वॉलेट पता। वैकल्पिक; खाली होने पर, प्रमाण शुरू होने पर पता प्रदान किया जाना चाहिए।",
            "maxLength": 128
          },
          "chain": {
            "type": "string",
            "description": "पते के लिए चेन token, उदाहरण के लिए `ETH`, `BTC` या `SOL`। उसी token का उपयोग करें जो आपकी वॉलेट एड्रेस बुक में है। संदेश हस्ताक्षर और Satoshi परीक्षण केवल समर्थित चेन के लिए पेश किए जाते हैं। एड्रेस बुक प्रविष्टि जिसे प्रमाण सत्यापित करता है, उसे उसके कैनोनिकल पहचानकर्ता (ETH, BTC, SOL, TRX) के तहत संग्रहीत करता है।",
            "maxLength": 32
          },
          "holder_name": {
            "type": "string",
            "description": "वॉलेट धारक का नाम, जिसका उपयोग लाभार्थी नाम मिलान के लिए किया जाता है।",
            "maxLength": 255
          },
          "vendor_data": {
            "type": "string",
            "description": "धारक के लिए आपका आंतरिक पहचानकर्ता, जो बनाई गई एड्रेस-बुक प्रविष्टि पर ले जाया जाता है।",
            "maxLength": 255
          },
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "description": "वैकल्पिक। प्रमाण सत्यापित होने पर आगे बढ़ने वाले Travel Rule ट्रांसफ़र का Didit लेन-देन UUID।",
            "nullable": true
          },
          "satoshi_deposit_address": {
            "type": "string",
            "description": "वैकल्पिक। आपके नियंत्रण वाला एक डिपॉज़िट पता; इसे प्रदान करने से SATOSHI_TEST प्रमाण विधि सक्षम हो जाती है।",
            "maxLength": 128
          },
          "callback_url": {
            "type": "string",
            "description": "वैकल्पिक। पूर्ण http(s) URL जहां विजेट पूरा होने के बाद ग्राहक को वापस भेजता है।",
            "maxLength": 512
          },
          "expires_in_minutes": {
            "type": "integer",
            "description": "वैकल्पिक। मिंट किए गए लिंक का लाइफ़टाइम, मिनटों में। SATOSHI_TEST ऑफ़र किए जाने पर सातोशी टेस्ट विंडो को कवर करने के लिए स्वचालित रूप से विस्तारित किया जाता है।",
            "default": 60,
            "minimum": 5,
            "maximum": 10080
          }
        }
      },
      "TravelRuleWidgetSessionResponse": {
        "type": "object",
        "properties": {
          "widget_session_id": {
            "type": "string",
            "format": "uuid"
          },
          "token": {
            "type": "string",
            "description": "विजेट URL में एम्बेडेड अपारदर्शी सत्र token।"
          },
          "url": {
            "type": "string",
            "description": "होस्टेड वॉलेट-स्वामित्व विजेट URL। इसे सिस्टम ब्राउज़र में शब्दशः खोलें (मोबाइल SDK वेबव्यू के अंदर कभी नहीं)।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleWidgetContext": {
        "type": "object",
        "properties": {
          "vasp_name": {
            "type": "string",
            "description": "आपकी VASP प्रोफ़ाइल से कानूनी नाम, जो विजेट में ग्राहक को दिखाया जाता है। जब कोई प्रोफ़ाइल मौजूद नहीं होती है तो खाली रहता है।"
          },
          "wallet_address": {
            "type": "string"
          },
          "chain": {
            "type": "string",
            "description": "वह चेन जिसके साथ सत्र मिंट किया गया था, जैसा कि आपने भेजा था।"
          },
          "chain_family": {
            "type": "string",
            "nullable": true,
            "enum": [
              "EVM",
              "BTC",
              "SOL",
              "TRON",
              null
            ],
            "description": "चेन के लिए कुंजी फ़ैमिली: EVM (Ethereum, BNB Chain, Polygon, Arbitrum, Base, Optimism, Avalanche, Linea और अन्य EVM चेन), BTC, SOL या TRON। एक EVM कुंजी हर EVM चेन पर समान पते को नियंत्रित करती है। जब चेन पर किसी हस्ताक्षर को सत्यापित नहीं किया जा सकता, तो Null होता है।"
          },
          "holder_name": {
            "type": "string"
          },
          "allowed_methods": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "MESSAGE_SIGNING",
                "SCREENSHOT",
                "SATOSHI_TEST",
                "SELF_DECLARATION"
              ]
            },
            "description": "इस सत्र के लिए उपलब्ध प्रमाण विधियाँ। MESSAGE_SIGNING के लिए chain_family वाली चेन की आवश्यकता होती है, SATOSHI_TEST के लिए सत्र पर satoshi_deposit_address और ऐसी चेन की आवश्यकता होती है जिसके डिपॉज़िट Didit वापस पढ़ सके, SCREENSHOT के लिए allow_screenshot_proof सेटिंग आवश्यक है, और SELF_DECLARATION के लिए allow_self_declaration सेटिंग आवश्यक है।"
          },
          "transfer_status": {
            "type": "string",
            "nullable": true,
            "description": "लिंक किए गए Travel Rule ट्रांसफर की स्थिति। Null जब सत्र transaction_id के बिना बनाया गया था।"
          },
          "callback_url": {
            "type": "string",
            "description": "विजेट पूरा होने के बाद ग्राहक को कहाँ वापस भेजता है। सेट न होने पर खाली।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "प्रूफ़ सत्यापित होने के बाद गैर-शून्य (non-null)।"
          },
          "proofs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TravelRuleWidgetProofSummary"
            }
          },
          "max_attempts": {
            "type": "integer",
            "description": "इस सत्र द्वारा अनुमत अस्वीकृत वॉलेट प्रमाण।"
          },
          "attempts_used": {
            "type": "integer",
            "description": "अब तक अस्वीकृत प्रमाण।"
          },
          "attempts_remaining": {
            "type": "integer",
            "description": "0 होने पर, दूसरा प्रमाण शुरू करने पर 409 रिस्पॉन्स मिलता है और आप एक नया विजेट सत्र बनाते हैं।"
          },
          "customization": {
            "type": "object",
            "nullable": true,
            "description": "व्हाइट लेबल सक्षम होने पर एप्लिकेशन का व्हाइट लेबल कस्टमाइज़ेशन (रंग, लोगो, फ़ॉन्ट फ़ैमिली) - विजेट सत्यापन वर्कफ़्लो के समान ब्रांडिंग के साथ रेंडर होता है। अन्यथा null।"
          }
        }
      },
      "TravelRuleWidgetProofSummary": {
        "type": "object",
        "properties": {
          "proof_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string",
            "enum": [
              "MESSAGE_SIGNING",
              "SATOSHI_TEST",
              "SCREENSHOT",
              "SELF_DECLARATION"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ],
            "description": "PENDING: अंतिम उपयोगकर्ता ने इस विधि को चुना है और प्रमाण पर अभी निर्णय नहीं हुआ है। एक विफल हस्ताक्षर या परीक्षण जमा जो अभी पढ़ने योग्य या पुष्ट नहीं है, वह failure_reason के साथ प्रमाण को PENDING रखता है, ताकि अंतिम उपयोगकर्ता फिर से प्रयास कर सके; सबमिट किए गए SATOSHI_TEST जमा की उसकी विंडो बंद होने तक स्वचालित रूप से पुनः जांच की जाती है, और सबमिट किया गया SCREENSHOT आपकी समीक्षा की प्रतीक्षा करता है। VERIFIED: स्वामित्व सिद्ध हो गया है। REJECTED: परीक्षण जमा वास्तव में गलत है (अन्य प्रेषक, जमा पते पर अपेक्षित राशि नहीं, चुनौती से पुराना, या ऐसा लेन-देन जिसने पहले ही किसी अन्य वॉलेट को सिद्ध कर दिया है) या आपके समीक्षक ने स्क्रीनशॉट अस्वीकार कर दिया है; failure_reason बताता है कि कौन सा कारण है। एक अस्वीकृत प्रमाण अंतिम होता है और सत्र के प्रयासों में से एक का उपयोग करता है। EXPIRED: प्रमाण पर अब निर्णय नहीं लिया जा सकता (इसकी विंडो बंद हो गई, अंतिम उपयोगकर्ता ने विधि बदल दी, विजेट सत्र समाप्त हो गया, या वॉलेट धारक बदल गया); failure_reason बताता है कि कौन सा कारण है।"
          },
          "wallet_address": {
            "type": "string"
          },
          "chain": {
            "type": "string",
            "description": "उस एड्रेस बुक प्रविष्टि का कैनोनिकल चेन पहचानकर्ता जिसके लिए यह प्रमाण है, उदा. ETH, BTC, SOL, TRX।"
          },
          "deposit_address": {
            "type": "string",
            "nullable": true,
            "description": "डिपॉज़िट पता जिस पर ग्राहक को Satoshi परीक्षण राशि भेजनी होगी। केवल SATOSHI_TEST प्रमाण पर मौजूद होता है।"
          },
          "expected_amount": {
            "type": "string",
            "nullable": true,
            "description": "डिपॉज़िट की मूल मुद्रा में सटीक ऑन-चेन राशि, जिससे सातोशी परीक्षण डिपॉज़िट का मिलान होना चाहिए। केवल SATOSHI_TEST प्रमाण में मौजूद।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "इस प्रमाण की अपनी Satoshi टेस्ट विंडो की समय-सीमा। केवल SATOSHI_TEST प्रमाण पर मौजूद होता है; जब SATOSHI_TEST की पेशकश की जाती है, तो विजेट सत्र का अपना expires_at इसे कवर करने के लिए बढ़ा दिया जाता है।"
          },
          "challenge": {
            "type": "string",
            "nullable": true,
            "description": "Didit द्वारा जारी किया गया संदेश जिस पर ग्राहक अपने वॉलेट से हस्ताक्षर करता है। केवल MESSAGE_SIGNING प्रमाण पर मौजूद होता है।"
          },
          "rejection_reason": {
            "type": "string",
            "description": "अंतिम उपयोगकर्ता के लिए अंग्रेज़ी वाक्य के रूप में, प्रमाण क्यों अस्वीकार किया गया। केवल तब मौजूद होता है जब `status`, REJECTED हो; जब आपके समीक्षक ने स्क्रीनशॉट अस्वीकार किया हो तो रिक्त (आपका नोट आपके पास ही रहता है)।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "attempts": {
            "type": "integer",
            "description": "इस प्रमाण के लिए साक्ष्य कितनी बार सबमिट किए गए (हस्ताक्षर, लेन-देन आईडी, अपलोड)।"
          },
          "failure_reason": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleWalletProofFailureReason"
              }
            ],
            "description": "पिछला प्रयास क्यों विफल रहा, या प्रमाण क्यों बंद हुआ। कुछ भी विफल न होने पर रिक्त।"
          }
        }
      },
      "CaseSubject": {
        "type": "object",
        "nullable": true,
        "description": "एकल उपयोगकर्ता या व्यवसाय जिससे केस जुड़ा हुआ है।",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "user",
              "business"
            ]
          },
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "external_id": {
            "type": "string",
            "nullable": true,
            "description": "सब्जेक्ट का vendor_data।"
          },
          "country": {
            "type": "string",
            "nullable": true,
            "description": "विषय का तीन-अक्षरों वाला देश कोड (ISO 3166-1 alpha-3), या ज्ञात न होने पर null। किसी व्यवसाय के लिए, उसके निगमन का देश। किसी व्यक्ति के लिए, उनके सत्यापनों से पहचान दस्तावेज़ का जारीकर्ता देश; कई देशों के दस्तावेज़ों वाला व्यक्ति उनमें से एक दिखाता है, और ICAO दस्तावेज़ कोड जैसे कि `XXA` दिखाई दे सकते हैं।",
            "example": "ESP"
          },
          "portrait": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "व्यक्ति की पोर्ट्रेट छवि का अल्पकालिक हस्ताक्षरित URL। व्यवसाय के लिए हमेशा null, और बिना पोर्ट्रेट वाले व्यक्ति के लिए null। URL की समय-सीमा समाप्त हो जाती है, इसलिए URL संग्रहीत करने के बजाय केस पढ़ते समय छवि डाउनलोड करें।"
          }
        }
      },
      "CaseAssignee": {
        "type": "object",
        "nullable": true,
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "full_name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "CaseBlueprintSummary": {
        "type": "object",
        "nullable": true,
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "maxLength": 24
          }
        }
      },
      "CaseContentConfig": {
        "type": "object",
        "description": "छह टॉगल करने योग्य अनुभाग जो यह तय करते हैं कि केस पेज पर कौन से टैब और फ़ील्ड दिखाई देंगे। अज्ञात अनुभागों या कुंजियों को अस्वीकार कर दिया जाता है।",
        "properties": {
          "checklist": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "optional": {
                "type": "boolean",
                "description": "true होने पर, किसी केस को अधूरी चेकलिस्ट मदों के साथ भी हल किया जा सकता है।"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "label": {
                      "type": "string",
                      "maxLength": 255
                    },
                    "order": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "aml_control": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "financial": {
                "type": "boolean"
              },
              "identity": {
                "type": "boolean"
              }
            }
          },
          "identity": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "personal_information": {
                "type": "boolean"
              },
              "applicant_tags": {
                "type": "boolean"
              },
              "contact_information": {
                "type": "boolean"
              },
              "risk_overview": {
                "type": "boolean"
              },
              "poi_documents": {
                "type": "boolean"
              },
              "poa_documents": {
                "type": "boolean"
              }
            }
          },
          "verifications": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "summary": {
                "type": "boolean"
              }
            }
          },
          "reporting": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "fiu_reports": {
                "type": "boolean"
              }
            }
          },
          "financial": {
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "payment_methods": {
                "type": "boolean"
              },
              "transactions": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "CaseNote": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "comment": {
            "type": "string"
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "actor_name": {
            "type": "string",
            "nullable": true
          },
          "mentioned_emails": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "email"
            }
          },
          "is_internal": {
            "type": "boolean"
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "s3_key": {
                  "type": "string"
                },
                "filename": {
                  "type": "string"
                },
                "file_size": {
                  "type": "integer"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CaseEvent": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "CREATED",
              "STATUS_CHANGED",
              "ASSIGNED",
              "UNASSIGNED",
              "RESOLVED",
              "REOPENED",
              "LINK_ADDED",
              "LINK_REMOVED",
              "NOTE_ADDED",
              "NOTE_PINNED",
              "NOTE_UNPINNED",
              "PRIORITY_CHANGED",
              "DUE_DATE_CHANGED",
              "TAG_ADDED",
              "TAG_REMOVED",
              "ESCALATED",
              "TRANSFERRED",
              "CHECKLIST_COMPLETED",
              "REPORT_CREATED",
              "REPORT_FINALIZED",
              "SUBMITTED_FOR_APPROVAL",
              "APPROVAL_GRANTED",
              "APPROVAL_REJECTED",
              "ENTITY_ACTION",
              "APPROVAL_INVALIDATED",
              "CUSTOMER_REQUEST",
              "STAGE_CHANGED",
              "TEAM_CHANGED",
              "CHECKER_ASSIGNED",
              "CHECKER_UNASSIGNED"
            ]
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "actor_name": {
            "type": "string",
            "nullable": true
          },
          "previous_status": {
            "type": "string",
            "enum": [
              "OPEN",
              "AWAITING_USER",
              "RESOLVED"
            ],
            "nullable": true
          },
          "new_status": {
            "type": "string",
            "enum": [
              "OPEN",
              "AWAITING_USER",
              "RESOLVED"
            ],
            "nullable": true
          },
          "metadata": {
            "type": "object"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CaseLink": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "linked_entity_type": {
            "type": "string",
            "enum": [
              "session",
              "business_session",
              "transaction"
            ],
            "nullable": true
          },
          "linked_entity_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "linked_entity_summary": {
            "type": "object",
            "nullable": true,
            "description": "session और business_session लिंक के लिए session_id/session_number/status; लेन-देन लिंक के लिए uuid/txn_id/status।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CaseChecklistItem": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "is_completed": {
            "type": "boolean"
          },
          "completed_by": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "order": {
            "type": "integer"
          }
        }
      },
      "CaseBlueprintListItem": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "maxLength": 24
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "assignment_method": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AUTOMATIC"
            ]
          },
          "assignee_pool": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "max_active_cases": {
            "type": "integer",
            "nullable": true
          },
          "escalation_enabled": {
            "type": "boolean"
          },
          "transfer_enabled": {
            "type": "boolean"
          },
          "require_resolution_note": {
            "type": "boolean"
          },
          "is_active": {
            "type": "boolean"
          },
          "preset_key": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "integer",
            "readOnly": true
          },
          "default_deadline_hours": {
            "type": "integer",
            "nullable": true,
            "minimum": 1,
            "maximum": 8760
          }
        }
      },
      "CaseBlueprintDetail": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "maxLength": 24
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "assignment_method": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AUTOMATIC"
            ]
          },
          "assignee_pool": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "max_active_cases": {
            "type": "integer",
            "nullable": true
          },
          "escalation_enabled": {
            "type": "boolean"
          },
          "transfer_enabled": {
            "type": "boolean"
          },
          "require_resolution_note": {
            "type": "boolean"
          },
          "is_active": {
            "type": "boolean"
          },
          "preset_key": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "escalation_blueprint": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "escalation_blueprint_name": {
            "type": "string",
            "nullable": true
          },
          "four_eyes_checker_blueprint": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "four_eyes_checker_blueprint_name": {
            "type": "string",
            "nullable": true
          },
          "content_config": {
            "type": "object",
            "description": "छह टॉगल करने योग्य अनुभाग जो यह तय करते हैं कि केस पेज पर कौन से टैब और फ़ील्ड दिखाई देंगे। अज्ञात अनुभागों या कुंजियों को अस्वीकार कर दिया जाता है।",
            "properties": {
              "checklist": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "optional": {
                    "type": "boolean",
                    "description": "true होने पर, किसी केस को अधूरी चेकलिस्ट मदों के साथ भी हल किया जा सकता है।"
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "label": {
                          "type": "string",
                          "maxLength": 255
                        },
                        "order": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              },
              "aml_control": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "financial": {
                    "type": "boolean"
                  },
                  "identity": {
                    "type": "boolean"
                  }
                }
              },
              "identity": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "personal_information": {
                    "type": "boolean"
                  },
                  "applicant_tags": {
                    "type": "boolean"
                  },
                  "contact_information": {
                    "type": "boolean"
                  },
                  "risk_overview": {
                    "type": "boolean"
                  },
                  "poi_documents": {
                    "type": "boolean"
                  },
                  "poa_documents": {
                    "type": "boolean"
                  }
                }
              },
              "verifications": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "summary": {
                    "type": "boolean"
                  }
                }
              },
              "reporting": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "fiu_reports": {
                    "type": "boolean"
                  }
                }
              },
              "financial": {
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "payment_methods": {
                    "type": "boolean"
                  },
                  "transactions": {
                    "type": "boolean"
                  }
                }
              }
            }
          },
          "creation_sources": {
            "type": "array",
            "description": "वर्तमान में इस ब्लूप्रिंट में नए केस रूट करने वाले कनेक्टर्स।",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string",
                  "enum": [
                    "aml",
                    "rule",
                    "workflow"
                  ]
                },
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              }
            }
          },
          "receives_escalation_from": {
            "type": "array",
            "description": "अन्य ब्लूप्रिंट जिनका Escalation लक्ष्य इस पर इंगित करता है।",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                }
              }
            }
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "version": {
            "type": "integer",
            "readOnly": true
          },
          "default_deadline_hours": {
            "type": "integer",
            "nullable": true,
            "minimum": 1,
            "maximum": 8760
          }
        }
      },
      "CaseListItem": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "case_number": {
            "type": "string",
            "nullable": true,
            "description": "स्वतः-असाइन किया गया, उदा. CS-0001।"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "AWAITING_USER",
              "RESOLVED"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "FALSE_POSITIVE",
              "VALID_THREAT",
              "INCONCLUSIVE",
              "REQUIREMENTS_NOT_MET",
              "REQUIREMENTS_SATISFIED"
            ],
            "nullable": true
          },
          "pending_resolution": {
            "type": "object",
            "nullable": true,
            "description": "केवल तभी सेट होता है जब चेकर ब्लूप्रिंट पर 4-eyes समाधान स्टेज किया गया हो और वह approve या reject-approval की प्रतीक्षा कर रहा हो।",
            "properties": {
              "resolution": {
                "type": "string",
                "enum": [
                  "FALSE_POSITIVE",
                  "VALID_THREAT",
                  "INCONCLUSIVE",
                  "REQUIREMENTS_NOT_MET",
                  "REQUIREMENTS_SATISFIED"
                ]
              },
              "resolution_notes": {
                "type": "string",
                "nullable": true
              },
              "maker_email": {
                "type": "string",
                "format": "email",
                "nullable": true,
                "description": "रिज़ॉल्यूशन सबमिट करने वाले अधिकारी का ईमेल। API कुंजी द्वारा सबमिट किए जाने पर Null: उस रिज़ॉल्यूशन का कोई रिकॉर्डेड निर्माता नहीं होता है, इसलिए approve और reject-approval प्रत्येक कॉलर के लिए 403 लौटाते हैं।"
              },
              "maker_name": {
                "type": "string",
                "nullable": true
              },
              "maker_user_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "रिज़ॉल्यूशन सबमिट करने वाले अधिकारी का सदस्य उपयोगकर्ता uuid। API कुंजी द्वारा सबमिट किए जाने पर null। उस सदस्य को `checker` के रूप में नामित नहीं किया जा सकता है।"
              },
              "maker_blueprint_id": {
                "type": "string",
                "format": "uuid"
              },
              "staged_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "checker": {
            "$ref": "#/components/schemas/CaseChecker"
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AML_SCREENING",
              "TRANSACTION_RULE",
              "WORKFLOW_BUILDER"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subject": {
            "$ref": "#/components/schemas/CaseSubject"
          },
          "assigned_to": {
            "$ref": "#/components/schemas/CaseAssignee"
          },
          "assigned_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "team": {
            "$ref": "#/components/schemas/CaseTeamSummary"
          },
          "due_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_by_email": {
            "type": "string",
            "nullable": true
          },
          "created_by_name": {
            "type": "string",
            "nullable": true
          },
          "blueprint": {
            "$ref": "#/components/schemas/CaseBlueprintSummary"
          },
          "links_count": {
            "type": "integer"
          },
          "notes_count": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "application_id": {
            "type": "string",
            "format": "uuid"
          },
          "application_name": {
            "type": "string"
          },
          "organization_id": {
            "type": "string",
            "format": "uuid"
          },
          "organization_name": {
            "type": "string"
          }
        }
      },
      "CaseDetail": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "case_number": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "OPEN",
              "AWAITING_USER",
              "RESOLVED"
            ]
          },
          "resolution": {
            "type": "string",
            "enum": [
              "FALSE_POSITIVE",
              "VALID_THREAT",
              "INCONCLUSIVE",
              "REQUIREMENTS_NOT_MET",
              "REQUIREMENTS_SATISFIED"
            ],
            "nullable": true
          },
          "resolution_notes": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AML_SCREENING",
              "TRANSACTION_RULE",
              "WORKFLOW_BUILDER"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "subject": {
            "$ref": "#/components/schemas/CaseSubject"
          },
          "assigned_to": {
            "$ref": "#/components/schemas/CaseAssignee"
          },
          "assigned_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "team": {
            "$ref": "#/components/schemas/CaseTeamSummary"
          },
          "due_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resolved_by_email": {
            "type": "string",
            "nullable": true
          },
          "pending_resolution": {
            "type": "object",
            "nullable": true,
            "description": "केवल तभी सेट होता है जब चेकर ब्लूप्रिंट पर 4-eyes समाधान स्टेज किया गया हो और वह approve या reject-approval की प्रतीक्षा कर रहा हो।",
            "properties": {
              "resolution": {
                "type": "string",
                "enum": [
                  "FALSE_POSITIVE",
                  "VALID_THREAT",
                  "INCONCLUSIVE",
                  "REQUIREMENTS_NOT_MET",
                  "REQUIREMENTS_SATISFIED"
                ]
              },
              "resolution_notes": {
                "type": "string",
                "nullable": true
              },
              "maker_email": {
                "type": "string",
                "format": "email",
                "nullable": true,
                "description": "रिज़ॉल्यूशन सबमिट करने वाले अधिकारी का ईमेल। API कुंजी द्वारा सबमिट किए जाने पर Null: उस रिज़ॉल्यूशन का कोई रिकॉर्डेड निर्माता नहीं होता है, इसलिए approve और reject-approval प्रत्येक कॉलर के लिए 403 लौटाते हैं।"
              },
              "maker_name": {
                "type": "string",
                "nullable": true
              },
              "maker_user_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true,
                "description": "रिज़ॉल्यूशन सबमिट करने वाले अधिकारी का सदस्य उपयोगकर्ता uuid। API कुंजी द्वारा सबमिट किए जाने पर null। उस सदस्य को `checker` के रूप में नामित नहीं किया जा सकता है।"
              },
              "maker_blueprint_id": {
                "type": "string",
                "format": "uuid"
              },
              "staged_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "checker": {
            "$ref": "#/components/schemas/CaseChecker"
          },
          "metadata": {
            "type": "object"
          },
          "blueprint": {
            "$ref": "#/components/schemas/CaseBlueprintDetail"
          },
          "notes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseNote"
            },
            "description": "नवीनतम 50 नोट्स।"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseEvent"
            },
            "description": "नवीनतम 100 इवेंट।"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseLink"
            }
          },
          "links_count": {
            "type": "integer"
          },
          "notes_count": {
            "type": "integer"
          },
          "checklist_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseChecklistItem"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ReportTemplateDetail": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 देश कोड।"
          },
          "report_type": {
            "type": "string",
            "enum": [
              "SAR",
              "STR",
              "CTR",
              "TTR",
              "UTR",
              "IFT",
              "CBR",
              "TFR"
            ]
          },
          "report_type_display": {
            "type": "string"
          },
          "field_config": {
            "type": "object",
            "description": "पुनः प्रयोज्य goAML हेडर डिफ़ॉल्ट। टेम्पलेट-स्तरीय अनिवार्य फ़ील्ड: rentity_id, submission_code, और currency_code_local (3-अक्षर)। वैकल्पिक: enabled_fields (किन वैकल्पिक रिपोर्ट ब्लॉकों को शामिल करना है) साथ ही reporting_person, location, reason, और action डिफ़ॉल्ट। प्रति-फ़ाइलिंग हेडर फ़ील्ड (action, submission_date, transactions, jurisdiction) तब लागू होते हैं जब रिपोर्ट सत्यापित या अंतिम रूप दी जाती है, टेम्पलेट पर नहीं।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "RegulatoryReportDetail": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "case_uuid": {
            "type": "string",
            "format": "uuid"
          },
          "case_number": {
            "type": "string",
            "nullable": true
          },
          "report_type": {
            "type": "string",
            "enum": [
              "SAR",
              "STR",
              "CTR",
              "TTR",
              "UTR",
              "IFT",
              "CBR",
              "TFR"
            ]
          },
          "report_type_display": {
            "type": "string"
          },
          "report_code": {
            "type": "string",
            "description": "report_type से प्राप्त goAML रिपोर्ट कोड, उदा. STR, CTR, BCR।"
          },
          "report_number": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "DRAFT",
              "VALIDATED",
              "FINALIZED"
            ]
          },
          "status_display": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2
          },
          "rentity_id": {
            "type": "string",
            "nullable": true,
            "description": "FIU द्वारा जारी रिपोर्टिंग निकाय ID।"
          },
          "rentity_branch": {
            "type": "string",
            "nullable": true
          },
          "submission_code": {
            "type": "string",
            "enum": [
              "E",
              "M"
            ]
          },
          "entity_reference": {
            "type": "string",
            "nullable": true
          },
          "fiu_ref_number": {
            "type": "string",
            "nullable": true
          },
          "currency_code_local": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "nullable": true
          },
          "submission_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reporting_person": {
            "type": "object"
          },
          "location": {
            "type": "object"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "activity": {
            "type": "string",
            "nullable": true
          },
          "narrative": {
            "type": "object",
            "description": "पाँच W वर्णनात्मक अनुभाग।",
            "properties": {
              "who": {
                "type": "string"
              },
              "what": {
                "type": "string"
              },
              "when": {
                "type": "string"
              },
              "where": {
                "type": "string"
              },
              "why": {
                "type": "string"
              },
              "how": {
                "type": "string"
              }
            }
          },
          "report_indicators": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "included_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "transactions": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "validation_errors": {
            "type": "array",
            "description": "नवीनतम सत्यापन का परिणाम; प्रत्येक प्रविष्टि एक {field, message} ऑब्जेक्ट है।",
            "items": {
              "type": "object",
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          },
          "validated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "finalized_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_by_email": {
            "type": "string",
            "nullable": true
          },
          "created_by_name": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TransactionRuleCondition": {
        "type": "object",
        "required": [
          "field",
          "operator"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "मूल्यांकन करने के लिए लेन-देन फ़ील्ड पाथ। मुख्य फ़ील्ड: amount, currency, direction, action_type, score, severity, transaction_type, payment_details, preferred_currency_amount (amount_in_default_currency पर फ़ॉलबैक करता है), default_currency_code, subject_country, counterparty_country, subject_vendor_data, counterparty_vendor_data, subject_device_fingerprint, counterparty_device_fingerprint, subject_browser_family, subject_browser_version, subject_platform, subject_accept_language, subject_session_age_ms, subject_ip_country, counterparty_ip_country, subject_ip_address, counterparty_ip_address, subject_payment_method_type, subject_payment_method_country, subject_payment_method_fingerprint, subject_payment_method_account_id (और counterparty_payment_method_* समकक्ष), travel_rule_status, travel_rule_required, travel_rule_obligations_count, counterparty_dd_status (Travel Rule प्रतिपक्ष पर आपका निर्णय: APPROVED, RESTRICTED या BLOCKED, अपने ब्रांड का अनुसरण करने वाली एक इकाई), counterparty_risk_level (LOW, MEDIUM या HIGH; HIGH जब आपकी अपनी प्रतिपक्ष स्क्रीनिंग फ़्लैग की गई हो), counterparty_jurisdiction (प्रतिपक्ष VASP का देश), counterparty_responsiveness (RESPONSIVE, UNRESPONSIVE या UNKNOWN), subject_days_since_previous_transaction, tags, और लेन-देन निर्माण पर custom_properties में सबमिट की गई किसी भी कुंजी के लिए custom_values.<key>। देश-कोड फ़ील्ड ISO-2 या ISO-3 स्वीकार करते हैं; तुलना से पहले दोनों पक्षों को ISO-3 में सामान्यीकृत किया जाता है।"
          },
          "operator": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "gte",
              "lt",
              "lte",
              "in",
              "not_in",
              "contains",
              "not_contains",
              "contains_any",
              "regex",
              "fuzzy_match",
              "exists",
              "is_not_empty",
              "is_not_null",
              "not_exists",
              "is_empty",
              "is_null"
            ],
            "description": "तुलना ऑपरेटर। in/not_in सदस्यता का परीक्षण करते हैं (मान एक सूची या एकल स्केलर हो सकता है)। contains/not_contains स्ट्रिंग मान के विरुद्ध केस-असंवेदनशील सबस्ट्रिंग जाँच हैं। contains_any स्ट्रिंग्स की एक सूची लेता है और तब मेल खाता है जब कोई भी फ़ील्ड मान का केस-असंवेदनशील सबस्ट्रिंग हो। regex फ़ील्ड के विरुद्ध मान पैटर्न से मेल खाता है। fuzzy_match आवश्यक `score` थ्रेशोल्ड (0-100) के साथ मान स्ट्रिंग के विरुद्ध तुलना करता है। gt/gte/lt/lte कभी भी मेल नहीं खाते हैं जब कोई भी पक्ष अनुपलब्ध हो। exists/is_not_empty/is_not_null (उपनाम) और not_exists/is_empty/is_null (उपनाम) उपस्थिति जाँच हैं जो `value` को अनदेखा करती हैं।"
          },
          "value": {
            "description": "तुलना मान। इसका स्वरूप ऑपरेटर और value_type पर निर्भर करता है; उपस्थिति-जाँच ऑपरेटरों के लिए इसे छोड़ दें। हर दूसरे ऑपरेटर को एक ऐसे मान की आवश्यकता होती है जो `null` या खाली सूची न हो, अन्यथा नियम को `400` के साथ अस्वीकार कर दिया जाता है। `contains_any` को स्ट्रिंग्स की एक सूची की आवश्यकता होती है, और `contains`, `not_contains` और `regex` को एकल स्ट्रिंग की आवश्यकता होती है।"
          },
          "value_type": {
            "type": "string",
            "enum": [
              "list",
              "field",
              "relative_date"
            ],
            "description": "वैकल्पिक मान व्याख्या। `list`: मान एक List UUID है और सूची की प्रविष्टियां तुलना मान बन जाती हैं। `field`: मान एक अन्य फ़ील्ड पथ है, जिसकी तुलना फ़ील्ड-दर-फ़ील्ड की जाती है। `relative_date`: मान एक सापेक्ष-तिथि ऑब्जेक्ट है, उदाहरण के लिए {\"direction\": \"past\", \"unit\": \"days\", \"amount\": 30}।"
          },
          "score": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "जब ऑपरेटर fuzzy_match हो तब आवश्यक: 0-100 का समानता थ्रेशोल्ड।"
          },
          "group_index": {
            "type": "integer",
            "description": "वैकल्पिक समूहीकृत लॉजिक। जब किसी भी शर्त में group_index शामिल होता है, तो एक ही इंडेक्स वाली शर्तें एक समूह बनाती हैं और समूहीकृत मूल्यांकन evaluation_mode को प्रतिस्थापित करता है।"
          },
          "group_logic": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ],
            "default": "AND",
            "description": "एक समूह के भीतर स्थितियां कैसे संयोजित होती हैं।"
          },
          "groups_logic": {
            "type": "string",
            "enum": [
              "AND",
              "OR"
            ],
            "default": "OR",
            "description": "समूहों के बीच समूह परिणाम कैसे संयोजित होते हैं। पहली स्थिति से पढ़ा जाता है।"
          }
        },
        "description": "एक शर्त केवल मूल्यांकित किए जा रहे लेन-देन को पढ़ती है - यह कभी भी एकत्रीकरण विंडो को फ़िल्टर नहीं करती है।"
      },
      "TransactionRuleAggregation": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "metric": {
            "type": "string",
            "enum": [
              "count",
              "sum",
              "max",
              "min",
              "avg",
              "distinct_count"
            ],
            "default": "count",
            "description": "मिलान वाले ऐतिहासिक लेन-देन को कैसे एकत्रित किया जाता है। unique_count को distinct_count के उपनाम के रूप में स्वीकार किया जाता है।"
          },
          "field": {
            "type": "string",
            "default": "amount",
            "description": "sum/max/min/avg/distinct_count द्वारा एग्रीगेट किया गया फ़ील्ड। count के लिए अनदेखा किया गया।"
          },
          "operator": {
            "type": "string",
            "enum": [
              "eq",
              "ne",
              "gt",
              "gte",
              "lt",
              "lte"
            ],
            "default": "eq",
            "description": "गणना किए गए मीट्रिक पर लागू की गई तुलना।"
          },
          "value": {
            "type": "number",
            "description": "थ्रेशोल्ड जिसके विरुद्ध गणना किए गए मीट्रिक की तुलना की जाती है।"
          },
          "window": {
            "type": "string",
            "pattern": "^\\d+(m|h|d)$",
            "default": "1d",
            "description": "लेन-देन की txn_date पर समाप्त होने वाली लुक-बैक विंडो: <N>m (मिनट, महीने नहीं), <N>h (घंटे) या <N>d (दिन), उदा. 30m, 24h, 7d, 30d।"
          },
          "filters": {
            "type": "object",
            "additionalProperties": true,
            "description": "यह सीमित करता है कि किन ऐतिहासिक लेन-देनों को समूहीकृत किया जाए। कुंजियाँ कंडीशन फ़ील्ड कैटलॉग से फ़ील्ड पाथ हैं; \"__current__\" का मान मूल्यांकित किए जा रहे लेन-देन पर उसी फ़ील्ड के मान पर रिज़ॉल्व होता है (उदा. {\"subject_vendor_data\": \"__current__\"} विंडो को उसी विषय तक सीमित करता है), और सूची मान का अर्थ सदस्यता होता है। समूहीकृत मान के बिना रिकॉर्ड कभी भी एक साथ समूहीकृत नहीं किए जाते हैं: जब मूल्यांकित किए जा रहे लेन-देन में किसी \"__current__\" फ़ील्ड के लिए कोई मान नहीं होता है (कोई प्रतिपक्ष नहीं, कोई डिवाइस फ़िंगरप्रिंट नहीं), तो एग्रीगेशन मेल नहीं खाता है, चाहे इसका ऑपरेटर कुछ भी हो। फ़िल्टर केवल समानता या सदस्यता द्वारा तुलना करते हैं - कोई lt/gte फ़िल्टर नहीं है, इसलिए \"10,000 से कम के ऐतिहासिक लेन-देन\" जैसी सीमा यहाँ व्यक्त नहीं की जा सकती है। इसके बजाय सीमा को मीट्रिक पर रखें (lt ऑपरेटर के साथ मीट्रिक max विंडो के प्रत्येक लेन-देन को थ्रेशोल्ड से नीचे रखता है)।"
          }
        },
        "description": "विंडो के भीतर एप्लिकेशन के ऐतिहासिक लेन-देन पर वेलोसिटी जांच। evaluation_mode की परवाह किए बिना, नियम से मेल खाने के लिए प्रत्येक एग्रीगेशन प्रविष्टि का मेल खाना आवश्यक है। एक एग्रीगेशन केवल विंडो को बाधित करता है; मूल्यांकित किए जा रहे लेन-देन को स्कोप और शर्तों द्वारा बाधित किया जाता है, इसलिए जब नियम उन्हें निर्दिष्ट करता है तो दोनों हिस्सों पर direction, currency या transaction_type दोहराएं।"
      },
      "TransactionRuleScope": {
        "type": "object",
        "properties": {
          "transaction_types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "लेन-देन के प्रकारों तक सीमित करें, उदा. finance, kyc, travel_rule, user_event। खाली या अनुपस्थित = कोई प्रतिबंध नहीं।"
          },
          "directions": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "INBOUND",
                "OUTBOUND"
              ]
            },
            "description": "लेन-देन की दिशाओं तक सीमित करें (लिखते समय केस-इनसेंसिटिव)।"
          },
          "action_types": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "अपने action_type मानों तक सीमित करें, उदा. withdrawal, deposit।"
          }
        },
        "description": "नियम किन लेन-देन पर लागू होता है। केवल ये तीन कुंजियाँ स्वीकार की जाती हैं।"
      },
      "TransactionRuleAction": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/TransactionRuleActionAddScore"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleActionChangeStatus"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleActionAddTags"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleActionAddNote"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleActionAddToList"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleActionOpenCase"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "add_score": "#/components/schemas/TransactionRuleActionAddScore",
            "change_status": "#/components/schemas/TransactionRuleActionChangeStatus",
            "add_tags": "#/components/schemas/TransactionRuleActionAddTags",
            "add_note": "#/components/schemas/TransactionRuleActionAddNote",
            "add_to_list": "#/components/schemas/TransactionRuleActionAddToList",
            "open_case": "#/components/schemas/TransactionRuleActionOpenCase"
          }
        },
        "description": "एक नियम कार्रवाई। एक नियम में कई कार्रवाइयाँ हो सकती हैं; मेल खाने पर सभी एक साथ लागू की जाती हैं। TEST मोड में नियम बिना कोई कार्रवाई लागू किए यह रिकॉर्ड करते हैं कि वे क्या करते।"
      },
      "TransactionRuleCreateRequest": {
        "type": "object",
        "required": [
          "title",
          "category",
          "mode"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "नियम का नाम। गैर-हटाए गए नियमों में प्रति एप्लिकेशन अद्वितीय; डुप्लिकेट 400 लौटाते हैं।"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "समूहीकरण और रिपोर्टिंग के लिए उपयोग की जाने वाली जोखिम थीम, उदाहरण के लिए finance, aml_ctf, anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule, responsible_gaming, e_commerce।"
          },
          "mode": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DISABLED",
              "TEST"
            ],
            "description": "ACTIVE लाइव मूल्यांकन करता है। TEST नियम चलाने का मूल्यांकन और रिकॉर्ड करता है लेकिन कभी भी स्कोर या स्थिति को प्रभावित नहीं करता है - यह अनुशंसित शुरुआती मोड है। DISABLED को छोड़ दिया जाता है।"
          },
          "evaluation_mode": {
            "type": "string",
            "enum": [
              "ALL",
              "ANY"
            ],
            "default": "ALL",
            "description": "क्या प्रत्येक शर्त का मिलान होना चाहिए (ALL) या कम से कम एक का (ANY)। जब शर्तें group_index का उपयोग करती हैं तो अनदेखा किया जाता है।"
          },
          "scope": {
            "$ref": "#/components/schemas/TransactionRuleScope"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleCondition"
            }
          },
          "aggregation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAggregation"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAction"
            }
          },
          "metadata": {
            "type": "object",
            "description": "नियम पर संग्रहीत फ़्री-फ़ॉर्म मेटाडेटा।"
          }
        },
        "description": "एक CUSTOM नियम बनाता है। ACTIVE मोड में नियम नए लेन-देन के लिए तुरंत प्रभावी होते हैं - TEST मोड में बनाएं और पहले बैकटेस्ट करें।"
      },
      "TransactionRuleUpdateRequest": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "नियम का नाम। गैर-हटाए गए नियमों में प्रति एप्लिकेशन अद्वितीय; डुप्लिकेट 400 लौटाते हैं।"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "समूहीकरण और रिपोर्टिंग के लिए उपयोग की जाने वाली जोखिम थीम, उदाहरण के लिए finance, aml_ctf, anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule, responsible_gaming, e_commerce।"
          },
          "mode": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DISABLED",
              "TEST"
            ],
            "description": "ACTIVE लाइव मूल्यांकन करता है। TEST नियम चलाने का मूल्यांकन और रिकॉर्ड करता है लेकिन कभी भी स्कोर या स्थिति को प्रभावित नहीं करता है - यह अनुशंसित शुरुआती मोड है। DISABLED को छोड़ दिया जाता है।"
          },
          "evaluation_mode": {
            "type": "string",
            "enum": [
              "ALL",
              "ANY"
            ],
            "default": "ALL",
            "description": "क्या प्रत्येक शर्त का मिलान होना चाहिए (ALL) या कम से कम एक का (ANY)। जब शर्तें group_index का उपयोग करती हैं तो अनदेखा किया जाता है।"
          },
          "scope": {
            "$ref": "#/components/schemas/TransactionRuleScope"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleCondition"
            }
          },
          "aggregation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAggregation"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAction"
            }
          },
          "metadata": {
            "type": "object",
            "description": "नियम पर संग्रहीत फ़्री-फ़ॉर्म मेटाडेटा।"
          }
        },
        "description": "आंशिक अपडेट। कस्टम नियम प्रत्येक फ़ील्ड स्वीकार करते हैं; लाइब्रेरी (PRESET) नियम केवल mode स्वीकार करते हैं - किसी अन्य फ़ील्ड के लिए 400 लौटाया जाता है।"
      },
      "TransactionRuleDetail": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "title": {
            "type": "string",
            "description": "नियम का नाम। गैर-हटाए गए नियमों में प्रति एप्लिकेशन अद्वितीय; डुप्लिकेट 400 लौटाते हैं।"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "समूहीकरण और रिपोर्टिंग के लिए उपयोग की जाने वाली जोखिम थीम, उदाहरण के लिए finance, aml_ctf, anomaly_detection, fatf, device_intelligence, crypto_monitoring, travel_rule, responsible_gaming, e_commerce।"
          },
          "mode": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "DISABLED",
              "TEST"
            ],
            "description": "ACTIVE लाइव मूल्यांकन करता है। TEST नियम चलाने का मूल्यांकन और रिकॉर्ड करता है लेकिन कभी भी स्कोर या स्थिति को प्रभावित नहीं करता है - यह अनुशंसित शुरुआती मोड है। DISABLED को छोड़ दिया जाता है।"
          },
          "evaluation_mode": {
            "type": "string",
            "enum": [
              "ALL",
              "ANY"
            ],
            "default": "ALL",
            "description": "क्या प्रत्येक शर्त का मिलान होना चाहिए (ALL) या कम से कम एक का (ANY)। जब शर्तें group_index का उपयोग करती हैं तो अनदेखा किया जाता है।"
          },
          "scope": {
            "$ref": "#/components/schemas/TransactionRuleScope"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleCondition"
            }
          },
          "aggregation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAggregation"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAction"
            }
          },
          "metadata": {
            "type": "object",
            "description": "नियम पर संग्रहीत फ़्री-फ़ॉर्म मेटाडेटा।"
          },
          "severity": {
            "type": "string",
            "enum": [
              "UNKNOWN",
              "LOW",
              "MEDIUM",
              "HIGH",
              "CRITICAL"
            ],
            "nullable": true,
            "description": "लाइब्रेरी नियमों से मिलने वाली सूचनात्मक गंभीरता; कस्टम नियमों पर सेट करने योग्य नहीं है।"
          },
          "source": {
            "type": "string",
            "enum": [
              "PRESET",
              "CUSTOM"
            ],
            "description": "PRESET नियम लाइब्रेरी से आते हैं (इंस्टॉल/अनइंस्टॉल, केवल-मोड संपादन); CUSTOM नियम पूरी तरह से आपके हैं।"
          },
          "library_key": {
            "type": "string",
            "nullable": true,
            "description": "स्थिर लाइब्रेरी पहचानकर्ता; कस्टम नियमों के लिए null।"
          },
          "latest_triggered_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "run_count": {
            "type": "integer",
            "description": "इस नियम से कितने लेन-देन मेल खाते हैं।"
          },
          "approved_count": {
            "type": "integer"
          },
          "reviewed_count": {
            "type": "integer"
          },
          "declined_count": {
            "type": "integer"
          },
          "awaiting_user_count": {
            "type": "integer"
          },
          "approved_pct": {
            "type": "number"
          },
          "reviewed_pct": {
            "type": "number"
          },
          "declined_pct": {
            "type": "number"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TransactionRuleBacktestRequest": {
        "type": "object",
        "properties": {
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleCondition"
            },
            "default": []
          },
          "aggregation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAggregation"
            },
            "default": []
          },
          "evaluation_mode": {
            "type": "string",
            "enum": [
              "ALL",
              "ANY"
            ],
            "default": "ALL"
          },
          "scope": {
            "$ref": "#/components/schemas/TransactionRuleScope"
          },
          "period_days": {
            "type": "integer",
            "minimum": 1,
            "maximum": 365,
            "default": 90
          }
        },
        "description": "हाल के लेन-देन के विरुद्ध मूल्यांकन करने के लिए काल्पनिक नियम कॉन्फ़िगरेशन। केवल-पठनीय और निःशुल्क: कुछ भी बनाया या संशोधित नहीं किया जाता है। वही conditions, aggregation, evaluation_mode और scope भेजें जो उस नियम के हैं जिसे आप सक्रिय करना चाहते हैं। छोड़े गए conditions, aggregation और scope अपनी ओर से कोई बाधा नहीं जोड़ते; scope छोड़ने पर वे दिशाएँ या लेन-देन प्रकार शामिल हो सकते हैं जिन्हें सहेजा गया नियम छोड़ देता है। छोड़े गए evaluation_mode का डिफ़ॉल्ट ALL होता है (जो ANY नियम के लिए मिलानों को कम कर सकता है), और छोड़े गए period_days का डिफ़ॉल्ट 90 दिन होता है, असीमित इतिहास नहीं।"
      },
      "TransactionRuleBacktestResult": {
        "type": "object",
        "properties": {
          "evaluated": {
            "type": "integer",
            "description": "मूल्यांकन किए गए लेन-देन (सबसे हाल के पहले, सीमित)।"
          },
          "matched": {
            "type": "integer",
            "description": "वे लेन-देन जिनसे कॉन्फ़िगरेशन का मिलान हो जाता।"
          },
          "affected_entities": {
            "type": "integer",
            "description": "मिलानों के बीच विशिष्ट विषय (vendor_data द्वारा)।"
          },
          "period_days": {
            "type": "integer"
          }
        }
      },
      "TransactionRuleLibraryEntry": {
        "type": "object",
        "properties": {
          "library_key": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string"
          },
          "evaluation_mode": {
            "type": "string",
            "enum": [
              "ALL",
              "ANY"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/TransactionRuleScope"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleCondition"
            }
          },
          "aggregation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAggregation"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRuleAction"
            }
          },
          "metadata": {
            "type": "object"
          },
          "bundle": {
            "type": "string",
            "nullable": true,
            "description": "कार्यात्मक श्रेणी, उदा. finance, aml_ctf, crypto_monitoring, travel_rule, responsible_gaming।"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source": {
            "type": "string"
          },
          "is_installed": {
            "type": "boolean",
            "description": "क्या यह प्रीसेट वर्तमान में एप्लिकेशन पर इंस्टॉल है।"
          }
        }
      },
      "TransactionRuleInstallRequest": {
        "type": "object",
        "properties": {
          "library_keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "इंस्टॉल या अनइंस्टॉल करने के लिए विशिष्ट प्रीसेट।"
          },
          "bundle": {
            "type": "string",
            "description": "इसके बजाय इस बंडल के प्रत्येक प्रीसेट को इंस्टॉल या अनइंस्टॉल करें।"
          }
        },
        "description": "library_keys या bundle प्रदान करें।"
      },
      "TransactionRuleInstallResult": {
        "type": "object",
        "properties": {
          "installed_library_keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "केवल POST (इंस्टॉल): इस कॉल द्वारा इंस्टॉल किए गए प्रीसेट।"
          },
          "installed_count": {
            "type": "integer",
            "description": "केवल POST (इंस्टॉल)।"
          },
          "uninstalled_count": {
            "type": "integer",
            "description": "केवल DELETE (अनइंस्टॉल): इस कॉल द्वारा हटाए गए प्रीसेट।"
          }
        }
      },
      "WalletScreeningResult": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "description": "वह प्रदाता जिसने स्क्रीनिंग की (उदा. `merklescience`, `crystal`)।"
          },
          "screening_type": {
            "type": "string",
            "enum": [
              "WALLET_SCREENING"
            ],
            "description": "इस endpoint के लिए हमेशा `WALLET_SCREENING`।"
          },
          "risk_score": {
            "type": "integer",
            "description": "सामान्यीकृत 0-100 जोखिम स्कोर। उच्च मान का अर्थ है जोखिम भरी संस्थाओं के प्रति अधिक जोखिम। Merkle Science किसी पते को 0-5 तक ग्रेड करता है, जो 0, 15, 35, 55, 75 या 95 पर मैप होता है।"
          },
          "severity": {
            "type": "string",
            "enum": [
              "UNKNOWN",
              "LOW",
              "MEDIUM",
              "HIGH",
              "CRITICAL"
            ],
            "description": "`risk_score` से प्राप्त जोखिम बकेट: `0-9` UNKNOWN, `10-39` LOW, `40-69` MEDIUM, `70-89` HIGH, `90-100` CRITICAL। `UNKNOWN` सबसे निचला बैंड है, कोई अलग नो-डेटा स्थिति नहीं: `risk_score` 0 (सामान्य साफ़-पते का मामला) का अर्थ कोई प्रतिकूल आकलन नहीं है, जबकि 1-9 रेंज में एक गैर-शून्य स्कोर एक वास्तविक लेकिन उप-LOW सिग्नल है - केवल बैंड ही नहीं, बल्कि `risk_score` पढ़ें। `UNKNOWN` को कभी भी सकारात्मक कम-जोखिम या स्पष्ट रेटिंग के रूप में न मानें; इसे पास के रूप में प्रदर्शित न करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "SCREENED",
              "PENDING",
              "ERROR"
            ],
            "description": "स्क्रीनिंग परिणाम की स्थिति।"
          },
          "summary": {
            "type": "string",
            "description": "स्क्रीनिंग परिणाम का मानव-पठनीय सारांश।"
          },
          "wallet_address": {
            "type": "string",
            "description": "स्क्रीन किया गया पता, वापस दोहराया गया।"
          },
          "transaction_hash": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "blockchain": {
            "type": "string",
            "description": "वह ब्लॉकचेन जिसकी स्क्रीनिंग की गई थी।"
          },
          "block_timestamp": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "total_value_usd": {
            "type": "number",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "fee_usd": {
            "type": "number",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "sender_rows": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा खाली।"
          },
          "receiver_rows": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा खाली।"
          },
          "transaction_flows": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा खाली।"
          },
          "transaction_flows_status": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "transaction_flows_error": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन स्क्रीनिंग फ़ील्ड, रिज़ल्ट शेप के साथ साझा किया गया। वॉलेट स्क्रीनिंग परिणाम पर हमेशा `null`।"
          },
          "source_of_funds": {
            "type": "array",
            "description": "पते को कहाँ से धन प्राप्त हुआ, निकाय द्वारा एट्रिब्यूट किया गया। प्रत्येक प्रविष्टि एक एक्सपोज़र विवरण है।",
            "items": {
              "type": "object",
              "properties": {
                "category": {
                  "type": "string",
                  "description": "सामान्यीकृत जोखिम श्रेणी, उदाहरण के लिए `exchange_licensed`, `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`, `high_risk_exchange`।"
                },
                "percentage": {
                  "type": "number",
                  "description": "दिशा के कुल एक्सपोज़र का हिस्सा, 0-100।"
                },
                "amount_usd": {
                  "type": "number",
                  "nullable": true,
                  "description": "इस संस्था के लिए एट्रिब्यूट किया गया USD मूल्य।"
                },
                "entity_name": {
                  "type": "string",
                  "nullable": true,
                  "description": "संबद्ध इकाई का नाम, उदाहरण के लिए कोई एक्सचेंज, मिक्सर या प्रतिबंधित समूह।"
                },
                "entity_type": {
                  "type": "string",
                  "nullable": true,
                  "description": "प्रदाता निकाय प्रकार (उदा. `Exchange`, `DeFi`, `Sanctions`, `Theft`)।"
                },
                "entity_subtype": {
                  "type": "string",
                  "nullable": true,
                  "description": "अधिक विस्तृत उपप्रकार (उदा. `Mandatory KYC and AML`, `OFAC`, `Yield Aggregator`)।"
                },
                "hops": {
                  "type": "integer",
                  "nullable": true,
                  "description": "इकाई तक हॉप्स की संख्या (प्रत्यक्ष प्रतिपक्ष के लिए 1), जब प्रदाता इसकी रिपोर्ट करता है। Merkle Science के लिए हमेशा `null`, जो केवल यह रिपोर्ट करता है कि एक्सपोज़र प्रत्यक्ष है या अप्रत्यक्ष: `exposure_type` का उपयोग करें।"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_type / entity_subtype`, जैसा कि प्रदाता इकाई को लेबल करता है।"
                },
                "is_direct": {
                  "type": "boolean",
                  "description": "True जब `exposure_type` `direct` हो।"
                },
                "exposure_direction": {
                  "type": "string",
                  "enum": [
                    "incoming",
                    "outgoing",
                    "connected"
                  ],
                  "description": "क्या फ़ंड इस इकाई से आए (`incoming`) या इस इकाई को गए (`outgoing`)।"
                },
                "exposure_type": {
                  "type": "string",
                  "enum": [
                    "direct",
                    "indirect"
                  ],
                  "description": "`direct` (1 हॉप) या `indirect` (मल्टी-हॉप) एक्सपोज़र।"
                },
                "provider_entity_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "provider_entity_type_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_type` के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "provider_entity_subtype_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_subtype` के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "country": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई का प्राथमिक ISO 3166-1 alpha-2 देश। प्रदाता को इसकी जानकारी न होने पर खाली या `null`।"
                },
                "raw_amount": {
                  "type": "number",
                  "nullable": true,
                  "description": "एसेट की अपनी इकाई में राशि, जब प्रदाता इसे रिपोर्ट करता है।"
                },
                "raw_currency": {
                  "type": "string",
                  "nullable": true,
                  "description": "`raw_amount` की इकाई, जब प्रदाता इसे रिपोर्ट करता है।"
                }
              }
            }
          },
          "destination_of_funds": {
            "type": "array",
            "description": "पते ने कहाँ धन भेजा, निकाय द्वारा एट्रिब्यूट किया गया। `exposure_direction` = `outgoing` के साथ `source_of_funds` के समान आइटम संरचना।",
            "items": {
              "type": "object",
              "properties": {
                "category": {
                  "type": "string",
                  "description": "सामान्यीकृत जोखिम श्रेणी, उदाहरण के लिए `exchange_licensed`, `dex`, `defi`, `payment_processor`, `mixer`, `darknet_market`, `sanctioned`, `stolen_funds`, `high_risk_exchange`।"
                },
                "percentage": {
                  "type": "number",
                  "description": "दिशा के कुल एक्सपोज़र का हिस्सा, 0-100।"
                },
                "amount_usd": {
                  "type": "number",
                  "nullable": true,
                  "description": "इस संस्था के लिए एट्रिब्यूट किया गया USD मूल्य।"
                },
                "entity_name": {
                  "type": "string",
                  "nullable": true,
                  "description": "संबद्ध इकाई का नाम, उदाहरण के लिए कोई एक्सचेंज, मिक्सर या प्रतिबंधित समूह।"
                },
                "entity_type": {
                  "type": "string",
                  "nullable": true,
                  "description": "प्रदाता निकाय प्रकार (उदा. `Exchange`, `DeFi`, `Sanctions`, `Theft`)।"
                },
                "entity_subtype": {
                  "type": "string",
                  "nullable": true,
                  "description": "अधिक विस्तृत उपप्रकार (उदा. `Mandatory KYC and AML`, `OFAC`, `Yield Aggregator`)।"
                },
                "hops": {
                  "type": "integer",
                  "nullable": true,
                  "description": "इकाई तक हॉप्स की संख्या (प्रत्यक्ष प्रतिपक्ष के लिए 1), जब प्रदाता इसकी रिपोर्ट करता है। Merkle Science के लिए हमेशा `null`, जो केवल यह रिपोर्ट करता है कि एक्सपोज़र प्रत्यक्ष है या अप्रत्यक्ष: `exposure_type` का उपयोग करें।"
                },
                "description": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_type / entity_subtype`, जैसा कि प्रदाता इकाई को लेबल करता है।"
                },
                "is_direct": {
                  "type": "boolean",
                  "description": "True जब `exposure_type` `direct` हो।"
                },
                "exposure_direction": {
                  "type": "string",
                  "enum": [
                    "incoming",
                    "outgoing",
                    "connected"
                  ],
                  "description": "क्या फ़ंड इस इकाई से आए (`incoming`) या इस इकाई को गए (`outgoing`)।"
                },
                "exposure_type": {
                  "type": "string",
                  "enum": [
                    "direct",
                    "indirect"
                  ],
                  "description": "`direct` (1 हॉप) या `indirect` (मल्टी-हॉप) एक्सपोज़र।"
                },
                "provider_entity_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "provider_entity_type_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_type` के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "provider_entity_subtype_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "`entity_subtype` के लिए प्रदाता का अपना पहचानकर्ता।"
                },
                "country": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई का प्राथमिक ISO 3166-1 alpha-2 देश। प्रदाता को इसकी जानकारी न होने पर खाली या `null`।"
                },
                "raw_amount": {
                  "type": "number",
                  "nullable": true,
                  "description": "एसेट की अपनी इकाई में राशि, जब प्रदाता इसे रिपोर्ट करता है।"
                },
                "raw_currency": {
                  "type": "string",
                  "nullable": true,
                  "description": "`raw_amount` की इकाई, जब प्रदाता इसे रिपोर्ट करता है।"
                }
              }
            }
          },
          "counterparty_connections": {
            "type": "array",
            "description": "वे संस्थाएँ जिनसे प्रदाता जाँचे गए पते को संबद्ध करता है। Merkle Science के लिए ये पते के अपने स्वामी और उपयोगकर्ता टैग से आती हैं, इसलिए एक ही संस्था दो बार दिखाई दे सकती है, और वे कोई फ़ंड फ़्लो नहीं ले जाती हैं: `received_usd`, `sent_usd`, `received_hops` और `sent_hops` `null` हैं और `percentage` 0 है। यहाँ `risk_level` या `is_direct` पर रूट न करें: निर्णय के लिए `sanctions_hit`, `dominant_risk_category` और `risk_factors[].is_high_risk` का उपयोग करें, और प्रत्यक्षता के लिए `source_of_funds`/`destination_of_funds` में `exposure_type` का उपयोग करें।",
            "items": {
              "type": "object",
              "properties": {
                "entity_name": {
                  "type": "string",
                  "nullable": true,
                  "description": "संबद्ध इकाई का नाम।"
                },
                "entity_type": {
                  "type": "string",
                  "nullable": true,
                  "description": "प्रदाता निकाय प्रकार।"
                },
                "entity_subtype": {
                  "type": "string",
                  "nullable": true,
                  "description": "प्रदाता निकाय उपप्रकार।"
                },
                "risk_level": {
                  "type": "string",
                  "description": "लोअरकेस और प्रदाता-निर्भर। Merkle Science के लिए यह पते का अपना 0-5 जोखिम स्तर (`no_risk`, `low`, `medium_low`, `medium`, `high`, `critical`) है, जिसे इकाई की श्रेणी उच्च जोखिम होने पर बढ़ाकर `high` कर दिया जाता है; यह इकाई का कोई अलग स्तर नहीं है।"
                },
                "categories": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "संस्था की सामान्यीकृत जोखिम श्रेणियां।"
                },
                "received_usd": {
                  "type": "number",
                  "nullable": true,
                  "description": "संस्था से प्राप्त USD, जब प्रदाता इसकी रिपोर्ट करता है।"
                },
                "sent_usd": {
                  "type": "number",
                  "nullable": true,
                  "description": "संस्था को भेजा गया USD, जब प्रदाता इसकी रिपोर्ट करता है।"
                },
                "received_hops": {
                  "type": "integer",
                  "nullable": true,
                  "description": "प्राप्तकर्ता पक्ष पर मौजूद निकाय के लिए हॉप्स, जब प्रदाता उनकी रिपोर्ट करता है।"
                },
                "sent_hops": {
                  "type": "integer",
                  "nullable": true,
                  "description": "प्रेषक पक्ष पर मौजूद निकाय के लिए हॉप्स, जब प्रदाता उनकी रिपोर्ट करता है।"
                },
                "percentage": {
                  "type": "number",
                  "description": "पते के एक्सपोज़र का हिस्सा, जब प्रदाता इसे रिपोर्ट करता है; अन्यथा 0।"
                },
                "is_direct": {
                  "type": "boolean",
                  "description": "Merkle Science के लिए हमेशा `true`, जिसके कनेक्शन प्रतिपक्षों के बजाय एट्रिब्यूशन हैं।"
                },
                "country": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई का देश, जब ज्ञात हो।"
                },
                "provider_entity_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "इकाई के लिए प्रदाता का अपना पहचानकर्ता।"
                }
              }
            }
          },
          "network_nodes": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "लेन-देन स्क्रीनिंग के लिए एक्सपोज़र ग्राफ़ नोड। वॉलेट स्क्रीनिंग परिणाम में खाली।"
          },
          "network_edges": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "लेन-देन स्क्रीनिंग के लिए एक्सपोज़र ग्राफ़ एज। वॉलेट स्क्रीनिंग परिणाम में खाली।"
          },
          "sanctions_hit": {
            "type": "boolean",
            "description": "यदि पते पर प्रत्यक्ष या अप्रत्यक्ष प्रतिबंध जोखिम है तो True।"
          },
          "pep_counterparty": {
            "type": "boolean",
            "description": "राजनीतिक रूप से उजागर व्यक्ति से संबंधित एक्सपोज़र। जब कोई PEP परिणाम उपलब्ध न हो तब `null`, जो कि आज का हर परिणाम है क्योंकि कोई भी प्रदाता इसकी रिपोर्ट नहीं करता; केवल एक स्पष्ट नकारात्मक स्क्रीनिंग परिणाम के लिए `false`। `null` को पूर्ण PEP जांच न समझें।",
            "nullable": true
          },
          "dominant_risk_category": {
            "type": "string",
            "nullable": true,
            "description": "उच्चतम भारित उच्च-जोखिम वाली श्रेणी, या कोई प्रमुख न होने पर `null` (उदा. `sanctioned`, `mixer`, `stolen_funds`)।"
          },
          "risk_factors": {
            "type": "array",
            "description": "`risk_score` का क्रमबद्ध स्पष्टीकरण: इस निर्णय को उत्पन्न करने वाले कारक। प्रदाता अपने स्वयं के मॉडल पर पते का मूल्यांकन करते हैं और केवल एक निर्णय लौटाते हैं (Merkle Science एक पूर्णांक 0-5 लौटाता है), इसलिए केवल स्कोर पर कार्रवाई नहीं की जा सकती। पहले उच्च-जोखिम वाले, फिर प्रत्येक कारक के माध्यम से स्थानांतरित मूल्य के अनुसार क्रमित, अधिकतम पाँच सबसे मजबूत कारकों तक सीमित; `source_of_funds` और `destination_of_funds` में हमेशा पूरा ब्रेकडाउन होता है। बिना किसी `is_high_risk` प्रविष्टि वाले उच्च `risk_score` का अर्थ है कि प्रदाता ने किसी प्रतिबंध या संबद्ध-इकाई मिलान की सूचना नहीं दी और पते का मूल्यांकन विशुद्ध रूप से अपने स्वयं के एक्सपोज़र मॉडल पर किया - `summary` इसे स्पष्ट रूप से बताता है।",
            "items": {
              "type": "object",
              "properties": {
                "source": {
                  "type": "string",
                  "enum": [
                    "attribution",
                    "exposure"
                  ],
                  "description": "`attribution` वह है जो प्रदाता कहता है कि पता स्वयं क्या है (उसका अपना टैग या क्लस्टर); `exposure` वह है जहाँ उसका धन वास्तव में स्थानांतरित हुआ।"
                },
                "category": {
                  "type": "string",
                  "description": "सामान्यीकृत जोखिम श्रेणी, एक्सपोज़र ब्रेकडाउन के समान शब्दावली।"
                },
                "label": {
                  "type": "string",
                  "description": "ड्राइवर के लिए प्रदाता की अपनी शब्दावली (उदा. `Gambling / Crypto only`), जिसे आप प्रदाता के कंसोल में भी देखेंगे।"
                },
                "entity_name": {
                  "type": "string",
                  "nullable": true,
                  "description": "ड्राइवर के पीछे संबद्ध इकाई, उदाहरण के लिए कोई जुआ साइट या एक्सचेंज।"
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "incoming",
                    "outgoing",
                    "connected",
                    "unknown",
                    "attribution"
                  ],
                  "description": "फ़ंड प्रवाह की दिशा, `attribution` जब ड्राइवर पते का अपना टैग हो, या `unknown` जब प्रदाता ने किसी दिशा की रिपोर्ट न की हो।"
                },
                "exposure_type": {
                  "type": "string",
                  "enum": [
                    "direct",
                    "indirect",
                    "unknown",
                    "attribution"
                  ],
                  "description": "`direct` (1 हॉप) या `indirect` (मल्टी-हॉप), पते के अपने टैग के लिए `attribution`, या `unknown` जब प्रदाता ने यह नहीं बताया कि प्रतिपक्ष कितने हॉप दूर है। `unknown` को अवर्गीकृत मानें, `direct` के रूप में नहीं।"
                },
                "amount_usd": {
                  "type": "number",
                  "format": "float",
                  "nullable": true,
                  "description": "इस ड्राइवर के लिए एट्रिब्यूट किया गया USD मूल्य।"
                },
                "percentage": {
                  "type": "number",
                  "format": "float",
                  "description": "पते के कुल (TOTAL) स्क्रीन किए गए वॉल्यूम का हिस्सा, दोनों दिशाओं को मिलाकर - `source_of_funds`/`destination_of_funds` के अंदर `percentage` के विपरीत, जो प्रति दिशा सामान्यीकृत होता है। पूरी सूची में तुलनीय और जोड़ने योग्य।"
                },
                "is_high_risk": {
                  "type": "boolean",
                  "description": "क्या श्रेणी वह है जिसे Didit उच्च जोखिम मानता है (`sanctioned`, `mixer`, `stolen_funds`, `ransomware`, `scam`, `darknet_market`, `terrorist_financing`, `child_exploitation`, `hacked_exchange`, `high_risk_exchange`, `seized_funds`)।"
                },
                "description": {
                  "type": "string",
                  "description": "ड्राइवर का एक पंक्ति का रेंडरिंग, उदा. `9.01% indirect outgoing exposure to Gambling / Crypto only (Example Gambling)`।"
                }
              }
            }
          },
          "raw_response": {
            "type": "object",
            "additionalProperties": true,
            "description": "प्रदाता का अपना payload। इसका आकार प्रदाता-विशिष्ट है और बिना किसी सूचना के बदल सकता है: इसे पार्स करने के बजाय सामान्यीकृत फ़ील्ड पढ़ें।"
          },
          "report_signature": {
            "type": "string",
            "description": "इस सटीक परिणाम पर अपारदर्शी HMAC-SHA256 हस्ताक्षर, जो आपके एप्लिकेशन तक सीमित है। अपने आप में इसका कोई अर्थ नहीं है — इसे PDF के रूप में प्रस्तुत करने के लिए पूरे रिस्पॉन्स बॉडी को, बिना किसी बदलाव के और इस फ़ील्ड सहित, `POST /v3/wallet-screening/pdf/` पर पुनः पोस्ट करें। यदि `report_signature` मौजूद नहीं है या पुनः पोस्ट करने से पहले किसी भी हस्ताक्षरित फ़ील्ड (उदा. `risk_score`, `severity`, `sanctions_hit`) को संपादित किया गया था, तो PDF endpoint अनुरोध को `400` के साथ अस्वीकार कर देता है।"
          }
        },
        "required": [
          "provider",
          "screening_type",
          "risk_score",
          "severity",
          "status",
          "summary",
          "wallet_address",
          "blockchain",
          "sanctions_hit",
          "dominant_risk_category",
          "source_of_funds",
          "destination_of_funds",
          "counterparty_connections",
          "report_signature"
        ]
      },
      "NetworkRiskDisplay": {
        "type": "object",
        "properties": {
          "score": {
            "type": "integer",
            "description": "जोखिम स्कोर, 0-100।"
          },
          "band": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "description": "बैंड जिसके रूप में स्कोर रेंडर होता है। high >= 70, medium >= 40, अन्यथा low।"
          },
          "bar": {
            "type": "number",
            "format": "float",
            "description": "जोखिम बार रेंडर करने के लिए सामान्यीकृत 0-1 मान।"
          }
        }
      },
      "NetworkNodeTag": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "nullable": true,
            "description": "गार्ड टैग के लिए नल, जिनके रंग टोकन का स्वामित्व रेंडरर के पास होता है।"
          },
          "source": {
            "type": "string",
            "enum": [
              "subject_tag",
              "session_tag",
              "transaction_tag",
              "signal_guard"
            ],
            "description": "टैग कहाँ से आया: उपयोगकर्ता/व्यवसाय पर एक टैग, इस नेटवर्क के किसी सत्र पर एक टैग, किसी लेन-देन पर एक टैग जिससे कोई पक्ष संबंधित है, या सिग्नल गार्ड की कोई शर्त (उदा. हब, डेटासेंटर IP)।"
          },
          "category": {
            "type": "string",
            "enum": [
              "customer",
              "quality"
            ],
            "nullable": true,
            "description": "ग्राहक-परिभाषित टैग के लिए customer, सिग्नल-गुणवत्ता सुरक्षा टैग के लिए quality। लागू न होने पर Null।"
          }
        }
      },
      "NetworkListItem": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "network_id": {
            "type": "string",
            "description": "मानव-पठनीय प्रति-संगठन अनुक्रमिक id, उदाहरण के लिए N-0001।"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "in_review",
              "resolved",
              "dismissed"
            ],
            "description": "नेटवर्क लाइफ़साइकल स्थिति। किसी नेटवर्क के अंदर प्रति-आवेदक outcome_status (approved/in_review/declined/not_completed) से अलग।"
          },
          "risk": {
            "$ref": "#/components/schemas/NetworkRiskDisplay"
          },
          "pattern_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "exact_same_device",
                "similar_device",
                "same_ip_address",
                "same_address",
                "similar_selfie_backgrounds",
                "similar_poa_documents",
                "same_document_number",
                "same_phone_number",
                "same_email"
              ]
            },
            "description": "इस नेटवर्क में पाए गए क्लस्टरिंग पैटर्न।"
          },
          "signal_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ip_address",
                "device",
                "face",
                "document_number",
                "phone",
                "email",
                "address"
              ]
            },
            "description": "इस नेटवर्क में मौजूद विशिष्ट सिग्नल प्रकार।"
          },
          "member_counts": {
            "type": "object",
            "description": "श्रेणी के अनुसार सदस्यों की संख्या (उदा. कुल, प्रति outcome_status)।"
          },
          "member_status": {
            "type": "object",
            "description": "outcome_status के अनुसार सदस्यों का विवरण।"
          },
          "signal_coverage": {
            "type": "object",
            "description": "इस नेटवर्क के सदस्यों का प्रति signal_type कवरेज।"
          },
          "first_activity_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_activity_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "NetworkDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/NetworkListItem"
          },
          {
            "type": "object",
            "properties": {
              "stats": {
                "type": "object",
                "description": "नेटवर्क के लिए समग्र आँकड़े (उदा. कुल सदस्य संख्या)।"
              },
              "fraud_tags": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "description": "नेटवर्क पर सामने आए फ्रॉड-पैटर्न टैग।"
              },
              "risk_signals": {
                "type": "object",
                "description": "जोखिम सिग्नल सारांश: residential_proxy_reuse, email_intelligence, phone_intelligence।"
              },
              "reviewed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "reviewed_by": {
                "type": "string",
                "nullable": true
              },
              "review_reason": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ],
        "properties": {
          "notes_count": {
            "type": "integer",
            "minimum": 0,
            "readOnly": true,
            "description": "इस जांच में निजी विश्लेषक नोटों की संख्या।"
          }
        }
      },
      "NetworkGraphNode": {
        "type": "object",
        "description": "एक विषय नोड या एक सिग्नल नोड, जिसे प्रकार (kind) द्वारा अलग किया जाता है। विषय नोड्स (kind: vendor_user | vendor_business | transaction_party) में id, kind, subject, node_status (approved | in_review | declined | not_completed), और टैग शामिल होते हैं। सिग्नल नोड्स (kind: signal) में id, kind, uuid, signal_type, subject_count, coverage, is_hub, is_datacenter_ip, is_high_collision_device, node_status (signal_active | signal_guarded), टैग, risk_evidence, first_seen_at, और last_seen_at शामिल होते हैं।",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "vendor_user",
              "vendor_business",
              "transaction_party",
              "signal"
            ]
          }
        }
      },
      "NetworkGraphEdge": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "source": {
            "type": "string",
            "description": "सब्जेक्ट नोड ID।"
          },
          "target": {
            "type": "string",
            "description": "सिग्नल नोड ID।"
          },
          "subject_kind": {
            "type": "string",
            "enum": [
              "vendor_user",
              "vendor_business",
              "transaction_party"
            ]
          },
          "signal_type": {
            "type": "string",
            "enum": [
              "ip_address",
              "device",
              "face",
              "document_number",
              "phone",
              "email",
              "address"
            ]
          },
          "confidence": {
            "type": "number",
            "format": "float",
            "description": "सटीक मिलान के लिए 1.0।"
          },
          "observation_count": {
            "type": "integer"
          },
          "first_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "NetworkGraph": {
        "type": "object",
        "properties": {
          "network": {
            "$ref": "#/components/schemas/NetworkDetail"
          },
          "depth": {
            "type": "integer",
            "nullable": true,
            "description": "लागू की गई प्रभावी डेप्थ, या असीमित होने पर null (depth=all)।"
          },
          "truncated": {
            "type": "boolean",
            "description": "यदि नेबरहुड गहराई के कारण कट गया था तो True।"
          },
          "nodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkGraphNode"
            }
          },
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkGraphEdge"
            }
          },
          "metrics": {
            "type": "object",
            "properties": {
              "node_count": {
                "type": "integer"
              },
              "edge_count": {
                "type": "integer"
              },
              "hub_signal_count": {
                "type": "integer"
              }
            }
          }
        }
      },
      "NetworkMember": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "object",
            "description": "वह vendor_user, vendor_business, या transaction_party जिसका यह सदस्य प्रतिनिधित्व करता है।"
          },
          "outcome_status": {
            "type": "string",
            "description": "सब्जेक्ट का सत्यापन/निर्णय परिणाम।"
          },
          "node_status": {
            "type": "string",
            "enum": [
              "approved",
              "in_review",
              "declined",
              "not_completed",
              "signal_active",
              "signal_guarded"
            ],
            "description": "सदस्य पंक्ति के लिए यह हमेशा विषय-परिणाम मानों में से एक होता है: approved, in_review, declined, या not_completed।"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkNodeTag"
            }
          },
          "risk": {
            "$ref": "#/components/schemas/NetworkRiskDisplay"
          },
          "signal_coverage": {
            "type": "object"
          },
          "shared_infrastructure": {
            "type": "object"
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "provenance": {
            "type": "object",
            "properties": {
              "session_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "business_session_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "transaction_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              }
            }
          }
        }
      },
      "NetworkSignal": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "signal_type": {
            "type": "string",
            "enum": [
              "ip_address",
              "device",
              "face",
              "document_number",
              "phone",
              "email",
              "address"
            ]
          },
          "subject_count": {
            "type": "integer"
          },
          "coverage": {
            "type": "number",
            "format": "float"
          },
          "is_hub": {
            "type": "boolean",
            "description": "सही जब यह सिग्नल असामान्य रूप से बड़ी संख्या में विषयों को लिंक करता है।"
          },
          "is_datacenter_ip": {
            "type": "boolean"
          },
          "is_high_collision_device": {
            "type": "boolean"
          },
          "node_status": {
            "type": "string",
            "enum": [
              "signal_active",
              "signal_guarded"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkNodeTag"
            }
          },
          "risk_evidence": {
            "type": "object"
          },
          "first_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "NetworkTimelineEvent": {
        "type": "object",
        "properties": {
          "event_type": {
            "type": "string",
            "description": "उदा. network_detected, signal_observed, network_in_review, network_resolved, network_dismissed।"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "label": {
            "type": "string"
          },
          "metadata": {
            "type": "object"
          }
        }
      },
      "NetworkMap": {
        "type": "object",
        "properties": {
          "network": {
            "$ref": "#/components/schemas/NetworkDetail"
          },
          "convergence_count": {
            "type": "integer",
            "description": "अलग-अलग पते/स्थान बिंदुओं की संख्या जहाँ सदस्य एकत्रित होते हैं।"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "points": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "country": {
                  "type": "string",
                  "nullable": true
                },
                "country_code": {
                  "type": "string",
                  "nullable": true
                },
                "city": {
                  "type": "string",
                  "nullable": true
                },
                "latitude": {
                  "type": "number",
                  "format": "float",
                  "nullable": true
                },
                "longitude": {
                  "type": "number",
                  "format": "float",
                  "nullable": true
                },
                "observed_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                }
              }
            }
          }
        }
      },
      "EntityNetworkMembership": {
        "type": "object",
        "properties": {
          "network": {
            "$ref": "#/components/schemas/NetworkListItem"
          },
          "subject": {
            "type": "object"
          },
          "signal_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ip_address",
                "device",
                "face",
                "document_number",
                "phone",
                "email",
                "address"
              ]
            }
          },
          "signal_count": {
            "type": "integer"
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_seen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "RiskSignals": {
        "type": "object",
        "description": "आपके एप्लिकेशन द्वारा देखा गया वैकल्पिक डिवाइस और नेटवर्क संदर्भ। सभी फ़ील्ड वैकल्पिक हैं। इन्हें पास करने से Networks में क्रॉस-सत्र मिलान डिटेक्शन को सहायता मिलती है।",
        "properties": {
          "ip": {
            "type": "string",
            "format": "ip",
            "description": "अंतिम उपयोगकर्ता के लिए देखा गया IPv4 या IPv6 पता।",
            "example": "192.0.2.1"
          },
          "device_id": {
            "type": "string",
            "maxLength": 255,
            "description": "आपके एप्लिकेशन द्वारा एकत्र किया गया स्थिर डिवाइस पहचानकर्ता (Android `ANDROID_ID`, iOS `identifierForVendor`)।"
          },
          "device_platform": {
            "type": "string",
            "enum": [
              "android",
              "ios",
              "ipados",
              "tvos",
              "web"
            ],
            "description": "अंतिम उपयोगकर्ता के डिवाइस का प्लेटफ़ॉर्म।"
          },
          "device_model": {
            "type": "string",
            "maxLength": 255,
            "description": "आपके एप्लिकेशन द्वारा रिपोर्ट किया गया डिवाइस मॉडल।"
          },
          "os_version": {
            "type": "string",
            "maxLength": 64,
            "description": "ऑपरेटिंग-सिस्टम संस्करण।"
          },
          "app_version": {
            "type": "string",
            "maxLength": 64,
            "description": "आपके एप्लिकेशन का संस्करण।"
          },
          "user_agent": {
            "type": "string",
            "maxLength": 512,
            "description": "ब्राउज़र या ऐप का user agent।"
          }
        }
      },
      "PhoneRiskRequest": {
        "type": "object",
        "required": [
          "phone_number"
        ],
        "properties": {
          "phone_number": {
            "type": "string",
            "maxLength": 20,
            "description": "स्कोर करने के लिए फ़ोन नंबर। इसे मान्य किया जाता है और E.164 में सामान्यीकृत किया जाता है।",
            "example": "+14155552671"
          },
          "country_code": {
            "type": "string",
            "maxLength": 3,
            "description": "इंटेलिजेंस कवरेज के लिए वैकल्पिक ISO 3166-1 alpha-2 या alpha-3 देश संकेत।",
            "example": "US"
          },
          "signals": {
            "$ref": "#/components/schemas/RiskSignals"
          },
          "vendor_data": {
            "type": "string",
            "description": "इस अनुरोध के लिए आपका स्थिर संदर्भ। API सत्र पर संग्रहीत और रिस्पॉन्स में लौटाया गया।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपका गैर-संवेदनशील JSON मेटाडेटा। API सत्र पर संग्रहीत और रिस्पॉन्स में दोहराया गया।"
          },
          "enable_social": {
            "type": "boolean",
            "default": false,
            "description": "true होने पर, नंबर के सोशल फ़ुटप्रिंट की भी खोज करें - मैसेजिंग, सोशल, ई-कॉमर्स और व्यावसायिक प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `phone_social` इकाई के रूप में बिल किया जाता है।",
            "example": true
          }
        }
      },
      "EmailRiskRequest": {
        "type": "object",
        "required": [
          "email"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "स्कोर करने के लिए ईमेल पता।",
            "example": "alice@example.com"
          },
          "country_code": {
            "type": "string",
            "maxLength": 3,
            "description": "इंटेलिजेंस कवरेज के लिए वैकल्पिक ISO 3166-1 alpha-2 या alpha-3 देश संकेत।",
            "example": "US"
          },
          "signals": {
            "$ref": "#/components/schemas/RiskSignals"
          },
          "vendor_data": {
            "type": "string",
            "description": "इस अनुरोध के लिए आपका स्थिर संदर्भ। API सत्र पर संग्रहीत और रिस्पॉन्स में लौटाया गया।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपका गैर-संवेदनशील JSON मेटाडेटा। API सत्र पर संग्रहीत और रिस्पॉन्स में दोहराया गया।"
          },
          "enable_social": {
            "type": "boolean",
            "default": false,
            "description": "true होने पर, पते के सोशल फ़ुटप्रिंट की भी खोज करें - ईमेल, सोशल, व्यावसायिक, ई-कॉमर्स और मनोरंजन प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। इस endpoint की अपनी कीमत के अतिरिक्त प्रति अनुरोध एक `email_social` इकाई के रूप में बिल किया जाता है।",
            "example": true
          }
        }
      },
      "IPRiskRequest": {
        "type": "object",
        "required": [
          "ip_address"
        ],
        "properties": {
          "ip_address": {
            "type": "string",
            "format": "ip",
            "description": "स्कोर करने के लिए IPv4 या IPv6 पता।",
            "example": "8.8.8.8"
          },
          "claimed_country": {
            "type": "string",
            "maxLength": 3,
            "description": "उपयोगकर्ता या सत्र द्वारा दावा किया गया वैकल्पिक ISO 3166-1 alpha-2 या alpha-3 देश। `country_mismatch` की गणना के लिए उपयोग किया जाता है।",
            "example": "ESP"
          },
          "user_agent": {
            "type": "string",
            "maxLength": 512,
            "description": "आपके बैकएंड द्वारा देखा गया यूज़र एजेंट। अनुरोध संदर्भ के रूप में संग्रहीत; यह डिवाइस फ़िंगरप्रिंटिंग प्रदान नहीं करता है।"
          },
          "vendor_data": {
            "type": "string",
            "description": "इस अनुरोध के लिए आपका स्थिर संदर्भ। API सत्र पर संग्रहीत और रिस्पॉन्स में लौटाया गया।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपका गैर-संवेदनशील JSON मेटाडेटा। API सत्र पर संग्रहीत और रिस्पॉन्स में दोहराया गया।"
          }
        }
      },
      "RiskWarning": {
        "type": "object",
        "required": [
          "feature",
          "risk",
          "log_type",
          "short_description",
          "long_description"
        ],
        "properties": {
          "feature": {
            "type": "string",
            "description": "सुविधा जिसने चेतावनी उत्पन्न की।"
          },
          "risk": {
            "type": "string",
            "description": "मशीन-पठनीय जोखिम कोड। समय के साथ नए मान जोड़े जा सकते हैं।"
          },
          "additional_data": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "जोखिम-विशिष्ट संदर्भ, या `null`।"
          },
          "log_type": {
            "type": "string",
            "enum": [
              "error",
              "warning",
              "information"
            ],
            "description": "निर्णय नियमों द्वारा उपयोग की जाने वाली गंभीरता।"
          },
          "short_description": {
            "type": "string",
            "description": "मानव-पठनीय एक पंक्ति का सारांश।"
          },
          "long_description": {
            "type": "string",
            "description": "मानव-पठनीय स्पष्टीकरण।"
          }
        }
      },
      "RiskLifecycleEvent": {
        "type": "object",
        "required": [
          "type",
          "timestamp",
          "details",
          "fee"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "मशीन-पठनीय इवेंट प्रकार। समय के साथ नए मान जोड़े जा सकते हैं।"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "जब इवेंट हुआ था।"
          },
          "details": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "इवेंट-विशिष्ट payload, या `null`।"
          },
          "fee": {
            "type": "number",
            "description": "इस इवेंट के लिए बिल की गई USD राशि।"
          }
        }
      },
      "PhoneMatchItem": {
        "type": "object",
        "description": "आपके एप्लिकेशन का एक अन्य सत्र जिसने भिन्न `vendor_data` के साथ समान फ़ोन नंबर का उपयोग किया।",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "उस अन्य सत्यापन का सत्र id जिसने इस फ़ोन नंबर का उपयोग किया था।"
          },
          "session_number": {
            "type": "integer",
            "description": "उस सत्र की मानव-पठनीय अनुक्रमिक संख्या।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "उस सत्र का `vendor_data`।"
          },
          "verification_date": {
            "type": "string",
            "description": "जब वह सत्र बनाया गया था (`YYYY-MM-DDTHH:MM:SSZ`)।"
          },
          "phone_number": {
            "type": "string",
            "description": "मिलान किया गया फ़ोन नंबर।"
          },
          "status": {
            "type": "string",
            "description": "उस सत्र की स्थिति (उदा., `Approved`, `Declined`, `In Progress`)।"
          },
          "is_blocklisted": {
            "type": "boolean",
            "description": "क्या फ़ोन नंबर आपके एप्लिकेशन की ब्लॉकलिस्ट में है।"
          },
          "api_service": {
            "type": "string",
            "nullable": true,
            "description": "API-प्रकार के सत्रों के लिए, इसे बनाने वाला स्टैंडअलोन API; नियमित सत्यापन सत्रों के लिए `null`।"
          },
          "source": {
            "type": "string",
            "description": "मिलान कहाँ पाया गया था। आमतौर पर `session`; किसी संगठन सूची प्रविष्टि के माध्यम से ब्लॉकलिस्ट हिट `list_entry` का उपयोग करता है।"
          }
        }
      },
      "EmailMatchItem": {
        "type": "object",
        "description": "आपके एप्लिकेशन का एक अन्य सत्र जिसने भिन्न `vendor_data` के साथ समान ईमेल पते का उपयोग किया।",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "उस अन्य सत्यापन का सत्र id जिसने इस ईमेल पते का उपयोग किया था।"
          },
          "session_number": {
            "type": "integer",
            "description": "उस सत्र की मानव-पठनीय अनुक्रमिक संख्या।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "उस सत्र का `vendor_data`।"
          },
          "verification_date": {
            "type": "string",
            "description": "जब वह सत्र बनाया गया था (`YYYY-MM-DDTHH:MM:SSZ`)।"
          },
          "email": {
            "type": "string",
            "description": "मिलान किया गया ईमेल पता।"
          },
          "status": {
            "type": "string",
            "description": "उस सत्र की स्थिति (उदा., `Approved`, `Declined`, `In Progress`)।"
          },
          "is_blocklisted": {
            "type": "boolean",
            "description": "क्या ईमेल पता आपके एप्लिकेशन की ब्लॉकलिस्ट में है।"
          },
          "api_service": {
            "type": "string",
            "nullable": true,
            "description": "API-प्रकार के सत्रों के लिए, इसे बनाने वाला स्टैंडअलोन API; नियमित सत्यापन सत्रों के लिए `null`।"
          },
          "source": {
            "type": "string",
            "description": "मिलान कहाँ पाया गया था। आमतौर पर `session`; किसी संगठन सूची प्रविष्टि के माध्यम से ब्लॉकलिस्ट हिट `list_entry` का उपयोग करता है।"
          }
        }
      },
      "PhoneIntelligence": {
        "type": "object",
        "description": "सामान्यीकृत फ़ोन-इंटेलिजेंस ब्लॉक। केवल तभी मौजूद होता है जब इस लुकअप के लिए इंटेलिजेंस ऐड-ऑन चला हो; मौजूद होने पर इसे समान मानों के साथ `enrichment` उपनाम के तहत भी दिखाया जाता है।",
        "properties": {
          "score": {
            "type": "number",
            "nullable": true,
            "description": "सामान्यीकृत 0-100 जोखिम स्कोर। उच्च मान अधिक जोखिम भरा होता है।"
          },
          "phone_type_risk": {
            "type": "string",
            "nullable": true,
            "description": "`Low`, `Medium` या `High`, स्कोर से निकाला गया।"
          },
          "phone_trust_index": {
            "type": "number",
            "nullable": true,
            "description": "स्कोर का व्युत्क्रम, उन डैशबोर्ड के लिए जो उच्च स्कोर को बेहतर मानते हैं।"
          },
          "network_stability_index": {
            "type": "number",
            "nullable": true,
            "description": "लाइन के नेटवर्क की स्थिरता।"
          },
          "is_disposable": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब नंबर डिस्पोज़ेबल या वर्चुअल प्रतीत होता हो।"
          },
          "is_ported": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब नंबर ने कैरियर बदल लिया हो।"
          },
          "is_recently_ported": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पोर्ट हाल ही में हुआ हो।"
          },
          "carrier_type": {
            "type": "string",
            "nullable": true,
            "description": "लुकअप द्वारा रिपोर्ट किया गया लाइन वर्गीकरण (उदा. `mobile`)।"
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "सिग्नल का स्थिर Didit पहचानकर्ता, उदाहरण के लिए `IR-5AC67A32`। अपारदर्शी: इसके आधार पर समूह बनाएँ और फ़िल्टर करें, इसे पार्स न करें।"
                },
                "value": {
                  "nullable": true,
                  "description": "जोखिम फ़्लैग के लिए (उदाहरण के लिए `voip`, `leaked`, `disposable`, `spam_trap`), इसका मान: एक बूलियन, एक स्तर या एक तिथि। स्कोर्ड कारण कोड के लिए नल।"
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "risk",
                    "trust"
                  ],
                  "description": "क्या सिग्नल ने जोखिम बढ़ाया या विश्वास जोड़ा।"
                },
                "message": {
                  "type": "string",
                  "description": "सिग्नल का मानव-पठनीय स्पष्टीकरण, अंग्रेज़ी में।"
                },
                "impact_level": {
                  "type": "string",
                  "nullable": true,
                  "description": "सिग्नल ने स्कोर को कितनी दृढ़ता से प्रभावित किया, उदाहरण के लिए `low`, `medium` या `high`।"
                }
              }
            },
            "description": "स्कोर की व्याख्या करने वाले सिग्नल, प्रत्येक एक स्थिर Didit कोड, एक दिशा, एक संदेश और एक प्रभाव स्तर के साथ। समय के साथ नए कोड दिखाई दे सकते हैं, इसलिए अज्ञात कोड को अस्वीकार न करें।"
          }
        }
      },
      "EmailIntelligence": {
        "type": "object",
        "description": "सामान्यीकृत ईमेल-इंटेलिजेंस ब्लॉक। केवल तभी मौजूद होता है जब इस ईमेल के लिए इंटेलिजेंस ऐड-ऑन चला हो; मौजूद होने पर इसे समान मानों के साथ `enrichment` उपनाम के रूप में भी दिखाया जाता है।",
        "properties": {
          "score": {
            "type": "number",
            "nullable": true,
            "description": "सामान्यीकृत 0-100 जोखिम स्कोर। उच्च मान अधिक जोखिम भरा होता है।"
          },
          "deliverable": {
            "type": "string",
            "nullable": true,
            "description": "डिलीवरी क्षमता बैंड (उदा., `high`)।"
          },
          "breach_risk_level": {
            "type": "string",
            "nullable": true,
            "description": "`Low`, `Medium` या `High`।"
          },
          "breach_risk_index": {
            "type": "number",
            "nullable": true,
            "description": "संख्यात्मक उल्लंघन-जोखिम सूचकांक।"
          },
          "is_recent_breach": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पता किसी हालिया ब्रीच में दिखाई देता है।"
          },
          "is_frequent_breached": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पता कई ब्रीच में दिखाई देता है।"
          },
          "is_disposable": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब डोमेन एक थ्रोअवे प्रदाता हो।"
          },
          "is_free_domain": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब डोमेन एक मुफ़्त मेल प्रदाता हो।"
          },
          "is_breached": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पता ज्ञात ब्रीच में दिखाई देता है।"
          },
          "no_of_breaches": {
            "type": "number",
            "nullable": true,
            "description": "इस पते को शामिल करने वाले ज्ञात डेटा उल्लंघनों की संख्या।"
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "description": "सिग्नल का स्थिर Didit पहचानकर्ता, उदाहरण के लिए `IR-5AC67A32`। अपारदर्शी: इसके आधार पर समूह बनाएँ और फ़िल्टर करें, इसे पार्स न करें।"
                },
                "value": {
                  "nullable": true,
                  "description": "जोखिम फ़्लैग के लिए (उदाहरण के लिए `voip`, `leaked`, `disposable`, `spam_trap`), इसका मान: एक बूलियन, एक स्तर या एक तिथि। स्कोर्ड कारण कोड के लिए नल।"
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "risk",
                    "trust"
                  ],
                  "description": "क्या सिग्नल ने जोखिम बढ़ाया या विश्वास जोड़ा।"
                },
                "message": {
                  "type": "string",
                  "description": "सिग्नल का मानव-पठनीय स्पष्टीकरण, अंग्रेज़ी में।"
                },
                "impact_level": {
                  "type": "string",
                  "nullable": true,
                  "description": "सिग्नल ने स्कोर को कितनी दृढ़ता से प्रभावित किया, उदाहरण के लिए `low`, `medium` या `high`।"
                }
              }
            },
            "description": "स्कोर की व्याख्या करने वाले सिग्नल, प्रत्येक एक स्थिर Didit कोड, एक दिशा, एक संदेश और एक प्रभाव स्तर के साथ। समय के साथ नए कोड दिखाई दे सकते हैं, इसलिए अज्ञात कोड को अस्वीकार न करें।"
          }
        }
      },
      "IPRiskResult": {
        "type": "object",
        "description": "IP जोखिम परिणाम। अलग-अलग एनरिचमेंट फ़ील्ड `null` हो सकते हैं जब लुकअप से कोई उपयोगी डेटा न मिला हो।",
        "required": [
          "status",
          "threat"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "In Review"
            ],
            "description": "`In Review` जब निर्धारित देश का `claimed_country` के साथ टकराव हो, या जब पता VPN, Tor, या डेटा-सेंटर इंफ्रास्ट्रक्चर से जुड़ा हो। अन्यथा `Approved`।"
          },
          "ip_address": {
            "type": "string",
            "nullable": true,
            "description": "स्कोर किया गया पता। जब किसी संवर्धन स्रोत ने उपयोगी डेटा नहीं लौटाया तो `null`।"
          },
          "ip_country": {
            "type": "string",
            "nullable": true,
            "description": "रिज़ॉल्व किया गया देश का नाम।"
          },
          "ip_country_code": {
            "type": "string",
            "nullable": true,
            "description": "रिज़ॉल्व किया गया देश कोड। देशों के रॉ स्ट्रिंग्स की स्वयं तुलना करने के बजाय `country_mismatch` के माध्यम से तुलना करें।"
          },
          "ip_state": {
            "type": "string",
            "nullable": true,
            "description": "रिज़ॉल्व किया गया राज्य या क्षेत्र।"
          },
          "ip_city": {
            "type": "string",
            "nullable": true,
            "description": "रिज़ॉल्व किया गया शहर।"
          },
          "latitude": {
            "type": "number",
            "nullable": true,
            "description": "अनुमानित नेटवर्क भौगोलिक स्थिति, कोई सटीक डिवाइस स्थान नहीं।"
          },
          "longitude": {
            "type": "number",
            "nullable": true,
            "description": "अनुमानित नेटवर्क भौगोलिक स्थिति, कोई सटीक डिवाइस स्थान नहीं।"
          },
          "isp": {
            "type": "string",
            "nullable": true,
            "description": "पते पर सेवा देने वाला इंटरनेट सेवा प्रदाता।"
          },
          "organization": {
            "type": "string",
            "nullable": true,
            "description": "एड्रेस ब्लॉक का स्वामित्व रखने वाला संगठन।"
          },
          "is_vpn_or_tor": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पता VPN या Tor इंफ्रास्ट्रक्चर से संबद्ध हो।"
          },
          "is_data_center": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब पता किसी होस्टिंग या डेटा-सेंटर नेटवर्क का हो।"
          },
          "time_zone": {
            "type": "string",
            "nullable": true,
            "description": "हल किए गए स्थान का टाइम ज़ोन।"
          },
          "time_zone_offset": {
            "type": "string",
            "nullable": true,
            "description": "निर्धारित स्थान का UTC ऑफ़सेट।"
          },
          "asn_number": {
            "type": "number",
            "nullable": true,
            "description": "ऑटोनोमस सिस्टम नंबर।"
          },
          "asn_organization": {
            "type": "string",
            "nullable": true,
            "description": "ऑटोनॉमस सिस्टम को संचालित करने वाला संगठन।"
          },
          "connection_type": {
            "type": "string",
            "nullable": true,
            "description": "कनेक्शन वर्गीकरण (उदा., `cellular`, `hosting`)।"
          },
          "carrier": {
            "type": "string",
            "nullable": true,
            "description": "जब पता मोबाइल नेटवर्क पर हो, तब मोबाइल कैरियर।"
          },
          "proxy_type": {
            "type": "string",
            "nullable": true,
            "description": "जब पता किसी प्रॉक्सी के पीछे हो तो प्रॉक्सी वर्गीकरण।"
          },
          "claimed_country": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा भेजे गए `claimed_country` का इको।"
          },
          "country_mismatch": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब हल किया गया देश `claimed_country` से भिन्न हो। `null` जब कोई संवर्धन डेटा या कोई दावा किया गया देश उपलब्ध न हो।"
          },
          "threat": {
            "type": "object",
            "additionalProperties": true,
            "description": "एनरिचमेंट स्रोत से फ़्री-फ़ॉर्म नेटवर्क-खतरे के साक्ष्य (उदा., `is_proxy`, `is_tor`)। कोई एनरिचमेंट डेटा उपलब्ध न होने पर खाली ऑब्जेक्ट। इसे नैदानिक विवरण मानें, स्थिर अनुबंध नहीं।"
          }
        }
      },
      "PhoneRiskResponse": {
        "type": "object",
        "required": [
          "request_id",
          "status",
          "created_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस अनुरोध के लिए बनाए गए API सत्र की Id। यदि आपको बाद के webhook इवेंट या कंसोल गतिविधि के साथ परिणाम को सहसंबंधित करने की आवश्यकता है, तो इसे `vendor_data` के साथ संग्रहीत करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "In Review",
              "Declined"
            ],
            "description": "इस API सत्र के लिए अंतिम निर्णय। आमतौर पर `Approved`; जोखिम मूल्यांकन `In Review` या `Declined` उत्पन्न कर सकता है।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा भेजे गए `vendor_data` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपके द्वारा भेजे गए `metadata` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस रिस्पॉन्स का टाइमस्टैम्प।"
          },
          "phone": {
            "type": "object",
            "description": "सामान्यीकृत फ़ोन रिपोर्ट, वही ब्लॉक जो फ़ोन सत्यापन रिस्पॉन्स द्वारा उपयोग किया जाता है।",
            "required": [
              "status"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "Approved",
                  "In Review",
                  "Declined"
                ],
                "description": "इस फ़ोन नंबर के लिए निर्णय। शीर्ष-स्तरीय `status` को दर्शाता है।"
              },
              "phone_number_prefix": {
                "type": "string",
                "description": "शुरुआती `+` के साथ देश का कॉलिंग कोड (उदा., `+1`)।",
                "example": "+1"
              },
              "phone_number": {
                "type": "string",
                "description": "देश के कॉलिंग कोड के बिना राष्ट्रीय नंबर।",
                "example": "4155552671"
              },
              "full_number": {
                "type": "string",
                "description": "E.164 प्रारूप में पूरा नंबर।",
                "example": "+14155552671"
              },
              "country_code": {
                "type": "string",
                "nullable": true,
                "description": "नंबर का ISO 3166-1 alpha-2 देश।",
                "example": "US"
              },
              "country_name": {
                "type": "string",
                "description": "`country_code` से प्राप्त देश का पूरा नाम।",
                "example": "United States"
              },
              "carrier": {
                "type": "object",
                "nullable": true,
                "description": "नंबर को सेवा प्रदान करने वाला वर्तमान नेटवर्क। `null` जब लुकअप किसी कैरियर को रिज़ॉल्व नहीं कर सका।",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "कैरियर का नाम। जब लुकअप इसे पहचान नहीं सका तो खाली स्ट्रिंग।"
                  },
                  "type": {
                    "type": "string",
                    "description": "लुकअप द्वारा रिपोर्ट किया गया लाइन प्रकार: `mobile`, `fixed_line`, `voip`, `isp`, `vpn`, `toll_free`, `premium_rate`, या समान।"
                  }
                }
              },
              "is_disposable": {
                "type": "boolean",
                "description": "`true` जब नंबर किसी अस्थायी या बर्नर नंबर सेवा से संबंधित हो।"
              },
              "is_virtual": {
                "type": "boolean",
                "description": "`true` जब लाइन का प्रकार वर्चुअल हो (`voip`, `isp`, या `vpn`)।"
              },
              "verification_method": {
                "type": "string",
                "nullable": true,
                "description": "अंतर्निहित सत्यापन का OTP चैनल। जोखिम लुकअप के लिए `null`, जो कभी कोड नहीं भेजते हैं।"
              },
              "verification_attempts": {
                "type": "integer",
                "description": "इस नंबर के लिए भेजे गए OTP। जोखिम लुकअप के लिए `0`।"
              },
              "verified_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "नंबर को अंतिम बार OTP द्वारा कब सत्यापित किया गया था। जोखिम लुकअप के लिए `null`।"
              },
              "warnings": {
                "type": "array",
                "description": "इस अनुरोध के लिए रिकॉर्ड की गई जोखिम चेतावनियां। कोई न होने पर खाली ऐरे।",
                "items": {
                  "$ref": "#/components/schemas/RiskWarning"
                }
              },
              "lifecycle": {
                "type": "array",
                "description": "अनुरोध का कालानुक्रमिक ऑडिट ट्रेल। जिन जोखिम लुकअप में सेंड इवेंट नहीं हैं, उनके लिए खाली ऐरे।",
                "items": {
                  "$ref": "#/components/schemas/RiskLifecycleEvent"
                }
              },
              "matches": {
                "type": "array",
                "description": "आपके एप्लिकेशन के अन्य सत्र जहाँ एक अलग उपयोगकर्ता (अलग `vendor_data`) द्वारा समान फ़ोन नंबर का उपयोग किया गया था। अधिकतम 5 प्रविष्टियाँ। कोई मिलान न होने पर खाली ऐरे।",
                "items": {
                  "$ref": "#/components/schemas/PhoneMatchItem"
                }
              },
              "phone_intelligence": {
                "$ref": "#/components/schemas/PhoneIntelligence"
              },
              "enrichment": {
                "$ref": "#/components/schemas/PhoneIntelligence"
              },
              "phone_social": {
                "$ref": "#/components/schemas/PhoneSocialFootprint"
              }
            }
          }
        }
      },
      "EmailRiskResponse": {
        "type": "object",
        "required": [
          "request_id",
          "status",
          "created_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस अनुरोध के लिए बनाए गए API सत्र की Id। यदि आपको बाद के webhook इवेंट या कंसोल गतिविधि के साथ परिणाम को सहसंबंधित करने की आवश्यकता है, तो इसे `vendor_data` के साथ संग्रहीत करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "In Review",
              "Declined"
            ],
            "description": "इस API सत्र के लिए अंतिम निर्णय। आमतौर पर `Approved`; जोखिम मूल्यांकन `In Review` या `Declined` उत्पन्न कर सकता है।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा भेजे गए `vendor_data` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपके द्वारा भेजे गए `metadata` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस रिस्पॉन्स का टाइमस्टैम्प।"
          },
          "email": {
            "type": "object",
            "description": "सामान्यीकृत ईमेल रिपोर्ट, वही ब्लॉक जो ईमेल सत्यापन रिस्पॉन्स द्वारा उपयोग किया जाता है।",
            "required": [
              "status",
              "email",
              "is_breached",
              "breaches",
              "is_disposable",
              "is_undeliverable"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "Approved",
                  "In Review",
                  "Declined"
                ],
                "description": "इस ईमेल पते के लिए निर्णय। शीर्ष-स्तरीय `status` को दर्शाता है।"
              },
              "email": {
                "type": "string",
                "description": "स्कोर किया गया पता।",
                "example": "alice@example.com"
              },
              "is_breached": {
                "type": "boolean",
                "description": "क्या पता किसी ज्ञात क्रेडेंशियल उल्लंघन में दिखाई देता है।"
              },
              "breaches": {
                "type": "array",
                "description": "इस पते वाले अधिकतम 5 सबसे हालिया ज्ञात डेटा उल्लंघन। जब `is_breached` मान `false` हो तो खाली ऐरे।",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "उल्लंघन पहचानकर्ता।"
                    },
                    "domain": {
                      "type": "string",
                      "description": "उल्लंघन से प्रभावित सेवा का डोमेन।"
                    },
                    "breach_date": {
                      "type": "string",
                      "format": "date",
                      "description": "उल्लंघन होने की तारीख।"
                    },
                    "breach_emails_count": {
                      "type": "integer",
                      "description": "उल्लंघन में उजागर हुए खातों की कुल संख्या।"
                    },
                    "description": {
                      "type": "string",
                      "description": "उल्लंघन का मानव-पठनीय विवरण (HTML मार्कअप हो सकता है)।"
                    },
                    "logo_path": {
                      "type": "string",
                      "description": "उल्लंघित सेवा के लोगो का URL।"
                    },
                    "data_classes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "उजागर किए गए डेटा की श्रेणियां, snake_case में (उदा., `email_addresses`, `passwords`)।"
                    },
                    "is_verified": {
                      "type": "boolean",
                      "description": "क्या उल्लंघन को वैध के रूप में सत्यापित किया गया है।"
                    }
                  }
                }
              },
              "is_disposable": {
                "type": "boolean",
                "description": "क्या डोमेन किसी थ्रोअवे प्रदाता से संबंधित है।"
              },
              "is_undeliverable": {
                "type": "boolean",
                "description": "क्या पता डिलीवर न किया जा सकने वाला पाया गया।"
              },
              "verification_attempts": {
                "type": "integer",
                "description": "इस पते के लिए भेजे गए OTP। जोखिम लुकअप के लिए `0`।"
              },
              "verified_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब पते को अंतिम बार OTP द्वारा सत्यापित किया गया था। जोखिम लुकअप के लिए `null`।"
              },
              "warnings": {
                "type": "array",
                "description": "इस अनुरोध के लिए रिकॉर्ड की गई जोखिम चेतावनियां। कोई न होने पर खाली ऐरे।",
                "items": {
                  "$ref": "#/components/schemas/RiskWarning"
                }
              },
              "lifecycle": {
                "type": "array",
                "description": "अनुरोध का कालानुक्रमिक ऑडिट ट्रेल। उन जोखिम लुकअप के लिए खाली ऐरे जिनमें सेंड नहीं हैं।",
                "items": {
                  "$ref": "#/components/schemas/RiskLifecycleEvent"
                }
              },
              "matches": {
                "type": "array",
                "description": "आपके एप्लिकेशन के अन्य सत्र जहाँ एक अलग उपयोगकर्ता (अलग `vendor_data`) द्वारा समान ईमेल पते का उपयोग किया गया था। अधिकतम 5 प्रविष्टियाँ। कोई मिलान न होने पर खाली ऐरे।",
                "items": {
                  "$ref": "#/components/schemas/EmailMatchItem"
                }
              },
              "email_intelligence": {
                "$ref": "#/components/schemas/EmailIntelligence"
              },
              "enrichment": {
                "$ref": "#/components/schemas/EmailIntelligence"
              },
              "email_social": {
                "$ref": "#/components/schemas/EmailSocialFootprint"
              }
            }
          }
        }
      },
      "IPRiskResponse": {
        "type": "object",
        "required": [
          "request_id",
          "status",
          "created_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस अनुरोध के लिए बनाए गए API सत्र की Id। यदि आपको बाद के webhook इवेंट या कंसोल गतिविधि के साथ परिणाम को सहसंबंधित करने की आवश्यकता है, तो इसे `vendor_data` के साथ संग्रहीत करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "In Review"
            ],
            "description": "इस API सत्र के लिए निर्णय: नेटवर्क या देश-बेमेल जोखिम पर `In Review`, अन्यथा `Approved`।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा भेजे गए `vendor_data` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपके द्वारा भेजे गए `metadata` का इको, जब आपने इसे नहीं भेजा हो तो `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस रिस्पॉन्स का टाइमस्टैम्प।"
          },
          "ip": {
            "type": "object",
            "description": "IP जोखिम परिणाम। अलग-अलग एनरिचमेंट फ़ील्ड `null` हो सकते हैं जब लुकअप से कोई उपयोगी डेटा न मिला हो।",
            "required": [
              "status",
              "threat"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "Approved",
                  "In Review"
                ],
                "description": "`In Review` जब निर्धारित देश का `claimed_country` के साथ टकराव हो, या जब पता VPN, Tor, या डेटा-सेंटर इंफ्रास्ट्रक्चर से जुड़ा हो। अन्यथा `Approved`।"
              },
              "ip_address": {
                "type": "string",
                "nullable": true,
                "description": "स्कोर किया गया पता। जब किसी संवर्धन स्रोत ने उपयोगी डेटा नहीं लौटाया तो `null`।"
              },
              "ip_country": {
                "type": "string",
                "nullable": true,
                "description": "रिज़ॉल्व किया गया देश का नाम।"
              },
              "ip_country_code": {
                "type": "string",
                "nullable": true,
                "description": "रिज़ॉल्व किया गया देश कोड। देशों के रॉ स्ट्रिंग्स की स्वयं तुलना करने के बजाय `country_mismatch` के माध्यम से तुलना करें।"
              },
              "ip_state": {
                "type": "string",
                "nullable": true,
                "description": "रिज़ॉल्व किया गया राज्य या क्षेत्र।"
              },
              "ip_city": {
                "type": "string",
                "nullable": true,
                "description": "रिज़ॉल्व किया गया शहर।"
              },
              "latitude": {
                "type": "number",
                "nullable": true,
                "description": "अनुमानित नेटवर्क भौगोलिक स्थिति, कोई सटीक डिवाइस स्थान नहीं।"
              },
              "longitude": {
                "type": "number",
                "nullable": true,
                "description": "अनुमानित नेटवर्क भौगोलिक स्थिति, कोई सटीक डिवाइस स्थान नहीं।"
              },
              "isp": {
                "type": "string",
                "nullable": true,
                "description": "पते पर सेवा देने वाला इंटरनेट सेवा प्रदाता।"
              },
              "organization": {
                "type": "string",
                "nullable": true,
                "description": "एड्रेस ब्लॉक का स्वामित्व रखने वाला संगठन।"
              },
              "is_vpn_or_tor": {
                "type": "boolean",
                "nullable": true,
                "description": "`true` जब पता VPN या Tor इंफ्रास्ट्रक्चर से संबद्ध हो।"
              },
              "is_data_center": {
                "type": "boolean",
                "nullable": true,
                "description": "`true` जब पता किसी होस्टिंग या डेटा-सेंटर नेटवर्क का हो।"
              },
              "time_zone": {
                "type": "string",
                "nullable": true,
                "description": "हल किए गए स्थान का टाइम ज़ोन।"
              },
              "time_zone_offset": {
                "type": "string",
                "nullable": true,
                "description": "निर्धारित स्थान का UTC ऑफ़सेट।"
              },
              "asn_number": {
                "type": "number",
                "nullable": true,
                "description": "ऑटोनोमस सिस्टम नंबर।"
              },
              "asn_organization": {
                "type": "string",
                "nullable": true,
                "description": "ऑटोनॉमस सिस्टम को संचालित करने वाला संगठन।"
              },
              "connection_type": {
                "type": "string",
                "nullable": true,
                "description": "कनेक्शन वर्गीकरण (उदा., `cellular`, `hosting`)।"
              },
              "carrier": {
                "type": "string",
                "nullable": true,
                "description": "जब पता मोबाइल नेटवर्क पर हो, तब मोबाइल कैरियर।"
              },
              "proxy_type": {
                "type": "string",
                "nullable": true,
                "description": "जब पता किसी प्रॉक्सी के पीछे हो तो प्रॉक्सी वर्गीकरण।"
              },
              "claimed_country": {
                "type": "string",
                "nullable": true,
                "description": "आपके द्वारा भेजे गए `claimed_country` का इको।"
              },
              "country_mismatch": {
                "type": "boolean",
                "nullable": true,
                "description": "`true` जब हल किया गया देश `claimed_country` से भिन्न हो। `null` जब कोई संवर्धन डेटा या कोई दावा किया गया देश उपलब्ध न हो।"
              },
              "threat": {
                "type": "object",
                "additionalProperties": true,
                "description": "एनरिचमेंट स्रोत से फ़्री-फ़ॉर्म नेटवर्क-खतरे के साक्ष्य (उदा., `is_proxy`, `is_tor`)। कोई एनरिचमेंट डेटा उपलब्ध न होने पर खाली ऑब्जेक्ट। इसे नैदानिक विवरण मानें, स्थिर अनुबंध नहीं।"
              }
            }
          }
        }
      },
      "SocialFootprintPlatform": {
        "type": "object",
        "properties": {
          "platform": {
            "type": "string",
            "description": "प्लेटफ़ॉर्म पहचानकर्ता।",
            "example": "whatsapp"
          },
          "category": {
            "type": "string",
            "description": "प्लेटफ़ॉर्म श्रेणी, उदाहरण के लिए MESSAGING, SOCIAL_MEDIA, ECOMMERCE, PROFESSIONAL, EMAIL_PROVIDER।",
            "example": "MESSAGING"
          },
          "scope": {
            "type": "string",
            "enum": [
              "global",
              "local"
            ],
            "description": "विश्वव्यापी प्लेटफ़ॉर्म के लिए `global`, क्षेत्र-विशिष्ट प्लेटफ़ॉर्म के लिए `local`।",
            "example": "global"
          }
        }
      },
      "SocialFootprintCategorySummary": {
        "type": "object",
        "properties": {
          "registered": {
            "type": "integer",
            "nullable": true,
            "description": "इस श्रेणी के वे प्लेटफ़ॉर्म जहाँ पंजीकरण की पुष्टि हो गई है।",
            "example": 2
          },
          "ratio": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "description": "श्रेणी के जाँचे गए प्लेटफ़ॉर्म का पंजीकरण सहित हिस्सा, 0.0-1.0।",
            "example": 0.6667
          }
        }
      },
      "SocialFootprintProfile": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "प्रोफ़ाइल का नाम, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।"
          },
          "photo": {
            "type": "string",
            "nullable": true,
            "description": "प्रोफ़ाइल फ़ोटो URL, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।"
          },
          "about": {
            "type": "string",
            "nullable": true,
            "description": "प्रोफ़ाइल का अबाउट/बायो टेक्स्ट, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।"
          },
          "privacy_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "PUBLIC",
              "PRIVATE",
              null
            ],
            "description": "प्रोफ़ाइल दृश्यता, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।"
          },
          "business_account": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या प्रोफ़ाइल एक व्यावसायिक खाता है, जब प्लेटफ़ॉर्म इसे प्रदर्शित करता है।"
          }
        }
      },
      "PhoneSocialFootprint": {
        "type": "object",
        "nullable": true,
        "description": "फ़ोन नंबर का सोशल फ़ुटप्रिंट: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। केवल तभी मौजूद होता है जब `enable_social` सेट किया गया था और जांच पूरी हो गई थी। प्रत्येक संख्या शून्य हो सकती है यदि इसके लिए कोई डेटा वापस नहीं आया। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जांच की गई थी और उनमें से किसी पर भी फ़ोन नंबर नहीं मिला - एक मान्य, बिल योग्य उत्तर और एक सामान्य सिंथेटिक-पहचान संकेत।",
        "properties": {
          "profiles_registered": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जहाँ फ़ोन नंबर के पंजीकृत होने की पुष्टि हुई है।",
            "example": 5
          },
          "profiles_checked": {
            "type": "integer",
            "nullable": true,
            "description": "पंजीकरण के लिए मूल्यांकन किए गए प्लेटफ़ॉर्म।",
            "example": 14
          },
          "names_found": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जिन्होंने संबद्ध नाम लौटाया।",
            "example": 0
          },
          "photos_found": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जिन्होंने प्रोफ़ाइल फ़ोटो लौटाई।",
            "example": 0
          },
          "communication_breadth": {
            "type": "integer",
            "nullable": true,
            "description": "संचार प्लेटफ़ॉर्म जिनमें उपस्थिति का पता चला है।",
            "example": 2
          },
          "digital_footprint_diversity": {
            "type": "integer",
            "nullable": true,
            "description": "संसूचित उपस्थिति वाली विशिष्ट प्लेटफ़ॉर्म श्रेणियां।",
            "example": 5
          },
          "digital_sophistication_index": {
            "type": "integer",
            "nullable": true,
            "description": "कंपोजिट डिजिटल-परिपक्वता संकेतक, 0-10।",
            "example": 5
          },
          "engagement_depth_index": {
            "type": "integer",
            "nullable": true,
            "description": "प्रोफ़ाइल-समृद्धि संकेतक, 0-10।",
            "example": 3
          },
          "subscription_affordability_index": {
            "type": "integer",
            "nullable": true,
            "description": "निःशुल्क बनाम सशुल्क प्लेटफ़ॉर्म मिक्स, 0-10।",
            "example": 2
          },
          "free_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "निःशुल्क प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 4
          },
          "full_paid_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "पूरी तरह से भुगतान वाले प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 0
          },
          "partial_paid_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "फ़्रीमियम प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 1
          },
          "whatsapp_profile_completeness": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Basic",
              "Partial",
              "Complete",
              "Not Present",
              null
            ],
            "description": "WhatsApp प्रोफ़ाइल की पूर्णता। केवल फ़ोन; ईमेल के लिए null।",
            "example": "Partial"
          },
          "registered_platforms": {
            "type": "array",
            "description": "वे प्लेटफ़ॉर्म जहाँ पंजीकरण की पुष्टि हुई है।",
            "items": {
              "$ref": "#/components/schemas/SocialFootprintPlatform"
            }
          },
          "not_registered_platforms": {
            "type": "array",
            "description": "नकारात्मक परिणाम के साथ जाँचे गए प्लेटफ़ॉर्म।",
            "items": {
              "$ref": "#/components/schemas/SocialFootprintPlatform"
            }
          },
          "categories": {
            "type": "object",
            "description": "प्रति प्लेटफ़ॉर्म श्रेणी पंजीकृत संख्या और अनुपात।",
            "additionalProperties": {
              "$ref": "#/components/schemas/SocialFootprintCategorySummary"
            }
          },
          "profiles": {
            "type": "object",
            "description": "प्रति-प्लेटफ़ॉर्म प्रोफ़ाइल विवरण, प्लेटफ़ॉर्म द्वारा की-बद्ध, जब प्लेटफ़ॉर्म उन्हें प्रदर्शित करता है।",
            "additionalProperties": {
              "$ref": "#/components/schemas/SocialFootprintProfile"
            }
          }
        }
      },
      "EmailSocialFootprint": {
        "type": "object",
        "nullable": true,
        "description": "ईमेल पते का सोशल फ़ुटप्रिंट: वे ऑनलाइन प्लेटफ़ॉर्म जिन पर यह पंजीकृत है। केवल तभी मौजूद होता है जब `enable_social` सेट किया गया था और जांच पूरी हो गई थी। प्रत्येक संख्या शून्य हो सकती है यदि इसके लिए कोई डेटा वापस नहीं आया। `profiles_registered: 0` का अर्थ है कि प्लेटफ़ॉर्म की जांच की गई थी और उनमें से किसी पर भी ईमेल पता नहीं मिला - एक मान्य, बिल योग्य उत्तर और एक सामान्य सिंथेटिक-पहचान संकेत।",
        "properties": {
          "profiles_registered": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जहाँ ईमेल पते के पंजीकृत होने की पुष्टि हुई है।",
            "example": 5
          },
          "profiles_checked": {
            "type": "integer",
            "nullable": true,
            "description": "पंजीकरण के लिए मूल्यांकन किए गए प्लेटफ़ॉर्म।",
            "example": 14
          },
          "names_found": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जिन्होंने संबद्ध नाम लौटाया।",
            "example": 0
          },
          "photos_found": {
            "type": "integer",
            "nullable": true,
            "description": "वे प्लेटफ़ॉर्म जिन्होंने प्रोफ़ाइल फ़ोटो लौटाई।",
            "example": 0
          },
          "communication_breadth": {
            "type": "integer",
            "nullable": true,
            "description": "संचार प्लेटफ़ॉर्म जिनमें उपस्थिति का पता चला है।",
            "example": 2
          },
          "digital_footprint_diversity": {
            "type": "integer",
            "nullable": true,
            "description": "संसूचित उपस्थिति वाली विशिष्ट प्लेटफ़ॉर्म श्रेणियां।",
            "example": 5
          },
          "digital_sophistication_index": {
            "type": "integer",
            "nullable": true,
            "description": "कंपोजिट डिजिटल-परिपक्वता संकेतक, 0-10।",
            "example": 5
          },
          "engagement_depth_index": {
            "type": "integer",
            "nullable": true,
            "description": "प्रोफ़ाइल-समृद्धि संकेतक, 0-10।",
            "example": 3
          },
          "subscription_affordability_index": {
            "type": "integer",
            "nullable": true,
            "description": "निःशुल्क बनाम सशुल्क प्लेटफ़ॉर्म मिक्स, 0-10।",
            "example": 2
          },
          "free_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "निःशुल्क प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 4
          },
          "full_paid_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "पूरी तरह से भुगतान वाले प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 0
          },
          "partial_paid_platforms": {
            "type": "integer",
            "nullable": true,
            "description": "फ़्रीमियम प्लेटफ़ॉर्म पर पंजीकरण।",
            "example": 1
          },
          "whatsapp_profile_completeness": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Basic",
              "Partial",
              "Complete",
              "Not Present",
              null
            ],
            "description": "WhatsApp प्रोफ़ाइल की पूर्णता। केवल फ़ोन; ईमेल के लिए null।",
            "example": "Partial"
          },
          "registered_platforms": {
            "type": "array",
            "description": "वे प्लेटफ़ॉर्म जहाँ पंजीकरण की पुष्टि हुई है।",
            "items": {
              "$ref": "#/components/schemas/SocialFootprintPlatform"
            }
          },
          "not_registered_platforms": {
            "type": "array",
            "description": "नकारात्मक परिणाम के साथ जाँचे गए प्लेटफ़ॉर्म।",
            "items": {
              "$ref": "#/components/schemas/SocialFootprintPlatform"
            }
          },
          "categories": {
            "type": "object",
            "description": "प्रति प्लेटफ़ॉर्म श्रेणी पंजीकृत संख्या और अनुपात।",
            "additionalProperties": {
              "$ref": "#/components/schemas/SocialFootprintCategorySummary"
            }
          },
          "profiles": {
            "type": "object",
            "description": "प्रति-प्लेटफ़ॉर्म प्रोफ़ाइल विवरण, प्लेटफ़ॉर्म द्वारा की-बद्ध, जब प्लेटफ़ॉर्म उन्हें प्रदर्शित करता है।",
            "additionalProperties": {
              "$ref": "#/components/schemas/SocialFootprintProfile"
            }
          }
        }
      },
      "KYBRegistryAddress": {
        "type": "object",
        "description": "एक पता जो रजिस्ट्री बताती है, प्रत्येक देश और रजिस्ट्री स्रोत के लिए समान संरचना में। प्रत्येक कुंजी हमेशा मौजूद होती है; वह भाग जिसे रजिस्ट्री प्रकाशित नहीं करती है, null होता है।",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true,
            "description": "लोअरकेस में पते का प्रकार: पंजीकृत कार्यालय के लिए `registered`; अन्य प्रकार जैसा कि रजिस्ट्री उन्हें नाम देती है (उदाहरण के लिए `postal`, `office`)। जब रजिस्ट्री यह नहीं बताती कि पता क्या है, तब `null`।"
          },
          "address": {
            "type": "string",
            "description": "एक पंक्ति के रूप में पूरा पता। प्रत्येक पते पर हमेशा मौजूद रहता है।"
          },
          "street": {
            "type": "string",
            "nullable": true,
            "description": "सड़क और संख्या।"
          },
          "city": {
            "type": "string",
            "nullable": true,
            "description": "शहर या इलाका।"
          },
          "postal_code": {
            "type": "string",
            "nullable": true,
            "description": "डाक कोड।"
          },
          "region": {
            "type": "string",
            "nullable": true,
            "description": "क्षेत्र, राज्य या प्रांत।"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "ISO 3166-1 alpha-2 देश कोड।"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "पते के लिए रजिस्ट्री का अपना लेबल, जब वह कोई लेबल प्रदान करती है।"
          }
        },
        "required": [
          "type",
          "address",
          "street",
          "city",
          "postal_code",
          "region",
          "country_code",
          "description"
        ]
      },
      "KYBRegistryIndustry": {
        "type": "object",
        "description": "एक गतिविधि जिसके तहत रजिस्ट्री कंपनी को वर्गीकृत करती है, प्रत्येक देश और रजिस्ट्री स्रोत के लिए समान संरचना में।",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true,
            "description": "गतिविधि कोड जैसा कि रजिस्ट्री इसे प्रिंट करती है (उदाहरण के लिए `73110`)।"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "description": "गतिविधि लेबल, जब रजिस्ट्री इसे प्रकाशित करती है।"
          },
          "scheme": {
            "type": "string",
            "nullable": true,
            "description": "वर्गीकरण प्रणाली, प्रत्येक प्रणाली के लिए एक नाम, चाहे जिस भी स्रोत ने इसे रिपोर्ट किया हो: `UK SIC 2007`, `US SIC`, `NACE Rev. 2`, `NACE Rev. 2.1`, `NAF Rev. 2`, `CNAE`, `SBI`, `NOGA 2008`, `CAE Rev. 4`, `Canada SIC 1977`; अन्य राष्ट्रीय प्रणालियां रजिस्ट्री का अपना नाम बनाए रखती हैं। जब रजिस्ट्री प्रणाली का नाम नहीं देती है, तो Null।"
          },
          "is_primary": {
            "type": "boolean",
            "description": "कंपनी की मुख्य गतिविधि के लिए True। सूची खाली न होने पर ठीक एक प्रविष्टि प्राथमिक होती है।"
          }
        },
        "required": [
          "code",
          "description",
          "scheme",
          "is_primary"
        ]
      },
      "KYBRegistryShareholding": {
        "type": "object",
        "nullable": true,
        "description": "स्वामी के पास क्या धारिता है, प्रत्येक देश और रजिस्ट्री स्रोत के लिए समान स्वरूप में। जब रजिस्ट्री में किसी धारिता का उल्लेख न हो तो Null। एक बैंड (उदाहरण के लिए UK PSC का 25-50%) हिस्सेदारी नहीं है: `percentage` null है और बैंड `ownership_min_shares` / `ownership_max_shares` में रहता है।",
        "properties": {
          "share_class": {
            "type": "string",
            "nullable": true,
            "description": "शेयर वर्ग या प्रकार जैसा कि रजिस्ट्री में नामित है।"
          },
          "number_of_shares": {
            "type": "number",
            "nullable": true,
            "description": "धारित शेयरों की संख्या।"
          },
          "currency": {
            "type": "string",
            "nullable": true,
            "description": "नीचे दिए गए मानों की ISO 4217 करेंसी।"
          },
          "nominal_value": {
            "type": "number",
            "nullable": true,
            "description": "प्रति शेयर अंकित मूल्य।"
          },
          "total_value": {
            "type": "number",
            "nullable": true,
            "description": "होल्डिंग का कुल मूल्य।"
          },
          "percentage": {
            "type": "number",
            "nullable": true,
            "description": "दशमलव के चार स्थानों तक प्रतिशत में सटीक हिस्सेदारी।"
          }
        },
        "required": [
          "share_class",
          "number_of_shares",
          "currency",
          "nominal_value",
          "total_value",
          "percentage"
        ]
      },
      "KYBRegistryOwnership": {
        "type": "object",
        "description": "स्वामित्व (शेयरधारक / UBO) स्तर का परिणाम, प्रत्येक देश और रजिस्ट्री स्रोत के लिए समान प्रारूप में।",
        "properties": {
          "status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not_requested",
              "pending",
              "delivered",
              "not_held",
              "unavailable",
              null
            ],
            "description": "`delivered` जब रजिस्ट्री ने स्वामित्व प्रकाशित किया; `not_held` जब स्वामित्व रजिस्ट्री ने उत्तर दिया और कंपनी को बिल्कुल भी सूचीबद्ध नहीं करती है (`unavailable_reason` देखें); `unavailable` जब इसने किसी अन्य कारण से स्वामित्व डेटा प्रदान नहीं किया (`unavailable_reason` देखें); `pending` जबकि रजिस्ट्री अभी भी इसे प्राप्त कर रही है; Basic स्तर के लिए `not_requested`।"
          },
          "tier_requested": {
            "type": "string",
            "nullable": true,
            "enum": [
              "basic",
              "shareholders",
              "ubo",
              null
            ],
            "description": "वर्कफ़्लो द्वारा ऑर्डर किया गया स्तर।"
          },
          "tier_delivered": {
            "type": "string",
            "nullable": true,
            "enum": [
              "basic",
              "shareholders",
              "ubo",
              null
            ],
            "description": "वह स्तर जो रजिस्ट्री ने डिलीवर किया है (और जिसे बिल किया जाता है)। केवल प्रत्यक्ष शेयरधारकों के साथ उत्तर दिया गया UBO अनुरोध `shareholders` होता है।"
          },
          "unavailable_reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "no_owners_on_record",
              "no_natural_person_owner",
              "ownership_section_unavailable",
              "company_not_found",
              "ambiguous_company_match",
              "missing_registration_number",
              "entity_type_not_covered",
              "provider_unavailable",
              "other",
              null
            ],
            "description": "अनुरोधित स्वामित्व स्तर क्यों डिलीवर नहीं किया गया। जब तक `status`, `unavailable` या `pending` न हो, तब तक Null।"
          },
          "direct_ownership_complete": {
            "type": "boolean",
            "nullable": true,
            "description": "True जब प्रत्यक्ष शेयरधारकों के घोषित हिस्से कुल मिलाकर 100% होते हैं (राउंडिंग के एक प्रतिशत बिंदु के भीतर); false जब वे ऐसा नहीं करते हैं; null जब स्वामित्व डिलीवर नहीं किया गया था या कोई हिस्सा घोषित नहीं है।"
          },
          "unresolved": {
            "type": "array",
            "description": "स्वामित्व शृंखला के वे भाग जिन्हें रजिस्ट्री हल नहीं कर सकी, उदाहरण के लिए प्रत्यक्ष स्वामियों के ऊपर रिकॉर्ड में कोई समूह संरचना न होना।",
            "items": {
              "type": "object",
              "properties": {
                "reason": {
                  "type": "string"
                },
                "section": {
                  "type": "string",
                  "nullable": true
                }
              }
            }
          }
        },
        "required": [
          "status",
          "tier_requested",
          "tier_delivered",
          "unavailable_reason",
          "direct_ownership_complete",
          "unresolved"
        ]
      },
      "KYBRegistryData": {
        "type": "object",
        "nullable": true,
        "description": "कंपनी के लिए Didit का सामान्यीकृत रजिस्ट्री विवरण: स्वामित्व परिणाम (`ownership_error`, `section_errors`, `ubo_resolution`, `lite_enrichment`), update-data के साथ किए गए सुधार, और रजिस्ट्री तथ्य जिनका अपना कोई फ़ील्ड नहीं है। इसमें कभी भी रजिस्ट्री स्रोत का अपना रिकॉर्ड शामिल नहीं होता है। प्रत्येक कुंजी वैकल्पिक है और केवल तभी मौजूद होती है जब कंपनी के पास इसके लिए कोई मान हो; नई कुंजियाँ जोड़ी जा सकती हैं। उनके अंतर्गत आने वाली किसी भी चीज़ के लिए कैनोनिकल फ़ील्ड (`addresses`, `industries`, `ownership`, `beneficial_owners[].shareholding`) पढ़ें।",
        "properties": {
          "company_name": {
            "type": "string",
            "description": "कंपनी का नाम जैसा कि कंसोल में ठीक किया गया है।"
          },
          "registration_number": {
            "type": "string",
            "description": "पंजीकरण संख्या जैसा कि रजिस्ट्री या कंसोल सुधार में बताया गया है।"
          },
          "country_code": {
            "type": "string",
            "description": "पंजीकरण का देश, जैसा कि रजिस्ट्री या कंसोल सुधार में बताया गया है।"
          },
          "region": {
            "type": "string",
            "description": "पंजीकरण का क्षेत्र या राज्य।"
          },
          "incorporation_date": {
            "type": "string",
            "description": "निगमन तिथि (ISO 8601)।"
          },
          "registration_date": {
            "type": "string",
            "description": "पंजीकरण तिथि (ISO 8601) जब रजिस्ट्री इसे निगमन तिथि से अलग बताती है।"
          },
          "dissolution_date": {
            "type": "string",
            "description": "विघटन तिथि (ISO 8601) जब रजिस्ट्री में उल्लिखित हो।"
          },
          "tax_number": {
            "type": "string",
            "description": "कर पहचान संख्या।"
          },
          "vat_number": {
            "type": "string",
            "description": "VAT नंबर।"
          },
          "legal_address": {
            "type": "string",
            "description": "कंसोल में सही किया गया कानूनी पता।"
          },
          "registered_address": {
            "type": "string",
            "description": "रजिस्ट्री में जैसा दर्ज है, वैसा पंजीकृत पता।"
          },
          "company_type": {
            "type": "string",
            "description": "कानूनी रूप।"
          },
          "registry_status": {
            "type": "string",
            "description": "रजिस्ट्री में कंपनी की स्थिति।"
          },
          "verification_status": {
            "type": "string",
            "description": "सत्यापन स्थिति।"
          },
          "alternative_names": {
            "type": "string",
            "description": "अन्य नाम जिनसे कंपनी कारोबार करती है या करती थी।"
          },
          "nature_of_business": {
            "type": "string",
            "description": "गतिविधि विवरण।"
          },
          "registered_capital": {
            "type": "string",
            "description": "मुद्रित रूप में पंजीकृत पूंजी।"
          },
          "registered_capital_amount": {
            "type": "string",
            "description": "पंजीकृत पूंजी राशि, दशमलव स्ट्रिंग के रूप में।"
          },
          "registered_capital_currency": {
            "type": "string",
            "description": "पंजीकृत पूंजी की मुद्रा (ISO 4217)।"
          },
          "website": {
            "type": "string",
            "description": "वेबसाइट।"
          },
          "email": {
            "type": "string",
            "description": "संपर्क ईमेल।"
          },
          "phone": {
            "type": "string",
            "description": "संपर्क फ़ोन।"
          },
          "legal_entity_identifier": {
            "type": "string",
            "description": "लीगल एंटिटी आइडेंटिफ़ायर (LEI)।"
          },
          "location_of_registration": {
            "type": "string",
            "description": "पंजीकरण का स्थान।"
          },
          "control_scheme": {
            "type": "string",
            "description": "गवर्नेंस योजना जब रजिस्ट्री इसे प्रदर्शित करती है।"
          },
          "ownership_error": {
            "type": "string",
            "enum": [
              "no_owners_on_record",
              "no_natural_person_owner",
              "ownership_section_unavailable",
              "company_not_found",
              "ambiguous_company_match",
              "missing_registration_number",
              "entity_type_not_covered",
              "provider_unavailable",
              "other"
            ],
            "description": "अनुरोधित स्वामित्व स्तर क्यों डिलीवर नहीं किया गया, `ownership.unavailable_reason` के समान कोड में। `no_owners_on_record` (रजिस्ट्री ने उत्तर दिया और किसी स्वामी का नाम नहीं दिया) और `ownership_section_unavailable` (रजिस्ट्री ने स्वामित्व अनुभाग नहीं लौटाया) अलग-अलग निष्कर्ष हैं।"
          },
          "section_errors": {
            "type": "object",
            "description": "वे अनुभाग जो रजिस्ट्री ने नहीं लौटाए, अनुभाग के आधार पर कुंजीबद्ध (`officers`, `shareholders`, `group_structure`)। यहाँ सूचीबद्ध अनुभाग कभी डिलीवर नहीं किया गया था: इसके आगे की खाली सूची कंपनी के बारे में कुछ नहीं बताती।",
            "additionalProperties": {
              "$ref": "#/components/schemas/KYBRegistrySectionError"
            }
          },
          "ubo_resolution": {
            "$ref": "#/components/schemas/KYBRegistryUboResolution"
          },
          "lite_enrichment": {
            "$ref": "#/components/schemas/KYBRegistryLiteEnrichment"
          },
          "registry_metadata": {
            "type": "object",
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "कंपनी के लिए रजिस्ट्री के अपने फ़ील्ड, रजिस्ट्री में दिए गए उनके नामों के अनुसार, सादे मानों के रूप में (लीगेसी रिकॉर्ड)। केवल रजिस्ट्री तथ्यों के रूप में समीक्षा किए गए फ़ील्ड शामिल हैं।"
          },
          "registry_sources": {
            "type": "array",
            "description": "आधिकारिक रजिस्टर जिनसे रिकॉर्ड पढ़ा गया था (लीगेसी रिकॉर्ड)। अन्य स्रोतों के नाम नहीं दिए गए हैं।",
            "items": {
              "$ref": "#/components/schemas/KYBRegistrySource"
            }
          },
          "previous_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "वे नाम जिनके तहत कंपनी पहले पंजीकृत थी (लीगेसी रिकॉर्ड्स)।"
          },
          "parent_companies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "मूल कंपनियाँ जिनका नाम रजिस्ट्री में दर्ज है (लेगेसी रिकॉर्ड)।"
          },
          "documents_available": {
            "type": "integer",
            "description": "कंपनी के लिए रजिस्ट्री कितनी फाइलिंग प्रदान करती है (लेगेसी रिकॉर्ड्स)।"
          }
        }
      },
      "KYBRegistryGroupCompany": {
        "type": "object",
        "description": "कॉर्पोरेट समूह की एक कंपनी, उसकी रजिस्ट्री पहचान द्वारा।",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "कंपनी का नाम।"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "पंजीकरण का देश।"
          },
          "registration_number": {
            "type": "string",
            "nullable": true,
            "description": "पंजीकरण संख्या।"
          }
        },
        "required": [
          "name",
          "country_code",
          "registration_number"
        ]
      },
      "KYBRegistryUboResolution": {
        "type": "object",
        "description": "UBO स्तर ने कंपनी के ऊपर स्वामित्व श्रृंखला को कैसे पार किया।",
        "properties": {
          "parent_chain": {
            "type": "array",
            "description": "अंतिम मूल कंपनी से लेकर कंपनी तक के कॉर्पोरेट पैरेंट्स।",
            "items": {
              "$ref": "#/components/schemas/KYBRegistryGroupCompany"
            }
          },
          "subsidiaries": {
            "type": "array",
            "description": "कंपनी के कॉर्पोरेट समूह में सीधे उसके नीचे की कंपनियाँ।",
            "items": {
              "$ref": "#/components/schemas/KYBRegistryGroupCompany"
            }
          },
          "unresolved": {
            "type": "array",
            "description": "शृंखला के वे भाग जिन्हें रजिस्ट्री हल नहीं कर सकी (`ownership.unresolved` के समान प्रविष्टियाँ)।",
            "items": {
              "type": "object",
              "properties": {
                "reason": {
                  "type": "string",
                  "description": "कारण, उदाहरण के लिए `no_group_structure_on_record`, `selected_company_not_in_group_structure` या `section_error`।"
                },
                "section": {
                  "type": "string",
                  "nullable": true,
                  "description": "संबंधित अनुभाग, उदाहरण के लिए `group_structure`।"
                }
              },
              "required": [
                "reason",
                "section"
              ]
            }
          }
        },
        "required": [
          "parent_chain",
          "subsidiaries",
          "unresolved"
        ]
      },
      "KYBRegistrySectionError": {
        "type": "object",
        "description": "एक ऐसा अनुभाग जिसे रजिस्ट्री ने वापस नहीं किया।",
        "properties": {
          "status_code": {
            "type": "integer",
            "nullable": true,
            "description": "वह स्थिति जो रजिस्ट्री ने अनुभाग के लिए उत्तर में दी।"
          }
        },
        "required": [
          "status_code"
        ]
      },
      "KYBRegistryLiteEnrichment": {
        "type": "object",
        "description": "खाली Lite प्रोफ़ाइल फ़ील्ड जिन्हें देश के किसी अन्य रजिस्ट्री स्रोत ने भरा है। स्रोत का नाम नहीं दिया गया है।",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "कंपनी के वे फ़ील्ड जो भरे गए थे।"
          },
          "people_added": {
            "type": "integer",
            "description": "कितने अधिकारियों या स्वामियों को जोड़ा गया।"
          }
        },
        "required": [
          "fields",
          "people_added"
        ]
      },
      "KYBRegistrySource": {
        "type": "object",
        "description": "एक आधिकारिक रजिस्टर जिससे रिकॉर्ड पढ़ा गया था। केवल आधिकारिक सरकारी रजिस्टरों, नियामकों और आधिकारिक पहचानकर्ता प्रणाली का नाम दिया गया है; किसी अन्य स्रोत को छोड़ दिया गया है।",
        "properties": {
          "name": {
            "type": "string",
            "description": "रजिस्टर का नाम, उदाहरण के लिए `UK Companies House`।"
          },
          "source_type": {
            "type": "string",
            "enum": [
              "official"
            ],
            "description": "हमेशा `official`।"
          }
        },
        "required": [
          "name",
          "source_type"
        ]
      },
      "KYBOwnershipStructure": {
        "type": "object",
        "nullable": true,
        "description": "रजिस्ट्री द्वारा प्रमाणित कैप टेबल, जैसा कि यह स्वामित्व स्तर डिलीवर किए जाने के समय मौजूद था: प्रत्यक्ष `shareholders` और `beneficial_owners`। जब रजिस्ट्री ने किसी स्वामित्व को प्रमाणित नहीं किया तो Null। यह कभी भी रजिस्ट्री स्रोत की अपनी पंक्तियाँ नहीं रखता है; वर्तमान रिकॉर्ड के लिए `company.beneficial_owners` और `company.ownership` पढ़ें।",
        "properties": {
          "shareholders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KYBOwnershipStructureOwner"
            }
          },
          "beneficial_owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KYBOwnershipStructureOwner"
            }
          }
        },
        "required": [
          "shareholders",
          "beneficial_owners"
        ]
      },
      "KYBOwnershipStructureOwner": {
        "type": "object",
        "description": "स्वामित्व स्नैपशॉट का एक स्वामी: वही रजिस्ट्री पहचान और हिस्सेदारी जो `company.beneficial_owners[]` में है, और इसका कैनोनिकल `shareholding`।",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true,
            "description": "मालिक का नाम जैसा कि रजिस्ट्री में दर्ज है।"
          },
          "first_name": {
            "type": "string",
            "nullable": true,
            "description": "प्राकृतिक व्यक्ति के लिए पहला नाम, जब रजिस्ट्री में यह निर्दिष्ट हो।"
          },
          "last_name": {
            "type": "string",
            "nullable": true,
            "description": "कुलनाम, एक प्राकृतिक व्यक्ति के लिए, जब रजिस्ट्री इसे स्पष्ट करती है।"
          },
          "date_of_birth": {
            "type": "string",
            "nullable": true,
            "description": "जन्म तिथि (ISO 8601) जब रजिस्ट्री इसे प्रकाशित करती है।"
          },
          "country_of_birth": {
            "type": "string",
            "nullable": true,
            "description": "जन्म का देश, जब रजिस्ट्री इसे प्रकाशित करती है।"
          },
          "company_name": {
            "type": "string",
            "nullable": true,
            "description": "कॉर्पोरेट स्वामी के लिए कंपनी का नाम।"
          },
          "registration_number": {
            "type": "string",
            "nullable": true,
            "description": "कॉर्पोरेट स्वामी के लिए पंजीकरण संख्या।"
          },
          "entity_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "person",
              "company",
              null
            ],
            "description": "क्या स्वामी कोई प्राकृतिक व्यक्ति है या कंपनी।"
          },
          "nationality": {
            "type": "string",
            "nullable": true,
            "description": "राष्ट्रीयता जब रजिस्ट्री में इसका उल्लेख हो।"
          },
          "designation": {
            "type": "string",
            "nullable": true,
            "description": "स्वामी का पद या भूमिका जैसा कि रजिस्ट्री में दर्ज है।"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "प्रत्यक्ष धारक के लिए `shareholder`, वास्तविक स्वामी के लिए `ubo`।"
          },
          "ownership_min_shares": {
            "type": "string",
            "nullable": true,
            "description": "हिस्सेदारी की निचली सीमा, प्रतिशत में (सटीक हिस्सेदारी के लिए ऊपरी सीमा के बराबर)।"
          },
          "ownership_max_shares": {
            "type": "string",
            "nullable": true,
            "description": "हिस्सेदारी की ऊपरी सीमा, प्रतिशत में।"
          },
          "voting_min_shares": {
            "type": "string",
            "nullable": true,
            "description": "मतदान अधिकारों की निचली सीमा, प्रतिशत में।"
          },
          "voting_max_shares": {
            "type": "string",
            "nullable": true,
            "description": "मतदान अधिकारों की ऊपरी सीमा, प्रतिशत में।"
          },
          "appointment_date": {
            "type": "string",
            "nullable": true,
            "description": "होल्डिंग या नियुक्ति शुरू होने की तारीख (ISO 8601)।"
          },
          "is_active": {
            "type": "boolean",
            "nullable": true,
            "description": "पूर्व स्वामी के लिए False।"
          },
          "shareholding": {
            "$ref": "#/components/schemas/KYBRegistryShareholding"
          }
        },
        "required": [
          "name",
          "first_name",
          "last_name",
          "date_of_birth",
          "country_of_birth",
          "company_name",
          "registration_number",
          "entity_type",
          "nationality",
          "designation",
          "roles",
          "ownership_min_shares",
          "ownership_max_shares",
          "voting_min_shares",
          "voting_max_shares",
          "appointment_date",
          "is_active",
          "shareholding"
        ]
      },
      "DigitalIdWalletApiWalletVerificationError": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "मशीन द्वारा पठनीय स्थिर कोड, उदाहरण के लिए wallet_unavailable।"
          },
          "detail": {
            "type": "string"
          }
        },
        "required": [
          "detail",
          "error"
        ]
      },
      "DigitalIdWalletApiWalletVerificationStartForbidden": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DigitalIdWalletApiClientCredentialsForbiddenErrorMessage"
          },
          {
            "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
          }
        ]
      },
      "DigitalIdWalletApiClientCredentialsForbiddenErrorMessage": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "default": "Forbidden - User doesn't have permission"
          }
        }
      },
      "DigitalIdWalletApiWalletVerificationStartBadRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationError"
          },
          {
            "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationFieldErrors"
          }
        ]
      },
      "DigitalIdWalletApiWalletVerificationFieldErrors": {
        "type": "object",
        "description": "अनुरोध सत्यापन त्रुटियाँ: प्रत्येक अस्वीकृत फ़ील्ड अपने संदेशों के साथ।",
        "additionalProperties": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "DigitalIdWalletApiWalletVerificationResponse": {
        "type": "object",
        "description": "एक स्टैंडअलोन वॉलेट सत्यापन, जैसा कि प्रत्येक वॉलेट endpoint उत्तर देता है।",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "wallet_verification": {
            "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResult"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "शुरुआत में भेजा गया मेटाडेटा ऑब्जेक्ट, या null।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "created_at",
          "metadata",
          "request_id",
          "vendor_data",
          "wallet_verification"
        ]
      },
      "DigitalIdWalletApiWalletVerificationResult": {
        "type": "object",
        "properties": {
          "wallet": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiWallet"
              }
            ],
            "readOnly": true
          },
          "country": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "description": "लंबित रहने के दौरान समाप्त नहीं हुआ (Not Finished), फिर स्वीकृत (सत्यापित) या अस्वीकृत।"
          },
          "outcome": {
            "$ref": "#/components/schemas/DigitalIdWalletApiWalletVerificationResultOutcomeEnum"
          },
          "error": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "interaction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiInteractionEnum"
              }
            ],
            "readOnly": true
          },
          "simulated": {
            "type": "boolean",
            "readOnly": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "next_action": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletNextAction"
              }
            ],
            "nullable": true,
            "readOnly": true
          },
          "identity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletIdentity"
              }
            ],
            "nullable": true,
            "readOnly": true
          },
          "attributes": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "readOnly": true
          },
          "level_of_assurance": {
            "type": "string",
            "nullable": true
          },
          "verified_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "signature_valid": {
            "type": "boolean",
            "nullable": true,
            "description": "क्रेडेंशियल के हस्ताक्षर सत्यापित होने के बाद True; सिम्युलेटेड के लिए null।"
          },
          "credential_type": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "attributes",
          "country",
          "credential_type",
          "error",
          "expires_at",
          "identity",
          "interaction",
          "level_of_assurance",
          "next_action",
          "outcome",
          "signature_valid",
          "simulated",
          "status",
          "verified_at",
          "wallet"
        ]
      },
      "DigitalIdWalletApiWalletIdentity": {
        "type": "object",
        "properties": {
          "full_name": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "date_of_birth": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "nationality": {
            "type": "string",
            "nullable": true,
            "description": "ISO3 राष्ट्रीयता, केवल तभी जब वॉलेट किसी राष्ट्रीयता का दावा करता है (कभी अनुमान नहीं लगाया जाता)।"
          },
          "issuing_state": {
            "type": "string",
            "description": "ISO3 देश जिसकी प्रणाली के अंतर्गत पहचान जारी की गई है।"
          }
        },
        "required": [
          "date_of_birth",
          "first_name",
          "full_name",
          "issuing_state",
          "last_name",
          "nationality"
        ]
      },
      "DigitalIdWalletApiWalletNextAction": {
        "type": "object",
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletNextActionTypeEnum"
              }
            ],
            "description": "redirect: उपयोगकर्ता के ब्राउज़र को url पर भेजें। confirm_in_app: उपयोगकर्ता को verification_code दिखाएं, जो जांचता है कि यह उनके वॉलेट ऐप के कोड से मेल खाता है और वहां पुष्टि करता है; फिर पोल करें। request_digital_credential: जिस ऑरिजिन से आपने शुरुआत की थी, उस पर उपयोगकर्ता जेस्चर में, digital_credentials.request के साथ वॉलेट से अनुरोध करें, फिर जो यह लौटाता है उसे POST .../verifications/{request_id}/response/ पर भेजें।\n\n* `redirect` - redirect\n* `confirm_in_app` - confirm_in_app\n* `request_digital_credential` - request_digital_credential"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "केवल redirect: जहां उपयोगकर्ता वॉलेट से साइन इन करता है।"
          },
          "digital_credentials": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiWalletDigitalCredentialsRequest"
              }
            ],
            "description": "केवल request_digital_credential: वॉलेट को सौंपने का अनुरोध।"
          },
          "verification_code": {
            "type": "string",
            "description": "केवल confirm_in_app: 4-अंकीय तुलना कोड जिसे वॉलेट ऐप भी दिखाता है।"
          },
          "poll_interval_seconds": {
            "type": "integer",
            "description": "केवल confirm_in_app: त्वरित फ़ीडबैक के लिए कितनी बार POST .../verifications/{request_id}/poll/ को कॉल करना है। Didit पृष्ठभूमि में लंबित साइन-इन को भी पोल करता है, इसलिए यदि आप पोल नहीं करते हैं तब भी webhook परिणाम की रिपोर्ट करता है।"
          }
        },
        "required": [
          "type"
        ]
      },
      "DigitalIdWalletApiWalletNextActionTypeEnum": {
        "enum": [
          "redirect",
          "confirm_in_app",
          "request_digital_credential"
        ],
        "type": "string",
        "description": "* `redirect` - redirect\n* `confirm_in_app` - confirm_in_app\n* `request_digital_credential` - request_digital_credential"
      },
      "DigitalIdWalletApiInteractionEnum": {
        "enum": [
          "redirect",
          "in_app",
          "digital_credentials"
        ],
        "type": "string",
        "description": "* `redirect` - redirect\n* `in_app` - in_app\n* `digital_credentials` - digital_credentials"
      },
      "DigitalIdWalletApiWalletVerificationResultOutcomeEnum": {
        "enum": [
          "pending",
          "verified",
          "cancelled",
          "timeout",
          "failed"
        ],
        "type": "string",
        "description": "* `pending` - लंबित\n* `verified` - सत्यापित\n* `cancelled` - उपयोगकर्ता द्वारा रद्द किया गया\n* `timeout` - टाइम आउट\n* `failed` - विफल"
      },
      "DigitalIdWalletApiWallet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "वॉलेट का कैटलॉग id, उदा. bankid_se।"
          },
          "name": {
            "type": "string"
          },
          "issuing_authority": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "id",
          "issuing_authority",
          "name"
        ]
      },
      "DigitalIdWalletApiEudiWalletVerificationStartRequest": {
        "type": "object",
        "description": "EUDI Wallet सत्यापन (AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE, ISL, LIE, NOR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiEudiWalletVerificationStartCountryEnum"
              }
            ],
            "description": "EUDI Wallet पहचान का ISO 3166-1 alpha-3 देश।\n\n* `AUT` - AUT\n* `BEL` - BEL\n* `BGR` - BGR\n* `HRV` - HRV\n* `CYP` - CYP\n* `CZE` - CZE\n* `DNK` - DNK\n* `EST` - EST\n* `FIN` - FIN\n* `FRA` - FRA\n* `DEU` - DEU\n* `GRC` - GRC\n* `HUN` - HUN\n* `IRL` - IRL\n* `ITA` - ITA\n* `LVA` - LVA\n* `LTU` - LTU\n* `LUX` - LUX\n* `MLT` - MLT\n* `NLD` - NLD\n* `POL` - POL\n* `PRT` - PRT\n* `ROU` - ROU\n* `SVK` - SVK\n* `SVN` - SVN\n* `ESP` - ESP\n* `SWE` - SWE\n* `ISL` - ISL\n* `LIE` - LIE\n* `NOR` - NOR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "country",
          "return_url"
        ]
      },
      "DigitalIdWalletApiDeviceEnum": {
        "enum": [
          "same_device",
          "cross_device"
        ],
        "type": "string",
        "description": "* `same_device` - same_device\n* `cross_device` - cross_device"
      },
      "DigitalIdWalletApiEudiWalletVerificationStartCountryEnum": {
        "enum": [
          "AUT",
          "BEL",
          "BGR",
          "HRV",
          "CYP",
          "CZE",
          "DNK",
          "EST",
          "FIN",
          "FRA",
          "DEU",
          "GRC",
          "HUN",
          "IRL",
          "ITA",
          "LVA",
          "LTU",
          "LUX",
          "MLT",
          "NLD",
          "POL",
          "PRT",
          "ROU",
          "SVK",
          "SVN",
          "ESP",
          "SWE",
          "ISL",
          "LIE",
          "NOR"
        ],
        "type": "string",
        "description": "* `AUT` - AUT\n* `BEL` - BEL\n* `BGR` - BGR\n* `HRV` - HRV\n* `CYP` - CYP\n* `CZE` - CZE\n* `DNK` - DNK\n* `EST` - EST\n* `FIN` - FIN\n* `FRA` - FRA\n* `DEU` - DEU\n* `GRC` - GRC\n* `HUN` - HUN\n* `IRL` - IRL\n* `ITA` - ITA\n* `LVA` - LVA\n* `LTU` - LTU\n* `LUX` - LUX\n* `MLT` - MLT\n* `NLD` - NLD\n* `POL` - POL\n* `PRT` - PRT\n* `ROU` - ROU\n* `SVK` - SVK\n* `SVN` - SVN\n* `ESP` - ESP\n* `SWE` - SWE\n* `ISL` - ISL\n* `LIE` - LIE\n* `NOR` - NOR"
      },
      "DigitalIdWalletApiConnectidWalletVerificationStartRequest": {
        "type": "object",
        "description": "ConnectID सत्यापन (AUS) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiConnectidWalletVerificationStartCountryEnum"
              }
            ],
            "default": "AUS",
            "description": "ConnectID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से AUS है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `AUS` - AUS"
          },
          "authorisation_server_id": {
            "type": "string",
            "minLength": 1,
            "description": "ConnectID के बैंक चयनकर्ता के साथ चयनित प्राधिकरण सर्वर ID। सैंडबॉक्स डिफ़ॉल्ट रूप से Mock Bank A पर सेट होता है।",
            "maxLength": 36
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiConnectidWalletVerificationStartCountryEnum": {
        "enum": [
          "AUS"
        ],
        "type": "string",
        "description": "* `AUS` - AUS"
      },
      "DigitalIdWalletApiAudkenniWalletVerificationStartRequest": {
        "type": "object",
        "description": "Auðkenni सत्यापन (ISL) प्रारंभ करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiAudkenniWalletVerificationStartCountryEnum"
              }
            ],
            "default": "ISL",
            "description": "Auðkenni पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से ISL है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `ISL` - ISL"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiAudkenniWalletVerificationStartCountryEnum": {
        "enum": [
          "ISL"
        ],
        "type": "string",
        "description": "* `ISL` - ISL"
      },
      "DigitalIdWalletApiFranceconnectWalletVerificationStartRequest": {
        "type": "object",
        "description": "FranceConnect सत्यापन (FRA) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiFranceconnectWalletVerificationStartCountryEnum"
              }
            ],
            "default": "FRA",
            "description": "FranceConnect पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से FRA है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `FRA` - FRA"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiFranceconnectWalletVerificationStartCountryEnum": {
        "enum": [
          "FRA"
        ],
        "type": "string",
        "description": "* `FRA` - FRA"
      },
      "DigitalIdWalletApiDiiaWalletVerificationStartRequest": {
        "type": "object",
        "description": "Diia सत्यापन (UKR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDiiaWalletVerificationStartCountryEnum"
              }
            ],
            "default": "UKR",
            "description": "Diia पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से UKR है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `UKR` - UKR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiDiiaWalletVerificationStartCountryEnum": {
        "enum": [
          "UKR"
        ],
        "type": "string",
        "description": "* `UKR` - UKR"
      },
      "DigitalIdWalletApiMojeidWalletVerificationStartRequest": {
        "type": "object",
        "description": "MojeID सत्यापन (CZE) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryE2dEnum"
              }
            ],
            "default": "CZE",
            "description": "MojeID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से CZE होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `CZE` - CZE"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiCountryE2dEnum": {
        "enum": [
          "CZE"
        ],
        "type": "string",
        "description": "* `CZE` - CZE"
      },
      "DigitalIdWalletApiBankidCzWalletVerificationStartRequest": {
        "type": "object",
        "description": "Bank iD सत्यापन (CZE) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryE2dEnum"
              }
            ],
            "default": "CZE",
            "description": "Bank iD पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से CZE है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `CZE` - CZE"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiEparakstsMobileWalletVerificationStartRequest": {
        "type": "object",
        "description": "eParaksts mobile सत्यापन (LVA) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiEparakstsMobileWalletVerificationStartCountryEnum"
              }
            ],
            "default": "LVA",
            "description": "eParaksts mobile पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से LVA होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `LVA` - LVA"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiEparakstsMobileWalletVerificationStartCountryEnum": {
        "enum": [
          "LVA"
        ],
        "type": "string",
        "description": "* `LVA` - LVA"
      },
      "DigitalIdWalletApiIdcardEeWalletVerificationStartRequest": {
        "type": "object",
        "description": "एस्टोनियाई ID कार्ड सत्यापन (EST) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdcardEeWalletVerificationStartCountryEnum"
              }
            ],
            "default": "EST",
            "description": "Estonian ID-card पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से EST है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `EST` - EST"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiIdcardEeWalletVerificationStartCountryEnum": {
        "enum": [
          "EST"
        ],
        "type": "string",
        "description": "* `EST` - EST"
      },
      "DigitalIdWalletApiMobileIdWalletVerificationStartRequest": {
        "type": "object",
        "description": "Mobile-ID सत्यापन (EST, LTU) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum"
              }
            ],
            "description": "Mobile-ID पहचान का ISO 3166-1 alpha-3 देश।\n\n* `EST` - EST\n* `LTU` - LTU"
          },
          "personal_code": {
            "type": "string",
            "minLength": 1,
            "description": "उपयोगकर्ता का राष्ट्रीय व्यक्तिगत पहचान कोड। यह उपयोगकर्ता के Mobile-ID ऐप को संबोधित करता है; उपयोगकर्ता तुलना कोड की पुष्टि करता है और ऐप में अपना PIN दर्ज करता है। PIN कभी एकत्र न करें।",
            "pattern": "^[0-9-]{6,20}$"
          },
          "phone_number": {
            "type": "string",
            "minLength": 1,
            "description": "E.164 प्रारूप (+372... या +370...) में Mobile-ID फ़ोन नंबर।",
            "maxLength": 16
          }
        },
        "required": [
          "country",
          "personal_code",
          "phone_number"
        ]
      },
      "DigitalIdWalletApiMobileIdWalletVerificationStartCountryEnum": {
        "enum": [
          "EST",
          "LTU"
        ],
        "type": "string",
        "description": "* `EST` - EST\n* `LTU` - LTU"
      },
      "DigitalIdWalletApiSmartIdWalletVerificationStartRequest": {
        "type": "object",
        "description": "Smart-ID सत्यापन (EST, LVA, LTU, BEL) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum"
              }
            ],
            "description": "Smart-ID पहचान का ISO 3166-1 alpha-3 देश।\n\n* `EST` - EST\n* `LVA` - LVA\n* `LTU` - LTU\n* `BEL` - BEL"
          },
          "personal_code": {
            "type": "string",
            "minLength": 1,
            "description": "उपयोगकर्ता का राष्ट्रीय व्यक्तिगत पहचान कोड। यह उपयोगकर्ता के Smart-ID ऐप को संबोधित करता है; उपयोगकर्ता तुलना कोड की पुष्टि करता है और ऐप में अपना PIN दर्ज करता है। PIN कभी एकत्र न करें।",
            "pattern": "^[0-9-]{6,20}$"
          }
        },
        "required": [
          "country",
          "personal_code"
        ]
      },
      "DigitalIdWalletApiSmartIdWalletVerificationStartCountryEnum": {
        "enum": [
          "EST",
          "LVA",
          "LTU",
          "BEL"
        ],
        "type": "string",
        "description": "* `EST` - EST\n* `LVA` - LVA\n* `LTU` - LTU\n* `BEL` - BEL"
      },
      "DigitalIdWalletApiGovukWalletWalletVerificationStartRequest": {
        "type": "object",
        "description": "GOV.UK Wallet सत्यापन (GBR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountry520Enum"
              }
            ],
            "default": "GBR",
            "description": "GOV.UK Wallet पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से GBR होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `GBR` - GBR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiCountry520Enum": {
        "enum": [
          "GBR"
        ],
        "type": "string",
        "description": "* `GBR` - GBR"
      },
      "DigitalIdWalletApiOneidWalletVerificationStartRequest": {
        "type": "object",
        "description": "OneID सत्यापन (GBR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountry520Enum"
              }
            ],
            "default": "GBR",
            "description": "OneID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से GBR होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `GBR` - GBR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiGovbrWalletVerificationStartRequest": {
        "type": "object",
        "description": "gov.br सत्यापन (BRA) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiGovbrWalletVerificationStartCountryEnum"
              }
            ],
            "default": "BRA",
            "description": "gov.br पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से BRA होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `BRA` - BRA"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiGovbrWalletVerificationStartCountryEnum": {
        "enum": [
          "BRA"
        ],
        "type": "string",
        "description": "* `BRA` - BRA"
      },
      "DigitalIdWalletApiUaePassWalletVerificationStartRequest": {
        "type": "object",
        "description": "UAE PASS सत्यापन (ARE) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiUaePassWalletVerificationStartCountryEnum"
              }
            ],
            "default": "ARE",
            "description": "UAE PASS पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से ARE होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `ARE` - ARE"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiUaePassWalletVerificationStartCountryEnum": {
        "enum": [
          "ARE"
        ],
        "type": "string",
        "description": "* `ARE` - ARE"
      },
      "DigitalIdWalletApiFrejaidWalletVerificationStartRequest": {
        "type": "object",
        "description": "Freja eID सत्यापन (SWE) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryEe9Enum"
              }
            ],
            "default": "SWE",
            "description": "Freja eID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से SWE होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `SWE` - SWE"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiCountryEe9Enum": {
        "enum": [
          "SWE"
        ],
        "type": "string",
        "description": "* `SWE` - SWE"
      },
      "DigitalIdWalletApiPersonalausweisWalletVerificationStartRequest": {
        "type": "object",
        "description": "Personalausweis सत्यापन (DEU) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiPersonalausweisWalletVerificationStartCountryEnum"
              }
            ],
            "default": "DEU",
            "description": "Personalausweis पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से DEU होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `DEU` - DEU"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiPersonalausweisWalletVerificationStartCountryEnum": {
        "enum": [
          "DEU"
        ],
        "type": "string",
        "description": "* `DEU` - DEU"
      },
      "DigitalIdWalletApiFtnWalletVerificationStartRequest": {
        "type": "object",
        "description": "Finnish Trust Network सत्यापन (FIN) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiFtnWalletVerificationStartCountryEnum"
              }
            ],
            "default": "FIN",
            "description": "Finnish Trust Network पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से FIN है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `FIN` - FIN"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiFtnWalletVerificationStartCountryEnum": {
        "enum": [
          "FIN"
        ],
        "type": "string",
        "description": "* `FIN` - FIN"
      },
      "DigitalIdWalletApiIdinWalletVerificationStartRequest": {
        "type": "object",
        "description": "iDIN सत्यापन (NLD) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiIdinWalletVerificationStartCountryEnum"
              }
            ],
            "default": "NLD",
            "description": "iDIN पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से NLD होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `NLD` - NLD"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiIdinWalletVerificationStartCountryEnum": {
        "enum": [
          "NLD"
        ],
        "type": "string",
        "description": "* `NLD` - NLD"
      },
      "DigitalIdWalletApiItsmeWalletVerificationStartRequest": {
        "type": "object",
        "description": "itsme सत्यापन (BEL, LUX, NLD) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiItsmeWalletVerificationStartCountryEnum"
              }
            ],
            "description": "itsme पहचान का ISO 3166-1 alpha-3 देश।\n\n* `BEL` - BEL\n* `LUX` - LUX\n* `NLD` - NLD"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "country",
          "return_url"
        ]
      },
      "DigitalIdWalletApiItsmeWalletVerificationStartCountryEnum": {
        "enum": [
          "BEL",
          "LUX",
          "NLD"
        ],
        "type": "string",
        "description": "* `BEL` - BEL\n* `LUX` - LUX\n* `NLD` - NLD"
      },
      "DigitalIdWalletApiBuypassWalletVerificationStartRequest": {
        "type": "object",
        "description": "Buypass ID सत्यापन (NOR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryAfcEnum"
              }
            ],
            "default": "NOR",
            "description": "Buypass ID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से NOR, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `NOR` - NOR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiCountryAfcEnum": {
        "enum": [
          "NOR"
        ],
        "type": "string",
        "description": "* `NOR` - NOR"
      },
      "DigitalIdWalletApiVippsWalletVerificationStartRequest": {
        "type": "object",
        "description": "Vipps सत्यापन (NOR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryAfcEnum"
              }
            ],
            "default": "NOR",
            "description": "Vipps पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से NOR होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `NOR` - NOR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiBankidNoWalletVerificationStartRequest": {
        "type": "object",
        "description": "BankID सत्यापन (NOR) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryAfcEnum"
              }
            ],
            "default": "NOR",
            "description": "BankID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से NOR है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `NOR` - NOR"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiBankidSeWalletVerificationStartRequest": {
        "type": "object",
        "description": "BankID सत्यापन (SWE) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiCountryEe9Enum"
              }
            ],
            "default": "SWE",
            "description": "BankID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से SWE है, एकमात्र देश जिसमें यह सेवा उपलब्ध है।\n\n* `SWE` - SWE"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiMitidWalletVerificationStartRequest": {
        "type": "object",
        "description": "MitID सत्यापन (DNK) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiMitidWalletVerificationStartCountryEnum"
              }
            ],
            "default": "DNK",
            "description": "MitID पहचान का ISO 3166-1 alpha-3 देश। डिफ़ॉल्ट रूप से DNK होता है, जो एकमात्र ऐसा देश है जिसे यह सेवा प्रदान करता है।\n\n* `DNK` - DNK"
          },
          "return_url": {
            "type": "string",
            "format": "uri",
            "minLength": 1,
            "description": "https URL जिस पर वॉलेट के बाद उपयोगकर्ता का ब्राउज़र वापस आता है, जिसमें request_id और result जुड़े होते हैं। इसका होस्ट एप्लिकेशन के allowed_return_hosts में पंजीकृत होना चाहिए (या इसका व्हाइट लेबल डोमेन होना चाहिए)। कभी भी केवल result पर भरोसा न करें: GET .../verifications/{request_id}/ या webhook से परिणाम पढ़ें।",
            "maxLength": 2048
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiDeviceEnum"
              }
            ],
            "default": "same_device",
            "description": "same_device जब उपयोगकर्ता आपका पेज दिखाने वाले डिवाइस पर साइन इन करता है, cross_device जब वे किसी अन्य डिवाइस का उपयोग करते हैं (जैसे BankID का QR कोड)।\n\n* `same_device` - same_device\n* `cross_device` - cross_device"
          }
        },
        "required": [
          "return_url"
        ]
      },
      "DigitalIdWalletApiMitidWalletVerificationStartCountryEnum": {
        "enum": [
          "DNK"
        ],
        "type": "string",
        "description": "* `DNK` - DNK"
      },
      "DigitalIdWalletApiWalletCatalogResponse": {
        "type": "object",
        "properties": {
          "wallets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DigitalIdWalletApiWalletCatalogEntry"
            }
          }
        },
        "required": [
          "wallets"
        ]
      },
      "DigitalIdWalletApiWalletCatalogEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "path": {
            "type": "string",
            "description": "वॉलेट का अपना आरंभिक endpoint।"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "issuing_authority": {
            "type": "string"
          },
          "level_of_assurance": {
            "type": "string",
            "nullable": true
          },
          "interaction": {
            "$ref": "#/components/schemas/DigitalIdWalletApiInteractionEnum"
          },
          "required_fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "available": {
            "type": "boolean",
            "description": "क्या यह एप्लिकेशन इसे इस एनवायरनमेंट में अभी शुरू कर सकता है। लिस्टेड होने का मतलब लाइव होना नहीं है।"
          }
        },
        "required": [
          "available",
          "countries",
          "id",
          "interaction",
          "issuing_authority",
          "level_of_assurance",
          "name",
          "path",
          "required_fields"
        ]
      },
      "CaseDuplicateCaseDuplicate": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "case_number": {
            "type": "string",
            "nullable": true,
            "maxLength": 32
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "status": {
            "$ref": "#/components/schemas/CaseDuplicateStatusEnum"
          },
          "priority": {
            "$ref": "#/components/schemas/CaseDuplicatePriorityEnum"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "title",
          "uuid"
        ]
      },
      "CaseDuplicateCaseDuplicatePage": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "next_offset": {
            "type": "integer",
            "nullable": true
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseDuplicateCaseDuplicate"
            }
          }
        },
        "required": [
          "count",
          "next_offset",
          "results"
        ]
      },
      "RoutingPublicationPolicyDraftResponse": {
        "type": "object",
        "properties": {
          "draft": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RoutingPublicationPolicyDraft"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "draft"
        ]
      },
      "RoutingPublicationPolicyDraftWriteRequest": {
        "type": "object",
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 0
          },
          "expected_revision": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "changes": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "changes",
          "expected_revision",
          "expected_version"
        ]
      },
      "CasePublicationPolicyDraft": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "string",
            "format": "uuid"
          },
          "base_version": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "changes": {},
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 254
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "base_version",
          "updated_at"
        ]
      },
      "CasePublicationPolicyDraftPreconditionRequest": {
        "type": "object",
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 0
          },
          "expected_revision": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "expected_revision",
          "expected_version"
        ]
      },
      "CaseCollaborationCaseNote": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "comment": {
            "type": "string"
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 255
          },
          "actor_name": {
            "type": "string",
            "nullable": true,
            "maxLength": 255
          },
          "mentioned_emails": {},
          "is_internal": {
            "type": "boolean"
          },
          "attachments": {},
          "tags": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "reply_to": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CaseCollaborationCaseNoteReply"
              }
            ],
            "nullable": true,
            "readOnly": true
          },
          "is_pinned": {
            "type": "boolean"
          },
          "client_reference": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "comment",
          "created_at",
          "reply_to",
          "uuid"
        ]
      },
      "CustomerMessagingPaginatedCaseRequestList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=400&limit=100"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=200&limit=100"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerMessagingCaseRequest"
            }
          }
        }
      },
      "FraudCheckResponse": {
        "type": "object",
        "properties": {
          "check_id": {
            "type": "string",
            "format": "uuid"
          },
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस जाँच के लिए बनाया गया मूल सत्यापन सत्र।"
          },
          "client_reference": {
            "type": "string",
            "nullable": true
          },
          "processing_status": {
            "$ref": "#/components/schemas/FraudProcessingStatusEnum"
          },
          "profile_id": {
            "type": "string"
          },
          "profile_version": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "inputs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudCheckInput"
            }
          },
          "modules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudCheckModuleReport"
            }
          },
          "attribute_evidence": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "compound_evidence": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "risk": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudCheckRisk"
            }
          },
          "network": {
            "type": "object",
            "additionalProperties": {}
          },
          "enrichment": {
            "type": "object",
            "additionalProperties": {}
          },
          "identity_relationship": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FraudCheckIdentityRelationship"
              }
            ],
            "nullable": true
          },
          "recommendation": {
            "$ref": "#/components/schemas/FraudRecommendationEnum"
          },
          "next_action": {
            "$ref": "#/components/schemas/FraudNextActionEnum"
          },
          "decision_reasons": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "coverage": {
            "type": "object",
            "additionalProperties": {}
          },
          "usage": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "vendor_data": {
            "type": "string",
            "nullable": true
          },
          "metadata": {
            "nullable": true
          }
        },
        "required": [
          "attribute_evidence",
          "check_id",
          "client_reference",
          "completed_at",
          "compound_evidence",
          "coverage",
          "created_at",
          "decision_reasons",
          "inputs",
          "modules",
          "network",
          "next_action",
          "processing_status",
          "profile_id",
          "profile_version",
          "recommendation",
          "risk",
          "usage"
        ]
      },
      "CaseReviewTeam": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseReviewTeamMember"
            },
            "maxItems": 250
          },
          "is_active": {
            "type": "boolean"
          },
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "CaseActionCaseEntityActionRequest": {
        "type": "object",
        "properties": {
          "client_reference": {
            "type": "string",
            "format": "uuid"
          },
          "retry": {
            "type": "boolean",
            "default": false
          },
          "action": {
            "$ref": "#/components/schemas/CaseActionActionEnum"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          },
          "note": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "action"
        ]
      },
      "RoutingPublicationPaginatedPolicyRevisionList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=400&limit=100"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=200&limit=100"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoutingPublicationPolicyRevision"
            }
          }
        }
      },
      "FraudRecommendationEnum": {
        "enum": [
          "approve",
          "review",
          "reject"
        ],
        "type": "string",
        "description": "* `approve` - स्वीकृत करें\n* `review` - समीक्षा करें\n* `reject` - अस्वीकृत करें"
      },
      "CustomerMessagingCaseRequestPreviewResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "recipient": {
            "type": "string",
            "format": "email"
          },
          "sender": {
            "type": "string"
          },
          "subject": {
            "type": "string"
          },
          "html": {
            "type": "string"
          },
          "requires_user_action": {
            "type": "boolean"
          },
          "preview_token": {
            "type": "string"
          }
        },
        "required": [
          "expires_at",
          "html",
          "preview_token",
          "recipient",
          "request_id",
          "requires_user_action",
          "sender",
          "subject"
        ]
      },
      "CustomerMessagingCaseCustomerResponseRequest": {
        "type": "object",
        "properties": {
          "full_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "date_of_birth": {
            "type": "string",
            "format": "date"
          },
          "file": {
            "type": "string",
            "format": "binary",
            "writeOnly": true
          }
        }
      },
      "CaseCollaborationCaseNoteReply": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "actor_name": {
            "type": "string",
            "nullable": true
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "maxLength": 300
          }
        },
        "required": [
          "actor_email",
          "actor_name",
          "comment",
          "uuid"
        ]
      },
      "FraudCheckModuleReport": {
        "type": "object",
        "properties": {
          "module": {
            "$ref": "#/components/schemas/FraudExcludeEnum"
          },
          "status": {
            "$ref": "#/components/schemas/FraudStatusEnum"
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "latency_ms": {
            "type": "integer"
          },
          "freshness": {
            "type": "string",
            "nullable": true
          },
          "billable_units": {
            "type": "integer"
          }
        },
        "required": [
          "billable_units",
          "freshness",
          "latency_ms",
          "module",
          "reason",
          "status"
        ]
      },
      "CaseDuplicateEntityTypeEnum": {
        "enum": [
          "session",
          "business_session",
          "transaction"
        ],
        "type": "string",
        "description": "* `session` - सत्र\n* `business_session` - व्यवसाय सत्र\n* `transaction` - लेन-देन"
      },
      "FraudClientCredentialsErrorMessage": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "default": "Authentication failed: Invalid client access token."
          }
        }
      },
      "FraudAvailabilityEnum": {
        "enum": [
          "available",
          "not_requested",
          "no_reference",
          "insufficient_history",
          "unsupported_region",
          "source_unavailable"
        ],
        "type": "string",
        "description": "* `available` - उपलब्ध\n* `not_requested` - अनुरोध नहीं किया गया\n* `no_reference` - कोई संदर्भ नहीं\n* `insufficient_history` - अपर्याप्त इतिहास\n* `unsupported_region` - असमर्थित क्षेत्र\n* `source_unavailable` - स्रोत अनुपलब्ध"
      },
      "CasePublicationPolicyDraftResponse": {
        "type": "object",
        "properties": {
          "draft": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CasePublicationPolicyDraft"
              }
            ],
            "nullable": true
          }
        },
        "required": [
          "draft"
        ]
      },
      "FraudCheckAttributesRequest": {
        "type": "object",
        "description": "पुष्टिकारक विशेषताएँ। सभी वैकल्पिक; वे मॉड्यूल कवरेज का विस्तार करते हैं।",
        "properties": {
          "first_name": {
            "type": "string",
            "maxLength": 128
          },
          "last_name": {
            "type": "string",
            "maxLength": 128
          },
          "full_name": {
            "type": "string",
            "maxLength": 256
          },
          "date_of_birth": {
            "type": "string",
            "format": "date"
          },
          "nationality": {
            "type": "string",
            "maxLength": 3
          },
          "gender": {
            "type": "string",
            "maxLength": 16
          },
          "address": {
            "type": "string",
            "maxLength": 512
          },
          "city": {
            "type": "string",
            "maxLength": 128
          },
          "state": {
            "type": "string",
            "maxLength": 128
          },
          "postal_code": {
            "type": "string",
            "maxLength": 32
          }
        }
      },
      "NetworkNote": {
        "type": "object",
        "required": [
          "uuid",
          "actor_email",
          "comment",
          "client_reference",
          "created_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "readOnly": true,
            "description": "प्रमाणित लेखक, सर्वर द्वारा असाइन किया गया।"
          },
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "client_reference": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "CaseActionEntityTypeEnum": {
        "enum": [
          "user",
          "business"
        ],
        "type": "string",
        "description": "* `user` - उपयोगकर्ता\n* `business` - व्यवसाय"
      },
      "CaseRoutingCondition": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "source",
              "priority",
              "tags"
            ]
          },
          "operator": {
            "type": "string",
            "enum": [
              "equals",
              "in",
              "contains"
            ]
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            ]
          }
        },
        "required": [
          "field",
          "operator",
          "value"
        ],
        "description": "स्रोत और प्राथमिकता समर्थित मानों के साथ equals या in का समर्थन करते हैं। टैग एक गैर-रिक्त टैग के साथ contains का समर्थन करते हैं।"
      },
      "RoutingPublicationPolicyRevision": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "snapshot": {},
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 254
          },
          "published_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "published_at",
          "snapshot",
          "version"
        ]
      },
      "CasePublicationPolicyRevision": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "snapshot": {},
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 254
          },
          "published_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "published_at",
          "snapshot",
          "version"
        ]
      },
      "FraudCheckIdentityRelationship": {
        "type": "object",
        "properties": {
          "result": {
            "$ref": "#/components/schemas/FraudResultEnum"
          },
          "reference_type": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "availability": {
            "$ref": "#/components/schemas/FraudAvailabilityEnum"
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "availability",
          "country",
          "reason_codes",
          "reference_type",
          "result"
        ]
      },
      "CasePublicationPaginatedPolicyRevisionList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=400&limit=100"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=200&limit=100"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CasePublicationPolicyRevision"
            }
          }
        }
      },
      "CaseDuplicateBlankEnum": {
        "enum": [
          ""
        ]
      },
      "FraudCheckPlan": {
        "type": "object",
        "properties": {
          "profile_id": {
            "type": "string"
          },
          "profile_version": {
            "type": "string"
          },
          "modules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudCheckPlannedModule"
            }
          },
          "estimated_price": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "is_sandbox": {
            "type": "boolean"
          },
          "can_afford": {
            "type": "boolean"
          }
        },
        "required": [
          "can_afford",
          "currency",
          "estimated_price",
          "is_sandbox",
          "modules",
          "profile_id",
          "profile_version"
        ]
      },
      "CaseReviewTeamUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseReviewTeamMember"
            },
            "maxItems": 250
          },
          "is_active": {
            "type": "boolean"
          }
        }
      },
      "RoutingPublicationPolicyDraft": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "string",
            "format": "uuid"
          },
          "base_version": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "changes": {},
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 254
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "base_version",
          "updated_at"
        ]
      },
      "FraudCheckRequestRequest": {
        "type": "object",
        "properties": {
          "client_reference": {
            "type": "string",
            "minLength": 1,
            "description": "इस जाँच के लिए आपका अपना संदर्भ। यह आइडेम्पोटेंसी कुंजी के रूप में भी काम करता है: समान बॉडी के साथ इसका पुन: उपयोग करने से मॉड्यूल को दोबारा चलाए या बिल किए बिना मूल जाँच वापस मिल जाती है; एक अलग बॉडी के साथ इसका पुन: उपयोग करने पर 409 वापस आता है।",
            "maxLength": 255
          },
          "profile": {
            "type": "string",
            "minLength": 1,
            "default": "standard",
            "description": "ऑर्केस्ट्रेशन प्रोफ़ाइल id। डिफ़ॉल्ट रूप से Didit `standard` प्रोफ़ाइल पर सेट होता है।",
            "maxLength": 64
          },
          "profile_version": {
            "type": "string",
            "minLength": 1,
            "description": "फ़्रीज़ किए गए प्रोफ़ाइल संस्करण को पिन करें। डिफ़ॉल्ट रूप से प्रोफ़ाइल का वर्तमान संस्करण होता है।",
            "maxLength": 32
          },
          "subject": {
            "$ref": "#/components/schemas/FraudCheckSubjectRequest"
          },
          "context": {
            "$ref": "#/components/schemas/FraudCheckContextRequest"
          },
          "checks": {
            "$ref": "#/components/schemas/FraudCheckModuleSelectionRequest"
          },
          "vendor_data": {
            "type": "string",
            "maxLength": 1000
          },
          "metadata": {}
        },
        "required": [
          "subject"
        ]
      },
      "CaseDuplicateCaseSubjectInputRequest": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CaseDuplicateTypeEnum"
          },
          "uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "uuid"
        ]
      },
      "CaseReviewTeamMember": {
        "type": "object",
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid"
          },
          "availability": {
            "type": "string",
            "enum": [
              "available",
              "unavailable"
            ],
            "default": "available"
          },
          "capacity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "default": 10
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 25
          },
          "available_from": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "available_until": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "required": [
          "user_id"
        ]
      },
      "CaseRoutingPreviewRequest": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "MANUAL",
              "AML_SCREENING",
              "TRANSACTION_RULE",
              "WORKFLOW_BUILDER"
            ]
          },
          "priority": {
            "type": "string",
            "enum": [
              "LOW",
              "MEDIUM",
              "HIGH"
            ],
            "default": "MEDIUM"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 50
          },
          "rule_uuid": {
            "type": "string",
            "format": "uuid"
          },
          "draft": {
            "$ref": "#/components/schemas/CaseRoutingRuleCreate"
          }
        },
        "required": [
          "source"
        ]
      },
      "FraudExcludeEnum": {
        "enum": [
          "normalization",
          "email_risk",
          "email_social",
          "phone_social",
          "phone_risk",
          "ip_risk",
          "database_validation",
          "networks_same_org",
          "networks_cross_org",
          "biometric_identity"
        ],
        "type": "string",
        "description": "* `normalization` - सामान्यीकरण\n* `email_risk` - ईमेल जोखिम\n* `email_social` - ईमेल सोशल\n* `phone_social` - फ़ोन सोशल\n* `phone_risk` - फ़ोन जोखिम\n* `ip_risk` - IP जोखिम\n* `database_validation` - डेटाबेस सत्यापन\n* `networks_same_org` - समान संगठन नेटवर्क\n* `networks_cross_org` - क्रॉस-संगठन नेटवर्क\n* `biometric_identity` - बायोमेट्रिक पहचान"
      },
      "CaseDuplicateCaseLinkCreateRequest": {
        "type": "object",
        "properties": {
          "entity_type": {
            "$ref": "#/components/schemas/CaseDuplicateEntityTypeEnum"
          },
          "entity_uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "entity_type",
          "entity_uuid"
        ]
      },
      "CaseDuplicateStatusEnum": {
        "enum": [
          "OPEN",
          "AWAITING_USER",
          "RESOLVED"
        ],
        "type": "string",
        "description": "* `OPEN` - खुला\n* `AWAITING_USER` - उपयोगकर्ता की प्रतीक्षा\n* `RESOLVED` - हल किया गया"
      },
      "FraudBandEnum": {
        "enum": [
          "low",
          "medium",
          "high",
          "unknown"
        ],
        "type": "string",
        "description": "* `low` - कम\n* `medium` - मध्यम\n* `high` - उच्च\n* `unknown` - अज्ञात"
      },
      "CaseDuplicatePriorityEnum": {
        "enum": [
          "LOW",
          "MEDIUM",
          "HIGH"
        ],
        "type": "string",
        "description": "* `LOW` - कम\n* `MEDIUM` - मध्यम\n* `HIGH` - उच्च"
      },
      "FraudStatusEnum": {
        "enum": [
          "planned",
          "completed",
          "skipped",
          "failed"
        ],
        "type": "string",
        "description": "* `planned` - नियोजित\n* `completed` - पूर्ण\n* `skipped` - छोड़ा गया\n* `failed` - विफल"
      },
      "FraudCheckInput": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "सबमिट किए गए पहचानकर्ता के लिए छिपाया गया हैंडल।"
          },
          "type": {
            "$ref": "#/components/schemas/FraudTypeEnum"
          },
          "namespace": {
            "type": "object",
            "additionalProperties": {}
          },
          "quality": {
            "type": "string"
          },
          "normalization": {
            "type": "object",
            "additionalProperties": {}
          },
          "availability": {
            "$ref": "#/components/schemas/FraudAvailabilityEnum"
          }
        },
        "required": [
          "availability",
          "namespace",
          "normalization",
          "quality",
          "reference",
          "type"
        ]
      },
      "CustomerMessagingPurposesEnum": {
        "enum": [
          "identity_document",
          "proof_of_address",
          "business_document",
          "confirm_details",
          "review_in_progress"
        ],
        "type": "string",
        "description": "* `identity_document` - पहचान दस्तावेज़\n* `proof_of_address` - पते का प्रमाण\n* `business_document` - व्यवसाय दस्तावेज़\n* `confirm_details` - विवरण की पुष्टि करें\n* `review_in_progress` - समीक्षा प्रगति पर है"
      },
      "FraudTypeEnum": {
        "enum": [
          "email",
          "phone",
          "national_id",
          "tax_number",
          "passport_number",
          "driving_licence_number",
          "residence_permit_number",
          "voter_id",
          "external_id"
        ],
        "type": "string",
        "description": "* `email` - ईमेल\n* `phone` - फ़ोन\n* `national_id` - राष्ट्रीय ID\n* `tax_number` - कर पहचान संख्या\n* `passport_number` - पासपोर्ट संख्या\n* `driving_licence_number` - ड्राइविंग लाइसेंस संख्या\n* `residence_permit_number` - निवास परमिट संख्या\n* `voter_id` - वोटर ID\n* `external_id` - बाहरी ID"
      },
      "CaseDuplicateCaseSubjectInput": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CaseDuplicateTypeEnum"
          },
          "uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "type",
          "uuid"
        ]
      },
      "CaseReviewTeamCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseReviewTeamMember"
            },
            "maxItems": 250
          },
          "is_active": {
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "members"
        ]
      },
      "CaseDuplicateCaseDuplicateQueryRequest": {
        "type": "object",
        "properties": {
          "subject": {
            "$ref": "#/components/schemas/CaseDuplicateCaseSubjectInputRequest"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseDuplicateCaseLinkCreateRequest"
            }
          },
          "offset": {
            "type": "integer",
            "maximum": 1000000,
            "minimum": 0,
            "default": 0
          }
        }
      },
      "CaseDuplicateResolutionEnum": {
        "enum": [
          "FALSE_POSITIVE",
          "VALID_THREAT"
        ],
        "type": "string",
        "description": "* `FALSE_POSITIVE` - फ़ॉल्स पॉज़िटिव\n* `VALID_THREAT` - मान्य ख़तरा"
      },
      "CasePublicationPolicyDraftWriteRequest": {
        "type": "object",
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 0
          },
          "expected_revision": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "changes": {
            "type": "object",
            "additionalProperties": {}
          }
        },
        "required": [
          "changes",
          "expected_revision",
          "expected_version"
        ]
      },
      "FraudCheckSubjectRequest": {
        "type": "object",
        "properties": {
          "selfie": {
            "type": "string",
            "minLength": 1,
            "description": "Base64 JPEG, PNG या WebP सेल्फ़ी, 6 MB तक। कोई संदर्भ छवि या URL नहीं।",
            "maxLength": 8388672
          },
          "identifiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudCheckIdentifierRequest"
            },
            "description": "एक या अधिक टाइप किए गए पहचानकर्ता। एक ही पर्याप्त है।",
            "maxItems": 10,
            "minItems": 1
          },
          "attributes": {
            "$ref": "#/components/schemas/FraudCheckAttributesRequest"
          }
        },
        "required": [
          "identifiers"
        ]
      },
      "RoutingPublicationRoutingCondition": {
        "type": "object",
        "properties": {
          "field": {
            "$ref": "#/components/schemas/RoutingPublicationFieldEnum"
          },
          "operator": {
            "$ref": "#/components/schemas/RoutingPublicationOperatorEnum"
          },
          "value": {}
        },
        "required": [
          "field",
          "operator",
          "value"
        ]
      },
      "CaseActionCaseActionReceipt": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "client_reference": {
            "type": "string",
            "format": "uuid"
          },
          "action": {
            "type": "string",
            "maxLength": 32
          },
          "status": {
            "$ref": "#/components/schemas/CaseActionStatusEnum"
          },
          "result": {},
          "error": {
            "type": "string",
            "maxLength": 255
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "maxLength": 254
          },
          "attempts": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "action",
          "client_reference",
          "created_at",
          "status",
          "updated_at",
          "uuid"
        ]
      },
      "FraudCheckContextRequest": {
        "type": "object",
        "properties": {
          "ip_address": {
            "type": "string",
            "minLength": 1
          },
          "user_agent": {
            "type": "string",
            "maxLength": 512
          },
          "country": {
            "type": "string",
            "description": "वह देश जिसमें संबंधित व्यक्ति होने का दावा करता है। केवल प्रासंगिक - कभी भी पहचान स्वामित्व का प्रमाण नहीं।",
            "maxLength": 3
          },
          "purpose": {
            "type": "string",
            "maxLength": 128
          },
          "consent_obtained": {
            "type": "boolean"
          }
        }
      },
      "CustomerMessagingCaseCustomerResponseResult": {
        "type": "object",
        "properties": {
          "responded_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "responded_at"
        ]
      },
      "CustomerMessagingCaseRequestContact": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "verified_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "email",
          "uuid",
          "verified_at"
        ]
      },
      "FraudClientCredentialsForbiddenErrorMessage": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "default": "Forbidden - User doesn't have permission"
          }
        }
      },
      "CasePublicationAssignmentMethodEnum": {
        "enum": [
          "MANUAL",
          "AUTOMATIC"
        ],
        "type": "string",
        "description": "* `MANUAL` - मैन्युअल\n* `AUTOMATIC` - स्वचालित"
      },
      "CaseDuplicateNullEnum": {
        "enum": [
          null
        ]
      },
      "CustomerMessagingLanguageEnum": {
        "enum": [
          "en",
          "es",
          "pt"
        ],
        "type": "string",
        "description": "* `en` - en\n* `es` - es\n* `pt` - pt"
      },
      "CaseDuplicateCaseFraudSourceContextRequest": {
        "type": "object",
        "properties": {
          "check_id": {
            "type": "string",
            "format": "uuid"
          },
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "source_section": {
            "type": "string",
            "minLength": 1,
            "pattern": "^[A-Z][A-Z0-9_:-]{0,63}$"
          }
        },
        "required": [
          "check_id",
          "request_id",
          "source_section"
        ]
      },
      "FraudCheckPlannedModule": {
        "type": "object",
        "properties": {
          "module": {
            "$ref": "#/components/schemas/FraudExcludeEnum"
          },
          "available": {
            "type": "boolean"
          },
          "availability_reason": {
            "type": "string",
            "nullable": true
          },
          "will_run": {
            "type": "boolean"
          },
          "selection_reason": {
            "type": "string",
            "nullable": true
          },
          "estimated_price": {
            "type": "string",
            "nullable": true
          }
        },
        "required": [
          "availability_reason",
          "available",
          "estimated_price",
          "module",
          "selection_reason",
          "will_run"
        ]
      },
      "CustomerMessagingCaseRequestOptions": {
        "type": "object",
        "properties": {
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerMessagingCaseRequestContact"
            }
          },
          "purposes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerMessagingPurposesEnum"
            }
          },
          "languages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomerMessagingLanguagesEnum"
            }
          }
        },
        "required": [
          "contacts",
          "languages",
          "purposes"
        ]
      },
      "CaseCollaborationPaginatedCaseNoteList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=400&limit=100"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?offset=200&limit=100"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseCollaborationCaseNote"
            }
          }
        }
      },
      "FraudProcessingStatusEnum": {
        "enum": [
          "pending",
          "running",
          "completed",
          "failed"
        ],
        "type": "string",
        "description": "* `pending` - लंबित\n* `running` - चल रहा है\n* `completed` - पूर्ण\n* `failed` - विफल"
      },
      "CasePublicationCaseBlueprint": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 24
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "assignment_method": {
            "$ref": "#/components/schemas/CasePublicationAssignmentMethodEnum"
          },
          "assignee_pool": {},
          "max_active_cases": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "escalation_enabled": {
            "type": "boolean"
          },
          "escalation_blueprint": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "escalation_blueprint_name": {
            "type": "string",
            "readOnly": true
          },
          "transfer_enabled": {
            "type": "boolean"
          },
          "four_eyes_checker_blueprint": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "four_eyes_checker_blueprint_name": {
            "type": "string",
            "readOnly": true
          },
          "require_resolution_note": {
            "type": "boolean"
          },
          "content_config": {},
          "version": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "default_deadline_hours": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0,
            "nullable": true
          },
          "is_active": {
            "type": "boolean"
          },
          "preset_key": {
            "type": "string",
            "nullable": true,
            "maxLength": 64
          },
          "creation_sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "readOnly": true
          },
          "receives_escalation_from": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            },
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "creation_sources",
          "escalation_blueprint_name",
          "four_eyes_checker_blueprint_name",
          "name",
          "receives_escalation_from",
          "updated_at",
          "uuid"
        ]
      },
      "CaseRoutingRuleUpdate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "priority": {
            "type": "integer",
            "minimum": 0
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseRoutingCondition"
            },
            "maxItems": 20
          },
          "required_skills": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 25
          },
          "blueprint": {
            "type": "string",
            "format": "uuid"
          },
          "team": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "is_active": {
            "type": "boolean"
          },
          "expected_version": {
            "type": "integer",
            "minimum": 1,
            "writeOnly": true,
            "description": "एडिटर द्वारा खोला गया संस्करण। प्रदान किए जाने पर, पुराने संस्करण वाले लेखन अनुरोध नियम को बदले बिना 409 लौटाते हैं।"
          }
        }
      },
      "CustomerMessagingCaseRequestPreviewRequest": {
        "type": "object",
        "properties": {
          "contact_id": {
            "type": "string",
            "format": "uuid"
          },
          "purpose": {
            "$ref": "#/components/schemas/CustomerMessagingPurposeEnum"
          },
          "language": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerMessagingLanguageEnum"
              }
            ],
            "default": "en"
          }
        },
        "required": [
          "contact_id",
          "purpose"
        ]
      },
      "CaseDuplicateCaseFraudSourceContext": {
        "type": "object",
        "properties": {
          "check_id": {
            "type": "string",
            "format": "uuid"
          },
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "source_section": {
            "type": "string",
            "pattern": "^[A-Z][A-Z0-9_:-]{0,63}$"
          }
        },
        "required": [
          "check_id",
          "request_id",
          "source_section"
        ]
      },
      "RoutingPublicationOperatorEnum": {
        "enum": [
          "equals",
          "in",
          "contains"
        ],
        "type": "string",
        "description": "* `equals` - बराबर\n* `in` - में\n* `contains` - शामिल है"
      },
      "CaseRoutingPreview": {
        "type": "object",
        "properties": {
          "rule_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "rule_name": {
            "type": "string",
            "nullable": true
          },
          "rule_version": {
            "type": "integer",
            "nullable": true
          },
          "blueprint_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "team_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "assignee_user_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "reason": {
            "type": "string"
          },
          "candidates": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "user_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "eligible": {
                  "type": "boolean"
                },
                "active_cases": {
                  "type": "integer",
                  "nullable": true
                },
                "reason": {
                  "type": "string",
                  "nullable": true
                }
              }
            }
          },
          "matched_rules": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "priority": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "FraudDimensionEnum": {
        "enum": [
          "identity",
          "contact",
          "device_network",
          "behavioral",
          "fraud_network"
        ],
        "type": "string",
        "description": "* `identity` - पहचान\n* `contact` - संपर्क\n* `device_network` - डिवाइस नेटवर्क\n* `behavioral` - व्यवहार संबंधी\n* `fraud_network` - धोखाधड़ी नेटवर्क"
      },
      "FraudBadRequestErrorMessage": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "default": "Bad Request - Invalid request data"
          }
        }
      },
      "FraudNextActionEnum": {
        "enum": [
          "none",
          "manual_review",
          "step_up",
          "resubmit_capture"
        ],
        "type": "string",
        "description": "* `none` - कोई नहीं\n* `manual_review` - मैन्युअल समीक्षा\n* `step_up` - स्टेप अप\n* `resubmit_capture` - कैप्चर पुनः सबमिट करें"
      },
      "RoutingPublicationPolicyDraftPreconditionRequest": {
        "type": "object",
        "properties": {
          "expected_version": {
            "type": "integer",
            "minimum": 0
          },
          "expected_revision": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "required": [
          "expected_revision",
          "expected_version"
        ]
      },
      "FraudCheckRisk": {
        "type": "object",
        "properties": {
          "dimension": {
            "$ref": "#/components/schemas/FraudDimensionEnum"
          },
          "score": {
            "type": "integer",
            "nullable": true
          },
          "band": {
            "$ref": "#/components/schemas/FraudBandEnum"
          },
          "availability": {
            "$ref": "#/components/schemas/FraudAvailabilityEnum"
          },
          "requested_but_unavailable": {
            "type": "boolean",
            "description": "True जब अनुरोध ने वह सब कुछ प्रदान किया जिसकी इस आयाम को आवश्यकता थी और प्लेटफ़ॉर्म फिर भी इसका उत्तर नहीं दे सका। ऐसी जाँच को उन आयामों के आधार पर कभी भी स्वीकृति की अनुशंसा नहीं की जाती है जिन्होंने उत्तर दिया था।"
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "evidence_indexes": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          }
        },
        "required": [
          "availability",
          "band",
          "dimension",
          "evidence_indexes",
          "reason_codes",
          "requested_but_unavailable",
          "score"
        ]
      },
      "CaseDuplicateSourceEnum": {
        "enum": [
          "MANUAL",
          "AML_SCREENING",
          "TRANSACTION_RULE",
          "WORKFLOW_BUILDER"
        ],
        "type": "string",
        "description": "* `MANUAL` - मैन्युअल\n* `AML_SCREENING` - AML स्क्रीनिंग\n* `TRANSACTION_RULE` - लेन-देन नियम\n* `WORKFLOW_BUILDER` - वर्कफ़्लो बिल्डर"
      },
      "CaseCollaborationPatchedCaseNoteUpdateRequest": {
        "type": "object",
        "properties": {
          "is_pinned": {
            "type": "boolean"
          }
        }
      },
      "CustomerMessagingPurposeEnum": {
        "enum": [
          "identity_document",
          "proof_of_address",
          "business_document",
          "confirm_details",
          "review_in_progress"
        ],
        "type": "string",
        "description": "* `identity_document` - पहचान दस्तावेज़\n* `proof_of_address` - पते का प्रमाण\n* `business_document` - व्यवसाय दस्तावेज़\n* `confirm_details` - विवरण की पुष्टि करें\n* `review_in_progress` - समीक्षा प्रगति पर है"
      },
      "CaseDuplicateTypeEnum": {
        "enum": [
          "user",
          "business"
        ],
        "type": "string",
        "description": "* `user` - उपयोगकर्ता\n* `business` - व्यवसाय"
      },
      "CaseCollaborationCaseNoteCreateRequest": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "reply_to": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "client_reference": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "mentioned_emails": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "email",
              "minLength": 1
            }
          },
          "is_internal": {
            "type": "boolean",
            "default": false
          },
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "required": [
          "comment"
        ]
      },
      "CustomerMessagingLanguagesEnum": {
        "enum": [
          "en",
          "es",
          "pt"
        ],
        "type": "string",
        "description": "* `en` - en\n* `es` - es\n* `pt` - pt"
      },
      "CustomerMessagingCaseRequestConfirmRequest": {
        "type": "object",
        "properties": {
          "contact_id": {
            "type": "string",
            "format": "uuid"
          },
          "purpose": {
            "$ref": "#/components/schemas/CustomerMessagingPurposeEnum"
          },
          "language": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CustomerMessagingLanguageEnum"
              }
            ],
            "default": "en"
          },
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "preview_token": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          }
        },
        "required": [
          "contact_id",
          "expires_at",
          "preview_token",
          "purpose",
          "request_id"
        ]
      },
      "CaseRoutingRule": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "priority": {
            "type": "integer",
            "minimum": 0
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseRoutingCondition"
            },
            "maxItems": 20
          },
          "required_skills": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 25
          },
          "blueprint": {
            "type": "string",
            "format": "uuid"
          },
          "team": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "is_active": {
            "type": "boolean"
          },
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "version": {
            "type": "integer",
            "readOnly": true
          },
          "blueprint_name": {
            "type": "string",
            "readOnly": true
          },
          "team_name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        }
      },
      "FraudResultEnum": {
        "enum": [
          "match",
          "mismatch",
          "inconclusive",
          "no_reference"
        ],
        "type": "string",
        "description": "* `match` - मिलान\n* `mismatch` - बेमेल\n* `inconclusive` - अनिर्णायक\n* `no_reference` - कोई संदर्भ नहीं"
      },
      "CaseRoutingRuleCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "priority": {
            "type": "integer",
            "minimum": 0
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseRoutingCondition"
            },
            "maxItems": 20
          },
          "required_skills": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 25
          },
          "blueprint": {
            "type": "string",
            "format": "uuid"
          },
          "team": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "is_active": {
            "type": "boolean"
          },
          "publish": {
            "type": "boolean",
            "writeOnly": true,
            "description": "कभी प्रकाशित न किए गए ड्राफ़्ट को सहेजने के लिए false सेट करें। रिकॉर्ड वर्ज़न 0 पर तब तक निष्क्रिय रहता है जब तक कि ड्राफ़्ट को स्पष्ट रूप से प्रकाशित नहीं किया जाता। इस फ़ील्ड को छोड़ने से मौजूदा इंटीग्रेशन के लिए तत्काल निर्माण सुरक्षित रहता है।"
          }
        },
        "required": [
          "name",
          "conditions",
          "blueprint"
        ]
      },
      "FraudCheckIdentifierRequest": {
        "type": "object",
        "properties": {
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FraudTypeEnum"
              }
            ],
            "description": "पहचानकर्ता का प्रकार। यह निर्धारित करता है कि कौन से नेमस्पेस फ़ील्ड आवश्यक हैं।\n\n* `email` - ईमेल\n* `phone` - फ़ोन\n* `national_id` - राष्ट्रीय ID\n* `tax_number` - कर पहचान संख्या\n* `passport_number` - पासपोर्ट संख्या\n* `driving_licence_number` - ड्राइविंग लाइसेंस संख्या\n* `residence_permit_number` - निवास परमिट संख्या\n* `voter_id` - मतदाता ID\n* `external_id` - बाहरी ID"
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "पहचानकर्ता मान, किसी भी प्रथागत प्रारूप में।",
            "maxLength": 255
          },
          "country": {
            "type": "string",
            "description": "ISO-3166 alpha-2 या alpha-3 जारीकर्ता देश। सरकारी पहचानकर्ता प्रकारों के लिए आवश्यक: अलग-अलग देशों में समान अंकों का अर्थ अलग-अलग व्यक्ति हो सकता है।",
            "maxLength": 3
          },
          "issuer": {
            "type": "string",
            "description": "वैकल्पिक जारीकर्ता प्राधिकरण या उप-राष्ट्रीय जारीकर्ता, जब केवल देश अद्वितीय न हो।",
            "maxLength": 128
          }
        },
        "required": [
          "type",
          "value"
        ]
      },
      "CaseActionActionEnum": {
        "enum": [
          "set_status",
          "add_tags",
          "add_note",
          "add_to_blocklist"
        ],
        "type": "string",
        "description": "* `set_status` - set_status\n* `add_tags` - add_tags\n* `add_note` - add_note\n* `add_to_blocklist` - add_to_blocklist"
      },
      "CaseActionCaseActionReceiptPage": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "next_offset": {
            "type": "integer",
            "nullable": true
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CaseActionCaseActionReceipt"
            }
          }
        },
        "required": [
          "count",
          "next_offset",
          "results"
        ]
      },
      "CaseActionCaseEntityActionResult": {
        "type": "object",
        "properties": {
          "receipt": {
            "$ref": "#/components/schemas/CaseActionCaseActionReceipt"
          },
          "entity_type": {
            "$ref": "#/components/schemas/CaseActionEntityTypeEnum"
          },
          "entity_uuid": {
            "type": "string",
            "format": "uuid"
          },
          "action": {
            "type": "string"
          },
          "previous_status": {
            "type": "string"
          },
          "new_status": {
            "type": "string"
          },
          "tags_added": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "comment_uuid": {
            "type": "string",
            "format": "uuid"
          },
          "blocklisted": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CustomerMessagingCaseRequest": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "purpose": {
            "type": "string",
            "readOnly": true
          },
          "language": {
            "type": "string",
            "readOnly": true
          },
          "recipient": {
            "type": "string",
            "format": "email",
            "readOnly": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "readOnly": true,
            "nullable": true
          },
          "delivery_status": {
            "type": "string",
            "readOnly": true
          },
          "delivered_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "cancelled_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "responded_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "response": {
            "readOnly": true,
            "nullable": true
          },
          "has_attachment": {
            "type": "boolean",
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "actor_email",
          "cancelled_at",
          "created_at",
          "delivered_at",
          "delivery_status",
          "expires_at",
          "has_attachment",
          "language",
          "purpose",
          "recipient",
          "responded_at",
          "response",
          "uuid"
        ]
      },
      "CustomerMessagingCaseRequestPublic": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "purpose": {
            "$ref": "#/components/schemas/CustomerMessagingPurposeEnum"
          },
          "language": {
            "$ref": "#/components/schemas/CustomerMessagingLanguageEnum"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "responded_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "copy": {
            "type": "object",
            "additionalProperties": {}
          },
          "organization_name": {
            "type": "string"
          },
          "is_white_label": {
            "type": "boolean"
          },
          "customization": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true
          }
        },
        "required": [
          "copy",
          "customization",
          "expires_at",
          "is_white_label",
          "language",
          "organization_name",
          "purpose",
          "request_id",
          "responded_at"
        ]
      },
      "RoutingPublicationFieldEnum": {
        "enum": [
          "source",
          "priority",
          "tags"
        ],
        "type": "string",
        "description": "* `source` - स्रोत\n* `priority` - प्राथमिकता\n* `tags` - टैग"
      },
      "RoutingPublicationCaseRoutingRule": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 100
          },
          "description": {
            "type": "string",
            "maxLength": 500
          },
          "priority": {
            "type": "integer",
            "maximum": 2147483647,
            "minimum": 0
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RoutingPublicationRoutingCondition"
            }
          },
          "required_skills": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 64
            },
            "maxItems": 25
          },
          "blueprint": {
            "type": "string",
            "format": "uuid"
          },
          "blueprint_name": {
            "type": "string",
            "readOnly": true
          },
          "team": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "team_name": {
            "type": "string",
            "readOnly": true
          },
          "is_active": {
            "type": "boolean"
          },
          "version": {
            "type": "integer",
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "blueprint",
          "blueprint_name",
          "conditions",
          "created_at",
          "name",
          "team_name",
          "updated_at",
          "uuid",
          "version"
        ]
      },
      "CaseActionStatusEnum": {
        "enum": [
          "APPLIED",
          "FAILED"
        ],
        "type": "string",
        "description": "* `APPLIED` - लागू किया गया\n* `FAILED` - विफल"
      },
      "FraudCheckModuleSelectionRequest": {
        "type": "object",
        "properties": {
          "include": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudExcludeEnum"
            }
          },
          "exclude": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FraudExcludeEnum"
            }
          }
        }
      },
      "SignatureField": {
        "type": "object",
        "description": "सत्र दस्तावेज़ पर रखने के लिए एक फ़ील्ड: कौन सा हस्ताक्षरकर्ता इसे भरता है, कैसे, और कहाँ। या तो स्थिति (`page`, `x`, `y`, `width` और `height`) दें या फिर `anchor`। स्थितियाँ प्रदर्शित किए गए पेज के अंश होती हैं, उसके ऊपरी-बाएँ कोने से, 4 दशमलव स्थानों तक राउंड की गई, और फ़ील्ड पेज के अंदर फ़िट होनी चाहिए। एक दस्तावेज़ अधिकतम 200 फ़ील्ड ले सकता है और एक हस्ताक्षरकर्ता अधिकतम 500, और दस्तावेज़ पर फ़ील्ड वाली प्रत्येक भूमिका के लिए वहाँ एक `signature` या `initials` फ़ील्ड की आवश्यकता होती है। [दस्तावेज़ पर फ़ील्ड](/hi/core-technology/electronic-signature/overview#दस्तावेज़-पर-फ़ील्ड) देखें।",
        "required": [
          "key",
          "type"
        ],
        "properties": {
          "key": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_]{0,63}$",
            "description": "परिणामों और `sign.field_values` में फ़ील्ड का नाम बताता है। दस्तावेज़ के भीतर अद्वितीय।"
          },
          "type": {
            "type": "string",
            "enum": [
              "signature",
              "initials",
              "full_name",
              "date_signed",
              "text",
              "checkbox",
              "email",
              "data"
            ],
            "description": "फ़ील्ड में क्या समाहित है। हस्ताक्षरकर्ता अपने अपनाए हुए `signature` और `initials` लागू करता है, `text` टाइप करता है, `checkbox` पर टिक करता है, और सत्र में कोई सत्यापित ईमेल न होने पर `email` टाइप करता है। Didit `full_name` (सत्यापित नाम), `date_signed` (हस्ताक्षर करने की तिथि, हस्ताक्षरकर्ता के समय क्षेत्र में), `data` (`prefill` से) और एक सत्यापित `email` भरता है, और उन्हें केवल-पढ़ने के लिए दिखाता है। कोई दिनांक पिकर प्रकार नहीं है: `text` का उपयोग करें।"
          },
          "role": {
            "type": "string",
            "enum": [
              "verified_person",
              "legal_representative",
              "key_people"
            ],
            "description": "`signature_signer` मानों के साथ फ़ील्ड कौन भरता है। एक चरण केवल अपने हस्ताक्षरकर्ता के फ़ील्ड भरता है और स्टैम्प करता है। डिफ़ॉल्ट रूप से चरण का हस्ताक्षरकर्ता।"
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "पेज संख्या, 1 से दस्तावेज़ की पेज संख्या तक। Word दस्तावेज़ के लिए, कनवर्ट किए गए PDF का एक पेज।"
          },
          "x": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "बायाँ किनारा, पेज की चौड़ाई के एक अंश के रूप में।"
          },
          "y": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "description": "पेज की ऊंचाई के एक अंश के रूप में ऊपरी किनारा।"
          },
          "width": {
            "type": "number",
            "minimum": 0.02,
            "maximum": 1,
            "description": "पेज की चौड़ाई के अंश के रूप में चौड़ाई। हस्ताक्षर कम से कम `0.12` चौड़ा होता है।"
          },
          "height": {
            "type": "number",
            "minimum": 0.012,
            "maximum": 1,
            "description": "ऊंचाई, पेज की ऊंचाई के एक अंश के रूप में। हस्ताक्षर कम से कम `0.035` ऊंचा होता है।"
          },
          "anchor": {
            "$ref": "#/components/schemas/SignatureFieldAnchor"
          },
          "required": {
            "type": "boolean",
            "description": "`signature` and `initials` are required unless you set `false`. `full_name`, `date_signed` and `data` are always required. The signer can't finish a document until its required fields have a value, and a required checkbox must be ticked."
          },
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "description": "हस्ताक्षरकर्ता को और परिणामों में दिखाया जाता है। प्रकार के आधार पर डिफ़ॉल्ट होता है।"
          },
          "placeholder": {
            "type": "string",
            "nullable": true,
            "maxLength": 80,
            "description": "केवल `text` और `email`।"
          },
          "validation": {
            "$ref": "#/components/schemas/SignatureFieldValidation"
          },
          "prefill": {
            "type": "string",
            "nullable": true,
            "description": "मान कहाँ से आता है: `identity.full_name`, `identity.first_name`, `identity.last_name`, `identity.date_of_birth` (`DD/MM/YYYY`), `identity.nationality`, `identity.document_number`, `identity.document_type`, `identity.issuing_country`, `identity.address`, `contact.email`, `contact.phone`, `company.name`, `company.registration_number`, `company.address`, `company.country` (KYB), `session.vendor_data`, `metadata.<key>` (सत्र के `metadata` की एक कुंजी) या `api.<key>` (`sign.field_values` की एक कुंजी)। `data` के लिए आवश्यक। `full_name` हमेशा `identity.full_name` का उपयोग करता है और `email`, `contact.email` का उपयोग करता है। जब हस्ताक्षरकर्ता हस्ताक्षर करना शुरू करता है, तो `data`, `full_name` और सत्यापित `email` फ़ील्ड के मान तय हो जाते हैं।"
          },
          "editable_when_prefilled": {
            "type": "boolean",
            "default": false,
            "description": "केवल `text` और `email`: हस्ताक्षरकर्ता पहले से भरे हुए मान को बदल सकता है।"
          },
          "checked_by_default": {
            "type": "boolean",
            "default": false,
            "description": "केवल `checkbox`: बॉक्स पहले से टिक किया हुआ शुरू होता है।"
          },
          "date_format": {
            "type": "string",
            "enum": [
              "DD/MM/YYYY",
              "MM/DD/YYYY",
              "YYYY-MM-DD",
              "D MMMM YYYY"
            ],
            "default": "DD/MM/YYYY",
            "description": "केवल `date_signed`।"
          }
        }
      },
      "SessionSignDocument": {
        "type": "object",
        "required": [
          "file_name",
          "content_base64"
        ],
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "हस्ताक्षरकर्ता को दिखाया जाने वाला शीर्षक। डिफ़ॉल्ट रूप से `file_name` होता है।"
          },
          "file_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 255,
            "description": "फ़ाइल का नाम, जो `.pdf` या `.docx` पर समाप्त होता है।"
          },
          "content_base64": {
            "type": "string",
            "format": "byte",
            "description": "फ़ाइल, base64-एन्कोडेड। एक PDF बिना पासवर्ड, स्क्रिप्ट या संलग्न फ़ाइलों के 20 MB और 100 पृष्ठों तक की हो सकती है। एक Word फ़ाइल (`.docx`) 20 MB तक की हो सकती है और अनुरोध चलने के दौरान अधिकतम 25 सेकंड में PDF में परिवर्तित हो जाती है; इसके बाद PDF की सीमाएँ समान होती हैं। प्रति सत्र अधिकतम 5 Word फ़ाइलें। मैक्रोज़, ट्रैक किए गए परिवर्तनों, बाहरी सामग्री के लिंक या एम्बेडेड ऑब्जेक्ट वाली Word फ़ाइल को `signature_document_not_supported` के साथ अस्वीकार कर दिया जाता है, और जिसे परिवर्तित नहीं किया जा सकता है वह `signature_document_conversion_failed` लौटाता है, प्रत्येक एक `reason` के साथ।"
          },
          "fields": {
            "type": "array",
            "description": "इस दस्तावेज़ पर रखने के लिए वैकल्पिक फ़ील्ड, 200 तक। पेज और स्थितियां PDF, या Word फ़ाइल के लिए कनवर्ट किए गए PDF को संदर्भित करती हैं। फ़ील्ड के बिना, हस्ताक्षरकर्ता दस्तावेज़ पढ़ता है और उससे सहमत होता है।",
            "items": {
              "$ref": "#/components/schemas/SignatureField"
            },
            "maxItems": 200
          }
        }
      },
      "SignatureResult": {
        "type": "object",
        "description": "एक ई-हस्ताक्षर चरण के लिए एक हस्ताक्षरकर्ता का परिणाम। [ई-हस्ताक्षर रिपोर्ट](/hi/core-technology/electronic-signature/report-electronic-signature) देखें।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "इस हस्ताक्षरकर्ता के साक्ष्य डाउनलोड करने या उनके हस्ताक्षर को मान्य करने के लिए इसे `signature_id` के रूप में पास करें।"
          },
          "node_id": {
            "type": "string",
            "description": "वर्कफ़्लो चरण जिसने इसे उत्पन्न किया।"
          },
          "status": {
            "type": "string",
            "enum": [
              "intro",
              "review",
              "code",
              "signing",
              "signed",
              "declined"
            ],
            "description": "चरण में हस्ताक्षरकर्ता कहाँ है। केवल `signed` का अर्थ है कि दस्तावेज़ हस्ताक्षरित हैं।"
          },
          "verdict": {
            "type": "string",
            "enum": [
              "Not Finished",
              "Approved",
              "In Review",
              "Declined"
            ],
            "description": "चरण का परिणाम। एक चेतावनी इसे अपने नियम के माध्यम से सेट करती है; कस्टम स्थिति नियम बाद में लागू होते हैं।"
          },
          "level": {
            "type": "string",
            "enum": [
              "simple",
              "aes",
              "qes"
            ],
            "description": "`simple` (डिफ़ॉल्ट) या `aes`। `qes` (क्वालिफ़ाइड इलेक्ट्रॉनिक सिग्नेचर, QES) एक ऐड-ऑन है जो अभी उपलब्ध नहीं है।"
          },
          "format": {
            "type": "string",
            "enum": [
              "pdf",
              "pades"
            ],
            "description": "Simple हस्ताक्षर के लिए `pdf`, Advanced (AES) के लिए `pades`।"
          },
          "profile": {
            "type": "string",
            "nullable": true,
            "description": "Advanced (AES) हस्ताक्षर हो जाने पर `PAdES-B-LT`, अन्यथा null।"
          },
          "signer": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true,
                "description": "हस्ताक्षरकर्ता का नाम। सत्यापित (स्वीकृत पहचान सत्यापन या सत्र से), सिवाय सत्यापित सत्र नाम के बिना Simple स्तर के, जहाँ यह वह नाम होता है जिसे हस्ताक्षरकर्ता ने टाइप किया था और यह सत्यापित नहीं होता है।"
              },
              "capacity": {
                "type": "string",
                "enum": [
                  "self",
                  "company"
                ]
              },
              "company": {
                "type": "string",
                "nullable": true
              },
              "role": {
                "type": "string",
                "nullable": true,
                "description": "प्रमुख व्यक्ति का पदनाम, जैसा कि घोषित किया गया है।"
              },
              "roles": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "कंपनी के लिए घोषित प्रमुख व्यक्ति की संरचित भूमिकाएँ।"
              },
              "identity_session_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह KYC सत्र जिसमें हस्ताक्षरकर्ता का सत्यापन हुआ था।"
              }
            }
          },
          "identity_used": {
            "type": "object",
            "description": "सत्यापित पहचान जिस पर हस्ताक्षर निर्भर करता है। बिना किसी सत्यापित पहचान वाले Simple हस्ताक्षर के लिए खाली।",
            "properties": {
              "session_id": {
                "type": "string",
                "format": "uuid"
              },
              "kyc_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "verified": {
                "type": "boolean"
              },
              "expected_name": {
                "type": "string",
                "nullable": true,
                "description": "वह नाम जिससे हस्ताक्षरकर्ता का मिलान होना था।"
              }
            }
          },
          "certificate": {
            "type": "object",
            "nullable": true,
            "description": "वह प्रमाणपत्र जिसके साथ दस्तावेज़ों पर हस्ताक्षर किए गए थे। हस्ताक्षरित होने तक `null`, और सरल हस्ताक्षर के लिए हमेशा `null`।",
            "properties": {
              "issuer": {
                "type": "string"
              },
              "issued_to": {
                "type": "string"
              },
              "serial": {
                "type": "string",
                "description": "सीरियल नंबर, हेक्साडेसिमल।"
              },
              "valid_from": {
                "type": "string",
                "format": "date-time"
              },
              "valid_until": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "confirmation": {
            "type": "object",
            "properties": {
              "channel": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "email",
                  "sms"
                ],
                "description": "Simple हस्ताक्षर के लिए `null`, जिसमें कोई कोड नहीं होता है।"
              },
              "destination": {
                "type": "string",
                "nullable": true,
                "description": "मास्क किया गया संपर्क जिस पर कोड भेजा गया था।"
              },
              "confirmed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "attempts": {
                "type": "integer",
                "description": "दर्ज किए गए कोड, सही कोड सहित।"
              }
            }
          },
          "timestamp": {
            "type": "object",
            "nullable": true,
            "description": "हस्ताक्षर में RFC 3161 टाइमस्टैम्प, जो Didit द्वारा जारी किया गया है। हस्ताक्षर होने तक `null`, और Simple हस्ताक्षर के लिए हमेशा `null`।",
            "properties": {
              "time": {
                "type": "string",
                "format": "date-time"
              },
              "qualified": {
                "type": "boolean",
                "description": "AES के लिए हमेशा `false`।"
              },
              "valid": {
                "type": "boolean"
              }
            }
          },
          "documents": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "इस हस्ताक्षरकर्ता की प्रति पर मौजूद दस्तावेज़। हस्ताक्षरित फ़ाइल डाउनलोड करने के लिए इसका उपयोग करें।"
                },
                "uuid": {
                  "type": "string",
                  "format": "uuid",
                  "description": "`id` के समान।"
                },
                "title": {
                  "type": "string"
                },
                "file_name": {
                  "type": "string"
                },
                "pages": {
                  "type": "integer",
                  "description": "हस्ताक्षरित दस्तावेज़ के पेज। Word के लिए, कनवर्ट किए गए PDF के।"
                },
                "size_bytes": {
                  "type": "integer"
                },
                "sha256_original": {
                  "type": "string",
                  "description": "दस्तावेज़ का SHA-256 जैसा कि हस्ताक्षरकर्ता को दिखाया गया था।"
                },
                "sha256_signed": {
                  "type": "string",
                  "nullable": true,
                  "description": "हस्ताक्षरित PDF का SHA-256, एक बार हस्ताक्षरित होने के बाद।"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "signed",
                    "declined",
                    "not_signed",
                    "not_reached"
                  ],
                  "description": "`not_signed`: खोला गया लेकिन हस्ताक्षर नहीं किए गए। `not_reached`: कभी नहीं खोला गया।"
                },
                "opened_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true
                },
                "read_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "हस्ताक्षरकर्ता फ़ील्ड रहित दस्तावेज़ के अंत तक कब पहुँचा, जब चरण के लिए यह आवश्यक हो।"
                },
                "read_to_end": {
                  "type": "boolean"
                },
                "consented_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "हस्ताक्षरकर्ता फ़ील्ड रहित दस्तावेज़ पर कब सहमत हुआ, या फ़ील्ड वाले दस्तावेज़ के फ़ील्ड कब पूरे किए।"
                },
                "consent": {
                  "type": "boolean"
                },
                "signed_file": {
                  "type": "string",
                  "nullable": true,
                  "description": "हस्ताक्षरित PDF का पाथ, एक बार हस्ताक्षर होने के बाद। देखें [हस्ताक्षरित दस्तावेज़ डाउनलोड करें](/hi/sessions-api/electronic-signature/download-signed-document)।"
                },
                "mode": {
                  "type": "string",
                  "enum": [
                    "fields",
                    "read_and_agree"
                  ],
                  "description": "फ़ील्ड वाले दस्तावेज़ के लिए `fields`, बिना फ़ील्ड वाले दस्तावेज़ के लिए `read_and_agree`।"
                },
                "source_format": {
                  "type": "string",
                  "enum": [
                    "pdf",
                    "docx"
                  ],
                  "description": "`pdf`, या Word दस्तावेज़ के लिए `docx` जिसे Didit ने PDF में रूपांतरित किया।"
                },
                "conversion": {
                  "type": "object",
                  "nullable": true,
                  "description": "PDF के लिए `null`। Word दस्तावेज़ के लिए, मूल फ़ाइल और कन्वर्ज़न।",
                  "properties": {
                    "from": {
                      "type": "string",
                      "enum": [
                        "docx"
                      ]
                    },
                    "file_name": {
                      "type": "string",
                      "description": "आपका मूल Word फ़ाइल नाम।"
                    },
                    "sha256": {
                      "type": "string",
                      "description": "आपकी मूल Word फ़ाइल का SHA-256।"
                    },
                    "size_bytes": {
                      "type": "integer",
                      "description": "आपकी मूल Word फ़ाइल का आकार।"
                    },
                    "converter": {
                      "type": "string",
                      "description": "PDF तैयार करने वाले कनवर्टर का संस्करण।"
                    }
                  }
                },
                "fields": {
                  "type": "array",
                  "description": "दस्तावेज़ पर फ़ील्ड, उनके मानों के साथ। फ़ील्ड रहित दस्तावेज़ के लिए खाली।",
                  "items": {
                    "$ref": "#/components/schemas/SignatureFieldResult"
                  }
                }
              }
            }
          },
          "adopted_signature": {
            "type": "object",
            "nullable": true,
            "description": "हस्ताक्षरकर्ता द्वारा हस्ताक्षर और आद्याक्षर फ़ील्ड के लिए अपनाया गया हस्ताक्षर और आद्याक्षर। हस्ताक्षरकर्ता द्वारा इसे अपनाए जाने तक `null`।",
            "properties": {
              "method": {
                "type": "string",
                "enum": [
                  "typed",
                  "drawn"
                ],
                "description": "`typed`: हस्तलेखन शैली में सत्यापित नाम। `drawn`: उंगली या माउस से बनाया गया।"
              },
              "font": {
                "type": "string",
                "nullable": true,
                "description": "टाइप किए गए हस्ताक्षर की हस्तलेखन शैली। ड्रा किए जाने पर `null`।"
              },
              "adopted_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          },
          "electronic_signature_consent_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "समीक्षा स्क्रीन पर हस्ताक्षरकर्ता दस्तावेज़ों पर इलेक्ट्रॉनिक रूप से हस्ताक्षर करने के लिए कब सहमत हुआ। तब सेट होता है जब किसी भी दस्तावेज़ में फ़ील्ड हों।"
          },
          "evidence_file": {
            "type": "string",
            "nullable": true,
            "description": "हस्ताक्षरित होने के बाद साक्ष्य PDF का पथ। देखें [हस्ताक्षर साक्ष्य डाउनलोड करें](/hi/sessions-api/electronic-signature/download-evidence)।"
          },
          "warnings": {
            "type": "array",
            "description": "इस हस्ताक्षरकर्ता के लिए उठाई गई चेतावनियाँ। [ई-हस्ताक्षर चेतावनियाँ](/hi/core-technology/electronic-signature/warnings-electronic-signature) देखें।",
            "items": {
              "type": "object",
              "properties": {
                "code": {
                  "type": "string",
                  "enum": [
                    "SIGNATURE_DECLINED",
                    "SIGNATURE_OTP_FAILED",
                    "SIGNATURE_NAME_MISMATCH",
                    "SIGNATURE_IDENTITY_NOT_VERIFIED",
                    "SIGNATURE_DOCUMENT_CHANGED",
                    "SIGNATURE_FIELD_DATA_MISSING"
                  ]
                },
                "node_id": {
                  "type": "string"
                }
              }
            }
          },
          "validation": {
            "type": "object",
            "nullable": true,
            "description": "हस्ताक्षरित दस्तावेज़ों की अंतिम क्रिप्टोग्राफ़िक जाँच। दस्तावेज़ों पर हस्ताक्षर होने तक `null`। यदि Didit हस्ताक्षर करने के परिणाम की पुष्टि नहीं कर सकता है, तो यह `{\"valid\": null, \"reason\": \"signature_provider_outcome_unknown\", \"checked_at\": ...}` होता है और `status` `signing` बना रहता है: इसे हस्ताक्षरित न माना जाए।",
            "properties": {
              "valid": {
                "type": "boolean",
                "nullable": true,
                "description": "`true` जब प्रत्येक दस्तावेज़ मान्य हो। `null` जब हस्ताक्षर के परिणाम की पुष्टि नहीं की जा सकी।"
              },
              "reason": {
                "type": "string",
                "description": "तब सेट किया जाता है जब `valid` `null` हो: `signature_provider_outcome_unknown`।"
              },
              "checked_at": {
                "type": "string",
                "format": "date-time"
              },
              "documents": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "checked_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "valid": {
                      "type": "boolean",
                      "description": "`true` जब हस्ताक्षर और टाइमस्टैम्प दोनों मान्य और विश्वसनीय हों।"
                    },
                    "integrity": {
                      "type": "boolean",
                      "description": "`true` जब हस्ताक्षर करने के बाद से दस्तावेज़ में कोई बदलाव नहीं हुआ हो।"
                    },
                    "trusted": {
                      "type": "boolean",
                      "description": "`true` जब हस्ताक्षर प्रमाणपत्र एक विश्वसनीय रूट से जुड़ा हो।"
                    },
                    "revoked": {
                      "type": "boolean"
                    },
                    "trusted_list": {
                      "type": "object",
                      "description": "EU ट्रस्टेड लिस्ट की जाँच। AES के लिए: `{\"status\": \"not_applicable\", \"reason\": \"aes_not_qualified\"}`।",
                      "properties": {
                        "status": {
                          "type": "string"
                        },
                        "reason": {
                          "type": "string"
                        }
                      }
                    },
                    "certificate": {
                      "type": "object",
                      "nullable": true,
                      "description": "वह प्रमाणपत्र जिसके साथ दस्तावेज़ों पर हस्ताक्षर किए गए थे। हस्ताक्षरित होने तक `null`, और सरल हस्ताक्षर के लिए हमेशा `null`।",
                      "properties": {
                        "issuer": {
                          "type": "string"
                        },
                        "issued_to": {
                          "type": "string"
                        },
                        "serial": {
                          "type": "string",
                          "description": "सीरियल नंबर, हेक्साडेसिमल।"
                        },
                        "valid_from": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "valid_until": {
                          "type": "string",
                          "format": "date-time"
                        }
                      }
                    },
                    "timestamp": {
                      "type": "object",
                      "nullable": true,
                      "description": "हस्ताक्षर में RFC 3161 टाइमस्टैम्प, जो Didit द्वारा जारी किया गया है। हस्ताक्षर होने तक `null`, और Simple हस्ताक्षर के लिए हमेशा `null`।",
                      "properties": {
                        "time": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "qualified": {
                          "type": "boolean",
                          "description": "AES के लिए हमेशा `false`।"
                        },
                        "valid": {
                          "type": "boolean"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "declined_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "declined_action": {
            "type": "string",
            "enum": [
              "DECLINE",
              "REVIEW",
              "NO_ACTION"
            ]
          },
          "signed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "हस्ताक्षर लिंक काम करना कब बंद कर देता है।"
          },
          "email_sent_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "email_unavailable_reason": {
            "type": "string",
            "nullable": true
          },
          "ip_address": {
            "type": "string",
            "nullable": true,
            "description": "हस्ताक्षरकर्ता का IP पता जब उन्होंने अपने कोड का अनुरोध किया था।"
          },
          "place": {
            "type": "string",
            "nullable": true,
            "description": "एकत्रित नहीं किया गया: हमेशा `null`।"
          },
          "place_unavailable_reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "not_collected"
            ]
          }
        }
      },
      "SignatureFieldValidation": {
        "type": "object",
        "nullable": true,
        "description": "`text` फ़ील्ड के मान के लिए नियम। कंसोल पूर्वावलोकन, हस्ताक्षर प्रक्रिया और API समान नियम लागू करते हैं।",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "any",
              "letters",
              "number",
              "email",
              "pattern"
            ],
            "description": "`letters`: किसी भी लिपि में अक्षर, स्पेस, हाइफ़न और एपॉस्ट्रॉफ़ी। `number`: वैकल्पिक दशमलव विभाजक के साथ अंक। `pattern`: मान `pattern` से मेल खाना चाहिए।"
          },
          "min_length": {
            "type": "integer",
            "minimum": 0,
            "maximum": 500,
            "description": "`0` से लेकर `max_length` तक।"
          },
          "max_length": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "default": 120
          },
          "pattern": {
            "type": "string",
            "nullable": true,
            "minLength": 1,
            "maxLength": 200,
            "description": "`kind: \"pattern\"` के साथ आवश्यक है। एक रेगुलर एक्सप्रेशन जिससे पूरा मान मेल खाना चाहिए। लुकअराउंड और बैकरिफ़रेंस समर्थित नहीं हैं।"
          },
          "message": {
            "type": "string",
            "nullable": true,
            "maxLength": 120,
            "description": "डिफ़ॉल्ट त्रुटि के बजाय हस्ताक्षरकर्ता को दिखाया गया।"
          }
        }
      },
      "SignatureFieldAnchor": {
        "type": "object",
        "description": "दस्तावेज़ में किसी स्थिति के बजाय टेक्स्ट के एक भाग के आधार पर फ़ील्ड रखता है। Didit PDF से टेक्स्ट को नहीं हटाता है, इसलिए इसे पेज के बैकग्राउंड के समान रंग में लिखें। जब टेक्स्ट नहीं मिलता है, तो कॉल `field_anchor_not_found` के साथ `400` लौटाती है। [एंकर टेक्स्ट द्वारा फ़ील्ड रखें](/hi/sessions-api/create-session#एंकर-टेक्स्ट-से-फ़ील्ड-लगाएँ) देखें।",
        "required": [
          "text"
        ],
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "दस्तावेज़ में खोजा गया टेक्स्ट। Word फ़ाइल के लिए, कनवर्ट की गई PDF में।"
          },
          "occurrence": {
            "type": "string",
            "enum": [
              "first",
              "all"
            ],
            "default": "first",
            "description": "`all` प्रत्येक मिलान के लिए एक फ़ील्ड रखता है; पहले के बाद की कुंजियों को `_2`, `_3` आदि मिलते हैं।"
          },
          "offset_x": {
            "type": "number",
            "description": "टेक्स्ट के बाएं किनारे में जोड़ा गया, पेज की चौड़ाई के अंश के रूप में।"
          },
          "offset_y": {
            "type": "number",
            "description": "टेक्स्ट के शीर्ष किनारे में जोड़ा गया, पेज की ऊंचाई के अंश के रूप में।"
          },
          "width": {
            "type": "number",
            "minimum": 0.02,
            "maximum": 1,
            "description": "पेज की चौड़ाई के अंश के रूप में, फ़ील्ड की चौड़ाई।"
          },
          "height": {
            "type": "number",
            "minimum": 0.012,
            "maximum": 1,
            "description": "फ़ील्ड की ऊंचाई, पेज की ऊंचाई के एक अंश के रूप में।"
          }
        }
      },
      "SignatureFieldResult": {
        "type": "object",
        "description": "हस्ताक्षरित दस्तावेज़ का एक फ़ील्ड, इस हस्ताक्षरकर्ता की प्रति पर उसके मान के साथ। [फ़ील्ड](/hi/core-technology/electronic-signature/report-electronic-signature#फ़ील्ड) देखें।",
        "properties": {
          "key": {
            "type": "string",
            "description": "फ़ील्ड की कुंजी, जैसा कि `sign.field_values` में उपयोग किया जाता है।"
          },
          "type": {
            "type": "string",
            "enum": [
              "signature",
              "initials",
              "full_name",
              "date_signed",
              "text",
              "checkbox",
              "email",
              "data"
            ]
          },
          "role": {
            "type": "string",
            "enum": [
              "verified_person",
              "legal_representative",
              "key_people"
            ]
          },
          "label": {
            "type": "string"
          },
          "page": {
            "type": "integer",
            "description": "पेज संख्या, 1 से। Word दस्तावेज़ के लिए, कनवर्ट किए गए PDF का एक पेज।"
          },
          "x": {
            "type": "number",
            "description": "बायाँ किनारा, पेज की चौड़ाई के एक अंश के रूप में।"
          },
          "y": {
            "type": "number",
            "description": "पेज की ऊंचाई के एक अंश के रूप में ऊपरी किनारा।"
          },
          "width": {
            "type": "number",
            "description": "पेज की चौड़ाई के अंश के रूप में चौड़ाई।"
          },
          "height": {
            "type": "number",
            "description": "ऊंचाई, पेज की ऊंचाई के एक अंश के रूप में।"
          },
          "required": {
            "type": "boolean"
          },
          "value": {
            "nullable": true,
            "description": "`text`, `email`, `full_name`, `date_signed` और `data` के लिए एक स्ट्रिंग, `checkbox` के लिए एक बूलियन, और लागू हस्ताक्षर या आद्याक्षर (initials) के लिए `true`। खाली होने पर `null`।"
          },
          "display_value": {
            "type": "string",
            "nullable": true,
            "description": "पेज पर अंकित मान: फ़ील्ड के `date_format` में तारीखें, चेकबॉक्स के लिए `Yes` या `No`, हस्ताक्षर या शुरुआती अक्षरों के लिए `Signed`।"
          },
          "value_source": {
            "type": "string",
            "nullable": true,
            "enum": [
              "signer",
              "identity",
              "contact",
              "company",
              "session",
              "metadata",
              "api",
              "signing_time",
              null
            ],
            "description": "मान कहाँ से आया: `signer` (हस्ताक्षरकर्ता द्वारा टाइप किया गया, टिक किया गया या लागू किया गया), `identity` (सत्यापित ID), `contact` (सत्यापित ईमेल या फ़ोन), `company` (सत्यापित कंपनी), `session` (`vendor_data`), `metadata`, `api` (`sign.field_values`) या `signing_time` (हस्ताक्षर करने की तिथि)।"
          },
          "filled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "image_url": {
            "type": "string",
            "nullable": true,
            "description": "केवल हस्ताक्षर और आद्याक्षर: लागू छवि का पथ। [हस्ताक्षर छवि डाउनलोड करें](/hi/sessions-api/electronic-signature/download-field-image) देखें।"
          },
          "value_unavailable_reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "source_empty",
              null
            ],
            "description": "जब किसी पहले से भरे हुए फ़ील्ड का सत्र में कोई मान नहीं था और `signature_field_data_missing_action` ने हस्ताक्षरकर्ता को वैसे भी हस्ताक्षर करने की अनुमति दी, तब `source_empty`।"
          }
        }
      },
      "VaspDirectoryWidgetEntry": {
        "type": "object",
        "description": "अंतिम उपयोगकर्ता का VASP पिकर क्या दिखाता है: VASP कौन है और क्या उस तक पहुँचा जा सकता है।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "GET /v3/travel-rule/vasps/{vasp_id}/ के लिए एंट्री की id।"
          },
          "kind": {
            "type": "string",
            "enum": [
              "directory",
              "didit"
            ],
            "description": "साझा डायरेक्टरी की प्रविष्टि के लिए directory; Didit नेटवर्क के सदस्य के लिए didit।"
          },
          "name": {
            "type": "string"
          },
          "lei": {
            "type": "string"
          },
          "jurisdiction": {
            "type": "string",
            "description": "ISO 3166 देश कोड, जैसा कि स्रोत प्रदान करता है।"
          },
          "domains": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "VASP के वेब डोमेन। Didit नेटवर्क सदस्यों के लिए हमेशा खाली।"
          },
          "reachable": {
            "type": "boolean",
            "description": "क्या आपके एप्लिकेशन के पास इस VASP के लिए, या किसी ब्रांड के लिए इसकी संस्थाओं में से किसी एक के लिए कोई उपलब्ध रूट है। Didit नेटवर्क सदस्य के लिए हमेशा true।"
          }
        }
      },
      "TravelRuleDataSharingFields": {
        "type": "object",
        "description": "प्रति इकाई प्रकार के अनुसार, वे फ़ील्ड जो Didit आपके अपने उपयोगकर्ताओं के बारे में प्रतिपक्ष VASP को भेजता है। सूची चाहे जो भी कहे, `name` और `wallet_address` हमेशा भेजे जाते हैं। एक इकाई प्रकार जिसे आपने कभी नहीं चुना, वह प्रत्येक फ़ील्ड साझा करता है। एक खाली सूची भी एक विकल्प है: यह केवल नाम और वॉलेट साझा करती है।",
        "properties": {
          "individual": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "wallet_address",
                "address",
                "national_id",
                "customer_identification",
                "date_of_birth",
                "place_of_birth"
              ]
            },
            "description": "प्राकृतिक व्यक्ति के बारे में साझा किए गए फ़ील्ड।"
          },
          "company": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "wallet_address",
                "address",
                "national_id",
                "customer_identification"
              ]
            },
            "description": "कानूनी व्यक्ति के बारे में साझा किए गए फ़ील्ड।"
          }
        }
      },
      "TravelRuleMatchingRules": {
        "type": "object",
        "description": "प्रतिपक्ष के डेटा के प्रत्येक फ़ील्ड की तुलना आपके पास मौजूद डेटा से कितनी सख्ती से की जाती है, प्रति इकाई प्रकार। जिस फ़ील्ड को आप छोड़ देते हैं वह अपना डिफ़ॉल्ट बनाए रखता है। `NONE` तुलना को छोड़ देता है, `STRICT` को बिल्कुल वही शब्द चाहिए होते हैं, `CONTAINS` ऐसे मान को स्वीकार करता है जिसके सभी शब्द दूसरे में दिखाई देते हैं, `DEFAULT` मानक सबसेट मिलान है, और `FUZZY` करीबी वर्तनी स्वीकार करता है (और जन्म तिथि के लिए, अदला-बदली किए गए दिन और महीने)।",
        "properties": {
          "individual": {
            "type": "object",
            "description": "प्राकृतिक व्यक्ति के लिए नियम।",
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "डिफ़ॉल्ट: `name_matching_strictness` का पालन करता है।"
              },
              "date_of_birth": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "डिफ़ॉल्ट `NONE`।"
              },
              "address": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "डिफ़ॉल्ट `NONE`।"
              },
              "account": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "वह वॉलेट जिसके माध्यम से एक्सचेंज को रूट किया गया था। डिफ़ॉल्ट `STRICT`।"
              }
            }
          },
          "company": {
            "type": "object",
            "description": "कानूनी व्यक्ति के लिए नियम।",
            "properties": {
              "name": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "डिफ़ॉल्ट: `name_matching_strictness` का पालन करता है।"
              },
              "address": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "डिफ़ॉल्ट `NONE`।"
              },
              "account": {
                "type": "string",
                "enum": [
                  "NONE",
                  "STRICT",
                  "CONTAINS",
                  "DEFAULT",
                  "FUZZY"
                ],
                "description": "वह वॉलेट जिसके माध्यम से एक्सचेंज को रूट किया गया था। डिफ़ॉल्ट `STRICT`।"
              }
            }
          }
        }
      },
      "TravelRuleDataMatch": {
        "type": "object",
        "nullable": true,
        "description": "ट्रांस्फ़र के पक्ष डेटा की वॉलेट धारक के बारे में दूसरे पक्ष की जानकारी के साथ फ़ील्ड-दर-फ़ील्ड तुलना। यह फ़ील्ड और परिणामों को नाम देता है, मानों को कभी नहीं, ताकि प्रतिपक्ष का डेटा मास्क रहने पर भी यह पठनीय बना रहे। तुलना चलने तक Null।",
        "properties": {
          "matched": {
            "type": "boolean",
            "description": "True जब कोई भी तुलना की गई फ़ील्ड भिन्न न हो।"
          },
          "mismatched_fields": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "name",
                "date_of_birth",
                "address",
                "account"
              ]
            },
            "description": "वे फ़ील्ड जो भिन्न हैं।"
          },
          "fields": {
            "type": "object",
            "description": "पक्ष के निकाय प्रकार के लिए तुलना किए गए प्रति फ़ील्ड एक प्रविष्टि (`name`, `date_of_birth`, `address`, `account`; किसी कंपनी की कोई `date_of_birth` नहीं होती है)।",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "result": {
                  "type": "string",
                  "enum": [
                    "matched",
                    "mismatched",
                    "not_compared"
                  ],
                  "description": "`not_compared` जब नियम `NONE` हो या किसी भी पक्ष के पास फ़ील्ड के लिए कोई मान न हो।"
                },
                "strictness": {
                  "type": "string",
                  "enum": [
                    "NONE",
                    "STRICT",
                    "CONTAINS",
                    "DEFAULT",
                    "FUZZY"
                  ]
                }
              }
            }
          }
        }
      },
      "TravelRuleDataUnmasked": {
        "type": "object",
        "nullable": true,
        "description": "उस क्षण का ऑडिट रिकॉर्ड जब प्रतिपक्ष का डेटा अनमास्क किया गया था। जब तक डेटा मास्क रहता है, और आउटबाउंड ट्रांसफ़र के लिए यह Null रहता है।",
        "properties": {
          "at": {
            "type": "string",
            "format": "date-time"
          },
          "reason": {
            "type": "string",
            "enum": [
              "ownership_confirmed",
              "wallet_proof",
              "address_book_match",
              "own_verified_wallet",
              "inquiry_approved",
              "known_payment_method",
              "travel_address"
            ],
            "description": "स्वामित्व की पुष्टि किससे हुई: ownership_confirmed (कंसोल या API के माध्यम से आपकी पुष्टि), wallet_proof (विजेट में एक वॉलेट प्रमाण, या एक INTERNAL इनबाउंड ट्रांसफ़र, जो इसके बनने पर सेट होता है), address_book_match (एक सत्यापित एड्रेस-बुक वॉलेट), own_verified_wallet (आपके उपयोगकर्ता का अपना सत्यापित वॉलेट), inquiry_approved (किसी इनबाउंड TRP पूछताछ या GTR या Sygna संदेश की आपकी स्वीकृति), known_payment_method (एक वॉलेट जिससे आपके उपयोगकर्ता ने पहले ही भुगतान किया है) या travel_address (वॉलेट की पहचान करने वाला प्रति-वॉलेट Travel Address)।"
          },
          "actor": {
            "type": "string",
            "description": "इसकी पुष्टि किसने की: कंसोल उपयोगकर्ता का ईमेल या API कुंजी का लेबल। स्वचालित निर्णय के लिए रिक्त।"
          }
        }
      },
      "TravelRuleMessageAttachment": {
        "type": "object",
        "nullable": true,
        "description": "संदेश से संलग्न दस्तावेज़, जिसे किसी अन्य लेन-देन दस्तावेज़ की तरह स्टोर किया गया है।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "uploaded_by": {
            "type": "string",
            "nullable": true,
            "description": "इसे किसने संलग्न किया। पिकअप पोर्टल में, आपके द्वारा भेजी गई फ़ाइल आपका VASP नाम दिखाती है, इसके पीछे के व्यक्ति या API कुंजी को कभी नहीं।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "files": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "file_url": {
                  "type": "string",
                  "nullable": true,
                  "description": "समय-सीमित डाउनलोड URL।"
                },
                "original_filename": {
                  "type": "string"
                },
                "file_size": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "TravelRuleMessage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "MESSAGE",
              "DOCUMENT_REQUEST"
            ]
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ],
            "description": "`OUTBOUND` वह है जो पाठक के अपने पक्ष ने भेजा है। पिकअप पोर्टल में दिशा प्रतिपक्ष के पक्ष से होती है।"
          },
          "author": {
            "type": "string",
            "description": "इसे अपनी ओर से किसने लिखा: कंसोल उपयोगकर्ता का ईमेल या API कुंजी लेबल, या अन्य VASP का नाम।"
          },
          "body": {
            "type": "string"
          },
          "requested_documents": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "DOCUMENT_REQUEST क्या मांगता है, अनुरोधकर्ता के शब्दों में।"
          },
          "reply_to": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "fulfilled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "DOCUMENT_REQUEST पर तब सेट होता है जब इसके उत्तर में कोई दस्तावेज़ शामिल होता है।"
          },
          "attachment": {
            "$ref": "#/components/schemas/TravelRuleMessageAttachment"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleMessageCreateRequest": {
        "type": "object",
        "description": "JSON के रूप में, या `files` में अटैचमेंट्स के साथ multipart/form-data के रूप में भेजें।",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "MESSAGE",
              "DOCUMENT_REQUEST"
            ],
            "default": "MESSAGE"
          },
          "body": {
            "type": "string",
            "maxLength": 5000,
            "description": "MESSAGE के लिए आवश्यक है, जब तक कि कोई फ़ाइल संलग्न न हो।"
          },
          "requested_documents": {
            "type": "array",
            "items": {
              "type": "string",
              "maxLength": 255
            },
            "maxItems": 10,
            "description": "DOCUMENT_REQUEST के लिए आवश्यक (कम से कम एक), और केवल वहीं अनुमत।"
          },
          "reply_to": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "उसी ट्रांसफर का एक संदेश। दस्तावेज़ वाला उत्तर उस दस्तावेज़ अनुरोध को पूरा करता है जिसका वह उत्तर देता है।"
          },
          "files": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "binary"
            },
            "maxItems": 5,
            "description": "केवल मल्टीपार्ट। प्रत्येक 10 MB तक की अधिकतम 5 फ़ाइलें।"
          }
        }
      },
      "SessionDeletionJob": {
        "type": "object",
        "description": "बैकग्राउंड में चल रहा बल्क सत्र विलोपन: प्रगति और प्रत्येक परिणाम की गणनाएँ, यह कभी नहीं कि इसने किन सत्रों को हटाया।",
        "properties": {
          "job_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस id के साथ `GET /v3/sessions/delete/{job_id}/` को पोल करें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED"
            ],
            "description": "`PENDING`: स्वीकार कर लिया गया, अभी शुरू नहीं हुआ। `PROCESSING`: हटाया जा रहा है; `processed` और `outcomes` अपडेट हो रहे हैं। `COMPLETED`: प्रत्येक चयनित सत्र का हिसाब हो गया है। `FAILED`: कार्य समय से पहले रुक गया; `error` देखें।"
          },
          "total": {
            "type": "integer",
            "description": "डिलीशन का अनुरोध किए जाने पर चुने गए सत्र।"
          },
          "processed": {
            "type": "integer",
            "description": "वे सत्र जिन्हें जॉब ने अब तक पूरा कर लिया है।"
          },
          "outcomes": {
            "type": "object",
            "description": "प्रत्येक परिणाम में कितने सत्र समाप्त हुए। प्रत्येक कुंजी हमेशा मौजूद रहती है।",
            "properties": {
              "deleted": {
                "type": "integer",
                "description": "सत्र उनकी फ़ेस एम्बेडिंग के साथ हटा दिए गए।"
              },
              "none": {
                "type": "integer",
                "description": "हटाए गए सत्र जिनमें कोई फ़ेस एम्बेडिंग नहीं थी।"
              },
              "retained_with_user": {
                "type": "integer",
                "description": "सत्र हटा दिए गए, जबकि उनके उपयोगकर्ता के लिए एक छवि-मुक्त बायोमेट्रिक टेम्पलेट को बनाए रखा गया था, जैसा कि अनुरोध या एप्लिकेशन नीति ने मांगा था।"
              },
              "ineligible_no_vendor_user": {
                "type": "integer",
                "description": "सत्र हटा दिए गए, उनकी फ़ेस एम्बेडिंग के साथ, क्योंकि डेटा प्रतिधारण का अनुरोध किया गया था लेकिन उनके पास कोई लिंक किया गया उपयोगकर्ता नहीं था।"
              },
              "failed_retryable": {
                "type": "integer",
                "description": "डिलीट नहीं किए गए के रूप में रिपोर्ट किए गए सत्र। कोई जॉब जिसे वह स्वयं डिलीट नहीं कर सका, उसे यहाँ गिनने के बजाय उस समूह का पुनः प्रयास करता है।"
              },
              "already_deleted": {
                "type": "integer",
                "description": "चयनित सत्र जो पहले ही हटा दिए गए थे, उदाहरण के लिए किसी अन्य अनुरोध द्वारा, जब जॉब उन तक पहुँचा।"
              }
            }
          },
          "deleted_child_verifications": {
            "type": "integer",
            "description": "हटाए गए व्यवसाय सत्यापनों द्वारा बनाए गए वे सत्यापन, जिन्हें उनके साथ ही हटा दिया गया है। `POST /v3/sessions/delete/` द्वारा शुरू किए गए जॉब के लिए हमेशा `0`, जो केवल KYC सत्रों को हटाता है।"
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "जब तक `status`, `FAILED` न हो, तब तक `null`; यदि ऐसा है, तो विलोपन रुकने का कारण। जिन सत्रों तक कार्य नहीं पहुँचा था, वे अभी भी मौजूद हैं: उन्हें हटाने के लिए अनुरोध पुनः दोहराएँ।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब हटाए जाने का अनुरोध किया गया था।"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जॉब कब समाप्त हुआ; इसके चलने के दौरान `null`।"
          }
        }
      },
      "EntityStatusUpdateRequest": {
        "type": "object",
        "required": [
          "status"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "FLAGGED",
              "BLOCKED"
            ],
            "description": "नई लाइफ़साइकिल स्थिति। `BLOCKED` सिस्टम ब्लॉकलिस्ट में `vendor_data` भी जोड़ता है।"
          }
        }
      },
      "AMLMonitoringToggleResult": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "users_total",
              "already_enabled",
              "with_existing_aml",
              "needing_screening",
              "skipped_no_identity_data",
              "skipped_blocked",
              "estimated_screening_cost_usd",
              "estimated_annual_monitoring_cost_usd",
              "balance_sufficient",
              "unmatched"
            ],
            "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कुछ भी लिखा नहीं जाता है)।",
            "properties": {
              "users_total": {
                "type": "integer",
                "description": "चयन द्वारा मिलान की गई प्रोफ़ाइल।"
              },
              "already_enabled": {
                "type": "integer",
                "description": "पहले से मॉनिटर की जा रही प्रोफ़ाइल (सक्षम करते समय कुछ करने की आवश्यकता नहीं है; अक्षम करने पर इन्हें ही बंद किया जाता है)।"
              },
              "with_existing_aml": {
                "type": "integer",
                "description": "वे प्रोफ़ाइल जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदल दिया जाएगा (कोई नई स्क्रीनिंग नहीं)।"
              },
              "needing_screening": {
                "type": "integer",
                "description": "बिना किसी AML स्क्रीनिंग वाली प्रोफ़ाइल जिनकी पहले स्क्रीनिंग की जाएगी (नियमित AML स्क्रीनिंग के रूप में बिल किया जाएगा)।"
              },
              "skipped_no_identity_data": {
                "type": "integer",
                "description": "वे प्रोफ़ाइल जिनकी स्क्रीनिंग नहीं की जा सकती क्योंकि पहचान डेटा मौजूद नहीं है।"
              },
              "skipped_blocked": {
                "type": "integer",
                "description": "ब्लॉक किए गए उपयोगकर्ता जिन्हें छोड़ दिया जाएगा (व्यवसायों के लिए हमेशा 0)।"
              },
              "estimated_screening_cost_usd": {
                "type": "number",
                "example": 0.2,
                "description": "नई स्क्रीनिंग की एकमुश्त लागत।"
              },
              "estimated_annual_monitoring_cost_usd": {
                "type": "number",
                "example": 0.07,
                "description": "उन प्रोफ़ाइलों की वार्षिक निगरानी लागत जिनकी निगरानी शुरू की जाएगी।"
              },
              "balance_sufficient": {
                "type": "boolean",
                "description": "क्या संगठन का बैलेंस स्क्रीनिंग और निगरानी के पहले वर्ष को कवर करता है।"
              },
              "unmatched": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "अनुरोध के वे पहचानकर्ता जिनका इस एप्लिकेशन में किसी प्रोफ़ाइल से मिलान नहीं हुआ, बिल्कुल वैसे ही जैसे भेजे गए थे।"
              }
            }
          },
          {
            "type": "object",
            "required": [
              "job_id",
              "status",
              "is_enabled",
              "target_type",
              "total",
              "processed",
              "outcomes",
              "results",
              "error",
              "created_at",
              "completed_at",
              "estimate",
              "unmatched"
            ],
            "properties": {
              "job_id": {
                "type": "string",
                "format": "uuid"
              },
              "status": {
                "type": "string",
                "enum": [
                  "PENDING",
                  "PROCESSING",
                  "COMPLETED",
                  "FAILED"
                ]
              },
              "is_enabled": {
                "type": "boolean",
                "description": "जब जॉब निगरानी सक्षम करता है तो true, जब यह इसे अक्षम करता है तो false।"
              },
              "target_type": {
                "type": "string",
                "enum": [
                  "user",
                  "business"
                ],
                "description": "जॉब किस प्रोफ़ाइल फ़ैमिली को टॉगल करता है।"
              },
              "total": {
                "type": "integer",
                "description": "वे प्रोफ़ाइल जिन्हें जॉब संसाधित करता है।"
              },
              "processed": {
                "type": "integer",
                "description": "अब तक संसाधित की गई प्रोफ़ाइल।"
              },
              "outcomes": {
                "type": "object",
                "description": "प्रति-रिकॉर्ड परिणाम काउंटर। प्रत्येक चयनित प्रोफ़ाइल का परिणाम ठीक एक काउंटर में दर्ज होता है; कुछ भी चुपचाप छोड़ा नहीं जाता है।",
                "properties": {
                  "enabled": {
                    "type": "integer",
                    "description": "मौजूदा AML स्क्रीनिंग पर निगरानी सक्षम कर दी गई।"
                  },
                  "screened_and_enabled": {
                    "type": "integer",
                    "description": "एक नई AML स्क्रीनिंग बनाई गई (बिल की गई) और उस पर निगरानी सक्षम की गई।"
                  },
                  "already_enabled": {
                    "type": "integer",
                    "description": "निगरानी पहले से ही सक्रिय थी; कुछ भी नहीं बदला और कोई बिलिंग नहीं की गई।"
                  },
                  "disabled": {
                    "type": "integer",
                    "description": "प्रोफ़ाइल की प्रत्येक AML स्क्रीनिंग में निगरानी बंद कर दी गई।"
                  },
                  "skipped_no_identity_data": {
                    "type": "integer",
                    "description": "छोड़ा गया: प्रोफ़ाइल में स्क्रीनिंग के लिए आवश्यक पूरा नाम, जन्म तिथि और देश (उपयोगकर्ता) या नाम (व्यवसाय) का अभाव है।"
                  },
                  "skipped_blocked": {
                    "type": "integer",
                    "description": "छोड़ा गया: उपयोगकर्ता ब्लॉक है।"
                  },
                  "skipped_sandbox": {
                    "type": "integer",
                    "description": "छोड़ा गया: सैंडबॉक्स एप्लिकेशन, कोई स्क्रीनिंग नहीं बनाई जाती है।"
                  },
                  "failed_provider": {
                    "type": "integer",
                    "description": "स्क्रीनिंग पूरी नहीं की जा सकी; बाद में पुनः प्रयास करें।"
                  },
                  "failed_insufficient_balance": {
                    "type": "integer",
                    "description": "कार्य चलने के दौरान बैलेंस समाप्त हो गया।"
                  }
                }
              },
              "results": {
                "type": "array",
                "description": "प्रसंस्करण क्रम में, संसाधित की गई प्रति प्रोफ़ाइल एक प्रविष्टि। जॉब चलने के दौरान बढ़ती है; स्थिति COMPLETED होने पर पूर्ण होती है। API के माध्यम से शुरू की गई जॉब्स के लिए रिकॉर्ड किया गया।",
                "items": {
                  "type": "object",
                  "properties": {
                    "didit_internal_id": {
                      "type": "string",
                      "format": "uuid",
                      "description": "प्रोफ़ाइल की Didit आंतरिक id।"
                    },
                    "vendor_data": {
                      "type": "string",
                      "nullable": true,
                      "description": "प्रोफ़ाइल के लिए आपका अपना पहचानकर्ता।"
                    },
                    "outcome": {
                      "type": "string",
                      "enum": [
                        "enabled",
                        "screened_and_enabled",
                        "already_enabled",
                        "disabled",
                        "skipped_no_identity_data",
                        "skipped_blocked",
                        "skipped_sandbox",
                        "failed_provider",
                        "failed_insufficient_balance"
                      ]
                    }
                  }
                }
              },
              "error": {
                "type": "string",
                "nullable": true,
                "description": "स्थिति FAILED होने पर सामान्य विफलता संदेश; विस्तृत कारण प्लेटफ़ॉर्म-साइड पर रखा जाता है।"
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "completed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "estimate": {
                "type": "object",
                "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कुछ भी लिखा नहीं जाता है)।",
                "properties": {
                  "users_total": {
                    "type": "integer",
                    "description": "चयन द्वारा मिलान की गई प्रोफ़ाइल।"
                  },
                  "already_enabled": {
                    "type": "integer",
                    "description": "पहले से मॉनिटर की जा रही प्रोफ़ाइल (सक्षम करते समय कुछ करने की आवश्यकता नहीं है; अक्षम करने पर इन्हें ही बंद किया जाता है)।"
                  },
                  "with_existing_aml": {
                    "type": "integer",
                    "description": "वे प्रोफ़ाइल जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदल दिया जाएगा (कोई नई स्क्रीनिंग नहीं)।"
                  },
                  "needing_screening": {
                    "type": "integer",
                    "description": "बिना किसी AML स्क्रीनिंग वाली प्रोफ़ाइल जिनकी पहले स्क्रीनिंग की जाएगी (नियमित AML स्क्रीनिंग के रूप में बिल किया जाएगा)।"
                  },
                  "skipped_no_identity_data": {
                    "type": "integer",
                    "description": "वे प्रोफ़ाइल जिनकी स्क्रीनिंग नहीं की जा सकती क्योंकि पहचान डेटा मौजूद नहीं है।"
                  },
                  "skipped_blocked": {
                    "type": "integer",
                    "description": "ब्लॉक किए गए उपयोगकर्ता जिन्हें छोड़ दिया जाएगा (व्यवसायों के लिए हमेशा 0)।"
                  },
                  "estimated_screening_cost_usd": {
                    "type": "number",
                    "example": 0.2,
                    "description": "नई स्क्रीनिंग की एकमुश्त लागत।"
                  },
                  "estimated_annual_monitoring_cost_usd": {
                    "type": "number",
                    "example": 0.07,
                    "description": "उन प्रोफ़ाइलों की वार्षिक निगरानी लागत जिनकी निगरानी शुरू की जाएगी।"
                  },
                  "balance_sufficient": {
                    "type": "boolean",
                    "description": "क्या संगठन का बैलेंस स्क्रीनिंग और निगरानी के पहले वर्ष को कवर करता है।"
                  }
                }
              },
              "unmatched": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "अनुरोध के वे पहचानकर्ता जिनका इस एप्लिकेशन में किसी प्रोफ़ाइल से मिलान नहीं हुआ, बिल्कुल वैसे ही जैसे भेजे गए थे। वे जॉब का हिस्सा नहीं हैं।"
              }
            }
          }
        ]
      },
      "AMLMonitoringJob": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED"
            ]
          },
          "is_enabled": {
            "type": "boolean",
            "description": "जब जॉब निगरानी सक्षम करता है तो true, जब यह इसे अक्षम करता है तो false।"
          },
          "target_type": {
            "type": "string",
            "enum": [
              "user",
              "business"
            ],
            "description": "जॉब किस प्रोफ़ाइल फ़ैमिली को टॉगल करता है।"
          },
          "total": {
            "type": "integer",
            "description": "वे प्रोफ़ाइल जिन्हें जॉब संसाधित करता है।"
          },
          "processed": {
            "type": "integer",
            "description": "अब तक संसाधित की गई प्रोफ़ाइल।"
          },
          "outcomes": {
            "type": "object",
            "description": "प्रति-रिकॉर्ड परिणाम काउंटर। प्रत्येक चयनित प्रोफ़ाइल का परिणाम ठीक एक काउंटर में दर्ज होता है; कुछ भी चुपचाप छोड़ा नहीं जाता है।",
            "properties": {
              "enabled": {
                "type": "integer",
                "description": "मौजूदा AML स्क्रीनिंग पर निगरानी सक्षम कर दी गई।"
              },
              "screened_and_enabled": {
                "type": "integer",
                "description": "एक नई AML स्क्रीनिंग बनाई गई (बिल की गई) और उस पर निगरानी सक्षम की गई।"
              },
              "already_enabled": {
                "type": "integer",
                "description": "निगरानी पहले से ही सक्रिय थी; कुछ भी नहीं बदला और कोई बिलिंग नहीं की गई।"
              },
              "disabled": {
                "type": "integer",
                "description": "प्रोफ़ाइल की प्रत्येक AML स्क्रीनिंग में निगरानी बंद कर दी गई।"
              },
              "skipped_no_identity_data": {
                "type": "integer",
                "description": "छोड़ा गया: प्रोफ़ाइल में स्क्रीनिंग के लिए आवश्यक पूरा नाम, जन्म तिथि और देश (उपयोगकर्ता) या नाम (व्यवसाय) का अभाव है।"
              },
              "skipped_blocked": {
                "type": "integer",
                "description": "छोड़ा गया: उपयोगकर्ता ब्लॉक है।"
              },
              "skipped_sandbox": {
                "type": "integer",
                "description": "छोड़ा गया: सैंडबॉक्स एप्लिकेशन, कोई स्क्रीनिंग नहीं बनाई जाती है।"
              },
              "failed_provider": {
                "type": "integer",
                "description": "स्क्रीनिंग पूरी नहीं की जा सकी; बाद में पुनः प्रयास करें।"
              },
              "failed_insufficient_balance": {
                "type": "integer",
                "description": "कार्य चलने के दौरान बैलेंस समाप्त हो गया।"
              }
            }
          },
          "results": {
            "type": "array",
            "description": "प्रसंस्करण क्रम में, संसाधित की गई प्रति प्रोफ़ाइल एक प्रविष्टि। जॉब चलने के दौरान बढ़ती है; स्थिति COMPLETED होने पर पूर्ण होती है। API के माध्यम से शुरू की गई जॉब्स के लिए रिकॉर्ड किया गया।",
            "items": {
              "type": "object",
              "properties": {
                "didit_internal_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "प्रोफ़ाइल की Didit आंतरिक id।"
                },
                "vendor_data": {
                  "type": "string",
                  "nullable": true,
                  "description": "प्रोफ़ाइल के लिए आपका अपना पहचानकर्ता।"
                },
                "outcome": {
                  "type": "string",
                  "enum": [
                    "enabled",
                    "screened_and_enabled",
                    "already_enabled",
                    "disabled",
                    "skipped_no_identity_data",
                    "skipped_blocked",
                    "skipped_sandbox",
                    "failed_provider",
                    "failed_insufficient_balance"
                  ]
                }
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "स्थिति FAILED होने पर सामान्य विफलता संदेश; विस्तृत कारण प्लेटफ़ॉर्म-साइड पर रखा जाता है।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimate": {
            "type": "object",
            "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कुछ भी लिखा नहीं जाता है)।",
            "properties": {
              "users_total": {
                "type": "integer",
                "description": "चयन द्वारा मिलान की गई प्रोफ़ाइल।"
              },
              "already_enabled": {
                "type": "integer",
                "description": "पहले से मॉनिटर की जा रही प्रोफ़ाइल (सक्षम करते समय कुछ करने की आवश्यकता नहीं है; अक्षम करने पर इन्हें ही बंद किया जाता है)।"
              },
              "with_existing_aml": {
                "type": "integer",
                "description": "वे प्रोफ़ाइल जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदल दिया जाएगा (कोई नई स्क्रीनिंग नहीं)।"
              },
              "needing_screening": {
                "type": "integer",
                "description": "बिना किसी AML स्क्रीनिंग वाली प्रोफ़ाइल जिनकी पहले स्क्रीनिंग की जाएगी (नियमित AML स्क्रीनिंग के रूप में बिल किया जाएगा)।"
              },
              "skipped_no_identity_data": {
                "type": "integer",
                "description": "वे प्रोफ़ाइल जिनकी स्क्रीनिंग नहीं की जा सकती क्योंकि पहचान डेटा मौजूद नहीं है।"
              },
              "skipped_blocked": {
                "type": "integer",
                "description": "ब्लॉक किए गए उपयोगकर्ता जिन्हें छोड़ दिया जाएगा (व्यवसायों के लिए हमेशा 0)।"
              },
              "estimated_screening_cost_usd": {
                "type": "number",
                "example": 0.2,
                "description": "नई स्क्रीनिंग की एकमुश्त लागत।"
              },
              "estimated_annual_monitoring_cost_usd": {
                "type": "number",
                "example": 0.07,
                "description": "उन प्रोफ़ाइलों की वार्षिक निगरानी लागत जिनकी निगरानी शुरू की जाएगी।"
              },
              "balance_sufficient": {
                "type": "boolean",
                "description": "क्या संगठन का बैलेंस स्क्रीनिंग और निगरानी के पहले वर्ष को कवर करता है।"
              }
            }
          },
          "unmatched": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "अनुरोध के वे पहचानकर्ता जिनका इस एप्लिकेशन में किसी प्रोफ़ाइल से मिलान नहीं हुआ, बिल्कुल वैसे ही जैसे भेजे गए थे। वे जॉब का हिस्सा नहीं हैं।"
          }
        }
      },
      "OngoingMonitoringToggleRequest": {
        "type": "object",
        "required": [
          "is_enabled"
        ],
        "properties": {
          "is_enabled": {
            "type": "boolean",
            "description": "निगरानी सक्षम करने के लिए true, इसे अक्षम करने के लिए false।"
          },
          "estimate_only": {
            "type": "boolean",
            "default": false,
            "description": "true होने पर, लागत अनुमान लौटाता है और कोई राइट ऑपरेशन नहीं करता है।"
          },
          "update_all": {
            "type": "boolean",
            "default": false,
            "description": "एप्लिकेशन की प्रत्येक इकाई पर लागू करें (उपस्थित होने पर filter_* पैरामीटर द्वारा सीमित)।"
          },
          "filter_search": {
            "type": "string"
          },
          "filter_status": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "filter_country": {
            "type": "string"
          },
          "filter_date_from": {
            "type": "string",
            "format": "date"
          },
          "filter_date_to": {
            "type": "string",
            "format": "date"
          },
          "didit_internal_id_list": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "टॉगल करने के लिए संस्थाएँ। आवश्यक है जब तक कि update_all true न हो।"
          }
        }
      },
      "OngoingMonitoringJob": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "COMPLETED",
              "FAILED"
            ]
          },
          "is_enabled": {
            "type": "boolean"
          },
          "total": {
            "type": "integer"
          },
          "processed": {
            "type": "integer"
          },
          "outcomes": {
            "type": "object",
            "description": "प्रति-इकाई परिणाम काउंटर। कुछ भी चुपचाप छोड़ा नहीं जाता है: प्रत्येक अनुरोधित इकाई ठीक एक काउंटर पर हल होती है।",
            "properties": {
              "enabled": {
                "type": "integer",
                "description": "मौजूदा AML स्क्रीनिंग पर निगरानी सक्षम कर दी गई।"
              },
              "screened_and_enabled": {
                "type": "integer",
                "description": "एक नई AML स्क्रीनिंग बनाई गई (बिल की गई) और निगरानी सक्षम की गई।"
              },
              "already_enabled": {
                "type": "integer",
                "description": "निगरानी पहले से ही सक्रिय थी (लीगेसी डुप्लिकेट पंक्तियों को समेकित किया गया है)।"
              },
              "disabled": {
                "type": "integer",
                "description": "इकाई की प्रत्येक AML पंक्ति पर निगरानी अक्षम कर दी गई।"
              },
              "skipped_no_identity_data": {
                "type": "integer",
                "description": "छोड़ा गया: स्क्रीनिंग के लिए कोई पूरा नाम + जन्म तिथि + देश उपलब्ध नहीं है।"
              },
              "skipped_blocked": {
                "type": "integer",
                "description": "छोड़ा गया: उपयोगकर्ता ब्लॉक है।"
              },
              "skipped_sandbox": {
                "type": "integer",
                "description": "छोड़ा गया: सैंडबॉक्स एप्लिकेशन।"
              },
              "failed_provider": {
                "type": "integer",
                "description": "स्क्रीनिंग प्रदाता को कॉल विफल रही।"
              },
              "failed_insufficient_balance": {
                "type": "integer",
                "description": "कार्य के बीच में ही बैलेंस समाप्त हो गया।"
              }
            }
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "estimate": {
            "type": "object",
            "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कोई राइट निष्पादित नहीं किया जाता है)।",
            "properties": {
              "users_total": {
                "type": "integer",
                "description": "चयन में शामिल इकाइयाँ।"
              },
              "already_enabled": {
                "type": "integer"
              },
              "with_existing_aml": {
                "type": "integer",
                "description": "वे संस्थाएँ जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदला जाएगा।"
              },
              "needing_screening": {
                "type": "integer",
                "description": "बिना किसी AML स्क्रीनिंग वाली इकाइयाँ जिन्हें पहले स्क्रीन किया जाएगा (बिल किया जाएगा)।"
              },
              "skipped_no_identity_data": {
                "type": "integer"
              },
              "skipped_blocked": {
                "type": "integer"
              },
              "estimated_screening_cost_usd": {
                "type": "number",
                "example": 0.2
              },
              "estimated_annual_monitoring_cost_usd": {
                "type": "number",
                "example": 0.07
              },
              "balance_sufficient": {
                "type": "boolean"
              }
            }
          }
        }
      },
      "OngoingMonitoringToggleResult": {
        "oneOf": [
          {
            "type": "object",
            "description": "लागत पूर्वावलोकन। estimate_only true होने पर सीधे लौटाया जाता है (कोई राइट निष्पादित नहीं किया जाता है)।",
            "properties": {
              "users_total": {
                "type": "integer",
                "description": "चयन में शामिल इकाइयाँ।"
              },
              "already_enabled": {
                "type": "integer"
              },
              "with_existing_aml": {
                "type": "integer",
                "description": "वे संस्थाएँ जिनकी मौजूदा AML स्क्रीनिंग को निगरानी में बदला जाएगा।"
              },
              "needing_screening": {
                "type": "integer",
                "description": "बिना किसी AML स्क्रीनिंग वाली इकाइयाँ जिन्हें पहले स्क्रीन किया जाएगा (बिल किया जाएगा)।"
              },
              "skipped_no_identity_data": {
                "type": "integer"
              },
              "skipped_blocked": {
                "type": "integer"
              },
              "estimated_screening_cost_usd": {
                "type": "number",
                "example": 0.2
              },
              "estimated_annual_monitoring_cost_usd": {
                "type": "number",
                "example": 0.07
              },
              "balance_sufficient": {
                "type": "boolean"
              }
            }
          },
          {
            "$ref": "#/components/schemas/OngoingMonitoringJob"
          }
        ]
      },
      "CaseBlueprintPresetInstallResult": {
        "type": "object",
        "properties": {
          "created": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CaseBulkUpdateResult": {
        "type": "object",
        "properties": {
          "updated": {
            "type": "integer"
          },
          "failures": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "case_uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "detail": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "RegulatoryReportList": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "मिलान वाली पंक्तियों की संख्या, परफ़ॉर्मेंस के लिए 100 पर सीमित।"
          },
          "next": {
            "type": "string",
            "nullable": true
          },
          "previous": {
            "type": "string",
            "nullable": true
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegulatoryReportDetail"
            }
          }
        }
      },
      "EntityNetworkMembershipList": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityNetworkMembership"
            }
          }
        }
      },
      "SessionDecision": {
        "type": "object",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्र का विशिष्ट पहचानकर्ता।"
          },
          "session_kind": {
            "type": "string",
            "enum": [
              "user",
              "business"
            ],
            "description": "यह इंगित करने वाला डिस्क्रिमिनेटर कि यह उपयोगकर्ता सत्यापन (KYC) सत्र है या व्यवसाय सत्यापन (KYB) सत्र। जब `user` हो, तो KYC फ़ीचर ऐरे (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `document_ai_documents`, `database_validations`, ...) लागू होते हैं और व्यावसायिक ऐरे अनुपस्थित होते हैं। जब `business` हो, तो payload में `registry_checks`, `document_verifications`, `key_people_checks` के साथ-साथ साझा ऐरे (`aml_screenings`, `phone_verifications`, `email_verifications`, `ip_analyses`, `questionnaire_responses`) शामिल होते हैं। **`include=events` पास होने पर छोड़ दिया जाता है** — events संरचना केवल उपयोगकर्ता सत्रों के लिए मौजूद होती है, इसलिए उस वेरिएंट से डिस्क्रिमिनेटर हटा दिया जाता है।"
          },
          "shared_from_session": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "`POST /v3/session/import-shared/` के साथ क्लोन किए गए सत्र के लिए: स्रोत एप्लिकेशन में मूल सत्र का `session_id`। अन्य सभी सत्रों के लिए `null`। `include=events` पास किए जाने पर छोड़ दिया जाता है।"
          },
          "shared_from_session_number": {
            "type": "integer",
            "nullable": true,
            "description": "स्रोत सत्र का `session_number` जब इस सत्र को आपके संगठन के किसी अन्य एप्लिकेशन से इंपोर्ट किया गया था। अन्यथा `null`।"
          },
          "session_number": {
            "type": "integer",
            "description": "सत्र की संख्या।",
            "nullable": true
          },
          "session_url": {
            "type": "string",
            "format": "uri",
            "description": "सत्र का URL।",
            "nullable": true
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Started",
              "In Progress",
              "Awaiting User",
              "In Review",
              "Approved",
              "Declined",
              "Resubmitted",
              "Expired",
              "Kyc Expired",
              "Abandoned"
            ],
            "description": "सत्र की समग्र जीवनचक्र स्थिति — समेकित वर्कफ़्लो परिणाम। अंतिम मान `Approved`, `Declined`, `In Review`, `Expired`, `Kyc Expired`, और `Abandoned` हैं; `Not Started`, `In Progress`, `Awaiting User`, और `Resubmitted` इंगित करते हैं कि सत्र अभी भी वर्कफ़्लो से गुज़र रहा है।"
          },
          "status_override": {
            "type": "object",
            "nullable": true,
            "description": "समीक्षक द्वारा मैन्युअल रूप से `status` सेट किए जाने पर मौजूद होता है। स्थिति स्वचालित होने पर `null` होता है। इसका उपयोग मैन्युअल स्वीकृति को स्वचालित स्वीकृति से अलग पहचानने के लिए करें।",
            "properties": {
              "overridden_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "automatic_status": {
                "type": "string",
                "nullable": true,
                "description": "वह स्थिति जो प्लेटफ़ॉर्म की अपनी जाँचों से निष्कर्ष के रूप में निकलती है।"
              }
            }
          },
          "decision_trace": {
            "type": "object",
            "description": "स्थिति तक कैसे पहुँचा गया: इसे किसने सेट किया और किन चेतावनियों ने ऐसा किया।",
            "properties": {
              "status": {
                "type": "string",
                "description": "सत्र की स्थिति।"
              },
              "decided_by": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "manual",
                  "automatic",
                  "investigator",
                  null
                ],
                "description": "स्थिति किसने निर्धारित की। जब तक सत्र का निर्णय नहीं हो जाता, तब तक `null`।"
              },
              "decided_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "automatic_status": {
                "type": "string",
                "nullable": true,
                "description": "प्लेटफ़ॉर्म की अपनी जाँचें क्या निष्कर्ष निकालती हैं, जो मैन्युअल निर्णय के बाद `status` से भिन्न होता है।"
              },
              "terminal_node_id": {
                "type": "string",
                "nullable": true,
                "description": "वर्कफ़्लो स्थिति नोड जिसने सत्र समाप्त किया, यदि ऐसा कोई नोड था।"
              },
              "actor": {
                "type": "object",
                "nullable": true,
                "description": "मैन्युअल निर्णय के पीछे का समीक्षक।",
                "properties": {
                  "user": {
                    "type": "string",
                    "nullable": true
                  },
                  "actor_type": {
                    "type": "string",
                    "nullable": true
                  }
                }
              },
              "warning_counts": {
                "type": "object",
                "description": "प्रति `log_type` (`error`, `warning`, `information`) और `total` चेतावनियाँ।",
                "additionalProperties": {
                  "type": "integer"
                }
              },
              "status_warnings": {
                "type": "array",
                "description": "वे चेतावनियां जो `Declined` या `In Review` स्थिति सेट करती हैं।",
                "items": {
                  "type": "object",
                  "properties": {
                    "risk": {
                      "type": "string"
                    },
                    "feature": {
                      "type": "string",
                      "nullable": true
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "log_type": {
                      "type": "string",
                      "nullable": true
                    },
                    "check_status": {
                      "type": "string",
                      "nullable": true
                    },
                    "source": {
                      "type": "string",
                      "description": "वह payload सूची जिससे चेतावनी आई है, उदाहरण के लिए `id_verifications`।"
                    },
                    "short_description": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "linked_records": {
            "type": "object",
            "nullable": true,
            "description": "सत्र से जुड़े अन्य रिकॉर्ड का सारांश। दिखाने के लिए कुछ न होने पर, और उन वर्कफ़्लो के लिए जो आयु आश्वासन मानक घोषित करते हैं, `null` होता है।",
            "properties": {
              "same_face": {
                "type": "object",
                "nullable": true,
                "description": "अन्य लोग जिनका चेहरा इस सत्र की किसी चेहरा खोज से मेल खाता है।",
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "best_match": {
                    "type": "object",
                    "nullable": true,
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                      },
                      "session_number": {
                        "type": "integer",
                        "nullable": true
                      },
                      "vendor_user_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                      },
                      "similarity_percentage": {
                        "type": "number",
                        "nullable": true
                      }
                    }
                  }
                }
              },
              "earlier_verifications": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "vendor_user_id": {
                    "type": "string",
                    "format": "uuid",
                    "nullable": true
                  }
                }
              },
              "networks": {
                "type": "object",
                "nullable": true,
                "properties": {
                  "count": {
                    "type": "integer"
                  },
                  "open": {
                    "type": "integer"
                  },
                  "dismissed": {
                    "type": "integer"
                  },
                  "items": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "network_id": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "display_number": {
                          "type": "integer",
                          "nullable": true
                        },
                        "name": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "risk_score": {
                          "type": "number",
                          "nullable": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "description": "वर्कफ़्लो समूह का स्थिर पहचानकर्ता जिसने यह सत्र बनाया। वर्कफ़्लो संस्करणित होते हैं — यह मान विशिष्ट संस्करण की नहीं, बल्कि स्वयं वर्कफ़्लो की पहचान करता है।",
            "nullable": true
          },
          "features": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "सत्र की सुविधा।"
            },
            "description": "इस सत्र के लिए कॉन्फ़िगर की गई सत्यापन सुविधाओं की सूची, प्रदर्शन नामों के रूप में: `ID_VERIFICATION`, `NFC`, `LIVENESS`, `FACE_MATCH`, `POA`, `PHONE`, `EMAIL_VERIFICATION`, `AML`, `IP_ANALYSIS`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `AGE_ESTIMATION`, `FACE_SEARCH`, `GEOLOCATION` (स्थान सत्यापन) (व्यवसाय सत्यापन सत्र KYB सुविधा सेट का उपयोग करते हैं: `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`, `AML`, `PHONE`, `EMAIL_VERIFICATION`, `IP_ANALYSIS`, `QUESTIONNAIRE`)। `include=events` के साथ प्रत्येक प्रविष्टि एक सादे स्ट्रिंग के बजाय एक ऑब्जेक्ट `{feature, node_id}` बन जाती है, और ईमेल सुविधा का नाम बदल दिया जाता है: यह यहाँ उपयोग किए गए `EMAIL_VERIFICATION` के बजाय इवेंट मोड में `EMAIL` के रूप में दिखाई देती है।"
          },
          "vendor_data": {
            "type": "string",
            "description": "सत्र का वेंडर डेटा।",
            "nullable": true
          },
          "metadata": {
            "type": "object",
            "description": "सत्र का मेटाडेटा।",
            "nullable": true
          },
          "expected_details": {
            "type": "object",
            "description": "सत्र निर्माण के समय दिए गए अपेक्षित विवरण — निकाले गए डेटा (KYC) के विरुद्ध क्रॉस-सत्यापन के लिए या कंपनी रजिस्ट्री खोज (KYB) को पहले से भरने के लिए उपयोग किए जाते हैं। जो कुंजियाँ प्रदान की गई थीं, उन्हें ठीक वैसे ही लौटाता है; कोई प्रदान न किए जाने पर `null`। KYC सत्रों में व्यक्ति के फ़ील्ड होते हैं; व्यवसाय (KYB) सत्रों में `company_name`, `registry_country` और `registration_number` होते हैं।",
            "properties": {
              "first_name": {
                "type": "string",
                "description": "उपयोगकर्ता का पहला नाम। उदाहरण के लिए, `John`।"
              },
              "last_name": {
                "type": "string",
                "description": "उपयोगकर्ता का अंतिम नाम। उदाहरण के लिए, `Doe`।"
              },
              "date_of_birth": {
                "type": "string",
                "format": "date",
                "description": "उपयोगकर्ता की जन्म तिथि, प्रारूप: YYYY-MM-DD। उदाहरण के लिए, `1990-05-15`।"
              },
              "gender": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "M",
                  "F"
                ],
                "default": null,
                "description": "उपयोगकर्ता का लिंग। 'M', 'F', या null होना चाहिए।"
              },
              "nationality": {
                "type": "string",
                "description": "आवेदक के मूल देश का प्रतिनिधित्व करने वाला ISO 3166-1 alpha-3 देश कोड। उदाहरण के लिए, `USA`।"
              },
              "country": {
                "type": "string",
                "description": "पते का प्रमाण दस्तावेज़ के देश, या आवेदक के ID दस्तावेज़ के देश का प्रतिनिधित्व करने वाला ISO 3166-1 alpha-3 देश कोड, जो राष्ट्रीयता से भिन्न हो सकता है। उदाहरण के लिए, `GBR`।"
              },
              "address": {
                "type": "string",
                "description": "मानव पठनीय प्रारूप में पता, जिसमें यथासंभव अधिक जानकारी शामिल हो। उदाहरण के लिए, `123 Main St, San Francisco, CA 94105, USA`।"
              },
              "identification_number": {
                "type": "string",
                "description": "उपयोगकर्ता का दस्तावेज़ नंबर, व्यक्तिगत नंबर, या कर नंबर। उदाहरण के लिए, `123456789`।"
              },
              "ip_address": {
                "type": "string",
                "format": "ipv4",
                "description": "सत्र के लिए अपेक्षित IP पता। यदि वास्तविक IP पता इस मान से भिन्न है, तो एक चेतावनी लॉग की जाएगी। उदाहरण के लिए, `192.168.1.100`।"
              },
              "expected_document_types": {
                "type": "array",
                "description": "सत्र निर्माण के समय वे दस्तावेज़ प्रकार जिन पर पहचान सत्यापन चरण को प्रतिबंधित किया गया था। खाली/अनसेट का अर्थ है कोई प्रतिबंध नहीं। कोड: `P` (पासपोर्ट), `ID` (राष्ट्रीय पहचान पत्र), `DL` (ड्राइविंग लाइसेंस), `RP` (निवास परमिट), `HIC` (स्वास्थ्य बीमा कार्ड), `TC` (टैक्स कार्ड), `SSC` (सोशल सिक्योरिटी कार्ड)।",
                "items": {
                  "type": "string",
                  "enum": [
                    "P",
                    "ID",
                    "DL",
                    "RP",
                    "HIC",
                    "TC",
                    "SSC"
                  ]
                }
              },
              "id_country": {
                "type": "string",
                "nullable": true,
                "description": "अपेक्षित पहचान-दस्तावेज़ जारीकर्ता देश (ISO 3166-1 alpha-3), यदि निर्माण के समय प्रतिबंधित किया गया हो।",
                "example": "ESP"
              },
              "poa_country": {
                "type": "string",
                "nullable": true,
                "description": "अपेक्षित पते का प्रमाण दस्तावेज़ देश (ISO 3166-1 alpha-3), यदि निर्माण के समय प्रतिबंधित किया गया हो।",
                "example": "ESP"
              },
              "company_name": {
                "type": "string",
                "description": "व्यवसाय का अपेक्षित कानूनी नाम। केवल व्यवसाय (KYB) सत्र।"
              },
              "registry_country": {
                "type": "string",
                "description": "अपेक्षित रजिस्ट्री देश `XX` या `XX-YY` के रूप में (ISO 3166-1 alpha-2, वैकल्पिक रूप से राज्य-स्तरीय रजिस्ट्रियों के लिए ISO 3166-2 उपविभाजन के साथ, जैसे `US-CA`)। केवल व्यवसाय (KYB) सत्र।"
              },
              "registration_number": {
                "type": "string",
                "description": "अपेक्षित कंपनी पंजीकरण संख्या। केवल व्यवसाय (KYB) सत्र।"
              }
            },
            "nullable": true
          },
          "contact_details": {
            "type": "object",
            "description": "सत्र बनाते समय प्रदान किए गए संपर्क विवरण (अधिसूचना ईमेल, पहले से भरे फ़ोन/ईमेल सत्यापन और संचार भाषा के लिए उपयोग किए जाते हैं)। जब न तो कोई ईमेल और न ही कोई फ़ोन नंबर प्रदान किया गया था, तब `null` होता है।",
            "properties": {
              "email": {
                "type": "string",
                "description": "उपयोगकर्ता का ईमेल पता (उदा. \"john.doe@example.com\") जिसका उपयोग ईमेल सत्यापन चरण के दौरान किया जाएगा। यदि प्रदान नहीं किया गया है, तो उपयोगकर्ता को इसे सत्यापन प्रवाह के दौरान प्रदान करना होगा।"
              },
              "email_lang": {
                "type": "string",
                "description": "ईमेल सूचनाओं के लिए भाषा कोड (ISO 639-1)। सभी ईमेल संचारों की भाषा को नियंत्रित करता है (उदा. \"en\", \"es\", \"fr\")।"
              },
              "send_notification_emails": {
                "type": "boolean",
                "default": false,
                "description": "यदि true है और एक ईमेल प्रदान किया गया है, तो उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र बनाए जाने पर Didit एसिंक्रोनस रूप से प्रारंभिक \"Verify your identity\" ईमेल भेजता है। Didit दिए गए ईमेल पते पर मैन्युअल समीक्षा की आवश्यकता वाले सत्रों के लिए सत्यापन स्थिति सूचनाएं भी भेजता है।"
              },
              "phone": {
                "type": "string",
                "nullable": true,
                "description": "उपलब्ध होने पर E.164 प्रारूप में उपयोगकर्ता का फ़ोन नंबर (उदा., +14155552671)। सत्र निर्माण के समय केवल ईमेल दिए जाने पर `null`। नोट: यह फ़ील्ड सत्र निर्माण के दौरान प्रदान किया गया मूल फ़ोन नंबर लौटाता है। यदि नंबर अमान्य था, तो हो सकता है कि यह E.164 प्रारूप में न हो।"
              }
            },
            "nullable": true
          },
          "callback": {
            "type": "string",
            "format": "uri",
            "description": "सत्र का कॉलबैक URL।",
            "nullable": true
          },
          "id_verifications": {
            "type": "array",
            "nullable": true,
            "description": "वर्कफ़्लो ग्राफ़ में पहचान-दस्तावेज़ चरणों द्वारा निर्मित **पहचान सत्यापन (OCR) रिपोर्टों की ऐरे**। हमेशा एक JSON ऐरे — `id_verifications[0]` पढ़ें और पुनरावृति करें यदि आपका वर्कफ़्लो एक से अधिक पहचान जाँच चला सकता है (उदाहरण के लिए प्राथमिक जाँच और साथ ही स्टेप-अप)। तब तक `null` जब तक कम से कम एक पहचान चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, निकाले गए दस्तावेज़ फ़ील्ड, छवि URLs, गुणवत्ता स्कोर, MRZ, पता पार्सिंग, क्रॉस-सत्र मिलान, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "description": "एक पहचान सत्यापन रिपोर्ट - एकल पहचान सत्यापन चरण के लिए पूरी रिपोर्ट। `verification_method` बताता है कि तीनों विधियों में से किसने इसे तैयार किया है (दस्तावेज़ कैप्चर, गैर-दस्तावेज़ लुकअप या वॉलेट साइन-इन) और विधि-विशिष्ट साक्ष्य ब्लॉक तदनुसार भरा जाता है।",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "इस रिपोर्ट को तैयार करने वाले OCR चरण का वर्कफ़्लो ग्राफ़ नोड id।"
                },
                "verification_method": {
                  "type": "string",
                  "enum": [
                    "document",
                    "id_lookup",
                    "wallet"
                  ],
                  "description": "किस पहचान सत्यापन विधि ने यह रिपोर्ट जनरेट की। `document` - उपयोगकर्ता ने भौतिक आईडी की फ़ोटो ली (डिफ़ॉल्ट, और अन्य विधियों के आने से पहले बनाए गए प्रत्येक सत्र का मान)। `id_lookup` - उपयोगकर्ता ने अपना राष्ट्रीय आईडी नंबर टाइप किया और उस देश के सरकारी रजिस्टर या किसी अन्य आधिकारिक स्रोत से इसका मिलान किया गया (`id_lookup.source` बताता है कि कौन सा)। `wallet` - उपयोगकर्ता ने सरकारी या बैंक डिजिटल पहचान के साथ साइन इन किया।"
                },
                "assurance": {
                  "type": "string",
                  "enum": [
                    "documentary",
                    "data_match",
                    "cryptographic"
                  ],
                  "description": "`verification_method` से प्राप्त एश्योरेंस स्तर: कैप्चर और जाँचे गए दस्तावेज़ के लिए `documentary`, क्वेरी किए गए स्रोत द्वारा रखे गए रिकॉर्ड से मेल खाने वाले विवरणों के लिए `data_match`, पहचान प्रदाता द्वारा प्रमाणित और हस्ताक्षरित विशेषताओं के लिए `cryptographic`।"
                },
                "wallet_provider": {
                  "type": "string",
                  "nullable": true,
                  "description": "जब `verification_method`, `wallet` हो तो कैटलॉग वॉलेट id (`mitid`, `bankid_se`, `itsme`, ...)। अन्यथा `null`।"
                },
                "fallback_from": {
                  "type": "object",
                  "nullable": true,
                  "description": "गैर-दस्तावेज़ पद्धति ने ID चरण को समाप्त क्यों नहीं किया। लुकअप या वॉलेट साइन-इन विफल होने पर सेट किया जाता है: उस दस्तावेज़ सत्यापन पर जिसे उपयोगकर्ता ने जारी रखा जब देश का फ़ॉलबैक स्विच `fallback_to_document` था (`action`, `fallback_to_document` है), या अस्वीकृत रिपोर्ट पर जब यह `decline` था। अन्यथा `null`।",
                  "properties": {
                    "method": {
                      "type": "string",
                      "enum": [
                        "id_lookup",
                        "wallet"
                      ],
                      "description": "वह विधि जो विफल रही।"
                    },
                    "reason": {
                      "type": "string",
                      "description": "वह परिणाम जिसने इसे समाप्त किया, उदाहरण के लिए `no_match`, `provider_error`, `cancelled`, `timeout`।"
                    },
                    "action": {
                      "type": "string",
                      "enum": [
                        "fallback_to_document",
                        "decline"
                      ],
                      "description": "कॉन्फ़िगर की गई कार्रवाई जो की गई थी: `fallback_to_document` या `decline`।"
                    }
                  }
                },
                "id_lookup": {
                  "type": "object",
                  "nullable": true,
                  "description": "रजिस्ट्री साक्ष्य। केवल तभी मौजूद होता है जब `verification_method` का मान `id_lookup` हो; अन्यथा `null`।",
                  "properties": {
                    "source": {
                      "type": "string",
                      "description": "क्वेरी किए गए स्रोत का ग्राहक-सामना करने वाला नाम, उदा. `Department of Home Affairs` (एक सरकारी रजिस्टर) या `UK credit bureau and financial services records` (सरकारी रजिस्टर नहीं)। यह लुकअप के स्रोत का एकमात्र विवरण है; इसे सरकारी स्रोत न मानें।"
                    },
                    "checked_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "रजिस्टर ने कब उत्तर दिया।"
                    },
                    "attempts": {
                      "type": "integer",
                      "description": "1-आधारित प्रयास संख्या जिससे यह रिपोर्ट आई है।"
                    },
                    "max_attempts": {
                      "type": "integer",
                      "description": "देश के लिए कॉन्फ़िगर किया गया प्रयास बजट (1 से 5, डिफ़ॉल्ट 1)।"
                    },
                    "outcome": {
                      "type": "string",
                      "enum": [
                        "match",
                        "partial_match",
                        "no_match",
                        "provider_error",
                        "format_rejected"
                      ],
                      "nullable": true,
                      "description": "रजिस्टर ने क्या उत्तर दिया। केवल `match`, `partial_match` और `no_match` ही प्रयास बजट और बिलिंग में गिने जाते हैं।"
                    },
                    "comparison": {
                      "type": "array",
                      "description": "स्रोत द्वारा उत्तर दिए गए प्रत्येक तुलनीय फ़ील्ड के लिए एक पंक्ति, साथ ही प्रति स्रोत त्रुटि एक पंक्ति। तुलना पंक्तियाँ देश की अनुरोध फ़ील्ड कुंजियों के बजाय नीचे दिए गए सामान्यीकृत फ़ील्ड नामों का उपयोग करती हैं, क्योंकि कई अनुरोध फ़ील्ड (पहला और अंतिम नाम, या कोई भी पहचानकर्ता उपनाम) एक ही तुलना में संक्षिप्त हो जाते हैं। जो स्रोत विफल रहा, वह `field: \"provider\"` और `result: \"error\"` के साथ एक पंक्ति जोड़ता है, इसलिए किसी पंक्ति को फ़ील्ड निर्णय मानने से पहले `result` पढ़ें।",
                      "items": {
                        "type": "object",
                        "required": [
                          "field",
                          "label",
                          "provided",
                          "record",
                          "result"
                        ],
                        "properties": {
                          "field": {
                            "type": "string",
                            "enum": [
                              "identification_number",
                              "full_name",
                              "date_of_birth",
                              "address",
                              "provider"
                            ],
                            "description": "सामान्यीकृत तुलना फ़ील्ड। `provider` कोई उपयोगकर्ता फ़ील्ड नहीं है: यह स्रोत त्रुटि पंक्ति को चिह्नित करता है।"
                          },
                          "label": {
                            "type": "string",
                            "description": "पंक्ति के लिए डिस्प्ले लेबल, उदाहरण के लिए `ID number`, `Full name`, `Provider`।"
                          },
                          "provided": {
                            "type": "string",
                            "nullable": true,
                            "description": "उपयोगकर्ता ने क्या टाइप किया। `provider` त्रुटि पंक्ति पर `null`।"
                          },
                          "record": {
                            "type": "string",
                            "nullable": true,
                            "description": "स्रोत के पास क्या था। `provider` त्रुटि पंक्ति पर यह इसके बजाय त्रुटि संदेश दिखाता है।"
                          },
                          "result": {
                            "type": "string",
                            "enum": [
                              "match",
                              "partial",
                              "no_match",
                              "error"
                            ],
                            "description": "प्रति-फ़ील्ड तुलना परिणाम। `error` केवल `provider` पंक्ति पर दिखाई देता है और इसका अर्थ है कि उस स्रोत ने उत्तर नहीं दिया; इसे क्वेरी के संबंध में साक्ष्य मानें, कभी भी फ़ील्ड बेमेल के रूप में नहीं।"
                          }
                        }
                      }
                    },
                    "registry_portrait": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "स्रोत द्वारा लौटाए गए पोर्ट्रेट का अल्पकालिक प्रीसाइन्ड URL। केवल वे चार सरकारी रजिस्टर जो इसे लौटाते हैं (दक्षिण अफ्रीका, नाइजीरिया, अर्जेंटीना, पनामा)।"
                    },
                    "face_match_score": {
                      "type": "number",
                      "nullable": true,
                      "description": "रजिस्ट्री पोर्ट्रेट के विरुद्ध सेल्फ़ी, 0-100। केवल वहीं जहाँ रजिस्टर एक पोर्ट्रेट लौटाता है।"
                    }
                  }
                },
                "wallet_verification": {
                  "type": "object",
                  "nullable": true,
                  "description": "क्रेडेंशियल साक्ष्य। केवल तभी मौजूद होता है जब `verification_method`, `wallet` हो; अन्यथा `null`।",
                  "properties": {
                    "provider": {
                      "type": "string",
                      "description": "कैटलॉग वॉलेट id, उदा. `mitid`।"
                    },
                    "provider_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "वॉलेट का नाम जैसा कि अंतिम उपयोगकर्ता इसे जानता है, उदा. `MitID`।"
                    },
                    "issuing_authority": {
                      "type": "string",
                      "nullable": true,
                      "description": "वॉलेट के पीछे का प्राधिकरण, उदा. `Danish Agency for Digital Government`।"
                    },
                    "issuing_country": {
                      "type": "string",
                      "description": "ISO 3166-1 alpha-3 देश जिसमें वॉलेट की पेशकश की गई थी।"
                    },
                    "credential_type": {
                      "type": "string",
                      "nullable": true,
                      "description": "वॉलेट द्वारा प्रस्तुत क्रेडेंशियल, उदाहरण के लिए `person_identification`।"
                    },
                    "level_of_assurance": {
                      "type": "string",
                      "enum": [
                        "low",
                        "substantial",
                        "high"
                      ],
                      "nullable": true,
                      "description": "वॉलेट द्वारा दावा किया गया एश्योरेंस स्तर। अनुरोधित स्तर से कम का दावा करने वाला साइन-इन डाउनग्रेड होने के बजाय विफल हो जाता है।"
                    },
                    "verified_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "वॉलेट के प्रमाणीकरण का समय।"
                    },
                    "signature_valid": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "क्या वॉलेट द्वारा लौटाया गया हस्ताक्षरित असर्शन मान्य हुआ।"
                    },
                    "attributes": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "वॉलेट द्वारा साझा की गई विशेषताएँ, जिन्हें वॉलेट की कैटलॉग प्रविष्टि की सूची के अनुसार कीड किया गया है।"
                    },
                    "portrait": {
                      "type": "string",
                      "format": "uri",
                      "nullable": true,
                      "description": "वॉलेट द्वारा साझा किए गए पोर्ट्रेट का अल्पकालिक प्रीसाइन्ड URL, जहाँ यह एक साझा करता है।"
                    },
                    "face_match_score": {
                      "type": "number",
                      "nullable": true,
                      "description": "वॉलेट पोर्ट्रेट के विरुद्ध सेल्फ़ी, 0-100, जहाँ वॉलेट इसे साझा करता है।"
                    }
                  }
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Expired"
                  ],
                  "description": "इस पहचान सत्यापन चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।"
                },
                "document_type": {
                  "type": "string",
                  "description": "पहचान दस्तावेज़ का प्रकार"
                },
                "document_subtype": {
                  "type": "string",
                  "nullable": true,
                  "description": "वर्कफ़्लो दस्तावेज़ सेटिंग्स से स्वीकृत दस्तावेज़ उप-प्रकार कोड, जिसमें लागू होने पर दस्तावेज़ क्षेत्र शामिल है। उदाहरण: `ID_CARD_GENERIC`, `QUEENSLAND_DRIVER_LICENSE_GENERIC`।"
                },
                "document_number": {
                  "type": "string",
                  "description": "दस्तावेज़ पहचान संख्या"
                },
                "personal_number": {
                  "type": "string",
                  "description": "व्यक्तिगत पहचान संख्या"
                },
                "portrait_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "पोर्ट्रेट छवि का URL"
                },
                "front_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के सामने के भाग की छवि का URL"
                },
                "front_video": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के सामने के भाग के वीडियो का URL"
                },
                "back_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के पिछले हिस्से की छवि का URL"
                },
                "back_video": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के पिछले भाग के वीडियो का URL"
                },
                "full_front_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के सामने के भाग की पूर्ण छवि का URL"
                },
                "full_back_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "दस्तावेज़ के पिछले भाग की पूर्ण छवि का URL"
                },
                "front_image_camera_front": {
                  "type": "string",
                  "format": "uri",
                  "description": "सामने वाले कैमरे से कैप्चर की गई दस्तावेज़ के अग्र भाग की छवि का URL"
                },
                "back_image_camera_front": {
                  "type": "string",
                  "format": "uri",
                  "description": "सामने वाले कैमरे से कैप्चर की गई दस्तावेज़ के पिछले भाग की छवि का URL"
                },
                "date_of_birth": {
                  "type": "string",
                  "format": "date",
                  "description": "दस्तावेज़ से जन्म तिथि"
                },
                "age": {
                  "type": "integer",
                  "description": "जन्म तिथि से परिकलित आयु"
                },
                "expiration_date": {
                  "type": "string",
                  "format": "date",
                  "description": "दस्तावेज़ की समाप्ति तिथि"
                },
                "date_of_issue": {
                  "type": "string",
                  "format": "date",
                  "description": "दस्तावेज़ जारी करने की तिथि"
                },
                "issuing_state": {
                  "type": "string",
                  "description": "जारीकर्ता राज्य का ISO कोड"
                },
                "issuing_state_name": {
                  "type": "string",
                  "description": "जारीकर्ता राज्य का पूरा नाम"
                },
                "first_name": {
                  "type": "string",
                  "description": "दस्तावेज़ से पहला नाम"
                },
                "last_name": {
                  "type": "string",
                  "description": "दस्तावेज़ से अंतिम नाम"
                },
                "full_name": {
                  "type": "string",
                  "description": "दस्तावेज़ से पूरा नाम"
                },
                "gender": {
                  "type": "string",
                  "description": "दस्तावेज़ से लिंग"
                },
                "address": {
                  "type": "string",
                  "description": "दस्तावेज़ से प्राप्त रॉ पता"
                },
                "formatted_address": {
                  "type": "string",
                  "description": "फ़ॉर्मेट किया गया पूरा पता"
                },
                "place_of_birth": {
                  "type": "string",
                  "description": "दस्तावेज़ से जन्म स्थान"
                },
                "marital_status": {
                  "type": "string",
                  "description": "दस्तावेज़ से वैवाहिक स्थिति"
                },
                "nationality": {
                  "type": "string",
                  "description": "ISO राष्ट्रीयता कोड"
                },
                "extra_fields": {
                  "type": "object",
                  "description": "अतिरिक्त दस्तावेज़ फ़ील्ड। इसमें दस्तावेज़-विशिष्ट विशेषताएँ शामिल हैं (उदा. `dl_categories`, `blood_group`, `sponsor`, `employer`, `dl_class_code_b_from`, `dl_class_code_b_to`)। ड्राइविंग लाइसेंस श्रेणी की वैधता तिथियां `dl_class_code_<class>_from` और `dl_class_code_<class>_to` के रूप में लौटाई जाती हैं, और प्रति-श्रेणी प्रतिबंध/सूचना कोड (उदा. UK लाइसेंस का कॉलम 12) `dl_class_code_<class>_notes` के रूप में लौटाए जाते हैं। जब दस्तावेज़ में नाम, पता या जन्म स्थान एकाधिक लिपियों में होते हैं, तो इस ऑब्जेक्ट में उन फ़ील्ड के वैकल्पिक-लिपि संस्करण भी शामिल होते हैं। वर्कफ़्लो सेटिंग `preferred_characters` (`latin` या `non_latin`) यह नियंत्रित करती है कि कौन सी लिपि शीर्ष-स्तरीय फ़ील्ड (`first_name`, `last_name`, `full_name`, `address`, `place_of_birth`) को पॉप्युलेट करती है; विपरीत लिपि यहाँ `first_name_non_latin` / `last_name_non_latin` / `full_name_non_latin` / `middle_name_non_latin` / `address_non_latin` / `place_of_birth_non_latin` के रूप में (जब `preferred_characters`, `latin` हो) या `_latin` प्रत्यय के साथ (जब `preferred_characters`, `non_latin` हो) दिखाई देती है। कुंजियाँ केवल तभी दिखाई देती हैं जब OCR वास्तव में एक वास्तविक वैकल्पिक-लिपि मान निकालता है — ऐसा फ़ील्ड जिसका वैकल्पिक मान पसंदीदा सेट के समान लिपि में है (उदाहरण के लिए, एक सिरिलिक-लेबल वाला फ़ील्ड जिसका OCR मान लैटिन होमोग्लिफ़ में वापस आया था) छोड़ दिया जाता है। जब `preferred_characters`, `latin` हो लेकिन दस्तावेज़ में केवल गैर-लैटिन टेक्स्ट हो, तो Didit निकाले गए मानों का लिप्यंतरण करता है और फ़ॉलबैक के रूप में `first_name_latin` / `last_name_latin` / आदि दिखाता है।",
                  "additionalProperties": true,
                  "properties": {
                    "dl_categories": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "blood_group": {
                      "type": "string",
                      "nullable": true
                    },
                    "first_name_non_latin": {
                      "type": "string",
                      "description": "गैर-लैटिन लिपि में पहला नाम जब `preferred_characters=latin` हो और दस्तावेज़ पर गैर-लैटिन संस्करण मौजूद हो (उदा. किर्गिज़ ID के लिए `Айна`)।"
                    },
                    "last_name_non_latin": {
                      "type": "string",
                      "description": "गैर-लैटिन लिपि में उपनाम जब `preferred_characters=latin` हो और दस्तावेज़ पर एक गैर-लैटिन संस्करण मौजूद हो।"
                    },
                    "middle_name_non_latin": {
                      "type": "string",
                      "description": "गैर-लैटिन लिपि में मध्य नाम / पैतृक नाम जब `preferred_characters=latin` हो और दस्तावेज़ पर एक गैर-लैटिन संस्करण मौजूद हो।"
                    },
                    "full_name_non_latin": {
                      "type": "string",
                      "description": "गैर-Latin लिपि में बना पूरा नाम। जब प्रथम और अंतिम दोनों नाम उपलब्ध होते हैं, तो अलग-अलग घटकों से पुनर्निर्मित किया जाता है।"
                    },
                    "address_non_latin": {
                      "type": "string",
                      "description": "गैर-लैटिन लिपि में पता जब `preferred_characters=latin` हो और दस्तावेज़ पर गैर-लैटिन संस्करण मौजूद हो।"
                    },
                    "place_of_birth_non_latin": {
                      "type": "string",
                      "description": "`preferred_characters=latin` होने पर और दस्तावेज़ में गैर-लैटिन संस्करण मौजूद होने पर गैर-लैटिन लिपि में जन्म स्थान।"
                    },
                    "first_name_latin": {
                      "type": "string",
                      "description": "लैटिन लिपि में पहला नाम। यह तब भरा जाता है जब `preferred_characters=non_latin` हो और दस्तावेज़ पर लैटिन संस्करण मौजूद हो, या — लिप्यंतरण फ़ॉलबैक के रूप में — जब `preferred_characters=latin` हो लेकिन दस्तावेज़ में केवल गैर-लैटिन पाठ हो।"
                    },
                    "last_name_latin": {
                      "type": "string",
                      "description": "लैटिन लिपि में उपनाम। `first_name_latin` के समान नियम।"
                    },
                    "middle_name_latin": {
                      "type": "string",
                      "description": "लैटिन लिपि में मध्य नाम / पैतृक नाम। `first_name_latin` जैसे ही नियम।"
                    },
                    "full_name_latin": {
                      "type": "string",
                      "description": "Latin लिपि में बना पूरा नाम। जब प्रथम और अंतिम दोनों नाम उपलब्ध होते हैं, तो हमेशा अलग-अलग घटकों से पुनर्निर्मित किया जाता है।"
                    },
                    "address_latin": {
                      "type": "string",
                      "description": "लैटिन लिपि में पता। `first_name_latin` के समान नियम।"
                    },
                    "place_of_birth_latin": {
                      "type": "string",
                      "description": "लैटिन लिपि में जन्म स्थान। `first_name_latin` के समान नियम।"
                    }
                  }
                },
                "mrz": {
                  "type": "object",
                  "nullable": true,
                  "description": "दस्तावेज़ से निकाले गए मशीन-रीडेबल ज़ोन (MRZ) के पार्स किए गए फ़ील्ड। यदि कोई MRZ नहीं मिला तो `null`।",
                  "properties": {
                    "surname": {
                      "type": "string",
                      "example": "MARTINEZ<SANCHEZ"
                    },
                    "name": {
                      "type": "string",
                      "example": "ELENA"
                    },
                    "country": {
                      "type": "string",
                      "example": "ESP"
                    },
                    "nationality": {
                      "type": "string",
                      "example": "ESP"
                    },
                    "birth_date": {
                      "type": "string",
                      "example": "850315"
                    },
                    "expiry_date": {
                      "type": "string",
                      "example": "220821"
                    },
                    "sex": {
                      "type": "string",
                      "example": "F"
                    },
                    "document_type": {
                      "type": "string",
                      "example": "ID"
                    },
                    "document_number": {
                      "type": "string",
                      "example": "YZA123456"
                    },
                    "optional_data": {
                      "type": "string",
                      "example": "X9876543L"
                    },
                    "optional_data_2": {
                      "type": "string",
                      "example": ""
                    },
                    "birth_date_hash": {
                      "type": "string",
                      "example": "7"
                    },
                    "expiry_date_hash": {
                      "type": "string",
                      "example": "4"
                    },
                    "document_number_hash": {
                      "type": "string",
                      "example": "9"
                    },
                    "final_hash": {
                      "type": "string",
                      "example": "2"
                    },
                    "personal_number": {
                      "type": "string",
                      "example": "X9876543L"
                    },
                    "warnings": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "mrz_type": {
                      "type": "string",
                      "example": "TD1"
                    },
                    "mrz_string": {
                      "type": "string",
                      "example": "IDESPMARTINEZ<SANCHEZ<<<<<<<<<<\nYZA123456<9ESP8503157F3208214<X9876543L<<<<<<<2\nMARTINEZ<SANCHEZ<<ELENA<<<<<<<<<<"
                    },
                    "mrz_key": {
                      "type": "string",
                      "example": "YZA123456985031573208214"
                    }
                  }
                },
                "parsed_address": {
                  "type": "object",
                  "description": "संरचित पते का विवरण",
                  "properties": {
                    "city": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "region": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string",
                      "description": "दो अक्षरों वाला देश कोड"
                    },
                    "category": {
                      "type": "string",
                      "description": "पते की श्रेणी (उदा. Residential, Commercial)"
                    },
                    "street_1": {
                      "type": "string"
                    },
                    "street_2": {
                      "type": "string",
                      "nullable": true
                    },
                    "is_verified": {
                      "type": "boolean",
                      "description": "क्या पते का सत्यापन किया गया है"
                    },
                    "postal_code": {
                      "type": "string"
                    },
                    "raw_results": {
                      "type": "object",
                      "properties": {
                        "types": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "geometry": {
                          "type": "object",
                          "properties": {
                            "location": {
                              "type": "object",
                              "properties": {
                                "lat": {
                                  "type": "number"
                                },
                                "lng": {
                                  "type": "number"
                                }
                              }
                            },
                            "viewport": {
                              "type": "object",
                              "properties": {
                                "northeast": {
                                  "type": "object",
                                  "properties": {
                                    "lat": {
                                      "type": "number"
                                    },
                                    "lng": {
                                      "type": "number"
                                    }
                                  }
                                },
                                "southwest": {
                                  "type": "object",
                                  "properties": {
                                    "lat": {
                                      "type": "number"
                                    },
                                    "lng": {
                                      "type": "number"
                                    }
                                  }
                                }
                              }
                            },
                            "location_type": {
                              "type": "string"
                            }
                          }
                        },
                        "place_id": {
                          "type": "string"
                        },
                        "formatted_address": {
                          "type": "string"
                        },
                        "navigation_points": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "location": {
                                "type": "object",
                                "properties": {
                                  "latitude": {
                                    "type": "number"
                                  },
                                  "longitude": {
                                    "type": "number"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "address_components": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "types": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "long_name": {
                                "type": "string"
                              },
                              "short_name": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "address_type": {
                      "type": "string"
                    },
                    "document_location": {
                      "type": "object",
                      "properties": {
                        "latitude": {
                          "type": "number"
                        },
                        "longitude": {
                          "type": "number"
                        }
                      }
                    },
                    "formatted_address": {
                      "type": "string"
                    }
                  }
                },
                "extra_files": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri"
                  },
                  "description": "अतिरिक्त दस्तावेज़ सत्यापन फ़ाइलें"
                },
                "front_image_camera_front_face_match_score": {
                  "type": "number",
                  "nullable": true,
                  "description": "सामने के दस्तावेज़ की छवि से निकाले गए पोर्ट्रेट और सामने वाले कैमरे की छवि के बीच चेहरा मिलान स्कोर"
                },
                "back_image_camera_front_face_match_score": {
                  "type": "number",
                  "nullable": true,
                  "description": "पीछे के दस्तावेज़ की छवि से निकाले गए पोर्ट्रेट और सामने वाले कैमरे की छवि के बीच चेहरा मिलान स्कोर"
                },
                "document_selfie_face_matches": {
                  "type": "array",
                  "description": "पिछले सत्र या चेहरा ब्लॉकलिस्ट प्रविष्टियाँ जिनका चेहरा दस्तावेज़ कैप्चर के दौरान फ्रंट कैमरे द्वारा ली गई सेल्फ़ी से मेल खाता है (साइलेंट कैप्चर चेहरा खोज)। `liveness_checks[].matches` के समान प्रविष्टि प्रारूप। इस फ़ील्ड के मौजूद होने से पहले बनाए गए सत्रों के लिए या जब खोज नहीं चली तो `null`; जब यह चली और कुछ नहीं मिला तो एक खाली ऐरे। `match_image_url` एक प्री-साइन किया गया URL है जो समाप्त हो जाता है।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "मिलान वाले चेहरे का सत्र ID। `source` के `imported`, `list_entry`, या `retained_template` होने पर `null`।"
                      },
                      "session_number": {
                        "type": "integer",
                        "nullable": true
                      },
                      "similarity_percentage": {
                        "type": "number",
                        "description": "दोनों छवियों के बीच चेहरे की समानता, 0–100 तक सीमित।"
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true,
                        "description": "आयातित और बनाए रखे गए टेम्पलेट चेहरों के लिए मिलान वाले सत्र या लिंक किए गए User का `vendor_data`।"
                      },
                      "vendor_user_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "`imported` और `retained_template` मिलानों के लिए और उपयोगकर्ता से जुड़े सत्र मिलानों के लिए लिंक की गई उपयोगकर्ता id। सूची प्रविष्टियों और बिना उपयोगकर्ता वाले सत्रों के लिए `null`।"
                      },
                      "biometric_template_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "प्रतिधारित बायोमेट्रिक टेम्पलेट का Id। केवल तभी सेट किया जाता है जब `source`, `retained_template` हो; अन्यथा `null`।"
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "मिलान वाला चेहरा कब कैप्चर किया गया था, या प्रतिधारित टेम्पलेट कब बनाया गया था। सूची प्रविष्टियों के लिए `null`।"
                      },
                      "user_details": {
                        "type": "object",
                        "nullable": true,
                        "description": "मिलान करने वाले सत्र या इंपोर्ट की गई उपयोगकर्ता प्रोफ़ाइल से पहचान डेटा। `retained_template` और `list_entry` मिलानों के लिए हमेशा `null`।",
                        "properties": {
                          "full_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "document_type": {
                            "type": "string",
                            "nullable": true
                          },
                          "document_number": {
                            "type": "string",
                            "nullable": true
                          }
                        }
                      },
                      "match_image_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "इमेज-समर्थित मिलानों के लिए संदर्भ छवि। `retained_template` मिलानों के लिए हमेशा `null` क्योंकि बनाए रखे गए टेम्पलेट्स में कोई छवि नहीं होती है।"
                      },
                      "status": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र की लाइफ़साइकिल स्थिति। गैर-सत्र स्रोतों के लिए `null`।"
                      },
                      "is_blocklisted": {
                        "type": "boolean",
                        "description": "क्या मिलान करने वाला चेहरा किसी ब्लॉकलिस्ट में है।"
                      },
                      "is_allowlisted": {
                        "type": "boolean",
                        "description": "क्या मिलान करने वाला चेहरा किसी अलाउलिस्ट में है।"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र की स्टैंडअलोन API सेवा (उदा. `PASSIVE_LIVENESS`, `FACE_MATCH`); वर्कफ़्लो सत्रों और गैर-सत्र स्रोतों के लिए `null`।"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session",
                          "imported",
                          "list_entry",
                          "retained_template"
                        ],
                        "description": "मिलान वाले चेहरे का ऑरिजिन: `session`, `imported` (उपयोगकर्ता द्वारा चेहरा अपलोड), `list_entry` (अनुमति/ब्लॉक सूची), या `retained_template` (उपयोगकर्ता पर संग्रहीत एक छवि-रहित बायोमेट्रिक टेम्पलेट, जो `/v3/biometric-templates/` के अंतर्गत सूचीबद्ध है)।"
                      }
                    }
                  },
                  "nullable": true
                },
                "front_image_quality_score": {
                  "type": "object",
                  "nullable": true,
                  "description": "दस्तावेज़ की सामने की छवि के लिए गुणवत्ता मेट्रिक्स। प्रत्येक उप-स्कोर 0 से 100 तक होता है।",
                  "properties": {
                    "focus_score": {
                      "type": "number",
                      "description": "शीर्ष-10% स्थानीय लैप्लसियन विचरण (Laplacian variance) के माध्यम से मापी गई छवि की तीक्ष्णता (शार्पनेस)। बड़े एकसमान पृष्ठभूमि वाले दस्तावेज़ों के लिए सुदृढ़। उच्च मान एक तीक्ष्ण, कम धुंधली छवि को इंगित करते हैं।"
                    },
                    "brightness_score": {
                      "type": "number",
                      "description": "छवि में रोशनी कितनी अच्छी है। बहुत अधिक अंधेरी या ओवरएक्सपोज़्ड छवियों पर पेनल्टी लगाता है, जिसमें मध्य-श्रेणी के आसपास की चमक आदर्श होती है।"
                    },
                    "brightness_issue": {
                      "type": "string",
                      "enum": [
                        "ok",
                        "too_dark",
                        "too_bright"
                      ],
                      "description": "जब brightness_score कम हो तो ब्राइटनेस की समस्या की दिशा इंगित करता है। 'ok' का अर्थ है कि ब्राइटनेस स्वीकार्य है, 'too_dark' का अर्थ है कि इमेज अंडरएक्स्पोज़्ड है, 'too_bright' का अर्थ है कि इमेज ओवरएक्स्पोज़्ड है।"
                    },
                    "is_document_fully_visible": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "यदि दस्तावेज़ के चारों कोने इमेज फ्रेम के अंदर पूरी तरह से दिखाई दे रहे हैं तो true, यदि कोई कोना कटा हुआ है तो false। कोने के निर्देशांक अनुपलब्ध होने पर Null।"
                    },
                    "resolution_score": {
                      "type": "number",
                      "description": "कुल पिक्सेल गणना के आधार पर छवि का प्रभावी रिज़ॉल्यूशन।"
                    },
                    "overall_score": {
                      "type": "number",
                      "description": "उप-स्कोर का भारित संयुक्त स्कोर (फ़ोकस 45%, ब्राइटनेस 30%, रिज़ॉल्यूशन 25%)।"
                    }
                  }
                },
                "back_image_quality_score": {
                  "type": "object",
                  "nullable": true,
                  "description": "दस्तावेज़ की पिछली छवि के लिए गुणवत्ता मेट्रिक्स। front_image_quality_score के समान संरचना।",
                  "properties": {
                    "focus_score": {
                      "type": "number",
                      "description": "शीर्ष-10% स्थानीय लैप्लसियन विचरण (Laplacian variance) के माध्यम से मापी गई छवि की तीक्ष्णता (शार्पनेस)। बड़े एकसमान पृष्ठभूमि वाले दस्तावेज़ों के लिए सुदृढ़। उच्च मान एक तीक्ष्ण, कम धुंधली छवि को इंगित करते हैं।"
                    },
                    "brightness_score": {
                      "type": "number",
                      "description": "छवि में रोशनी कितनी अच्छी है। बहुत अधिक अंधेरी या ओवरएक्सपोज़्ड छवियों पर पेनल्टी लगाता है, जिसमें मध्य-श्रेणी के आसपास की चमक आदर्श होती है।"
                    },
                    "brightness_issue": {
                      "type": "string",
                      "enum": [
                        "ok",
                        "too_dark",
                        "too_bright"
                      ],
                      "description": "जब brightness_score कम हो तो ब्राइटनेस की समस्या की दिशा इंगित करता है। 'ok' का अर्थ है कि ब्राइटनेस स्वीकार्य है, 'too_dark' का अर्थ है कि इमेज अंडरएक्स्पोज़्ड है, 'too_bright' का अर्थ है कि इमेज ओवरएक्स्पोज़्ड है।"
                    },
                    "is_document_fully_visible": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "यदि दस्तावेज़ के चारों कोने इमेज फ्रेम के अंदर पूरी तरह से दिखाई दे रहे हैं तो true, यदि कोई कोना कटा हुआ है तो false। कोने के निर्देशांक अनुपलब्ध होने पर Null।"
                    },
                    "resolution_score": {
                      "type": "number",
                      "description": "कुल पिक्सेल गणना के आधार पर छवि का प्रभावी रिज़ॉल्यूशन।"
                    },
                    "overall_score": {
                      "type": "number",
                      "description": "उप-स्कोर का भारित संयुक्त स्कोर (फ़ोकस 45%, ब्राइटनेस 30%, रिज़ॉल्यूशन 25%)।"
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की (उदाहरण के लिए, `ID_VERIFICATION`, `NFC`, `LIVENESS`)। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है, लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true,
                        "description": "चेतावनी के बारे में अतिरिक्त प्रासंगिक डेटा"
                      },
                      "log_type": {
                        "type": "string",
                        "description": "लॉग का प्रकार: जानकारी, चेतावनी, या त्रुटि"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की (ग्राफ़-आधारित वर्कफ़्लो के लिए)"
                      }
                    }
                  },
                  "description": "दस्तावेज़ सत्यापन चेतावनियाँ"
                },
                "matches": {
                  "type": "array",
                  "description": "डुप्लिकेट/ब्लॉकलिस्ट डिटेक्शन के दौरान पाए गए मिलान दस्तावेज़ (अधिकतम 5 मिलान)",
                  "items": {
                    "type": "object",
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "description": "मिलान वाले दस्तावेज़ का सत्र ID"
                      },
                      "session_number": {
                        "type": "integer",
                        "description": "मिलान वाले दस्तावेज़ की सत्र संख्या"
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र से संबद्ध वेंडर डेटा"
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "description": "तारीख जब मिलान करने वाले सत्र को सत्यापित किया गया था"
                      },
                      "user_details": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "मिलान वाले दस्तावेज़ से पूरा नाम"
                          },
                          "document_type": {
                            "type": "string",
                            "description": "मिलान वाले दस्तावेज़ का प्रकार"
                          },
                          "document_number": {
                            "type": "string",
                            "description": "मिलान वाले दस्तावेज़ की दस्तावेज़ संख्या"
                          }
                        }
                      },
                      "status": {
                        "type": "string",
                        "description": "मिलान सत्र की स्थिति"
                      },
                      "is_blocklisted": {
                        "type": "boolean",
                        "description": "क्या मिलान करने वाला दस्तावेज़ ब्लॉकलिस्ट में है"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र का API सेवा प्रकार"
                      },
                      "front_image_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "मिलान वाले दस्तावेज़ के सामने के भाग की छवि का URL"
                      }
                    }
                  }
                },
                "document_liveness": {
                  "type": "object",
                  "nullable": true,
                  "description": "प्रति धोखाधड़ी प्रकार दस्तावेज़-लाइवनेस स्कोर, चेतावनी ट्रिगर हुई हो या नहीं, दोनों स्थितियों में रिपोर्ट किए जाते हैं, ताकि स्वीकृत दस्तावेज़ का भी ऑडिट किया जा सके। जब जाँच नहीं चली तो `null`।",
                  "properties": {
                    "portrait_replace": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "score": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस धोखाधड़ी प्रकार के लिए दस्तावेज़ के वास्तविक होने की संभावना, 0-100 (उच्चतर = अधिक वास्तविक होने की संभावना)। दोनों पक्षों में से सबसे कम - वह मान जिसका निर्णय में उपयोग किया गया था। जब किसी भी पक्ष ने उपयोग योग्य स्कोर उत्पन्न नहीं किया तो `null`।"
                        },
                        "front": {
                          "type": "number",
                          "nullable": true,
                          "description": "सामने के हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "back": {
                          "type": "number",
                          "nullable": true,
                          "description": "पिछले हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "decline_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया अस्वीकृति थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर null।"
                        },
                        "review_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया समीक्षा थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर Null।"
                        },
                        "bucket": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "approve",
                            "review",
                            "decline",
                            null
                          ],
                          "description": "मूल्यांकन के समय सहेजा गया धोखाधड़ी-प्रकार का बकेट। जब कोई उपयोग योग्य स्कोर नहीं होता है, जाँच लागू नहीं की गई थी, या ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होते हैं, तो यह null होता है। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं।"
                        }
                      }
                    },
                    "printed_copy": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "score": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस धोखाधड़ी प्रकार के लिए दस्तावेज़ के वास्तविक होने की संभावना, 0-100 (उच्चतर = अधिक वास्तविक होने की संभावना)। दोनों पक्षों में से सबसे कम - वह मान जिसका निर्णय में उपयोग किया गया था। जब किसी भी पक्ष ने उपयोग योग्य स्कोर उत्पन्न नहीं किया तो `null`।"
                        },
                        "front": {
                          "type": "number",
                          "nullable": true,
                          "description": "सामने के हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "back": {
                          "type": "number",
                          "nullable": true,
                          "description": "पिछले हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "decline_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया अस्वीकृति थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर null।"
                        },
                        "review_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया समीक्षा थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर Null।"
                        },
                        "bucket": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "approve",
                            "review",
                            "decline",
                            null
                          ],
                          "description": "मूल्यांकन के समय सहेजा गया धोखाधड़ी-प्रकार का बकेट। जब कोई उपयोग योग्य स्कोर नहीं होता है, जाँच लागू नहीं की गई थी, या ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होते हैं, तो यह null होता है। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं।"
                        }
                      }
                    },
                    "screen_replay": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "score": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस धोखाधड़ी प्रकार के लिए दस्तावेज़ के वास्तविक होने की संभावना, 0-100 (उच्चतर = अधिक वास्तविक होने की संभावना)। दोनों पक्षों में से सबसे कम - वह मान जिसका निर्णय में उपयोग किया गया था। जब किसी भी पक्ष ने उपयोग योग्य स्कोर उत्पन्न नहीं किया तो `null`।"
                        },
                        "front": {
                          "type": "number",
                          "nullable": true,
                          "description": "सामने के हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "back": {
                          "type": "number",
                          "nullable": true,
                          "description": "पिछले हिस्से का स्कोर; कैप्चर न होने पर या स्कोर हटा दिए जाने पर `null`।"
                        },
                        "decline_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया अस्वीकृति थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर null।"
                        },
                        "review_threshold": {
                          "type": "number",
                          "nullable": true,
                          "description": "इस दस्तावेज़ का मूल्यांकन करते समय सहेजा गया समीक्षा थ्रेशोल्ड। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं। ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होने पर Null।"
                        },
                        "bucket": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "approve",
                            "review",
                            "decline",
                            null
                          ],
                          "description": "मूल्यांकन के समय सहेजा गया धोखाधड़ी-प्रकार का बकेट। जब कोई उपयोग योग्य स्कोर नहीं होता है, जाँच लागू नहीं की गई थी, या ऐतिहासिक मूल्यांकन साक्ष्य अनुपलब्ध होते हैं, तो यह null होता है। बाद के वर्कफ़्लो संपादन इसे नहीं बदलते हैं।"
                        }
                      }
                    }
                  }
                },
                "address_validation": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AddressValidationResult"
                    }
                  ],
                  "nullable": true,
                  "description": "इस दस्तावेज़ पर मुद्रित पते का पता सत्यापन: क्या यह मौजूद है और इसका सामान्यीकृत रूप, जैसा कि दस्तावेज़ ने इसे पढ़ा है (बाद में `address` का सुधार इसे फिर से नहीं चलाता है)। तब उपस्थित होता है जब इस पहचान सत्यापन चरण में पता सत्यापन ऐड-ऑन सक्षम हो; अन्यथा `null`।"
                },
                "region": {
                  "type": "string",
                  "nullable": true,
                  "description": "दस्तावेज़ जारीकर्ता देश का क्षेत्र या राज्य जहाँ दस्तावेज़ किसी एक की पहचान करता है।"
                },
                "extracted_data": {
                  "type": "object",
                  "nullable": true,
                  "additionalProperties": true,
                  "description": "दस्तावेज़ से निकाले गए डेटा का स्नैपशॉट जिसे व्यक्ति को समीक्षा के लिए दिखाया गया था, पुष्टि किए गए मानों के बगल में रखा जाता है ताकि आप तुलना कर सकें कि क्या पढ़ा गया था और व्यक्ति ने किसकी पुष्टि की थी। जब व्यक्ति से समीक्षा करने के लिए नहीं कहा गया था, तब `null`।"
                },
                "barcodes": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  },
                  "description": "दस्तावेज़ के बारकोड से पढ़ा गया डेटा। जब दस्तावेज़ में कोई बारकोड नहीं होता या कोई पढ़ा नहीं गया हो, तो खाली होता है।"
                }
              }
            }
          },
          "nfc_skip_reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "USER_SKIPPED",
              "DOCUMENT_WITHOUT_CHIP",
              "CHIP_CERTIFICATE_UNAVAILABLE",
              "DEVICE_WITHOUT_NFC",
              "INTEGRATION_WITHOUT_NFC_ACCESS",
              "MRZ_KEY_UNAVAILABLE",
              "JPKI_UNAVAILABLE"
            ],
            "description": "NFC चिप सत्यापन क्यों नहीं चला, जब भी वर्कफ़्लो में NFC चरण शामिल होता है तब पॉप्युलेट होता है। NFC लंबित रहने या चिप वास्तव में पढ़े जाने पर `null`। मान: `USER_SKIPPED` - उपयोगकर्ता ने NFC-सक्षम डिवाइस पर छोड़ना चुना (`allow_nfc_skip` द्वारा अनुमत); `DOCUMENT_WITHOUT_CHIP` - दस्तावेज़ में कोई पठनीय NFC चिप नहीं है (ICAO 9303 इलेक्ट्रॉनिक दस्तावेज़ नहीं है); `CHIP_CERTIFICATE_UNAVAILABLE` - दस्तावेज़ की जारी अवधि को कवर करने वाला जारीकर्ता देश का हस्ताक्षर प्रमाणपत्र (CSCA) अनुपलब्ध है, इसलिए चिप हस्ताक्षर सत्यापित नहीं किया जा सकता; `DEVICE_WITHOUT_NFC` - डिवाइस ने कोई NFC रीडर रिपोर्ट नहीं किया; `INTEGRATION_WITHOUT_NFC_ACCESS` - सत्यापन मूल SDK के बिना चला (उदा. वेब ब्राउज़र में), जिसके पास फ़ोन के NFC रीडर तक कोई पहुँच नहीं है; `MRZ_KEY_UNAVAILABLE` - चिप एक्सेस कुंजी दस्तावेज़ के MRZ से प्राप्त नहीं की जा सकी; `JPKI_UNAVAILABLE` - दस्तावेज़ जापान का माय नंबर कार्ड है, जिसकी चिप JPKI के माध्यम से पढ़ी जाती है, और इस सत्यापन के लिए JPKI उपलब्ध नहीं था: यह सक्षम नहीं है, या ऐप का मूल SDK माय नंबर कार्ड नहीं पढ़ सकता है।"
          },
          "nfc_verifications": {
            "type": "array",
            "nullable": true,
            "description": "वर्कफ़्लो ग्राफ़ में NFC चरणों द्वारा निर्मित **NFC / ePassport रिपोर्टों का Array**। **यह हमेशा एक JSON array होता है, कभी भी एकल `nfc` ऑब्जेक्ट नहीं** — `nfc_verifications[0]` पढ़ें और पुनरावृति (iterate) करें यदि आपका वर्कफ़्लो NFC को एक से अधिक बार चला सकता है। तब तक `null` जब तक कम से कम एक NFC चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, `chip_protocol`, `chip_data`, `authenticity` (SOD + DG अखंडता), `certificate_summary`, और `warnings[]` शामिल हैं। जापान माय नंबर कार्ड को ICAO 9303 के बजाय JPKI के माध्यम से पढ़ा जाता है: इसके आइटम में `chip_protocol: \"jpki\"` होता है, यह अपने साक्ष्य `jpki` के तहत रखता है, और ICAO फ़ील्ड को `null` छोड़ता है। जब NFC चरण को ऑफ़र किए जाने से पहले ही बायपास कर दिया गया था (चिप रहित दस्तावेज़, अनुपलब्ध प्रमाणपत्र, कोई NFC क्षमता रिपोर्ट नहीं की गई, अपठनीय MRZ कुंजी, माय नंबर कार्ड के लिए JPKI अनुपलब्ध), तो यह `null` रहता है और `nfc_skip_reason` बताता है कि ऐसा क्यों हुआ; चरण में ही छोड़ दिया जाना (उपयोगकर्ता ने स्किप टैप किया, या स्कैन के समय रीडर अनुपलब्ध निकला) फिर भी `is_nfc_skipped: true` के साथ एक रिपोर्ट उत्पन्न करता है।",
            "items": {
              "type": "object",
              "description": "एक NFC रिपोर्ट: एकल चिप रीड के लिए पूरी रिपोर्ट (एक ICAO 9303 ePassport या eID चिप, या JPKI के माध्यम से पढ़ा गया जापान माई नंबर कार्ड)।",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "इस रिपोर्ट को तैयार करने वाले NFC चरण का वर्कफ़्लो ग्राफ़ नोड id। रिपोर्ट को वर्कफ़्लो परिभाषा के साथ सहसंबंधित करने के लिए इसका उपयोग करें।"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ],
                  "description": "इस NFC चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।"
                },
                "is_nfc_skipped": {
                  "type": "boolean",
                  "description": "`true` जब इस NFC चरण को पढ़ने के बजाय स्पष्ट रूप से छोड़ दिया गया था; `skip_reason` कारण बताता है।"
                },
                "skip_reason": {
                  "type": "string",
                  "nullable": true,
                  "enum": [
                    "USER_SKIPPED",
                    "DOCUMENT_WITHOUT_CHIP",
                    "CHIP_CERTIFICATE_UNAVAILABLE",
                    "DEVICE_WITHOUT_NFC",
                    "INTEGRATION_WITHOUT_NFC_ACCESS",
                    "MRZ_KEY_UNAVAILABLE",
                    "JPKI_UNAVAILABLE"
                  ],
                  "description": "यह NFC चरण क्यों छोड़ दिया गया। केवल तब सेट होता है जब `is_nfc_skipped`, `true` हो। सत्र-स्तरीय `nfc_skip_reason` के समान टैक्सोनॉमी, जो अतिरिक्त रूप से उन मामलों को कवर करती है जहाँ NFC ने कभी कोई रिपोर्ट तैयार ही नहीं की।"
                },
                "chip_protocol": {
                  "type": "string",
                  "enum": [
                    "icao",
                    "jpki"
                  ],
                  "description": "NFC चरण चिप को कैसे पढ़ता है। `icao`: ICAO 9303 ePassport या eID चिप, जिसे MRZ से एक्सेस कुंजी के साथ खोला जाता है। `jpki`: जापान माय नंबर कार्ड, जहाँ धारक द्वारा मूल SDK में कार्ड पिन दर्ज करने के बाद कार्ड एक बार के चैलेंज पर हस्ताक्षर करता है; परिणाम `jpki` के अंतर्गत होता है। छोड़े गए चरणों पर भी सेट किया जाता है, ताकि आप छोड़े गए माय नंबर कार्ड पठन को अलग पहचान सकें।"
                },
                "jpki": {
                  "type": "object",
                  "nullable": true,
                  "description": "JPKI के माध्यम से पढ़े गए Japan My Number Card ने क्या प्रमाणित किया। तभी मौजूद होता है जब `chip_protocol` `jpki` हो और कार्ड पढ़ा गया हो। ICAO चिप्स, छोड़े गए चरणों के लिए, और जब NFC चरण बिना किसी कार्ड पढ़े बंद हो गया हो (वह मामला `JPKI_SIGNATURE_INVALID` उठाता है) के लिए `null`। कभी भी प्रमाणपत्र, उनके सीरियल नंबर, हस्ताक्षर या 12-अंकों का My Number नहीं ले जाता है।",
                  "properties": {
                    "certificate_types": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "user_authentication",
                          "signature"
                        ]
                      },
                      "description": "कार्ड से पढ़े गए प्रमाणपत्र। `user_authentication` (4-अंकीय PIN) हमेशा पढ़ा जाता है; `signature` (हस्ताक्षर PIN) तब पढ़ा जाता है जब NFC नोड की `jpki_request_attributes` सेटिंग चालू होती है।"
                    },
                    "chain_valid": {
                      "type": "boolean",
                      "description": "`true` जब पढ़ा गया प्रत्येक प्रमाणपत्र JPKI प्रमाणन प्राधिकरण से जुड़ा हो, अपनी वैधता अवधि के भीतर हो और अपने प्रकार का My Number Card प्रमाणपत्र हो।"
                    },
                    "signature_valid": {
                      "type": "boolean",
                      "description": "`true` जब वन-टाइम चैलेंज पर कार्ड द्वारा किया गया प्रत्येक हस्ताक्षर सत्यापित हो जाता है। कार्ड केवल अपना PIN दर्ज किए जाने के बाद ही हस्ताक्षर करता है, इसलिए यह कार्ड पर कब्ज़ा और PIN की जानकारी साबित करता है।"
                    },
                    "revocation_status": {
                      "type": "string",
                      "enum": [
                        "good",
                        "revoked",
                        "unchecked"
                      ],
                      "description": "`good` जब रिवोकेशन जांच ने पुष्टि की हो कि प्रत्येक प्रमाणपत्र मान्य है, `revoked` जब कोई भी प्रमाणपत्र रिवोक किया गया हो (उदाहरण के लिए खोया हुआ रिपोर्ट किया गया कार्ड), `unchecked` जब कोई रिवोकेशन उत्तर उपलब्ध न था। `unchecked` को कभी भी `good` नहीं माना जाता है: NFC नोड का `jpki_revocation_unchecked_action` परिणाम तय करता है (डिफ़ॉल्ट `REVIEW`)।"
                    },
                    "ca_generation": {
                      "type": "string",
                      "nullable": true,
                      "description": "प्रमाणपत्र जारी करने वाले JPKI प्रमाणन प्राधिकरण की जनरेशन, उदाहरण के लिए `2023`। जब कोई प्रमाणपत्र किसी से भी शृंखलाबद्ध नहीं होता, तब `null`।"
                    },
                    "certificate_expires_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "रीड किए गए प्रमाणपत्रों में सबसे प्रारंभिक समाप्ति तिथि।"
                    },
                    "certificates": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "कार्ड से पढ़े गए एक प्रमाणपत्र ने क्या प्रमाणित किया। कभी भी स्वयं प्रमाणपत्र या उसका सीरियल नंबर नहीं।",
                        "properties": {
                          "type": {
                            "type": "string",
                            "enum": [
                              "user_authentication",
                              "signature"
                            ],
                            "description": "यह प्रविष्टि किस कार्ड प्रमाणपत्र का वर्णन करती है।"
                          },
                          "chain_valid": {
                            "type": "boolean",
                            "description": "`true` जब प्रमाणपत्र अपने प्रकार के JPKI प्रमाणन प्राधिकरण से जुड़ा हो, अपनी वैधता अवधि के भीतर हो और उस प्रकार का My Number Card प्रमाणपत्र हो।"
                          },
                          "signature_valid": {
                            "type": "boolean",
                            "description": "`true` जब वन-टाइम चैलेंज पर कार्ड का हस्ताक्षर इस प्रमाणपत्र के विरुद्ध सत्यापित हो जाता है।"
                          },
                          "ca_generation": {
                            "type": "string",
                            "nullable": true,
                            "description": "प्रमाणपत्र जारी करने वाले JPKI प्रमाणन प्राधिकरण की जनरेशन, उदाहरण के लिए `2023`। कोई विश्वसनीय जारीकर्ता नहीं मिलने पर `null`।"
                          },
                          "not_valid_before": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "प्रमाणपत्र की वैधता अवधि की शुरुआत। `null` जब प्रमाणपत्र पढ़ा नहीं जा सका।"
                          },
                          "not_valid_after": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "प्रमाणपत्र की वैधता अवधि की समाप्ति। `null` जब प्रमाणपत्र पढ़ा नहीं जा सका।"
                          },
                          "failure": {
                            "type": "string",
                            "nullable": true,
                            "enum": [
                              "unreadable_certificate",
                              "untrusted_issuer",
                              "expired",
                              "not_yet_valid",
                              "wrong_policy",
                              "key_usage",
                              null
                            ],
                            "description": "`chain_valid`, `false` क्यों है: `unreadable_certificate`, `untrusted_issuer` (इसके प्रकार के JPKI प्रमाणन प्राधिकरण द्वारा जारी नहीं किया गया), `expired`, `not_yet_valid`, `wrong_policy` (उस प्रकार का माय नंबर कार्ड प्रमाणपत्र नहीं है) या `key_usage` (कुंजी हस्ताक्षर नहीं कर सकती)। चेन मान्य होने पर `null`।"
                          }
                        }
                      },
                      "description": "प्रति-प्रमाणपत्र परिणाम, पढ़े गए प्रत्येक प्रमाणपत्र के लिए एक प्रविष्टि।"
                    },
                    "attributes": {
                      "type": "object",
                      "nullable": true,
                      "description": "हस्ताक्षर प्रमाणपत्र से धारक का डेटा, जब उसकी चेन मान्य हो जाती है। `null` जब हस्ताक्षर प्रमाणपत्र का अनुरोध नहीं किया गया था या उसकी JPKI प्रमाणन प्राधिकरण से चेन स्थापित नहीं हुई थी।",
                      "properties": {
                        "full_name": {
                          "type": "string",
                          "nullable": true,
                          "description": "पंजीकृत नाम, आमतौर पर जापानी लिपि में।"
                        },
                        "date_of_birth": {
                          "type": "string",
                          "format": "date",
                          "nullable": true,
                          "description": "जन्म तिथि, `YYYY-MM-DD`। जब पंजीकृत तारीख अधूरी हो तो `null`।"
                        },
                        "gender": {
                          "type": "string",
                          "nullable": true,
                          "enum": [
                            "M",
                            "F",
                            null
                          ],
                          "description": "पंजीकृत न होने पर `M`, `F`, या `null`।"
                        },
                        "address": {
                          "type": "string",
                          "nullable": true,
                          "description": "पंजीकृत पता।"
                        },
                        "name_substitute_characters": {
                          "type": "string",
                          "nullable": true,
                          "description": "`full_name` के उन वर्णों को चिह्नित करने वाली स्थिति स्ट्रिंग जिन्हें किसी प्रतिस्थापन वर्ण से बदला गया था क्योंकि मूल वर्ण मानक वर्ण सेट से बाहर है। कोई भी वर्ण न बदले जाने पर `null`।"
                        },
                        "address_substitute_characters": {
                          "type": "string",
                          "nullable": true,
                          "description": "`address` में प्रतिस्थापित वर्णों को चिह्नित करने वाली स्थिति स्ट्रिंग, जैसा कि `name_substitute_characters` के लिए है।"
                        }
                      }
                    },
                    "attributes_match_ocr": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "`true` जब एट्रिब्यूट उसी कार्ड के फ़ोटो से पढ़े गए डेटा से मेल खाते हैं, `false` जब कोई एट्रिब्यूट भिन्न होता है (`JPKI_AND_OCR_DATA_NOT_SAME`), `null` जब किसी चीज़ की तुलना नहीं की जा सकी, जिसमें वह स्थिति भी शामिल है जब `attributes` `null` हो।"
                    },
                    "mismatched_attributes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "full_name",
                          "date_of_birth",
                          "gender",
                          "address"
                        ]
                      },
                      "description": "फ़ोटो डेटा से भिन्न एट्रिब्यूट्स के नाम, उनके मान कभी नहीं। तुलना की गई सभी चीज़ों के मेल खाने पर खाली।"
                    }
                  }
                },
                "portrait_image": {
                  "type": "string",
                  "format": "uri",
                  "nullable": true,
                  "description": "चिप से पढ़े गए पोर्ट्रेट का प्री-साइन किया गया URL (ICAO DG2)। JPKI रीड (`chip_protocol: \"jpki\"`) और छोड़े गए चरणों के लिए `null`।"
                },
                "signature_image": {
                  "type": "string",
                  "format": "uri",
                  "nullable": true,
                  "description": "चिप से पढ़े गए धारक के हस्ताक्षर की छवि का प्री-साइन किया गया URL (ICAO DG7), जब चिप में यह संग्रहीत हो। JPKI रीड (`chip_protocol: \"jpki\"`) और छोड़े गए चरणों के लिए `null`।"
                },
                "chip_data": {
                  "type": "object",
                  "nullable": true,
                  "description": "ICAO चिप के डेटा समूहों से पार्स किया गया व्यक्तिगत डेटा। JPKI रीड (`chip_protocol: \"jpki\"`) और छोड़े गए चरणों के लिए `null`।",
                  "properties": {
                    "document_type": {
                      "type": "string"
                    },
                    "issuing_country": {
                      "type": "string"
                    },
                    "document_number": {
                      "type": "string"
                    },
                    "expiration_date": {
                      "type": "string",
                      "format": "date"
                    },
                    "first_name": {
                      "type": "string"
                    },
                    "last_name": {
                      "type": "string"
                    },
                    "birth_date": {
                      "type": "string",
                      "format": "date"
                    },
                    "gender": {
                      "type": "string"
                    },
                    "nationality": {
                      "type": "string"
                    },
                    "address": {
                      "type": "string"
                    },
                    "place_of_birth": {
                      "type": "string"
                    }
                  }
                },
                "authenticity": {
                  "type": "object",
                  "nullable": true,
                  "description": "ICAO पैसिव प्रमाणीकरण: SOD हस्ताक्षर (`sod_integrity`) और Data Group हैश (`dg_integrity`)। JPKI रीड के लिए `null`, जो अपने प्रमाण की रिपोर्ट `jpki` के तहत करता है।",
                  "properties": {
                    "sod_integrity": {
                      "type": "boolean"
                    },
                    "dg_integrity": {
                      "type": "boolean"
                    }
                  }
                },
                "certificate_summary": {
                  "type": "object",
                  "nullable": true,
                  "description": "ICAO दस्तावेज़ हस्ताक्षरकर्ता प्रमाणपत्र का सारांश। JPKI पढ़ने (`chip_protocol: \"jpki\"`) और छोड़े गए चरणों के लिए `null`।",
                  "properties": {
                    "issuer": {
                      "type": "string"
                    },
                    "subject": {
                      "type": "string"
                    },
                    "serial_number": {
                      "type": "string"
                    },
                    "not_valid_after": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "not_valid_before": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                }
              }
            }
          },
          "liveness_checks": {
            "type": "array",
            "nullable": true,
            "description": "वर्कफ़्लो ग्राफ़ में लाइवनेस चरणों द्वारा निर्मित **लाइवनेस रिपोर्टों का ऐरे**। हमेशा एक JSON ऐरे — कभी भी एकल `liveness` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक लाइवनेस चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, `method`, `score`, `reference_image`, `video_url`, वैकल्पिक `age_estimation`, क्रॉस-सत्र `matches[]`, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "description": "एक लाइवनेस रिपोर्ट — एकल लाइवनेस पास के लिए पूर्ण रिपोर्ट।",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "इस रिपोर्ट को तैयार करने वाले लाइवनेस चरण का वर्कफ़्लो ग्राफ़ नोड id।"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ],
                  "description": "इस लाइवनेस डिटेक्शन चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।"
                },
                "method": {
                  "type": "string",
                  "description": "लाइवनेस डिटेक्शन के लिए उपयोग की जाने वाली विधि"
                },
                "score": {
                  "type": "number",
                  "description": "लाइवनेस जांच का विश्वास स्कोर"
                },
                "reference_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "उपयोग की गई संदर्भ छवि का URL"
                },
                "video_url": {
                  "type": "string",
                  "format": "uri",
                  "description": "लाइवनेस डिटेक्शन वीडियो का URL"
                },
                "age_estimation": {
                  "type": "number",
                  "description": "व्यक्ति की अनुमानित आयु"
                },
                "matches": {
                  "type": "array",
                  "description": "डुप्लिकेट-फ़ेस खोज द्वारा पाए गए समान चेहरे (शीर्ष मिलान, ब्लॉकलिस्ट/अनुमति-सूची प्रविष्टियाँ पहले)। प्रत्येक प्रविष्टि का `source` आपको बताता है कि मिलान करने वाला चेहरा कहाँ से आया: `session` (अन्य सत्यापन सत्र), `imported` (वेंडर उपयोगकर्ता के विरुद्ध अपलोड किया गया चेहरा), `list_entry` (संगठन द्वारा प्रबंधित अनुमति/ब्लॉक सूची में मौजूद चेहरा), या `retained_template` (किसी User पर संग्रहीत एक छवि-मुक्त बायोमेट्रिक टेम्पलेट, जो `/v3/biometric-templates/` के अंतर्गत सूचीबद्ध है)। गैर-सत्र स्रोतों के लिए `session_id`, `session_number`, `status` और `api_service` का मान `null` होता है। `imported` मिलान अभी भी वेंडर-उपयोगकर्ता रिकॉर्ड से `vendor_data`, `verification_date` और — जब वेंडर उपयोगकर्ता के फ़ाइल में नाम मौजूद हो — `user_details` (केवल `full_name` के साथ) भरते हैं; `retained_template` मिलान `vendor_user_id`, `vendor_data`, `biometric_template_id` और `verification_date` भरते हैं, जबकि उनके छवि और पहचान फ़ील्ड `null` होते हैं; `list_entry` मिलान इन सभी को `null` के रूप में लौटाते हैं।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "मिलान वाले चेहरे का सत्र ID। `source` के `imported`, `list_entry`, या `retained_template` होने पर `null`।"
                      },
                      "session_number": {
                        "type": "integer",
                        "nullable": true
                      },
                      "similarity_percentage": {
                        "type": "number",
                        "description": "दोनों छवियों के बीच चेहरे की समानता, 0–100 तक सीमित।"
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true,
                        "description": "आयातित और बनाए रखे गए टेम्पलेट चेहरों के लिए मिलान वाले सत्र या लिंक किए गए User का `vendor_data`।"
                      },
                      "vendor_user_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "`imported` और `retained_template` मिलानों के लिए और उपयोगकर्ता से जुड़े सत्र मिलानों के लिए लिंक की गई उपयोगकर्ता id। सूची प्रविष्टियों और बिना उपयोगकर्ता वाले सत्रों के लिए `null`।"
                      },
                      "biometric_template_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true,
                        "description": "प्रतिधारित बायोमेट्रिक टेम्पलेट का Id। केवल तभी सेट किया जाता है जब `source`, `retained_template` हो; अन्यथा `null`।"
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "मिलान वाला चेहरा कब कैप्चर किया गया था, या प्रतिधारित टेम्पलेट कब बनाया गया था। सूची प्रविष्टियों के लिए `null`।"
                      },
                      "user_details": {
                        "type": "object",
                        "nullable": true,
                        "description": "मिलान करने वाले सत्र या इंपोर्ट की गई उपयोगकर्ता प्रोफ़ाइल से पहचान डेटा। `retained_template` और `list_entry` मिलानों के लिए हमेशा `null`।",
                        "properties": {
                          "full_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "document_type": {
                            "type": "string",
                            "nullable": true
                          },
                          "document_number": {
                            "type": "string",
                            "nullable": true
                          }
                        }
                      },
                      "match_image_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "इमेज-समर्थित मिलानों के लिए संदर्भ छवि। `retained_template` मिलानों के लिए हमेशा `null` क्योंकि बनाए रखे गए टेम्पलेट्स में कोई छवि नहीं होती है।"
                      },
                      "status": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र की लाइफ़साइकिल स्थिति। गैर-सत्र स्रोतों के लिए `null`।"
                      },
                      "is_blocklisted": {
                        "type": "boolean",
                        "description": "क्या मिलान करने वाला चेहरा किसी ब्लॉकलिस्ट में है।"
                      },
                      "is_allowlisted": {
                        "type": "boolean",
                        "description": "क्या मिलान करने वाला चेहरा किसी अलाउलिस्ट में है।"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र की स्टैंडअलोन API सेवा (उदा. `PASSIVE_LIVENESS`, `FACE_MATCH`); वर्कफ़्लो सत्रों और गैर-सत्र स्रोतों के लिए `null`।"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session",
                          "imported",
                          "list_entry",
                          "retained_template"
                        ],
                        "description": "मिलान वाले चेहरे का ऑरिजिन: `session`, `imported` (उपयोगकर्ता द्वारा चेहरा अपलोड), `list_entry` (अनुमति/ब्लॉक सूची), या `retained_template` (उपयोगकर्ता पर संग्रहीत एक छवि-रहित बायोमेट्रिक टेम्पलेट, जो `/v3/biometric-templates/` के अंतर्गत सूचीबद्ध है)।"
                      }
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                },
                "face_quality": {
                  "type": "number",
                  "nullable": true,
                  "description": "चेहरे की छवि गुणवत्ता स्कोर (0-100%)। केवल पैसिव लाइवनेस के लिए उपलब्ध।"
                },
                "face_luminance": {
                  "type": "number",
                  "nullable": true,
                  "description": "फ़ेस ल्यूमिनेन्स/ब्राइटनेस स्कोर (0-100%)। केवल पैसिव लाइवनेस के लिए उपलब्ध है।"
                }
              }
            }
          },
          "face_matches": {
            "type": "array",
            "nullable": true,
            "description": "वर्कफ़्लो ग्राफ़ में चेहरा मिलान चरणों द्वारा निर्मित **चेहरा मिलान रिपोर्टों की ऐरे**। हमेशा एक JSON ऐरे — कभी भी एकल `face_match` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक चेहरा मिलान चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, समानता `score`, `source_image`, `target_image`, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "description": "एक चेहरा मिलान रिपोर्ट — पूर्ण रिपोर्ट।",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "इस रिपोर्ट को तैयार करने वाले चेहरा मिलान चरण का वर्कफ़्लो ग्राफ़ नोड id।"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ],
                  "description": "इस चेहरा मिलान चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।"
                },
                "score": {
                  "type": "number",
                  "description": "चेहरा मिलान का विश्वास स्कोर"
                },
                "source_image_session_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true,
                  "description": "सत्र id जिसके तहत स्रोत (संदर्भ) पोर्ट्रेट संग्रहीत है। बायोमेट्रिक प्रमाणीकरण फ़्लो में यह सत्र का अपना id होता है (सबमिट किया गया पोर्ट्रेट नए सत्र के तहत संग्रहीत होता है)। जब स्रोत छवि उसी सत्र का दस्तावेज़ पोर्ट्रेट हो तो `null`।"
                },
                "source_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "तुलना के लिए उपयोग की गई स्रोत छवि का URL"
                },
                "target_image": {
                  "type": "string",
                  "format": "uri",
                  "description": "तुलना के लिए उपयोग की गई लक्षित छवि का URL"
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  },
                  "description": "चेहरा मिलान सत्यापन चेतावनियाँ"
                },
                "face_coverage": {
                  "type": "object",
                  "nullable": true,
                  "description": "क्या कैप्चर की गई छवि में आँखें, मुँह और चेहरा ढके हुए हैं। केवल `GET /v3/session/{sessionId}/decision/` द्वारा लौटाया जाता है; यह webhook payload का हिस्सा नहीं है। `null` जब कोई कवरेज रीडिंग मौजूद नहीं होती है।",
                  "properties": {
                    "eyes": {
                      "type": "object",
                      "properties": {
                        "covered": {
                          "type": "boolean",
                          "nullable": true
                        },
                        "calibrated": {
                          "type": "boolean",
                          "nullable": true,
                          "description": "`false` का अर्थ है कि रीडिंग केवल शैडो साक्ष्य है और कोई चेतावनी इस पर कार्रवाई नहीं करती है।"
                        },
                        "visibility_score": {
                          "type": "number",
                          "nullable": true
                        }
                      }
                    },
                    "mouth": {
                      "type": "object",
                      "properties": {
                        "covered": {
                          "type": "boolean",
                          "nullable": true
                        },
                        "calibrated": {
                          "type": "boolean",
                          "nullable": true,
                          "description": "`false` का अर्थ है कि रीडिंग केवल शैडो साक्ष्य है और कोई चेतावनी इस पर कार्रवाई नहीं करती है।"
                        },
                        "visibility_score": {
                          "type": "number",
                          "nullable": true
                        }
                      }
                    },
                    "face": {
                      "type": "object",
                      "properties": {
                        "covered": {
                          "type": "boolean",
                          "nullable": true
                        },
                        "calibrated": {
                          "type": "boolean",
                          "nullable": true,
                          "description": "`false` का अर्थ है कि रीडिंग केवल शैडो साक्ष्य है और कोई चेतावनी इस पर कार्रवाई नहीं करती है।"
                        },
                        "visibility_score": {
                          "type": "number",
                          "nullable": true
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "phone_verifications": {
            "type": "array",
            "nullable": true,
            "description": "**फ़ोन सत्यापन रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `phone` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक फ़ोन चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, फ़ोन नंबर और देश का मेटाडेटा, `lifecycle[]`, `matches[]`, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस फ़ोन चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "status": {
                  "type": "string",
                  "description": "इस फ़ोन सत्यापन चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Expired"
                  ]
                },
                "phone_number_prefix": {
                  "type": "string",
                  "description": "देश का कॉलिंग कोड प्रीफ़िक्स"
                },
                "phone_number": {
                  "type": "string",
                  "description": "देश के प्रीफ़िक्स के बिना फ़ोन नंबर"
                },
                "full_number": {
                  "type": "string",
                  "description": "देश के प्रीफ़िक्स के साथ पूरा फ़ोन नंबर"
                },
                "country_code": {
                  "type": "string",
                  "description": "दो अक्षरों वाला देश कोड (ISO 3166-1 alpha-2)"
                },
                "country_name": {
                  "type": "string",
                  "description": "देश का पूरा नाम"
                },
                "carrier": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "फ़ोन कैरियर का नाम"
                    },
                    "type": {
                      "type": "string",
                      "description": "फ़ोन लाइन का प्रकार (मोबाइल, लैंडलाइन, आदि)"
                    }
                  }
                },
                "is_disposable": {
                  "type": "boolean",
                  "description": "क्या फ़ोन नंबर किसी डिस्पोजेबल सेवा से है"
                },
                "is_virtual": {
                  "type": "boolean",
                  "description": "क्या फ़ोन नंबर वर्चुअल है"
                },
                "verification_method": {
                  "type": "string",
                  "description": "फ़ोन नंबर सत्यापित करने के लिए उपयोग की जाने वाली विधि"
                },
                "verification_attempts": {
                  "type": "integer",
                  "description": "किए गए सत्यापन प्रयासों की संख्या"
                },
                "verified_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "फ़ोन सत्यापित होने का टाइमस्टैम्प"
                },
                "lifecycle": {
                  "type": "array",
                  "description": "फ़ोन सत्यापन जीवनचक्र में घटनाओं की कालानुक्रमिक सूची।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "timestamp": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "details": {
                        "type": "object",
                        "nullable": true,
                        "description": "इवेंट-विशिष्ट payload। भेजने वाले इवेंट्स में `status`, `reason`, `channel`, `actual_channel` शामिल होते हैं; डिलीवरी इवेंट्स में `channel`, `status` शामिल होते हैं; code-check इवेंट्स में `code_tried`, `status` शामिल होते हैं; अंतिम स्थिति इवेंट्स में `reason` शामिल होता है — या `null` जब रिपोर्ट करने के लिए कोई कारण नहीं होता है (उदा. `PHONE_VERIFICATION_APPROVED`)।",
                        "properties": {
                          "status": {
                            "type": "string"
                          },
                          "reason": {
                            "type": "string",
                            "nullable": true
                          },
                          "channel": {
                            "type": "string",
                            "nullable": true
                          },
                          "actual_channel": {
                            "type": "string",
                            "nullable": true
                          },
                          "code_tried": {
                            "type": "string"
                          }
                        }
                      },
                      "fee": {
                        "type": "number"
                      }
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "description": "फ़ोन सत्यापन से संबंधित चेतावनियों की सूची",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                },
                "matches": {
                  "type": "array",
                  "description": "इस फ़ोन नंबर के लिए मिले मिलान। प्रत्येक मिलान में एक `source` होता है: `session` (आपके एप्लिकेशन में किसी अन्य सत्यापन सत्र का उसी नंबर से मिलान हुआ, जिसे `session_id`/`session_number`/`vendor_data`/`verification_date` के साथ लौटाया जाता है) या `list_entry` (नंबर संगठन-प्रबंधित अनुमति/ब्लॉकलिस्ट पर है — `/management-api/lists/overview` देखें)। क्रॉस-सत्र मिलान अलग-अलग `vendor_data` का उपयोग करते हैं और अधिकतम 5 तक सीमित हैं।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                      },
                      "session_number": {
                        "type": "integer",
                        "nullable": true
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                      },
                      "phone_number": {
                        "type": "string"
                      },
                      "status": {
                        "type": "string",
                        "nullable": true
                      },
                      "is_blocklisted": {
                        "type": "boolean"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session",
                          "list_entry"
                        ],
                        "description": "यह मिलान कहाँ से आया है। `session` का अर्थ है कि आपके एप्लिकेशन में किसी अन्य सत्यापन सत्र का इस मान पर मिलान हुआ। `list_entry` का अर्थ है कि यह मान संगठन द्वारा प्रबंधित सूची (अनुमति सूची/ब्लॉकलिस्ट) से टकराया है — उन सूचियों को प्रबंधित करने के तरीके के लिए `/management-api/lists/overview` पर प्रबंधन API सूचियों का अवलोकन देखें।"
                      }
                    }
                  }
                },
                "phone_intelligence": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PhoneIntelligence"
                    }
                  ],
                  "description": "फ़ोन इंटेलिजेंस सिग्नल। केवल तभी मौजूद होते हैं जब इस नंबर के लिए फ़ोन इंटेलिजेंस ऐड-ऑन चला हो।"
                },
                "phone_social": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/PhoneSocialFootprint"
                    }
                  ],
                  "description": "नंबर का सोशल फ़ुटप्रिंट। केवल तभी मौजूद होता है जब इस नंबर के लिए सोशल फ़ुटप्रिंट ऐड-ऑन चला हो।"
                }
              }
            }
          },
          "email_verifications": {
            "type": "array",
            "nullable": true,
            "description": "**ईमेल सत्यापन रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `email` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक ईमेल चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, ईमेल पता, ब्रीच डेटा, `lifecycle[]`, `matches[]`, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस ईमेल चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "status": {
                  "type": "string",
                  "description": "इस ईमेल सत्यापन चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Expired"
                  ]
                },
                "email": {
                  "type": "string",
                  "description": "सत्यापित किया जा रहा ईमेल पता"
                },
                "is_breached": {
                  "type": "boolean",
                  "description": "इंगित करता है कि क्या ईमेल ज्ञात डेटा उल्लंघनों में पाया गया था"
                },
                "breaches": {
                  "type": "array",
                  "description": "ज्ञात उल्लंघनों की सूची जिनमें यह ईमेल पाया गया था",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "उल्लंघन का नाम"
                      },
                      "domain": {
                        "type": "string",
                        "description": "उल्लंघन से प्रभावित डोमेन"
                      },
                      "logo_path": {
                        "type": "string",
                        "description": "उल्लंघित सेवा के लोगो का URL"
                      },
                      "breach_date": {
                        "type": "string",
                        "format": "date",
                        "description": "तारीख जब उल्लंघन हुआ था"
                      },
                      "description": {
                        "type": "string",
                        "description": "उल्लंघन का विवरण"
                      },
                      "is_verified": {
                        "type": "boolean",
                        "description": "क्या उल्लंघन सत्यापित है"
                      },
                      "data_classes": {
                        "type": "array",
                        "description": "डेटा उल्लंघन में उजागर डेटा के प्रकार",
                        "items": {
                          "type": "string"
                        }
                      },
                      "breach_emails_count": {
                        "type": "integer",
                        "description": "डेटा ब्रीच में प्रभावित ईमेल पतों की संख्या"
                      }
                    }
                  }
                },
                "is_disposable": {
                  "type": "boolean",
                  "description": "इंगित करता है कि क्या ईमेल किसी डिस्पोज़ेबल प्रदाता का है"
                },
                "is_undeliverable": {
                  "type": "boolean",
                  "description": "इंगित करता है कि क्या ईमेल पता डिलीवर न होने योग्य है"
                },
                "verification_attempts": {
                  "type": "integer",
                  "description": "इस ईमेल के लिए सत्यापन प्रयासों की संख्या"
                },
                "verified_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "ईमेल सत्यापित होने का टाइमस्टैम्प"
                },
                "warnings": {
                  "type": "array",
                  "description": "ईमेल सत्यापन से संबंधित चेतावनियों की सूची",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                },
                "lifecycle": {
                  "type": "array",
                  "description": "ईमेल सत्यापन जीवनचक्र में घटनाओं की कालानुक्रमिक सूची।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "timestamp": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "details": {
                        "type": "object",
                        "nullable": true,
                        "description": "इवेंट-विशिष्ट payload। भेजने वाले इवेंट्स `status`, `reason` ले जाते हैं; code-check इवेंट्स `code_tried`, `status` ले जाते हैं; अंतिम स्थिति इवेंट्स `reason` ले जाते हैं — या `null` जब रिपोर्ट करने के लिए कोई कारण नहीं होता है (उदा. `EMAIL_VERIFICATION_APPROVED`)।",
                        "properties": {
                          "status": {
                            "type": "string"
                          },
                          "reason": {
                            "type": "string",
                            "nullable": true
                          },
                          "code_tried": {
                            "type": "string"
                          }
                        }
                      },
                      "fee": {
                        "type": "number"
                      }
                    }
                  }
                },
                "matches": {
                  "type": "array",
                  "description": "इस ईमेल पते के लिए मिले मिलान। प्रत्येक मिलान में एक `source` होता है: `session` (आपके एप्लिकेशन में किसी अन्य सत्यापन सत्र का उसी ईमेल से मिलान हुआ, जिसे `session_id`/`session_number`/`vendor_data`/`verification_date` के साथ लौटाया जाता है) या `list_entry` (ईमेल संगठन-प्रबंधित अनुमति/ब्लॉकलिस्ट पर है — `/management-api/lists/overview` देखें)। क्रॉस-सत्र मिलान अलग-अलग `vendor_data` का उपयोग करते हैं और अधिकतम 5 तक सीमित हैं।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                      },
                      "session_number": {
                        "type": "integer",
                        "nullable": true
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                      },
                      "email": {
                        "type": "string",
                        "format": "email"
                      },
                      "status": {
                        "type": "string",
                        "nullable": true
                      },
                      "is_blocklisted": {
                        "type": "boolean"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session",
                          "list_entry"
                        ],
                        "description": "यह मिलान कहाँ से आया है। `session` का अर्थ है कि आपके एप्लिकेशन में किसी अन्य सत्यापन सत्र का इस मान पर मिलान हुआ। `list_entry` का अर्थ है कि यह मान संगठन द्वारा प्रबंधित सूची (अनुमति सूची/ब्लॉकलिस्ट) से टकराया है — उन सूचियों को प्रबंधित करने के तरीके के लिए `/management-api/lists/overview` पर प्रबंधन API सूचियों का अवलोकन देखें।"
                      }
                    }
                  }
                },
                "email_intelligence": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/EmailIntelligence"
                    }
                  ],
                  "description": "ईमेल इंटेलिजेंस संकेत। केवल तभी मौजूद होते हैं जब इस पते के लिए ईमेल इंटेलिजेंस ऐड-ऑन चला हो।"
                },
                "email_social": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/EmailSocialFootprint"
                    }
                  ],
                  "description": "पते का सोशल फ़ुटप्रिंट। केवल तभी मौजूद होता है जब इस पते के लिए सोशल फ़ुटप्रिंट ऐड-ऑन चला हो।"
                }
              }
            }
          },
          "poa_verifications": {
            "type": "array",
            "nullable": true,
            "description": "**पते का प्रमाण (POA) रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `poa` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक POA चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, दस्तावेज़ फ़ाइल URL, जारीकर्ता, तिथियाँ, पार्स किया गया पता, और `warnings[]` शामिल हैं।",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस POA चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "status": {
                  "type": "string",
                  "description": "इस पते के प्रमाण चरण की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ]
                },
                "document_file": {
                  "type": "string",
                  "format": "uri",
                  "description": "पते का प्रमाण दस्तावेज़ का URL"
                },
                "issuing_state": {
                  "type": "string",
                  "description": "जारीकर्ता राज्य का दो अक्षरों वाला देश कोड"
                },
                "document_type": {
                  "type": "string",
                  "description": "पते के प्रमाण दस्तावेज़ का प्रकार"
                },
                "document_subtype": {
                  "type": "string",
                  "nullable": true,
                  "description": "इसके `document_type` के भीतर POA दस्तावेज़ का अधिक विशिष्ट वर्गीकरण, जब कोई पहचाना गया हो। अन्यथा `null`।"
                },
                "document_language": {
                  "type": "string",
                  "description": "दस्तावेज़ का भाषा कोड"
                },
                "document_metadata": {
                  "type": "object",
                  "properties": {
                    "file_size": {
                      "type": "integer",
                      "description": "दस्तावेज़ का आकार"
                    },
                    "content_type": {
                      "type": "string",
                      "description": "दस्तावेज़ का कंटेंट प्रकार"
                    },
                    "creation_date": {
                      "type": "string",
                      "format": "date",
                      "description": "तारीख जब दस्तावेज़ बनाया गया था"
                    },
                    "modified_date": {
                      "type": "string",
                      "format": "date",
                      "description": "तारीख जब दस्तावेज़ संशोधित किया गया था"
                    },
                    "overlay_manipulation": {
                      "type": "object",
                      "nullable": true,
                      "description": "संदिग्ध ओवरले-टेक्स्ट हेरफेर के लिए PDF फोरेंसिक विश्लेषण। जब कोई ओवरले हेरफेर का सबूत नहीं मिला हो या दस्तावेज़ PDF नहीं था, तो Null।",
                      "properties": {
                        "detected": {
                          "type": "boolean",
                          "description": "क्या ओवरले-टेक्स्ट हेरफेर के साक्ष्य का पता चला था।"
                        },
                        "analyzed": {
                          "type": "boolean",
                          "description": "क्या PDF का विश्लेषण किया जा सका।"
                        },
                        "analysis_incomplete": {
                          "type": "boolean",
                          "description": "जब फ़ाइल को पूरी तरह जाँचा नहीं जा सका, तब यह मौजूद होता है और केवल तभी सत्य होता है। जितना हिस्सा जाँचा जा सका, उसके निष्कर्ष जहाँ संभव हो वहीं रखे जाते हैं, और दस्तावेज़ अप्रमाणित टेक्स्ट प्रतिस्थापन चेतावनी दिखाता है।"
                        },
                        "signals": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "फ़ॉरेंसिक सिग्नल जो ट्रिगर हुए, जैसे duplicate_font_subset या glyph_fragmentation।"
                        },
                        "manipulated_regions": {
                          "type": "array",
                          "description": "PDF पृष्ठ निर्देशांकों में संदिग्ध हेरफेर वाले क्षेत्र।",
                          "items": {
                            "type": "object",
                            "properties": {
                              "page": {
                                "type": "integer"
                              },
                              "x": {
                                "type": "number"
                              },
                              "y": {
                                "type": "number"
                              },
                              "width": {
                                "type": "number"
                              },
                              "height": {
                                "type": "number"
                              },
                              "page_width": {
                                "type": "number"
                              },
                              "page_height": {
                                "type": "number"
                              }
                            }
                          }
                        }
                      }
                    },
                    "creator": {
                      "type": "string",
                      "nullable": true,
                      "description": "दस्तावेज़ मेटाडेटा में रिकॉर्ड किया गया क्रिएटर एप्लिकेशन।"
                    },
                    "producer": {
                      "type": "string",
                      "nullable": true,
                      "description": "PDF मेटाडेटा में रिकॉर्ड किया गया निर्माता सॉफ़्टवेयर।"
                    },
                    "software": {
                      "type": "string",
                      "nullable": true,
                      "description": "फ़ाइल मेटाडेटा में रिकॉर्ड किया गया संपादन/प्रोसेसिंग सॉफ़्टवेयर।"
                    },
                    "encryption": {
                      "type": "string",
                      "nullable": true,
                      "description": "दस्तावेज़ की एन्क्रिप्शन स्कीम, जब एन्क्रिप्टेड हो।"
                    },
                    "is_signed": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "क्या PDF में डिजिटल हस्ताक्षर मौजूद है।"
                    },
                    "is_tampered": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "क्या हस्ताक्षर सत्यापन इंगित करता है कि हस्ताक्षर करने के बाद फ़ाइल को संशोधित किया गया था।"
                    },
                    "signature_info": {
                      "type": "object",
                      "nullable": true,
                      "description": "डिजिटल हस्ताक्षर का विवरण, यदि मौजूद हो।"
                    },
                    "exif_original_date": {
                      "type": "string",
                      "nullable": true,
                      "description": "छवि अपलोड के लिए EXIF मूल कैप्चर तिथि।"
                    },
                    "exif_digitized_date": {
                      "type": "string",
                      "nullable": true,
                      "description": "छवि अपलोड के लिए EXIF डिजिटलीकरण तिथि।"
                    },
                    "processed_by_known_editor": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "क्या फ़ाइल मेटाडेटा किसी ज्ञात दस्तावेज़ संपादक द्वारा प्रोसेसिंग को इंगित करता है।"
                    },
                    "has_different_creation_mod_date": {
                      "type": "boolean",
                      "nullable": true,
                      "description": "क्या निर्माण और संशोधन तिथियाँ भिन्न हैं — एक सामान्य हेरफेर सिग्नल।"
                    }
                  },
                  "description": "अपलोड किए गए POA दस्तावेज़ से निकाला गया फ़ाइल-फोरेंसिक मेटाडेटा। इसमें हमेशा नीचे दी गई कुंजियाँ होती हैं (लागू न होने पर मान `null` होते हैं, जैसे PDF के लिए EXIF तिथियाँ)। कोई मेटाडेटा न निकाले जाने पर `null`।",
                  "nullable": true
                },
                "issuer": {
                  "type": "string",
                  "description": "दस्तावेज़ जारीकर्ता का नाम"
                },
                "issue_date": {
                  "type": "string",
                  "format": "date",
                  "description": "तारीख जब दस्तावेज़ जारी किया गया था"
                },
                "expiration_date": {
                  "type": "string",
                  "format": "date",
                  "nullable": true,
                  "description": "दस्तावेज़ की समाप्ति तिथि, यदि उपलब्ध हो"
                },
                "poa_address": {
                  "type": "string",
                  "description": "पते का प्रमाण दस्तावेज़ से प्राप्त रॉ पता"
                },
                "poa_formatted_address": {
                  "type": "string",
                  "description": "पते का प्रमाण दस्तावेज़ से फ़ॉर्मेट किया गया पता"
                },
                "poa_parsed_address": {
                  "type": "object",
                  "properties": {
                    "address_type": {
                      "type": "string",
                      "description": "पते का प्रकार (स्ट्रीट, एवेन्यू, आदि)"
                    },
                    "street_1": {
                      "type": "string",
                      "description": "प्राथमिक सड़क का पता"
                    },
                    "street_2": {
                      "type": "string",
                      "nullable": true,
                      "description": "द्वितीयक सड़क का पता"
                    },
                    "city": {
                      "type": "string",
                      "description": "शहर का नाम"
                    },
                    "region": {
                      "type": "string",
                      "description": "क्षेत्र या राज्य का नाम"
                    },
                    "country": {
                      "type": "string",
                      "description": "दो अक्षरों वाला देश कोड"
                    },
                    "postal_code": {
                      "type": "string",
                      "description": "डाक कोड"
                    },
                    "document_location": {
                      "type": "object",
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "description": "अक्षांश निर्देशांक"
                        },
                        "longitude": {
                          "type": "number",
                          "description": "देशांतर निर्देशांक"
                        }
                      }
                    }
                  }
                },
                "name_on_document": {
                  "type": "string",
                  "nullable": true,
                  "description": "POA दस्तावेज़ से निकाला गया खाताधारक / प्राप्तकर्ता का नाम, जिसका उपयोग नाम मिलान के लिए किया जाता है। कोई नाम न निकाले जाने पर `null`।"
                },
                "name_match_score_expected_details": {
                  "type": "number",
                  "nullable": true,
                  "description": "`name_on_document` और सत्र निर्माण के समय प्रदान किए गए अपेक्षित नाम के बीच समानता स्कोर (0-100)। किसी भी पक्ष के अनुपस्थित होने पर `null`।"
                },
                "name_match_score_id_verification": {
                  "type": "number",
                  "nullable": true,
                  "description": "`name_on_document` और पहचान सत्यापन चरण द्वारा निकाले गए नाम के बीच समानता स्कोर (0-100)। किसी भी पक्ष के अनुपस्थित होने पर `null`।"
                },
                "expected_details_address": {
                  "type": "string",
                  "nullable": true,
                  "description": "सत्यापन के लिए अपेक्षित मूल पता"
                },
                "expected_details_formatted_address": {
                  "type": "string",
                  "nullable": true,
                  "description": "सत्यापन के लिए अपेक्षित स्वरूपित पता"
                },
                "expected_details_parsed_address": {
                  "type": "object",
                  "description": "सत्यापन के लिए अपेक्षित पार्स किए गए पते का विवरण"
                },
                "extra_fields": {
                  "type": "object",
                  "description": "दस्तावेज़ से निकाले गए अतिरिक्त बैंकिंग और संपर्क विवरण।",
                  "properties": {
                    "bank_account_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_iban": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_sort_code": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_routing_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_swift_bic": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_branch_name": {
                      "type": "string",
                      "nullable": true
                    },
                    "bank_branch_address": {
                      "type": "string",
                      "nullable": true
                    },
                    "document_phone_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "additional_names": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                },
                "extra_files": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uri"
                  },
                  "description": "पते के प्रमाण की अतिरिक्त फ़ाइलें"
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                },
                "detected_codes": {
                  "type": "array",
                  "description": "दस्तावेज़ के प्रत्येक संसाधित पृष्ठ पर पहचाने गए QR कोड और बारकोड। कोई न मिलने पर खाली। पहचाना गया लेकिन डिकोड न किया जा सकने वाला QR कोड `parsed_payload: null` रखता है।",
                  "items": {
                    "$ref": "#/components/schemas/DocumentAIDetectedCode"
                  }
                },
                "address_validation": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/AddressValidationResult"
                    }
                  ],
                  "nullable": true,
                  "description": "इस पते के प्रमाण पर पते का सत्यापन: क्या यह मौजूद है और इसका सामान्यीकृत रूप, जैसा कि दस्तावेज़ ने इसे पढ़ा है (बाद में `poa_address` का सुधार इसे फिर से नहीं चलाता है)। तब उपस्थित होता है जब इस पते का प्रमाण चरण में पता सत्यापन ऐड-ऑन सक्षम हो और अपलोड दस्तावेज़ जांच में सफल रहा हो; अन्यथा `null`।"
                }
              }
            }
          },
          "document_ai_documents": {
            "type": "array",
            "nullable": true,
            "description": "**वर्कफ़्लो नोड द्वारा समूहीकृत Document AI रिपोर्टें** — हमेशा एक JSON ऐरे, कभी भी एकल ऑब्जेक्ट नहीं। तब तक `null` जब तक कि कम से कम एक Document AI चरण ने डेटा उत्पन्न न किया हो। केवल तभी मौजूद होता है जब `session_kind = user` हो। प्रत्येक आइटम एक नोड समूह होता है जिसमें एक समग्र `status`, `node_id`, प्रति-दस्तावेज़ परिणामों (कॉन्फ़िगर की गई फ़ील्ड कुंजी द्वारा अनुक्रमित निष्कर्षण डेटा) का एक `items[]` ऐरे, और `warnings` शामिल होते हैं।",
            "items": {
              "type": "object",
              "description": "वर्कफ़्लो नोड द्वारा समूहीकृत Document AI परिणाम।",
              "properties": {
                "status": {
                  "type": "string",
                  "description": "इस नोड के लिए समग्र Document AI स्थिति, इसके `items[]` से एकत्रित की गई।",
                  "enum": [
                    "Approved",
                    "Declined",
                    "In Review",
                    "Not Finished"
                  ]
                },
                "node_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "वर्कफ़्लो ग्राफ़ में इस Document AI चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "node_id": {
                        "type": "string",
                        "nullable": true,
                        "description": "वर्कफ़्लो ग्राफ़ नोड जिसने यह दस्तावेज़ तैयार किया।"
                      },
                      "document_key": {
                        "type": "string",
                        "description": "कॉन्फ़िगर किए गए Document AI दस्तावेज़ की कुंजी जिससे यह फ़ाइल मेल खाती है।"
                      },
                      "original_filename": {
                        "type": "string",
                        "nullable": true,
                        "description": "फ़ाइल नाम जैसा कि उपयोगकर्ता द्वारा अपलोड किया गया था।"
                      },
                      "file_size": {
                        "type": "integer",
                        "nullable": true,
                        "description": "बाइट्स में फ़ाइल का आकार।"
                      },
                      "file_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "अपलोड की गई फ़ाइल का अल्पकालिक प्रीसाइन्ड लिंक।"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "Approved",
                          "Declined",
                          "In Review",
                          "Not Finished"
                        ],
                        "description": "प्रति-दस्तावेज़ Document AI स्थिति।"
                      },
                      "extracted_data": {
                        "type": "object",
                        "additionalProperties": true,
                        "nullable": true,
                        "description": "Document AI द्वारा निकाले गए मान, कॉन्फ़िगर किए गए फ़ील्ड `key` के अनुसार कुंजीबद्ध। प्रत्येक मान एक स्ट्रिंग, संख्या, या `null` है।"
                      },
                      "detected_codes": {
                        "type": "array",
                        "description": "प्रत्येक संसाधित पृष्ठ पर पहचाने गए QR कोड और बारकोड। कोई न मिलने पर खाली। पहचाना गया लेकिन डिकोड न किया जा सकने वाला QR कोड `parsed_payload: null` रखता है।",
                        "items": {
                          "$ref": "#/components/schemas/DocumentAIDetectedCode"
                        }
                      },
                      "fields": {
                        "type": "array",
                        "description": "इस दस्तावेज़ के लिए कॉन्फ़िगर किए गए निष्कर्षण फ़ील्ड।",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "`extracted_data` में कुंजी के रूप में उपयोग की जाने वाली स्थिर फ़ील्ड कुंजी।"
                            },
                            "name": {
                              "type": "string",
                              "description": "मानव-पठनीय फ़ील्ड नाम।"
                            },
                            "instruction": {
                              "type": "string",
                              "description": "मॉडल को दिखाया जाने वाला निष्कर्षण निर्देश।"
                            },
                            "type": {
                              "type": "string",
                              "enum": [
                                "text",
                                "number",
                                "date"
                              ],
                              "description": "निकाले गए फ़ील्ड का अपेक्षित मान प्रकार।"
                            },
                            "required": {
                              "type": "boolean",
                              "description": "Whether this field is required."
                            }
                          }
                        }
                      },
                      "document_metadata": {
                        "type": "object",
                        "nullable": true,
                        "description": "अपलोड किए गए दस्तावेज़ से निकाला गया फ़ाइल-फोरेंसिक मेटाडेटा (उदा. `is_tampered`)। कुछ भी न निकाले जाने पर `null`।"
                      },
                      "cross_check_result": {
                        "type": "object",
                        "nullable": true,
                        "description": "अन्य सत्र डेटा के विरुद्ध निकाले गए दस्तावेज़ फ़ील्ड का क्रॉस-रेफ़रंस। `null` जब कोई क्रॉस-चेक नहीं किया गया था।"
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "nullable": true,
                  "items": {
                    "type": "object"
                  },
                  "description": "इस Document AI नोड के लिए उठाए गए चेतावनी लॉग।"
                }
              }
            }
          },
          "questionnaire_responses": {
            "type": "array",
            "nullable": true,
            "description": "**प्रश्नावली प्रतिक्रिया रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `questionnaire` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक प्रश्नावली चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, प्रश्नावली मेटाडेटा, फ़ॉर्म तत्वों वाले अनुभाग, और उपयोगकर्ता के उत्तर शामिल हैं।",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस प्रश्नावली चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "questionnaire_id": {
                  "type": "string",
                  "description": "प्रश्नावली के लिए विशिष्ट पहचानकर्ता"
                },
                "title": {
                  "type": "string",
                  "description": "प्रश्नावली का शीर्षक"
                },
                "description": {
                  "type": "string",
                  "description": "प्रश्नावली का विवरण"
                },
                "languages": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "समर्थित भाषाएँ"
                },
                "default_language": {
                  "type": "string",
                  "description": "डिफ़ॉल्ट भाषा"
                },
                "is_active": {
                  "type": "boolean",
                  "description": "क्या प्रश्नावली सक्रिय है"
                },
                "is_simple_questionnaire": {
                  "type": "boolean",
                  "description": "क्या प्रश्नावली एक सरल लीनियर फ़ॉर्म है (कोई ब्रांचिंग ग्राफ़ नहीं)।"
                },
                "questionnaire_group_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true,
                  "description": "संस्करणों में प्रश्नावली समूह का स्थिर पहचानकर्ता।"
                },
                "version": {
                  "type": "integer",
                  "nullable": true,
                  "description": "उत्तर दी गई प्रश्नावली की संस्करण संख्या।"
                },
                "published_at": {
                  "type": "string",
                  "format": "date-time",
                  "nullable": true,
                  "description": "इस प्रश्नावली संस्करण के प्रकाशित होने का टाइमस्टैम्प।"
                },
                "sections": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "title": {
                        "type": "string",
                        "nullable": true,
                        "description": "अनुभाग शीर्षक"
                      },
                      "description": {
                        "type": "string",
                        "nullable": true,
                        "description": "अनुभाग विवरण"
                      },
                      "items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "uuid": {
                              "type": "string",
                              "description": "आइटम के लिए विशिष्ट पहचानकर्ता"
                            },
                            "value": {
                              "type": "string",
                              "nullable": true,
                              "description": "प्रश्नावली ग्राफ़ के भीतर इस फ़ॉर्म तत्व का स्थिर नोड पहचानकर्ता।"
                            },
                            "element_type": {
                              "type": "string",
                              "description": "प्रश्नावली तत्व का प्रकार"
                            },
                            "is_required": {
                              "type": "boolean",
                              "description": "क्या आइटम आवश्यक है"
                            },
                            "title": {
                              "type": "string",
                              "description": "आइटम का शीर्षक"
                            },
                            "description": {
                              "type": "string",
                              "nullable": true,
                              "description": "आइटम का विवरण"
                            },
                            "placeholder": {
                              "type": "string",
                              "nullable": true,
                              "description": "प्लेसहोल्डर टेक्स्ट"
                            },
                            "choices": {
                              "type": "array",
                              "nullable": true,
                              "items": {
                                "type": "object",
                                "properties": {
                                  "label": {
                                    "type": "string"
                                  },
                                  "value": {
                                    "type": "string"
                                  },
                                  "requires_text_input": {
                                    "type": "boolean",
                                    "description": "क्या इस विकल्प के लिए अतिरिक्त टेक्स्ट इनपुट की आवश्यकता है",
                                    "nullable": true
                                  }
                                },
                                "required": [
                                  "label",
                                  "value"
                                ]
                              },
                              "description": "ड्रॉपडाउन या एकल विकल्प तत्वों के लिए विकल्प"
                            },
                            "max_files": {
                              "type": "integer",
                              "description": "अनुमत फ़ाइलों की अधिकतम संख्या",
                              "nullable": true
                            },
                            "answer": {
                              "type": "object",
                              "description": "आइटम के लिए प्रदान किया गया उत्तर",
                              "properties": {
                                "value": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "text": {
                                  "type": "string",
                                  "nullable": true
                                },
                                "files": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "nullable": true
                                }
                              }
                            },
                            "required_if": {
                              "type": "object",
                              "nullable": true,
                              "description": "सशर्त-आवश्यकता नियम, जब तत्व केवल कुछ उत्तरों के लिए आवश्यक होता है।"
                            },
                            "repeatable_config": {
                              "type": "object",
                              "nullable": true,
                              "description": "लागू होने पर दोहराए जाने योग्य तत्व समूहों के लिए कॉन्फ़िगरेशन।"
                            }
                          },
                          "required": [
                            "uuid",
                            "value",
                            "element_type",
                            "is_required",
                            "title"
                          ]
                        }
                      }
                    }
                  }
                },
                "status": {
                  "type": "string",
                  "description": "प्रश्नावली की स्थिति"
                }
              }
            }
          },
          "bank_verifications": {
            "type": "array",
            "nullable": true,
            "description": "उपयोगकर्ता और व्यवसाय सत्यापन के लिए, प्रति बैंक सत्यापन चरण एक आइटम के साथ बैंक सत्यापन परिणाम। जब तक कोई चरण परिणाम नहीं देता, तब तक `null`। प्रत्येक आइटम की `method` बताती है कि खाते का सत्यापन कैसे किया गया था: `open_banking` (बैंक साइन-इन) या `account_lookup` (खाता जाँच), या `statement` अथवा `microdeposits` फ़ॉलबैक, और `none` जब किसी प्रयास का मूल्यांकन होने से पहले व्यक्ति बैंक के बिना आगे बढ़ गया (`continued_without_bank`)। देखें [बैंक सत्यापन विधियाँ](/hi/core-technology/bank-verification/verification-methods)।",
            "items": {
              "$ref": "#/components/schemas/BankVerificationResult"
            }
          },
          "signatures": {
            "type": "array",
            "description": "उपयोगकर्ता और व्यवसाय सत्यापन के लिए प्रति हस्ताक्षरकर्ता और हस्ताक्षर चरण एक आइटम के साथ ई-हस्ताक्षर परिणाम। केवल तभी मौजूद होता है जब वर्कफ़्लो में ई-हस्ताक्षर चरण हो; हस्ताक्षरकर्ता के उस चरण तक पहुँचने तक एक खाली ऐरे। [ई-हस्ताक्षर रिपोर्ट](/hi/core-technology/electronic-signature/report-electronic-signature) देखें।",
            "items": {
              "$ref": "#/components/schemas/SignatureResult"
            }
          },
          "aml_screenings": {
            "type": "array",
            "nullable": true,
            "description": "**AML स्क्रीनिंग रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `aml` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक AML चरण ने डेटा तैयार न किया हो। प्रत्येक आइटम पूरी रिपोर्ट है, जिसमें `node_id`, फ़ीचर-स्तरीय `status`, `total_hits`, `entity_type`, `hits[]`, `score`, `screened_data`, `is_ongoing_monitoring_enabled`, और `warnings[]` शामिल हैं।",
            "items": {
              "$ref": "#/components/schemas/AMLScreening"
            }
          },
          "ip_analyses": {
            "type": "array",
            "nullable": true,
            "description": "**डिवाइस और IP विश्लेषण रिपोर्टों की ऐरे** — हमेशा एक JSON ऐरे, कभी भी एकल `ip_analysis` ऑब्जेक्ट नहीं। तब तक `null` जब तक कम से कम एक IP-विश्लेषण चरण ने डेटा उत्पन्न न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, IP और जियोलोकेशन डेटा, डिवाइस फ़िंगरप्रिंट, और `warnings[]` शामिल हैं। डुप्लिकेट `(node_id, ip_address, device_fingerprint)` वाली प्रविष्टियों को सर्वर-साइड पर डिडुप्लिकेट किया जाता है।",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस डिवाइस और IP विश्लेषण चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "status": {
                  "type": "string",
                  "description": "इस डिवाइस और IP विश्लेषण प्रविष्टि की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ]
                },
                "device_brand": {
                  "type": "string",
                  "description": "उपयोग किए गए डिवाइस का ब्रांड"
                },
                "device_model": {
                  "type": "string",
                  "description": "उपयोग किए गए डिवाइस का मॉडल"
                },
                "browser_family": {
                  "type": "string",
                  "description": "उपयोग की गई ब्राउज़र फ़ैमिली"
                },
                "os_family": {
                  "type": "string",
                  "description": "ऑपरेटिंग सिस्टम फ़ैमिली"
                },
                "platform": {
                  "type": "string",
                  "description": "प्लेटफ़ॉर्म प्रकार (mobile, desktop, आदि)"
                },
                "device_fingerprint": {
                  "type": "string",
                  "nullable": true,
                  "description": "विशिष्ट डिवाइस फ़िंगरप्रिंट पहचानकर्ता"
                },
                "ip_country": {
                  "type": "string",
                  "description": "IP से पता लगाया गया देश"
                },
                "ip_country_code": {
                  "type": "string",
                  "description": "IP से दो अक्षरों वाला देश कोड"
                },
                "ip_state": {
                  "type": "string",
                  "description": "IP से पहचाना गया राज्य/क्षेत्र"
                },
                "ip_city": {
                  "type": "string",
                  "description": "IP से पहचाना गया शहर"
                },
                "latitude": {
                  "type": "number",
                  "description": "IP स्थान का अक्षांश निर्देशांक"
                },
                "longitude": {
                  "type": "number",
                  "description": "IP स्थान का देशांतर निर्देशांक"
                },
                "ip_address": {
                  "type": "string",
                  "description": "IP पता"
                },
                "isp": {
                  "type": "string",
                  "nullable": true,
                  "description": "इंटरनेट सेवा प्रदाता"
                },
                "organization": {
                  "type": "string",
                  "nullable": true,
                  "description": "IP से जुड़ा संगठन"
                },
                "is_vpn_or_tor": {
                  "type": "boolean",
                  "description": "क्या IP VPN या Tor नेटवर्क से है"
                },
                "is_data_center": {
                  "type": "boolean",
                  "description": "क्या IP डेटा सेंटर से है"
                },
                "time_zone": {
                  "type": "string",
                  "description": "IP से पहचाना गया टाइम ज़ोन"
                },
                "time_zone_offset": {
                  "type": "string",
                  "description": "टाइम ज़ोन ऑफ़सेट"
                },
                "ip": {
                  "type": "object",
                  "description": "इस प्रविष्टि का IP जियोलोकेशन और पहचान दस्तावेज़ के पते तथा POA दस्तावेज़ के पते की ग्रेट-सर्कल दूरियाँ (km)। जब किसी भी तरफ़ का कोई समाधान योग्य स्थान नहीं होता है तो दूरियाँ `null` होती हैं।",
                  "properties": {
                    "location": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "example": 41.2706327
                        },
                        "longitude": {
                          "type": "number",
                          "example": 1.9770097
                        }
                      },
                      "description": "निर्देशांक, या अनुपलब्ध होने पर `null`।"
                    },
                    "distance_from_id_document": {
                      "type": "number",
                      "nullable": true,
                      "example": 23.4
                    },
                    "distance_from_poa_document": {
                      "type": "number",
                      "nullable": true,
                      "example": 12.3
                    }
                  }
                },
                "id_document": {
                  "type": "object",
                  "description": "पहचान दस्तावेज़ के पते से निकाला गया स्थान और IP जियोलोकेशन और POA दस्तावेज़ पते की दूरियां (किमी)। जब किसी दस्तावेज़ पते को जियोकोड नहीं किया जा सका, तो `location` `null` होता है।",
                  "properties": {
                    "location": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "example": 41.2706327
                        },
                        "longitude": {
                          "type": "number",
                          "example": 1.9770097
                        }
                      },
                      "description": "निर्देशांक, या अनुपलब्ध होने पर `null`।"
                    },
                    "distance_from_ip": {
                      "type": "number",
                      "nullable": true,
                      "example": 23.4
                    },
                    "distance_from_poa_document": {
                      "type": "number",
                      "nullable": true,
                      "example": 18.7
                    }
                  }
                },
                "poa_document": {
                  "type": "object",
                  "description": "पते का प्रमाण दस्तावेज़ से निकाला गया स्थान और IP जियोलोकेशन तथा पहचान दस्तावेज़ पते की दूरियां (किमी)। `location` तब `null` होता है जब सत्र में कोई POA चरण नहीं होता है या पते को जियोकोड नहीं किया जा सका।",
                  "properties": {
                    "location": {
                      "type": "object",
                      "nullable": true,
                      "properties": {
                        "latitude": {
                          "type": "number",
                          "example": 41.2706327
                        },
                        "longitude": {
                          "type": "number",
                          "example": 1.9770097
                        }
                      },
                      "description": "निर्देशांक, या अनुपलब्ध होने पर `null`।"
                    },
                    "distance_from_ip": {
                      "type": "number",
                      "nullable": true,
                      "example": 12.3
                    },
                    "distance_from_id_document": {
                      "type": "number",
                      "nullable": true,
                      "example": 18.7
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  }
                },
                "matches": {
                  "type": "array",
                  "description": "इस प्रविष्टि के IP पते या डिवाइस पहचान के लिए पाए गए क्रॉस-सत्र मिलान। प्रत्येक मिलान आपके एप्लिकेशन में एक अन्य सत्यापन सत्र है (`source` हमेशा `session` होता है) जो समान मान साझा करता है, जो हमेशा वर्तमान सत्र से भिन्न वेंडर उपयोगकर्ता / `vendor_data` से संबंधित होता है, प्रति कलेक्टर 5 तक सीमित (`device_fingerprint` दो स्वतंत्र रूप से सीमित कलेक्टरों का योग करता है, इसलिए 10 प्रविष्टियाँ तक संभव हैं)। प्रत्येक आइटम में `match_source`, `confidence`, `match_mode`, `device_info` और `location_info` शामिल होते हैं; `recovery_similarity`, `tls_ja4_corroborated` और `recovery_gate_reason` कुंजियाँ केवल तभी मौजूद होती हैं जब `match_source`, `recovered_high` हो।",
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "session_id": {
                        "type": "string",
                        "format": "uuid",
                        "description": "मिलान वाले सत्र का सत्र ID।"
                      },
                      "session_number": {
                        "type": "integer",
                        "description": "मिलान वाले सत्र की अनुक्रमिक संख्या।"
                      },
                      "vendor_data": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र का `vendor_data` — हमेशा वर्तमान सत्र के वेंडर उपयोगकर्ता से भिन्न।"
                      },
                      "verification_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "description": "मेल खाने वाले सत्र की निर्माण तिथि (`YYYY-MM-DDTHH:MM:SSZ`)।"
                      },
                      "match_type": {
                        "type": "string",
                        "enum": [
                          "ip_address",
                          "device_fingerprint"
                        ],
                        "description": "क्या मिलान IP पते पर था या डिवाइस फ़िंगरप्रिंट पर"
                      },
                      "match_source": {
                        "type": "string",
                        "enum": [
                          "ip_address",
                          "persistent_id",
                          "legacy_fp",
                          "recovered_high"
                        ],
                        "description": "यह मिलान कैसे प्राप्त हुआ: `ip_address` (साझा IP पता — नेटवर्क को-लोकेशन, डिवाइस-पहचान दावा नहीं), `persistent_id` (सटीक संग्रहीत पर्सिस्टेंट डिवाइस पहचानकर्ता), `legacy_fp` (लीगेसी `didit-fp-*` डिवाइस-फ़िंगरप्रिंट हैश), या `recovered_high` (उच्च-विश्वास फ़ज़ी फ़िंगरप्रिंट-पुनर्प्राप्ति हिट)। कम-विश्वास वाले पुनर्प्राप्ति उम्मीदवार केवल जोखिम चेतावनियों के रूप में सामने आते हैं, इस सरणी में कभी नहीं।"
                      },
                      "matched_value": {
                        "type": "string",
                        "nullable": true,
                        "description": "वह मान जो मेल खाता है: साझा IP पता, स्थायी डिवाइस पहचानकर्ता या लेगेसी फ़िंगरप्रिंट हैश, या — `recovered_high` के लिए — पुनर्प्राप्त डिवाइस का UUID।"
                      },
                      "status": {
                        "type": "string",
                        "description": "मिलान वाले सत्र की लाइफ़साइकिल स्थिति।"
                      },
                      "is_blocklisted": {
                        "type": "boolean",
                        "description": "क्या मिलान किया गया मान किसी ब्लॉकलिस्ट में है। डिवाइस/IP मिलानों के लिए वर्तमान में हमेशा `false`।"
                      },
                      "api_service": {
                        "type": "string",
                        "nullable": true,
                        "description": "मिलान वाले सत्र की स्टैंडअलोन API सेवा; वर्कफ़्लो सत्रों के लिए `null`।"
                      },
                      "source": {
                        "type": "string",
                        "enum": [
                          "session"
                        ],
                        "description": "डिवाइस/IP मिलानों के लिए हमेशा `session` — प्रत्येक मिलान आपके एप्लिकेशन में एक अन्य सत्यापन सत्र है।"
                      },
                      "device_info": {
                        "type": "object",
                        "description": "मिलान सत्र पर देखे गए डिवाइस विवरण।",
                        "properties": {
                          "device_brand": {
                            "type": "string",
                            "nullable": true
                          },
                          "device_model": {
                            "type": "string",
                            "nullable": true
                          },
                          "browser_family": {
                            "type": "string",
                            "nullable": true
                          },
                          "os_family": {
                            "type": "string",
                            "nullable": true
                          },
                          "platform": {
                            "type": "string",
                            "nullable": true
                          },
                          "device_fingerprint": {
                            "type": "string",
                            "nullable": true
                          }
                        }
                      },
                      "location_info": {
                        "type": "object",
                        "description": "मिलान वाले सत्र पर देखे गए नेटवर्क और जियोलोकेशन विवरण।",
                        "properties": {
                          "ip_address": {
                            "type": "string",
                            "nullable": true
                          },
                          "ip_country": {
                            "type": "string",
                            "nullable": true
                          },
                          "ip_country_code": {
                            "type": "string",
                            "nullable": true
                          },
                          "ip_state": {
                            "type": "string",
                            "nullable": true
                          },
                          "ip_city": {
                            "type": "string",
                            "nullable": true
                          },
                          "is_vpn_or_tor": {
                            "type": "boolean"
                          },
                          "is_data_center": {
                            "type": "boolean"
                          }
                        }
                      },
                      "confidence": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "description": "सर्वर-साइड पहचान का विश्वास स्कोर, जिसकी गणना `1 - P(false positive)` के रूप में की जाती है: नियतात्मक मिलानों (`persistent_id`, या हार्डवेयर-आधारित `recovered_high`) के लिए `1.0`, `legacy_fp` के लिए `0.5`, `ip_address` (केवल सह-स्थान) के लिए `0.0`, और संभाव्य पुनर्प्राप्त मिलानों के लिए `1.0` से कम एक संपुष्टि-समायोजित मान (जब TLS JA4 फ़िंगरप्रिंट और IP देश स्वतंत्र रूप से सहमत हों तो अधिक)।"
                      },
                      "match_mode": {
                        "type": "string",
                        "enum": [
                          "deterministic",
                          "probabilistic",
                          "co_occurrence"
                        ],
                        "description": "मिलान का साक्ष्य वर्ग: `deterministic` (सटीक संग्रहीत या हार्डवेयर-आधारित पहचानकर्ता जो भौतिक डिवाइसों के बीच कभी टकरा नहीं सकता), `probabilistic` (फ़ज़ी फ़िंगरप्रिंट साक्ष्य), या `co_occurrence` (केवल साझा नेटवर्क, कोई डिवाइस-पहचान का दावा नहीं)।"
                      },
                      "recovery_similarity": {
                        "type": "number",
                        "description": "फ़िंगरप्रिंट-पुनर्प्राप्ति मिलान की कोसाइन समानता, 4 दशमलव स्थानों तक राउंड की गई। केवल तभी मौजूद होती है जब `match_source` `recovered_high` हो।"
                      },
                      "tls_ja4_corroborated": {
                        "type": "boolean",
                        "description": "क्या दोनों अवलोकनों के TLS JA4 फ़िंगरप्रिंट मेल खाते हैं — एक सर्वर-अवलोकित सिग्नल जिसे ब्राउज़र स्पूफ़ नहीं कर सकता। केवल तभी मौजूद होता है जब `match_source` `recovered_high` हो।"
                      },
                      "recovery_gate_reason": {
                        "type": "string",
                        "description": "रिकवरी मिलान ने फ़ॉल्स पॉज़िटिव हार्ड गेट को क्यों पास किया: `hardware_root_match` (हार्डवेयर-रूटेड डिवाइस पहचानकर्ता बिल्कुल मेल खा गया) या, केवल-जांच साक्ष्य स्वीकार करने वाले कॉन्फ़िगरेशन पर, `exact_composite_plus_<n>_families` / `very_high_similarity_plus_<n>_families`। केवल तब मौजूद होता है जब `match_source`, `recovered_high` हो।"
                      }
                    }
                  }
                },
                "browser_version": {
                  "type": "string",
                  "nullable": true
                },
                "os_version": {
                  "type": "string",
                  "nullable": true
                },
                "user_agent": {
                  "type": "string",
                  "nullable": true,
                  "description": "ब्राउज़र की यूज़र एजेंट स्ट्रिंग।"
                },
                "accept_language": {
                  "type": "string",
                  "nullable": true,
                  "description": "ब्राउज़र द्वारा भेजा गया `Accept-Language` हेडर।"
                },
                "session_identifier": {
                  "type": "string",
                  "nullable": true,
                  "description": "उस ब्राउज़िंग सत्र का पहचानकर्ता जिसमें सत्यापन चलाया गया था।"
                },
                "session_age_ms": {
                  "type": "integer",
                  "nullable": true,
                  "description": "चरण चलने के समय उस ब्राउज़िंग सत्र की आयु मिलीसेकंड में।"
                },
                "coords_accuracy": {
                  "type": "number",
                  "nullable": true,
                  "description": "डिवाइस द्वारा रिपोर्ट किए गए निर्देशांकों की सटीकता त्रिज्या (मीटर में)।"
                },
                "raw_device_data": {
                  "type": "object",
                  "nullable": true,
                  "additionalProperties": true,
                  "description": "चरण के लिए एकत्र किए गए रॉ डिवाइस सिग्नल।"
                }
              }
            }
          },
          "geolocation_checks": {
            "type": "array",
            "nullable": true,
            "description": "**स्थान सत्यापन परिणामों का Array**, प्रति स्थान सत्यापन चरण एक: उस चरण का स्वीकृत प्रयास। तब तक `null` जब तक कि किसी स्थान सत्यापन चरण ने डेटा उत्पन्न न किया हो। उसी चरण के पिछले प्रयास `geolocation_attempts` में हैं।",
            "items": {
              "$ref": "#/components/schemas/GeolocationCheck"
            }
          },
          "geolocation_attempts": {
            "type": "array",
            "nullable": true,
            "description": "इस सत्र के प्रत्येक स्थान सत्यापन चरण का प्रत्येक प्रयास, सबसे पुराना पहले। पुनः सबमिशन द्वारा प्रतिस्थापित किए गए प्रयासों को छोड़ दिया गया है। एक वर्कफ़्लो जो अपनी रिस्पॉन्स विशेषताओं के माध्यम से `geolocation_checks` को रोकता है, वह इस सूची को भी रोकता है।",
            "items": {
              "$ref": "#/components/schemas/GeolocationAttempt"
            }
          },
          "database_validations": {
            "type": "array",
            "nullable": true,
            "description": "**डेटाबेस सत्यापन रिपोर्टों की Array** — हमेशा एक JSON array, कभी भी एकल `database_validation` ऑब्जेक्ट नहीं। `null` जब तक कि कम से कम एक DB सत्यापन चरण ने डेटा जनरेट न किया हो। प्रत्येक आइटम पूर्ण रिपोर्ट है, जिसमें `node_id`, सुविधा-स्तरीय `status`, `screened_data`, प्रति-सेवा `validations[]` (प्रत्येक अपने रजिस्ट्री `source_data` के साथ), और `warnings[]` शामिल हैं। `screened_data` और `source_data` फ़ील्ड देश के अनुसार भिन्न होते हैं:\n\n**ARG (अर्जेंटीना)**: screened_data: {document_number, selfie, gender, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, date_of_death, tax_id, tax_id_type, face_match_score, sit_1_since, banks, last_position, highest_position, rejected_checks}। RENAPER बायोमेट्रिक चेहरा मिलान सत्यापन का उपयोग करता है। दस्तावेज़ में मौजूद न होने पर (उदा. ड्राइविंग लाइसेंस) लिंग का स्वचालित रूप से चेहरे के विश्लेषण या दिए गए नाम से अनुमान लगाया जाता है\n\n**BOL (बोलीविया)**: screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender}\n\n**BRA (ब्राज़ील)**: screened_data: {tax_number, first_name, last_name, date_of_birth}. सफल CPF मिलानों के लिए source_data में हमेशा {identification_number, first_name, last_name, date_of_birth, lgpd_minor, minor_under_18, minor_under_16} शामिल होता है। सफल वयस्क लुकअप उन फ़्लैग्स को false पर सेट करते हैं। Receita Federal Consulta CPF सेवा LGPD-रोके गए डेटा के साथ HTTP 422 (18 वर्ष से कम उम्र का नाबालिग) या 451 (16 वर्ष से कम उम्र) लौटा सकती है; ऐसे मामलों में source_data नाबालिग फ़्लैग्स को आवश्यकतानुसार true पर सेट करता है, अपस्ट्रीम HTTP स्थिति शामिल करता है, और फ़ील्ड-स्तरीय सत्यापन no_match होता है। पूर्ण कोड सूची के लिए डेटाबेस सत्यापन परिणाम कोड संदर्भ का ब्राज़ील अनुभाग देखें।\n\n**CHL (चिली)**: screened_data: {personal_number, first_name, last_name, date_of_birth}. source_data: {identification_number, first_name, last_name, date_of_birth, gender}\n\n**COL (कोलंबिया)**: screened_data: {document_number, document_type, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, document_type}\n\n**CRI (कोस्टा रिका)**: screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**DOM (डोमिनिकन गणराज्य)**: screened_data: {personal_number}. source_data: {identification_number} (केवल valid/invalid लौटाता है)\n\n**ECU (इक्वाडोर)**: screened_data: {personal_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, street, formatted_address, gender, nationality, education, marital_status, spouse, mother_name, father_name, profession}\n\n**ESP (स्पेन)**: screened_data: {personal_number, document_type, expiration_date, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, document_type, expiration_date}\n\n**GTM (ग्वाटेमाला)**: screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**HND (होंडुरास)**: screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**MEX (मेक्सिको)**: screened_data: {personal_number (CURP), first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, date_of_birth, gender, nationality, curp_status, state_of_birth, doc_probatorio, registration_year, registration_state, registration_municipality, num_acta, crip, issuing_state_code, foreign_registry_number, folio_carta, folio_certificado}। RENAPO सिविल रजिस्ट्री का उपयोग करता है। एक अतिरिक्त एक-एक करके सत्यापन के रूप में MEX के लिए एक अलग INE वैधता-जाँच सेवा भी उपलब्ध है।\n\n**PAN (पनामा)**: screened_data: {personal_number, selfie}. source_data: {identification_number}। SIB बायोमेट्रिक सत्यापन का उपयोग करता है\n\n**PER (पेरू)**: screened_data: {personal_number (DNI), first_name, last_name}. source_data: {identification_number, first_name, last_name, paternal_name, maternal_name, verification_number, verification_letter}\n\n**PRY (पैराग्वे)**: screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**SLV (अल सल्वाडोर)**: screened_data: {document_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**URY (उरुग्वे)**: screened_data: {personal_number, date_of_birth, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name}\n\n**VEN (वेनेजुएला)**: screened_data: {document_number, first_name, last_name}. source_data: {identification_number, first_name, last_name, full_name, gender, date_of_birth, document_type}",
            "items": {
              "type": "object",
              "properties": {
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ में इस डेटाबेस सत्यापन चरण के लिए विशिष्ट पहचानकर्ता।"
                },
                "issuing_state": {
                  "type": "string",
                  "description": "उस देश का ISO 3166-1 alpha-3 कोड जिसके सरकारी/रजिस्ट्री स्रोतों से क्वेरी की गई थी (उदा. `BRA`, `MEX`, `ESP`, `NGA`, `IDN`)। डेटाबेस सत्यापन अमेरिका, यूरोप, अफ्रीका, मध्य पूर्व और एशिया-प्रशांत के 60+ देशों के साथ-साथ वैश्विक बहु-देशीय स्रोतों को कवर करता है — कवरेज का नियमित रूप से विस्तार होता है, इसलिए इस मान को एक निश्चित enum के बजाय एक ओपन सेट के रूप में मानें।"
                },
                "validation_type": {
                  "type": "string",
                  "enum": [
                    "one_by_one",
                    "two_by_two",
                    "not_enabled"
                  ],
                  "description": "परिणाम की पुष्टि कैसे की गई: `one_by_one` (एकल-सेवा परिणाम), `two_by_two` (दो या अधिक विशिष्ट सेवाओं ने स्वतंत्र रूप से पहचान संख्या का पूर्ण मिलान किया), या `not_enabled` (तब सहेजा जाता है जब किसी भी सेवा ने उपयोगी मिलान नहीं दिया)। मान कभी भी `null` नहीं होता है। समर्पित बायोमेट्रिक 2x2 सत्यापन मोड वर्तमान में `ECU` और `PER` के लिए उपलब्ध हैं।"
                },
                "screened_data": {
                  "type": "object",
                  "description": "सत्यापन के लिए उपयोग किया गया इनपुट डेटा। फ़ील्ड देश के अनुसार भिन्न होते हैं — देश-विशिष्ट प्रारूपों के लिए डेटाबेस सत्यापन दस्तावेज़ (`/core-technology/database-validation/overview`) देखें।",
                  "properties": {
                    "last_name": {
                      "type": "string"
                    },
                    "first_name": {
                      "type": "string"
                    },
                    "tax_number": {
                      "type": "string",
                      "description": "ब्राजील: CPF (11 अंक)"
                    },
                    "personal_number": {
                      "type": "string",
                      "description": "चिली: RUT, DOM: Cédula (11 अंक), ECU: Cédula (10 अंक), ESP: DNI/NIE, MEX: CURP (18 वर्ण), PER: DNI (8 अंक), URY: CI"
                    },
                    "document_number": {
                      "type": "string",
                      "description": "ARG: DNI, BOL: CI, COL: Cédula, GTM: DPI, HND: DNI, PAN: Cédula, PRY: CI, SLV: DUI, VEN: Cédula"
                    },
                    "date_of_birth": {
                      "type": "string",
                      "format": "date"
                    },
                    "document_type": {
                      "type": "string",
                      "description": "COL: CC/CE/TI/NIT, ESP: ID/PASSPORT"
                    },
                    "expiration_date": {
                      "type": "string",
                      "format": "date",
                      "description": "ESP के लिए आवश्यक"
                    }
                  }
                },
                "validations": {
                  "type": "array",
                  "description": "वैलिडेशन payload लौटाने वाली प्रति रजिस्ट्री सेवा एक प्रविष्टि। प्रत्येक प्रविष्टि सेवा (`service_id`, `service_name`) की पहचान करती है और प्रति-फ़ील्ड `validation` तुलना, रिपोर्ट किए जाने पर सेवा `outcome_code` / `outcome_detail`, और `source_data` में सामान्यीकृत रजिस्ट्री रिकॉर्ड ले जाती है।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "service_id": {
                        "type": "string",
                        "description": "इस सत्यापन परिणाम को उत्पन्न करने वाली रजिस्ट्री सेवा का पहचानकर्ता।",
                        "example": "bra_cpf"
                      },
                      "service_name": {
                        "type": "string",
                        "description": "रजिस्ट्री सेवा का मानव-पठनीय नाम।",
                        "example": "Brazil - CPF status check"
                      },
                      "validation": {
                        "type": "object",
                        "description": "फ़ील्ड सत्यापन के परिणाम।",
                        "properties": {
                          "full_name": {
                            "type": "string",
                            "description": "पूरे नाम के लिए मिलान परिणाम (उदा., 'full_match', 'partial_match', 'no_match')।"
                          },
                          "date_of_birth": {
                            "type": "string",
                            "description": "जन्म तिथि के लिए मिलान परिणाम।"
                          },
                          "identification_number": {
                            "type": "string",
                            "description": "पहचान संख्या के लिए मिलान परिणाम।"
                          }
                        }
                      },
                      "outcome_code": {
                        "type": "string",
                        "nullable": true,
                        "description": "रजिस्ट्री लुकअप का मशीन-पठनीय परिणाम (उदा. `MATCH`, `NO_MATCH`, `PARTIAL_MATCH`, `INCONCLUSIVE`, स्रोत-विशिष्ट कोड)। सेवा द्वारा रिपोर्ट किए जाने पर मौजूद होता है।"
                      },
                      "outcome_detail": {
                        "type": "string",
                        "nullable": true,
                        "description": "सेवा द्वारा प्रदान किए जाने पर, `outcome_code` का मानव-पठनीय स्पष्टीकरण।"
                      },
                      "source_data": {
                        "type": "object",
                        "description": "सरकारी डेटाबेस से लौटाया गया डेटा। सामान्य फ़ील्ड: identification_number, first_name, last_name, full_name, date_of_birth, gender। देश के अनुसार अतिरिक्त फ़ील्ड: BRA में सफल CPF मिलान पर हमेशा lgpd_minor, minor_under_18 और minor_under_16 शामिल होते हैं; जब CPF डेटा LGPD (HTTP 422/451) के तहत रोक दिया जाता है, तो इसमें अपस्ट्रीम HTTP स्टेटस भी शामिल होता है। ECU street, formatted_address, nationality, education, marital_status, spouse, mother_name, father_name, profession जोड़ता है। PER paternal_name, maternal_name, verification_number, verification_letter जोड़ता है। ESP document_type, expiration_date जोड़ता है। VEN/COL document_type जोड़ते हैं।",
                        "additionalProperties": true
                      }
                    }
                  }
                },
                "errors": {
                  "type": "array",
                  "description": "सत्यापन के दौरान रजिस्ट्री सेवाओं द्वारा लौटाए गए एरर, प्रत्येक को इसे उत्पन्न करने वाले `service_id` के साथ टैग किया गया है। **कोई एरर न होने पर यह कुंजी पूरी तरह से छोड़ दी जाती है।**",
                  "items": {
                    "type": "object",
                    "description": "अपस्ट्रीम सेवा का त्रुटि ऑब्जेक्ट ज्यों का त्यों विस्तृत — इसकी कुंजियाँ सेवा के अनुसार भिन्न होती हैं (आमतौर पर एक संदेश/कोड और कोई भी प्रदाता-विशिष्ट विवरण) — साथ ही त्रुटि उत्पन्न करने वाली सेवा की पहचान करने वाला `service_id`।",
                    "properties": {
                      "service_id": {
                        "type": "string",
                        "nullable": true,
                        "description": "त्रुटि उत्पन्न करने वाली रजिस्ट्री सेवा का पहचानकर्ता।"
                      }
                    },
                    "additionalProperties": true
                  }
                },
                "match_type": {
                  "type": "string",
                  "enum": [
                    "no_match",
                    "partial_match",
                    "full_match"
                  ],
                  "nullable": true,
                  "description": "क्वेरी की गई सेवाओं में समग्र मिलान परिणाम। सत्यापन का मूल्यांकन होने तक `null`।"
                },
                "status": {
                  "type": "string",
                  "description": "इस डेटाबेस सत्यापन की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ]
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "feature": {
                        "type": "string",
                        "enum": [
                          "ID_VERIFICATION",
                          "NFC",
                          "LIVENESS",
                          "FACEMATCH",
                          "PROOF_OF_ADDRESS",
                          "PHONE",
                          "EMAIL",
                          "AML",
                          "LOCATION",
                          "DATABASE_VALIDATION",
                          "QUESTIONNAIRE",
                          "DOCUMENT_AI",
                          "KYB_REGISTRY",
                          "KYB_DOCUMENTS",
                          "KYB_KEY_PEOPLE",
                          "GEOLOCATION",
                          "SIGNATURE"
                        ],
                        "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                      },
                      "risk": {
                        "type": "string"
                      },
                      "additional_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "log_type": {
                        "type": "string"
                      },
                      "short_description": {
                        "type": "string"
                      },
                      "long_description": {
                        "type": "string"
                      },
                      "node_id": {
                        "type": "string",
                        "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                      }
                    }
                  },
                  "description": "डेटाबेस सत्यापन से संबंधित चेतावनियाँ।"
                }
              }
            }
          },
          "database_validation_not_performed_reason": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "एक कॉन्फ़िगर किए गए डेटाबेस सत्यापन ने कोई परिणाम क्यों नहीं दिया, `{code, message}` और संदर्भ फ़ील्ड के रूप में। केवल तभी मौजूद होता है जब उस चरण वाले वर्कफ़्लो के लिए `database_validations`, `null` हो, ताकि आप \"रजिस्ट्री सहमत थी\" को \"कुछ नहीं चला\" से अलग पहचान सकें। अन्यथा `null`।",
            "properties": {
              "code": {
                "type": "string",
                "description": "मशीन द्वारा पठनीय स्थिर कारण।"
              },
              "message": {
                "type": "string",
                "description": "मानव-पठनीय स्पष्टीकरण।"
              }
            }
          },
          "reviews": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "user": {
                  "type": "string",
                  "description": "समीक्षा किसने की। आमतौर पर कंसोल समीक्षक का पहचानकर्ता (उनका ईमेल), लेकिन API कुंजी के साथ किए गए स्थिति अपडेट के लिए मान `\"API Client\"` होता है और जब किसी कर्ता का समाधान नहीं किया जा सका तब `\"Unknown\"` होता है — इसलिए इस फ़ील्ड को ईमेल पते के रूप में पार्स न करें।"
                },
                "new_status": {
                  "type": "string"
                },
                "comment": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          },
          "assignee": {
            "type": "object",
            "nullable": true,
            "description": "कंसोल समीक्षक जिसे सत्र सौंपा गया है, या `null` जब इसे कोई नहीं संभाल रहा हो।",
            "properties": {
              "email": {
                "type": "string",
                "format": "email"
              },
              "assigned_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          },
          "waiting_since": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सत्र समीक्षा की प्रतीक्षा कब करने लगा। `null` जब तक कि सत्र `In Review` में न हो और आपका एप्लिकेशन समीक्षा समय-सीमा निर्धारित करे।"
          },
          "sla_due_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "समीक्षा कब नियत है। `null` जब तक कि सत्र `In Review` में न हो और आपका एप्लिकेशन समीक्षा समय-सीमा निर्धारित न करे।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "सत्र बनाए जाने का टाइमस्टैम्प (ISO 8601, UTC)।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "वह टाइमस्टैम्प जब इस सत्र की समय-सीमा समाप्त होने का शेड्यूल है। उपयोगकर्ता सत्यापन (KYC) सत्रों पर तब सेट किया जाता है जब निर्माण के समय समाप्ति कॉन्फ़िगर की गई हो (या जब `Approved` स्थिति KYC समाप्ति गणना को ट्रिगर करती है)। बिना कॉन्फ़िगर की गई समाप्ति वाले सत्रों के लिए, और उन प्रकारों के लिए जो समाप्ति का उपयोग नहीं करते हैं (उदा. व्यवसाय सत्यापन (KYB) सत्र जिन्हें कभी `expires_at` प्राप्त नहीं हुआ) `null`।"
          },
          "registry_checks": {
            "type": "array",
            "nullable": true,
            "description": "कंपनी रजिस्ट्री जांच। केवल तभी मौजूद होती है जब `session_kind = business` हो। प्रत्येक आइटम संपूर्ण कंपनी-रजिस्ट्री payload को समेटे रहता है।",
            "items": {
              "type": "object",
              "description": "एक कंपनी रजिस्ट्री जाँच — स्वामित्व संरचना और चेतावनियों से समृद्ध पूर्ण कंपनी-रजिस्ट्री payload। केवल तभी मौजूद होता है जब `session_kind = business` हो।",
              "properties": {
                "status": {
                  "type": "string",
                  "description": "सुविधा जीवनचक्र स्थिति।"
                },
                "node_id": {
                  "type": "string",
                  "nullable": true
                },
                "data_resolved": {
                  "type": "boolean"
                },
                "company": {
                  "type": "object",
                  "description": "कंपनी के लिए पूर्ण रजिस्ट्री payload (रजिस्ट्री रिकॉर्ड उपयोगकर्ता द्वारा प्रदान किए गए या कंसोल द्वारा संपादित किसी भी डेटा के साथ मर्ज किया गया)।",
                  "properties": {
                    "uuid": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "node_id": {
                      "type": "string",
                      "nullable": true
                    },
                    "status": {
                      "type": "string"
                    },
                    "registry_status": {
                      "type": "string",
                      "nullable": true
                    },
                    "data_resolved": {
                      "type": "boolean"
                    },
                    "company_name": {
                      "type": "string"
                    },
                    "registration_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "country_code": {
                      "type": "string",
                      "description": "निगमन का देश (ISO 3166-1 alpha-2, उदा. `GB`, `DE`, `US`)।"
                    },
                    "region": {
                      "type": "string",
                      "nullable": true,
                      "description": "लागू होने पर ISO 3166-2 सबडिवीज़न कोड (उदा. अमेरिकी राज्यों के लिए `CA`, `NY`)।"
                    },
                    "company_type": {
                      "type": "string",
                      "nullable": true
                    },
                    "incorporation_date": {
                      "type": "string",
                      "format": "date",
                      "nullable": true
                    },
                    "registered_address": {
                      "type": "string",
                      "nullable": true
                    },
                    "tax_number": {
                      "type": "string",
                      "nullable": true
                    },
                    "risk_level": {
                      "type": "string",
                      "enum": [
                        "LOW",
                        "MEDIUM",
                        "HIGH"
                      ],
                      "nullable": true
                    },
                    "verification_status": {
                      "type": "string",
                      "nullable": true
                    },
                    "is_from_registry": {
                      "type": "boolean"
                    },
                    "fetch_status": {
                      "type": "string",
                      "nullable": true
                    },
                    "alternative_names": {
                      "type": "string",
                      "nullable": true,
                      "description": "वैकल्पिक, व्यापारिक, पूर्व या मूल-भाषा कंपनी के नाम टेक्स्ट के रूप में, जब रिपोर्ट किए गए हों।"
                    },
                    "nature_of_business": {
                      "type": "string",
                      "nullable": true
                    },
                    "registered_capital": {
                      "type": "string",
                      "nullable": true
                    },
                    "registered_capital_amount": {
                      "type": "string",
                      "format": "decimal",
                      "nullable": true,
                      "description": "पंजीकृत/शेयर पूंजी राशि दशमलव स्ट्रिंग के रूप में (उदा. `\"100.00\"`), जिसे रजिस्ट्री फ़ाइलिंग से पार्स किया गया है। उपलब्ध न होने पर `null`।"
                    },
                    "registered_capital_currency": {
                      "type": "string",
                      "nullable": true,
                      "description": "`registered_capital_amount` का ISO 4217 करेंसी कोड (उदा. `\"GBP\"`)। उपलब्ध न होने पर `null`।"
                    },
                    "website": {
                      "type": "string",
                      "nullable": true
                    },
                    "email": {
                      "type": "string",
                      "format": "email",
                      "nullable": true
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true
                    },
                    "legal_entity_identifier": {
                      "type": "string",
                      "nullable": true
                    },
                    "location_of_registration": {
                      "type": "string",
                      "nullable": true
                    },
                    "vat_number": {
                      "type": "string",
                      "nullable": true,
                      "description": "EU VAT संख्या, जब होस्टेड रजिस्ट्री चरण के दौरान एकत्र की गई हो या बाद में संपादित की गई हो।"
                    },
                    "vat_validation_status": {
                      "type": "string",
                      "enum": [
                        "valid",
                        "invalid",
                        "format_valid",
                        "invalid_format",
                        "could_not_validate",
                        "not_applicable"
                      ],
                      "description": "रजिस्ट्री सबमिट पर VAT संख्या या, यदि कोई नहीं है, तो `tax_number` के सत्यापन का परिणाम। `valid` / `invalid`: देश की आधिकारिक रजिस्ट्री द्वारा तय किया जाता है (EU VIES, नॉर्वे, स्विट्जरलैंड, ब्राजील, कोलंबिया, कोस्टा रिका, इक्वाडोर, पराग्वे; पोलैंड अपने घरेलू VAT रजिस्टर द्वारा भी)। `format_valid` / `invalid_format`: देश के प्रारूप और चेक-डिजिट नियमों द्वारा तय किया जाता है जहाँ किसी रजिस्ट्री से क्वेरी नहीं की जा सकती। `could_not_validate`: रजिस्ट्री अनुपलब्ध थी। `not_applicable`: कोई संख्या नहीं, बिना रजिस्ट्री या नियमों वाला देश, या कोई सैंडबॉक्स सत्र।"
                    },
                    "vat_validated_number": {
                      "type": "string",
                      "nullable": true,
                      "description": "वह संख्या जिसकी जाँच की गई थी, जैसा कि स्रोत इसे जानता है (उदाहरण के लिए फ्रेंच SIREN या डच RSIN से प्राप्त VAT संख्या)। कोई जाँच न चलने पर `null`।"
                    },
                    "vat_validation_source": {
                      "type": "string",
                      "nullable": true,
                      "enum": [
                        "eu_vies",
                        "pl_vat_white_list",
                        "no_brreg",
                        "ch_uid_register",
                        "br_receita_federal",
                        "co_rues",
                        "cr_hacienda",
                        "ec_sri",
                        "py_dnit",
                        "format_rules",
                        null
                      ],
                      "description": "वह स्रोत जिसने `vat_validation_status` तय किया: एक आधिकारिक रजिस्ट्री, या `format_rules`। कोई जाँच न चलने पर `null`।"
                    },
                    "vat_validated_name": {
                      "type": "string",
                      "nullable": true,
                      "description": "नंबर को सत्यापित करने वाले स्रोत के साथ पंजीकृत नाम, जब वह इसे प्रकट करता है। केवल तब सेट होता है जब स्थिति `valid` हो।"
                    },
                    "vat_validated_address": {
                      "type": "string",
                      "nullable": true,
                      "description": "नंबर को सत्यापित करने वाले स्रोत के पास पंजीकृत पता, यदि वह इसे प्रकट करता है। केवल तभी सेट किया जाता है जब स्थिति `valid` हो।"
                    },
                    "vat_checked_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true,
                      "description": "जांच का टाइमस्टैम्प। कोई जांच न चलने पर `null`।"
                    },
                    "financial_summary": {
                      "type": "object",
                      "nullable": true
                    },
                    "officers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string"
                          },
                          "designation": {
                            "type": "string",
                            "nullable": true
                          },
                          "role": {
                            "type": "string",
                            "nullable": true
                          },
                          "nationality": {
                            "type": "string",
                            "nullable": true
                          },
                          "is_active": {
                            "type": "boolean"
                          },
                          "kyc_status": {
                            "type": "string",
                            "enum": [
                              "Approved",
                              "Declined",
                              "Pending"
                            ],
                            "nullable": true
                          },
                          "kyc_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "पहला नाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो; पूरे नाम से अनुमानित नहीं।"
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "कुलनाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो।"
                          },
                          "address": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया अधिकारी का पता।"
                          },
                          "appointment_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "अधिकारी की नियुक्ति की तारीख।",
                            "format": "date"
                          },
                          "termination_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "नियुक्ति समाप्त होने की तारीख, जब रिपोर्ट की गई हो।",
                            "format": "date"
                          },
                          "date_of_birth": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट की गई पूरी जन्म तिथि। केवल जन्म वर्ष या माह ज्ञात होने पर Null।",
                            "format": "date"
                          },
                          "date_of_birth_year": {
                            "type": "integer",
                            "nullable": true,
                            "minimum": 1,
                            "maximum": 9999,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म वर्ष, जिसमें पूर्ण तिथि अनुपलब्ध होने की स्थिति भी शामिल है।"
                          },
                          "date_of_birth_month": {
                            "type": "integer",
                            "nullable": true,
                            "minimum": 1,
                            "maximum": 12,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म का महीना। केवल वर्ष ज्ञात होने पर Null।"
                          }
                        }
                      }
                    },
                    "beneficial_owners": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string"
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "entity_type": {
                            "type": "string",
                            "enum": [
                              "person",
                              "company"
                            ]
                          },
                          "roles": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "ownership_min_shares": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व प्रतिशत की निचली सीमा। मुक्त-प्रारूप स्ट्रिंग (उदा. `\"25.00\"`, `\"50\"`); पार्स किए गए संख्यात्मक मान के लिए `effective_ownership_percent` का उपयोग करें।"
                          },
                          "ownership_max_shares": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए अनुसार स्वामित्व प्रतिशत की ऊपरी सीमा। फ्री-फ़ॉर्म स्ट्रिंग; पार्स किए गए संख्यात्मक मान के लिए `effective_ownership_percent` का उपयोग करें।"
                          },
                          "is_active": {
                            "type": "boolean"
                          },
                          "kyc_status": {
                            "type": "string",
                            "enum": [
                              "Approved",
                              "Declined",
                              "Pending"
                            ],
                            "nullable": true
                          },
                          "kyc_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true
                          },
                          "effective_ownership_percent": {
                            "type": "number",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "registration_number": {
                            "type": "string",
                            "nullable": true
                          },
                          "country_of_birth": {
                            "type": "string",
                            "nullable": true
                          },
                          "email": {
                            "type": "string",
                            "nullable": true
                          },
                          "nationality": {
                            "type": "string",
                            "nullable": true
                          },
                          "designation": {
                            "type": "string",
                            "nullable": true
                          },
                          "voting_min_shares": {
                            "type": "string",
                            "nullable": true
                          },
                          "voting_max_shares": {
                            "type": "string",
                            "nullable": true
                          },
                          "date_of_birth": {
                            "type": "string",
                            "nullable": true,
                            "description": "रिपोर्ट किए जाने पर पूरी जन्म तिथि।",
                            "format": "date"
                          },
                          "appointment_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "रिपोर्ट किए जाने पर नियुक्ति तिथि।",
                            "format": "date"
                          },
                          "shareholding": {
                            "$ref": "#/components/schemas/KYBRegistryShareholding"
                          }
                        }
                      }
                    },
                    "addresses": {
                      "type": "array",
                      "nullable": true,
                      "description": "रजिस्ट्री द्वारा उल्लिखित प्रत्येक पता, एक कैनोनिकल स्वरूप में। यदि कोई उल्लिखित नहीं है तो Null।",
                      "items": {
                        "$ref": "#/components/schemas/KYBRegistryAddress"
                      }
                    },
                    "industries": {
                      "type": "array",
                      "nullable": true,
                      "description": "वे गतिविधियाँ जिनके तहत रजिस्ट्री कंपनी को वर्गीकृत करती है, एक विहित आकार। जब यह कोई गतिविधि नहीं बताती है तब null।",
                      "items": {
                        "$ref": "#/components/schemas/KYBRegistryIndustry"
                      }
                    },
                    "accounts": {
                      "type": "object",
                      "nullable": true,
                      "additionalProperties": true,
                      "description": "रजिस्ट्री फ़ाइलिंग तिथियां, जब उपलब्ध हों। वार्षिक रिटर्न और आम बैठकों के लिए last_annual_return_date और last_agm_date का उपयोग किया जाता है; वे वित्तीय खातों से भिन्न होते हैं।"
                    },
                    "registry_data": {
                      "$ref": "#/components/schemas/KYBRegistryData"
                    },
                    "user_provided_data": {
                      "type": "object",
                      "description": "अंतिम उपयोगकर्ता द्वारा पुष्टि या संपादित किया गया डेटा।"
                    },
                    "confirmed_by_user_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true
                    },
                    "last_console_edit_at": {
                      "type": "string",
                      "format": "date-time",
                      "nullable": true
                    },
                    "is_editable": {
                      "type": "boolean"
                    },
                    "ownership": {
                      "$ref": "#/components/schemas/KYBRegistryOwnership"
                    },
                    "registry_tier": {
                      "type": "string",
                      "nullable": true,
                      "description": "वर्कफ़्लो द्वारा आदेशित रजिस्ट्री स्तर: `basic`, `shareholders` या `ubo`। `ownership.tier_requested` में भी।"
                    },
                    "registry_tier_delivered": {
                      "type": "string",
                      "nullable": true,
                      "description": "वह स्तर जो रजिस्ट्री ने डिलीवर किया है और जिसे बिल किया जाता है। `ownership.tier_delivered` में भी उपलब्ध है।"
                    },
                    "registry_ownership_status": {
                      "type": "string",
                      "nullable": true,
                      "description": "`not_requested`, `pending`, `delivered`, `not_held` या `unavailable`। `ownership.status` में भी।"
                    },
                    "registry_monitoring": {
                      "type": "object",
                      "nullable": true,
                      "description": "कंपनी के लिए नवीनतम रजिस्ट्री मॉनिटर, या कोई मौजूद न होने पर `null`।",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "status": {
                          "type": "string"
                        },
                        "unavailable_reason": {
                          "type": "string",
                          "nullable": true
                        },
                        "enrolled_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "cancelled_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "last_bill_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true
                        },
                        "next_bill_date": {
                          "type": "string",
                          "format": "date",
                          "nullable": true
                        },
                        "last_event_at": {
                          "type": "string",
                          "format": "date-time",
                          "nullable": true
                        },
                        "events_count": {
                          "type": "integer"
                        },
                        "watched_fields": {
                          "description": "कंपनी के वे फ़ील्ड जिन पर मॉनिटर नज़र रखता है।"
                        }
                      }
                    }
                  }
                },
                "ownership_structure": {
                  "$ref": "#/components/schemas/KYBOwnershipStructure"
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          },
          "key_people_checks": {
            "type": "array",
            "nullable": true,
            "description": "प्रमुख व्यक्तियों की जाँच का समग्र परिणाम। केवल तभी उपस्थित होता है जब `session_kind = business` हो। प्रत्येक आइटम दो-बकेट संरचना (`registry`, `submitted`, `ubo_kyc_summary`) का उपयोग करता है।",
            "items": {
              "type": "object",
              "description": "कंपनी के अधिकारियों + UBO पर समग्र जाँच। `registry` / `submitted` संरचना का उपयोग करता है। केवल तभी उपस्थित होता है जब session_kind = business हो।",
              "properties": {
                "status": {
                  "type": "string"
                },
                "node_id": {
                  "type": "string",
                  "nullable": true
                },
                "registry": {
                  "type": "object",
                  "description": "रजिस्ट्री जांच के माध्यम से खोजे गए पक्ष।",
                  "properties": {
                    "officers": {
                      "type": "array",
                      "description": "रजिस्ट्री जांच के माध्यम से खोजे गए अधिकारी, प्रत्येक को उनके लिए शुरू किए गए किसी भी चाइल्ड KYC सत्र और AML स्क्रीनिंग की स्थिति से समृद्ध किया गया है।",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "रजिस्ट्री में दर्ज अधिकारी का पूरा नाम।"
                          },
                          "designation": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री से मुक्त-पाठ पदनाम (उदा. `Director`, `Company Secretary`)।"
                          },
                          "role": {
                            "type": "string",
                            "enum": [
                              "director",
                              "non_executive_director",
                              "secretary",
                              "chairman",
                              "ubo",
                              "shareholder",
                              "representative",
                              "founder",
                              "legal_advisor",
                              "authorized_signatory",
                              "trustee",
                              "beneficiary",
                              "settlor",
                              "protector",
                              "company_officer",
                              "investor",
                              "other"
                            ],
                            "description": "सामान्यीकृत अधिकारी भूमिका।"
                          },
                          "nationality": {
                            "type": "string",
                            "nullable": true
                          },
                          "appointment_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "अधिकारी की नियुक्ति की तारीख।",
                            "format": "date"
                          },
                          "termination_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "नियुक्ति समाप्त होने की तारीख, जब रिपोर्ट की गई हो।",
                            "format": "date"
                          },
                          "is_active": {
                            "type": "boolean"
                          },
                          "address": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया अधिकारी का पता।"
                          },
                          "aml_status": {
                            "type": "string",
                            "enum": [
                              "Not Finished",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Resub Requested"
                            ],
                            "nullable": true,
                            "description": "इस अधिकारी के लिए चलाए गए AML स्क्रीनिंग रन की स्थिति। `null` जब कोई AML स्क्रीनिंग नहीं चलाई गई थी।"
                          },
                          "kyc_status": {
                            "type": "string",
                            "enum": [
                              "Not Started",
                              "In Progress",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Expired",
                              "Abandoned",
                              "Kyc Expired",
                              "Resubmitted",
                              "Awaiting User"
                            ],
                            "nullable": true,
                            "description": "इस अधिकारी के लिए जनरेट किए गए चाइल्ड KYC सत्र की रॉ लाइफ़साइकिल स्थिति। यह पूर्ण सत्र स्थिति enum है (कम किया गया Approved/Declined/Pending सेट नहीं)। कोई चाइल्ड KYC सत्र मौजूद न होने पर `null`।"
                          },
                          "kyc_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र का साझा करने योग्य URL। `null` जब कोई चाइल्ड सत्र मौजूद नहीं होता है।"
                          },
                          "kyc_session_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र का सत्र id। उस व्यक्ति की पूरी KYC रिपोर्ट लाने के लिए इसे इसी निर्णय endpoint पर पास करें। कोई चाइल्ड सत्र मौजूद न होने पर `null`।"
                          },
                          "verification_workflow_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का आधार वर्कफ़्लो प्रकार (उदा. `kyc`)। ग्राफ़-आधारित वर्कफ़्लो के लिए या जब कोई चाइल्ड सत्र मौजूद न हो तो `null`।"
                          },
                          "verification_workflow_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "चाइल्ड सत्र द्वारा उपयोग किया गया वर्कफ़्लो id। `null` जब कोई चाइल्ड सत्र मौजूद न हो।"
                          },
                          "verification_workflow_label": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का मानव-पठनीय लेबल। अनसेट होने पर `null`।"
                          },
                          "verification_workflow_features": {
                            "type": "array",
                            "nullable": true,
                            "description": "चाइल्ड सत्यापन सत्र की प्रति-सुविधा प्रगति, उदा. `[{\"feature\": \"ID_VERIFICATION\", \"status\": \"Approved\"}]`। जब चाइल्ड सत्र में कोई समाधान योग्य सुविधा सूची न हो तो `null`।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "feature": {
                                  "type": "string",
                                  "description": "सुविधा का प्रदर्शित नाम (उदा. `ID_VERIFICATION`, `LIVENESS`, `AML`)।"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "Not Finished",
                                    "Approved",
                                    "Declined",
                                    "In Review",
                                    "Resub Requested"
                                  ],
                                  "description": "चाइल्ड सत्र के अंदर सुविधा-स्तरीय स्थिति।"
                                }
                              }
                            }
                          },
                          "didit_internal_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के पीछे सत्यापित व्यक्ति का स्थिर आंतरिक पहचानकर्ता — क्रॉस-सत्र लिंकिंग के लिए उपयोगी। `null` जब कोई चाइल्ड सत्र मौजूद न हो या उपयोगकर्ता को अभी तक रिज़ॉल्व न किया गया हो।"
                          },
                          "kyc_document_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र में प्रस्तुत दस्तावेज़ प्रकार (उदा. `P`, `ID`, `DL`)। जब तक चाइल्ड सत्र का पहचान सत्यापन परिणाम न हो तब तक `null`।"
                          },
                          "kyc_nationality": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र में दस्तावेज़ से निकाली गई राष्ट्रीयता। उपलब्ध होने तक `null`।"
                          },
                          "kyc_liveness_passed": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या चाइल्ड KYC सत्र की लाइवनेस जाँच पास हो गई। `null` जब कोई लाइवनेस जाँच नहीं चली हो।"
                          },
                          "kyc_verified_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "जब चाइल्ड KYC सत्र `Approved` पर पहुँचा। `null` जब चाइल्ड सत्र की कोई अन्य स्थिति हो।"
                          },
                          "kyc_aml_categories": {
                            "type": "object",
                            "nullable": true,
                            "description": "व्यक्ति के AML हिट से प्राप्त प्रति-श्रेणी सारांश। कोई हिट न होने पर `null`।",
                            "properties": {
                              "sanctions": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "pep": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "adverse_media": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "warnings": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              }
                            }
                          },
                          "kyc_notification_sent_at": {
                            "type": "string",
                            "nullable": true,
                            "description": "इस व्यक्ति के चाइल्ड सत्र के लिए भेजी गई अंतिम सत्यापन-आमंत्रण अधिसूचना का ISO 8601 टाइमस्टैम्प। कोई न भेजे जाने पर `null`।"
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "पहला नाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो; पूरे नाम से अनुमानित नहीं।"
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true,
                            "description": "कुलनाम जब रजिस्ट्री द्वारा स्पष्ट रूप से रिपोर्ट किया गया हो।"
                          },
                          "date_of_birth": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट की गई पूरी जन्म तिथि। केवल जन्म वर्ष या माह ज्ञात होने पर Null।",
                            "format": "date"
                          },
                          "date_of_birth_year": {
                            "type": "integer",
                            "nullable": true,
                            "minimum": 1,
                            "maximum": 9999,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म वर्ष, जिसमें पूर्ण तिथि अनुपलब्ध होने की स्थिति भी शामिल है।"
                          },
                          "date_of_birth_month": {
                            "type": "integer",
                            "nullable": true,
                            "minimum": 1,
                            "maximum": 12,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जन्म का महीना। केवल वर्ष ज्ञात होने पर Null।"
                          }
                        }
                      }
                    },
                    "beneficial_owners": {
                      "type": "array",
                      "description": "रजिस्ट्री जांच के माध्यम से पाए गए वास्तविक स्वामी, जिनमें से प्रत्येक उनके लिए शुरू किए गए किसी भी चाइल्ड KYC सत्र और AML स्क्रीनिंग की स्थिति से समृद्ध है।",
                      "items": {
                        "type": "object",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "name": {
                            "type": "string",
                            "description": "वास्तविक स्वामी का पूरा नाम (या कॉर्पोरेट UBOs के लिए कंपनी का नाम)।"
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "date_of_birth": {
                            "type": "string",
                            "nullable": true,
                            "description": "रिपोर्ट किए जाने पर पूरी जन्म तिथि।",
                            "format": "date"
                          },
                          "country_of_birth": {
                            "type": "string",
                            "nullable": true
                          },
                          "email": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "registration_number": {
                            "type": "string",
                            "nullable": true
                          },
                          "entity_type": {
                            "type": "string",
                            "enum": [
                              "person",
                              "company"
                            ]
                          },
                          "nationality": {
                            "type": "string",
                            "nullable": true
                          },
                          "designation": {
                            "type": "string",
                            "nullable": true
                          },
                          "roles": {
                            "type": "array",
                            "description": "इस स्वामी द्वारा धारित भूमिका नाम, उदा. `[\"ubo\", \"shareholder\"]`।",
                            "items": {
                              "type": "string"
                            }
                          },
                          "ownership_min_shares": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए स्वामित्व प्रतिशत की निचली सीमा। मुक्त-प्रारूप स्ट्रिंग (उदा. `\"25\"`, `\"25-50%\"`); पार्स किए गए संख्यात्मक मान के लिए `effective_ownership_percent` का उपयोग करें।"
                          },
                          "ownership_max_shares": {
                            "type": "string",
                            "nullable": true,
                            "description": "रजिस्ट्री द्वारा रिपोर्ट किए गए अनुसार स्वामित्व प्रतिशत की ऊपरी सीमा। फ्री-फ़ॉर्म स्ट्रिंग; पार्स किए गए संख्यात्मक मान के लिए `effective_ownership_percent` का उपयोग करें।"
                          },
                          "is_active": {
                            "type": "boolean"
                          },
                          "aml_status": {
                            "type": "string",
                            "enum": [
                              "Not Finished",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Resub Requested"
                            ],
                            "nullable": true,
                            "description": "इस वास्तविक स्वामी के लिए चलाए गए AML स्क्रीनिंग रन की स्थिति। `null` जब कोई AML स्क्रीनिंग नहीं चलाई गई थी।"
                          },
                          "kyc_status": {
                            "type": "string",
                            "enum": [
                              "Not Started",
                              "In Progress",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Expired",
                              "Abandoned",
                              "Kyc Expired",
                              "Resubmitted",
                              "Awaiting User"
                            ],
                            "nullable": true,
                            "description": "इस वास्तविक स्वामी के लिए जनरेट किए गए चाइल्ड KYC सत्र की रॉ लाइफ़साइकिल स्थिति। यह पूर्ण सत्र स्थिति enum है (कम किया गया Approved/Declined/Pending सेट नहीं)। कोई चाइल्ड KYC सत्र मौजूद न होने पर `null`।"
                          },
                          "kyc_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र का साझा करने योग्य URL। `null` जब कोई चाइल्ड सत्र मौजूद नहीं होता है।"
                          },
                          "kyc_session_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र का सत्र id। उस व्यक्ति की पूरी KYC रिपोर्ट लाने के लिए इसे इसी निर्णय endpoint पर पास करें। कोई चाइल्ड सत्र मौजूद न होने पर `null`।"
                          },
                          "verification_workflow_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का आधार वर्कफ़्लो प्रकार (उदा. `kyc`)। ग्राफ़-आधारित वर्कफ़्लो के लिए या जब कोई चाइल्ड सत्र मौजूद न हो तो `null`।"
                          },
                          "verification_workflow_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "चाइल्ड सत्र द्वारा उपयोग किया गया वर्कफ़्लो id। `null` जब कोई चाइल्ड सत्र मौजूद न हो।"
                          },
                          "verification_workflow_label": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का मानव-पठनीय लेबल। अनसेट होने पर `null`।"
                          },
                          "verification_workflow_features": {
                            "type": "array",
                            "nullable": true,
                            "description": "चाइल्ड सत्यापन सत्र की प्रति-सुविधा प्रगति, उदा. `[{\"feature\": \"ID_VERIFICATION\", \"status\": \"Approved\"}]`। जब चाइल्ड सत्र में कोई समाधान योग्य सुविधा सूची न हो तो `null`।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "feature": {
                                  "type": "string",
                                  "description": "सुविधा का प्रदर्शित नाम (उदा. `ID_VERIFICATION`, `LIVENESS`, `AML`)।"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "Not Finished",
                                    "Approved",
                                    "Declined",
                                    "In Review",
                                    "Resub Requested"
                                  ],
                                  "description": "चाइल्ड सत्र के अंदर सुविधा-स्तरीय स्थिति।"
                                }
                              }
                            }
                          },
                          "didit_internal_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के पीछे सत्यापित व्यक्ति का स्थिर आंतरिक पहचानकर्ता — क्रॉस-सत्र लिंकिंग के लिए उपयोगी। `null` जब कोई चाइल्ड सत्र मौजूद न हो या उपयोगकर्ता को अभी तक रिज़ॉल्व न किया गया हो।"
                          },
                          "kyc_document_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र में प्रस्तुत दस्तावेज़ प्रकार (उदा. `P`, `ID`, `DL`)। जब तक चाइल्ड सत्र का पहचान सत्यापन परिणाम न हो तब तक `null`।"
                          },
                          "kyc_nationality": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र में दस्तावेज़ से निकाली गई राष्ट्रीयता। उपलब्ध होने तक `null`।"
                          },
                          "kyc_liveness_passed": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या चाइल्ड KYC सत्र की लाइवनेस जाँच पास हो गई। `null` जब कोई लाइवनेस जाँच नहीं चली हो।"
                          },
                          "kyc_verified_at": {
                            "type": "string",
                            "format": "date-time",
                            "nullable": true,
                            "description": "जब चाइल्ड KYC सत्र `Approved` पर पहुँचा। `null` जब चाइल्ड सत्र की कोई अन्य स्थिति हो।"
                          },
                          "kyc_aml_categories": {
                            "type": "object",
                            "nullable": true,
                            "description": "व्यक्ति के AML हिट से प्राप्त प्रति-श्रेणी सारांश। कोई हिट न होने पर `null`।",
                            "properties": {
                              "sanctions": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "pep": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "adverse_media": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              },
                              "warnings": {
                                "type": "string",
                                "enum": [
                                  "match",
                                  "clear"
                                ]
                              }
                            }
                          },
                          "kyc_notification_sent_at": {
                            "type": "string",
                            "nullable": true,
                            "description": "इस व्यक्ति के चाइल्ड सत्र के लिए भेजी गई अंतिम सत्यापन-आमंत्रण अधिसूचना का ISO 8601 टाइमस्टैम्प। कोई न भेजे जाने पर `null`।"
                          },
                          "child_beneficial_owners": {
                            "type": "array",
                            "description": "कॉर्पोरेट UBOs के लिए: स्वामित्व वाली संस्था के अपने वास्तविक स्वामी, रजिस्ट्री से निकाले गए रॉ ऑब्जेक्ट के रूप में। लागू न होने पर खाली ऐरे।",
                            "items": {
                              "type": "object"
                            }
                          },
                          "effective_ownership_percent": {
                            "type": "number",
                            "nullable": true,
                            "description": "पार्स किया गया संख्यात्मक स्वामित्व प्रतिशत — उपलब्ध होने पर अधिकतम सीमा, अन्यथा न्यूनतम सीमा। जब किसी भी सीमा को पार्स नहीं किया जा सका तो `null`।"
                          },
                          "voting_min_shares": {
                            "type": "string",
                            "nullable": true
                          },
                          "voting_max_shares": {
                            "type": "string",
                            "nullable": true
                          },
                          "appointment_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "रिपोर्ट किए जाने पर नियुक्ति तिथि।",
                            "format": "date"
                          }
                        }
                      }
                    }
                  }
                },
                "submitted": {
                  "type": "object",
                  "description": "प्रमुख व्यक्ति फ़्लो के दौरान व्यवसाय व्यवस्थापक द्वारा सबमिट किए गए पक्ष (BusinessParty पंक्तियाँ जहाँ source=USER)।",
                  "properties": {
                    "parties": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "description": "प्रमुख व्यक्ति फ़्लो के माध्यम से व्यवसाय व्यवस्थापक द्वारा सबमिट किया गया पक्ष (source=USER)।",
                        "properties": {
                          "uuid": {
                            "type": "string",
                            "format": "uuid"
                          },
                          "entity_type": {
                            "type": "string",
                            "enum": [
                              "person",
                              "company"
                            ]
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "USER"
                            ],
                            "description": "यहाँ हमेशा `USER` — इस बकेट में केवल वही पक्ष होते हैं जिन्हें Key People फ़्लो में अंतिम उपयोगकर्ता द्वारा दर्ज या पुष्टि की गई हो (रजिस्ट्री द्वारा खोजे गए लोग `registry` के अंतर्गत दिखाई देते हैं)।"
                          },
                          "name": {
                            "type": "string"
                          },
                          "first_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "last_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "company_name": {
                            "type": "string",
                            "nullable": true
                          },
                          "registration_number": {
                            "type": "string",
                            "nullable": true
                          },
                          "email": {
                            "type": "string",
                            "format": "email",
                            "nullable": true
                          },
                          "nationality": {
                            "type": "string",
                            "nullable": true,
                            "description": "व्यक्तियों के लिए राष्ट्रीयता; कंपनी पक्षों के लिए निगमन का देश।"
                          },
                          "phone_number": {
                            "type": "string",
                            "nullable": true
                          },
                          "date_of_birth": {
                            "type": "string",
                            "format": "date",
                            "nullable": true
                          },
                          "position": {
                            "type": "string",
                            "nullable": true,
                            "description": "मुक्त-पाठ पद का नाम / पद (केवल व्यक्तियों के लिए)।"
                          },
                          "custom_fields": {
                            "type": "object",
                            "description": "इस पार्टी के लिए एकत्र किए गए वर्कफ़्लो-परिभाषित कस्टम फ़ील्ड; कुंजियाँ वर्कफ़्लो के प्रमुख व्यक्ति फ़ील्ड वर्णनकर्ता द्वारा परिभाषित की जाती हैं।"
                          },
                          "is_active": {
                            "type": "boolean"
                          },
                          "is_skipped": {
                            "type": "boolean",
                            "description": "True जब अंतिम उपयोगकर्ता ने इस पक्ष के लिए सत्यापन छोड़ दिया (केवल तभी संभव है जब भूमिका छोड़ने की अनुमति देती है)।"
                          },
                          "requires_verification": {
                            "type": "boolean",
                            "description": "True जब भूमिका सेटिंग्स और स्वामित्व थ्रेशोल्ड के आधार पर इस पक्ष के लिए चाइल्ड KYC / KYB उप-सत्र आवश्यक हो।"
                          },
                          "roles": {
                            "type": "array",
                            "description": "इस पक्ष द्वारा धारित सभी भूमिकाएँ, प्रत्येक का अपना स्वामित्व और मतदान प्रतिशत। स्वयं पक्ष पर कोई स्केलर `role`/`ownership_percent` नहीं होता है।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "role": {
                                  "type": "string",
                                  "enum": [
                                    "director",
                                    "non_executive_director",
                                    "secretary",
                                    "chairman",
                                    "ubo",
                                    "shareholder",
                                    "representative",
                                    "founder",
                                    "legal_advisor",
                                    "authorized_signatory",
                                    "trustee",
                                    "beneficiary",
                                    "settlor",
                                    "protector",
                                    "company_officer",
                                    "investor",
                                    "other"
                                  ]
                                },
                                "ownership_percent": {
                                  "type": "number",
                                  "nullable": true
                                },
                                "voting_percent": {
                                  "type": "number",
                                  "nullable": true
                                }
                              }
                            }
                          },
                          "kyc_session_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "सत्यापन की आवश्यकता वाले व्यक्तिगत पक्षकारों के लिए चाइल्ड KYC सत्र ID। अन्यथा `null`।"
                          },
                          "kyc_session_status": {
                            "type": "string",
                            "enum": [
                              "Not Started",
                              "In Progress",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Expired",
                              "Abandoned",
                              "Kyc Expired",
                              "Resubmitted",
                              "Awaiting User"
                            ],
                            "nullable": true,
                            "description": "चाइल्ड KYC सत्र की लाइफ़साइकिल स्थिति। कोई चाइल्ड KYC सत्र मौजूद न होने पर `null`।"
                          },
                          "kyc_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true
                          },
                          "kyb_sub_session_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "सत्यापन की आवश्यकता वाले कॉर्पोरेट पक्षकारों के लिए चाइल्ड KYB उप-सत्र ID। अन्यथा `null`।"
                          },
                          "kyb_sub_session_status": {
                            "type": "string",
                            "enum": [
                              "Not Started",
                              "In Progress",
                              "Approved",
                              "Declined",
                              "In Review",
                              "Expired",
                              "Abandoned",
                              "Kyc Expired",
                              "Resubmitted",
                              "Awaiting User"
                            ],
                            "nullable": true,
                            "description": "चाइल्ड KYB सब-सत्र की लाइफ़साइकिल स्थिति। कोई सब-सत्र मौजूद न होने पर `null`।"
                          },
                          "kyb_sub_session_url": {
                            "type": "string",
                            "format": "uri",
                            "nullable": true,
                            "description": "चाइल्ड KYB सब-सत्र का साझा करने योग्य URL। `null` जब कोई सब-सत्र मौजूद नहीं होता है।"
                          },
                          "verification_workflow_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का आधार वर्कफ़्लो प्रकार (KYC सत्र को प्राथमिकता दी जाती है, KYB सब-सत्र पर वापस आते हुए)। ग्राफ़-आधारित वर्कफ़्लो के लिए या जब कोई चाइल्ड सत्र मौजूद न हो तो `null`।"
                          },
                          "verification_workflow_id": {
                            "type": "string",
                            "format": "uuid",
                            "nullable": true,
                            "description": "चाइल्ड सत्र द्वारा उपयोग किया गया वर्कफ़्लो id। `null` जब कोई चाइल्ड सत्र मौजूद न हो।"
                          },
                          "verification_workflow_label": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के वर्कफ़्लो का मानव-पठनीय लेबल। अनसेट होने पर `null`।"
                          },
                          "verification_workflow_features": {
                            "type": "array",
                            "nullable": true,
                            "description": "चाइल्ड सत्यापन सत्र की प्रति-सुविधा प्रगति, उदा. `[{\"feature\": \"ID_VERIFICATION\", \"status\": \"Approved\"}]`। जब चाइल्ड सत्र में कोई समाधान योग्य सुविधा सूची न हो तो `null`।",
                            "items": {
                              "type": "object",
                              "properties": {
                                "feature": {
                                  "type": "string",
                                  "description": "सुविधा का प्रदर्शित नाम (उदा. `ID_VERIFICATION`, `LIVENESS`, `AML`)।"
                                },
                                "status": {
                                  "type": "string",
                                  "enum": [
                                    "Not Finished",
                                    "Approved",
                                    "Declined",
                                    "In Review",
                                    "Resub Requested"
                                  ],
                                  "description": "चाइल्ड सत्र के अंदर सुविधा-स्तरीय स्थिति।"
                                }
                              }
                            }
                          },
                          "didit_internal_id": {
                            "type": "string",
                            "nullable": true,
                            "description": "चाइल्ड सत्र के पीछे सत्यापित व्यक्ति का स्थिर आंतरिक पहचानकर्ता। रिज़ॉल्व न होने पर `null`।"
                          }
                        }
                      }
                    }
                  }
                },
                "ubo_kyc_summary": {
                  "type": "object",
                  "nullable": true,
                  "description": "समग्र UBO KYC प्रगति, या null जब किसी भी UBO के पास लिंक किए गए KYC सत्र न हों।",
                  "properties": {
                    "total": {
                      "type": "integer"
                    },
                    "approved": {
                      "type": "integer"
                    },
                    "flagged": {
                      "type": "integer",
                      "description": "वास्तविक स्वामी (UBO) जिनका KYC अस्वीकृत या समीक्षाधीन है।"
                    },
                    "pending": {
                      "type": "integer"
                    }
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          },
          "document_verifications": {
            "type": "array",
            "nullable": true,
            "description": "वर्कफ़्लो नोड के अनुसार समूहीकृत दस्तावेज़ सत्यापन जाँचें। केवल तब मौजूद होती हैं जब `session_kind = business` हो।",
            "items": {
              "type": "object",
              "description": "वर्कफ़्लो नोड द्वारा समूहीकृत दस्तावेज़। केवल तब मौजूद होते हैं जब session_kind = business हो।",
              "properties": {
                "status": {
                  "type": "string"
                },
                "node_id": {
                  "type": "string",
                  "nullable": true
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "uuid": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "document_type": {
                        "type": "string",
                        "enum": [
                          "LEGAL_PRESENCE",
                          "COMPANY_DETAILS",
                          "OWNERSHIP_STRUCTURE",
                          "REPRESENTATIVES_AUTHORIZATION",
                          "OTHER"
                        ],
                        "nullable": true,
                        "description": "उच्च-स्तरीय KYB दस्तावेज़ समूह जिसमें फ़ाइल को वर्गीकृत किया गया था। अवर्गीकृत होने पर `null`।"
                      },
                      "document_subtype": {
                        "type": "string",
                        "nullable": true,
                        "description": "विशिष्ट OCR-पहचाना गया सबटाइप (उदा. `CERTIFICATE_OF_INCORPORATION`, `SHAREHOLDER_REGISTRY`); `UNKNOWN` जब OCR दस्तावेज़ को विश्वासपूर्वक वर्गीकृत नहीं कर सका।"
                      },
                      "document_group": {
                        "type": "string",
                        "enum": [
                          "LEGAL_PRESENCE",
                          "COMPANY_DETAILS",
                          "OWNERSHIP_STRUCTURE",
                          "REPRESENTATIVES_AUTHORIZATION",
                          "OTHER"
                        ],
                        "nullable": true,
                        "description": "`document_type` का उपनाम — `groups` और `required_groups` द्वारा उपयोग किया जाने वाला समूह नाम।"
                      },
                      "file_url": {
                        "type": "string",
                        "format": "uri",
                        "nullable": true,
                        "description": "अपलोड की गई फ़ाइल का अल्पकालिक प्रीसाइन्ड लिंक। विश्लेषक द्वारा बनाए गए दस्तावेज़ अनुरोध प्लेसहोल्डर्स (`is_requested = true`) के लिए `null` जो अभी तक पूरे नहीं हुए हैं।"
                      },
                      "original_filename": {
                        "type": "string",
                        "nullable": true,
                        "description": "फ़ाइल नाम जैसा कि उपयोगकर्ता या विश्लेषक द्वारा अपलोड किया गया था।"
                      },
                      "file_size": {
                        "type": "integer",
                        "nullable": true,
                        "description": "बाइट्स में फ़ाइल का आकार।"
                      },
                      "status": {
                        "type": "string",
                        "enum": [
                          "Not Finished",
                          "Approved",
                          "Declined",
                          "In Review",
                          "Resub Requested"
                        ],
                        "description": "प्रति-दस्तावेज़ सत्यापन स्थिति।"
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "cross_check_result": {
                        "type": "object",
                        "nullable": true,
                        "description": "रजिस्ट्री कंपनी प्रोफ़ाइल के विरुद्ध OCR द्वारा निकाले गए दस्तावेज़ फ़ील्ड का क्रॉस-रेफ़रंस। `critical`, `non_critical` और `people` सेक्शन वाला एक ऑब्जेक्ट, जिनमें से प्रत्येक एक फ़ील्ड नाम (जैसे `company_name`, `registration_number`, `incorporation_date`, `registered_address`) को `{\"document\": \"...\", \"registry\": \"...\", \"match\": true, \"score\": 0.97}` जैसे तुलना रिकॉर्ड में मैप करता है। `null` जब दस्तावेज़ में कोई OCR डेटा नहीं था या तुलना करने के लिए कोई रजिस्ट्री कंपनी नहीं थी।"
                      },
                      "document_metadata": {
                        "type": "object",
                        "nullable": true,
                        "description": "अपलोड किए गए कॉर्पोरेट दस्तावेज़ से निकाला गया मेटाडेटा। जब मेटाडेटा निष्कर्षण सफल होता है, तो सभी 16 कुंजियाँ हमेशा मौजूद होती हैं (फ़ाइल प्रकार पर लागू न होने पर व्यक्तिगत मान `null` होते हैं); जब कुछ भी नहीं निकाला जा सका तो संपूर्ण ऑब्जेक्ट `null` होता है। PDF के लिए, `overlay_manipulation` में फ़ॉरेंसिक ओवरले-टेक्स्ट विश्लेषण होता है।",
                        "properties": {
                          "file_size": {
                            "type": "integer",
                            "nullable": true,
                            "description": "दस्तावेज़ का आकार।"
                          },
                          "content_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "दस्तावेज़ का कंटेंट प्रकार।"
                          },
                          "creation_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "तारीख जब दस्तावेज़ बनाया गया था।"
                          },
                          "modified_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "तारीख जब दस्तावेज़ संशोधित किया गया था।"
                          },
                          "creator": {
                            "type": "string",
                            "nullable": true,
                            "description": "फ़ाइल मेटाडेटा (PDF `Creator`) में दर्ज ऑथरिंग टूल/उपयोगकर्ता।"
                          },
                          "producer": {
                            "type": "string",
                            "nullable": true,
                            "description": "फ़ाइल बनाने वाला सॉफ़्टवेयर (PDF `Producer`)।"
                          },
                          "software": {
                            "type": "string",
                            "nullable": true,
                            "description": "फ़ाइल मेटाडेटा में रिकॉर्ड किया गया संपादन सॉफ़्टवेयर।"
                          },
                          "encryption": {
                            "type": "string",
                            "nullable": true,
                            "description": "फ़ाइल की एन्क्रिप्शन स्कीम, जब एन्क्रिप्टेड हो।"
                          },
                          "is_signed": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या दस्तावेज़ में डिजिटल हस्ताक्षर मौजूद है।"
                          },
                          "is_tampered": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या डिजिटल हस्ताक्षर सत्यापन विफल रहा (हस्ताक्षर के बाद संशोधन)।"
                          },
                          "signature_info": {
                            "type": "object",
                            "nullable": true,
                            "description": "डिजिटल हस्ताक्षर का विवरण, यदि मौजूद हो।"
                          },
                          "exif_original_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "छवि अपलोड के लिए EXIF मूल कैप्चर तिथि।"
                          },
                          "exif_digitized_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "छवि अपलोड के लिए EXIF डिजिटलीकरण तिथि।"
                          },
                          "processed_by_known_editor": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या मेटाडेटा इंगित करता है कि फ़ाइल किसी ज्ञात छवि/PDF संपादक से गुज़री है।"
                          },
                          "has_different_creation_mod_date": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "क्या निर्माण और संशोधन तिथियाँ भिन्न हैं — एक संभावित (लेकिन अनिर्णायक) संपादन संकेत।"
                          },
                          "overlay_manipulation": {
                            "type": "object",
                            "nullable": true,
                            "description": "संदिग्ध ओवरले-टेक्स्ट हेरफेर के लिए PDF फोरेंसिक विश्लेषण। जब कोई ओवरले हेरफेर का सबूत नहीं मिला हो या दस्तावेज़ PDF नहीं था, तो Null।",
                            "properties": {
                              "detected": {
                                "type": "boolean",
                                "description": "क्या ओवरले-टेक्स्ट हेरफेर के साक्ष्य का पता चला था।"
                              },
                              "analyzed": {
                                "type": "boolean",
                                "description": "क्या PDF का विश्लेषण किया जा सका।"
                              },
                              "analysis_incomplete": {
                                "type": "boolean",
                                "description": "जब फ़ाइल को पूरी तरह जाँचा नहीं जा सका, तब यह मौजूद होता है और केवल तभी सत्य होता है। जितना हिस्सा जाँचा जा सका, उसके निष्कर्ष जहाँ संभव हो वहीं रखे जाते हैं, और दस्तावेज़ अप्रमाणित टेक्स्ट प्रतिस्थापन चेतावनी दिखाता है।"
                              },
                              "signals": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "फ़ॉरेंसिक सिग्नल जो ट्रिगर हुए, जैसे duplicate_font_subset या glyph_fragmentation।"
                              },
                              "manipulated_regions": {
                                "type": "array",
                                "description": "PDF पृष्ठ निर्देशांकों में संदिग्ध हेरफेर वाले क्षेत्र।",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "page": {
                                      "type": "integer"
                                    },
                                    "x": {
                                      "type": "number"
                                    },
                                    "y": {
                                      "type": "number"
                                    },
                                    "width": {
                                      "type": "number"
                                    },
                                    "height": {
                                      "type": "number"
                                    },
                                    "page_width": {
                                      "type": "number"
                                    },
                                    "page_height": {
                                      "type": "number"
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "description": {
                        "type": "string",
                        "nullable": true,
                        "description": "दस्तावेज़ अनुरोध के लिए विश्लेषक द्वारा प्रदान किया गया लेबल या कारण। नियमित अपलोड के लिए `null`।"
                      },
                      "is_requested": {
                        "type": "boolean",
                        "description": "विश्लेषक द्वारा बनाए गए दस्तावेज़ अनुरोध प्लेसहोल्डर के लिए True जो अपलोड की प्रतीक्षा कर रहे हैं।"
                      },
                      "ocr_data": {
                        "type": "object",
                        "nullable": true
                      },
                      "is_console_upload": {
                        "type": "boolean",
                        "description": "अंतिम-उपयोगकर्ता प्रवाह के बजाय कंसोल से अपलोड किए गए दस्तावेज़ों के लिए True। कंसोल अपलोड कभी भी सुविधा-स्तरीय समग्र स्थिति को नहीं बदलते हैं।"
                      },
                      "is_confirmed": {
                        "type": "boolean",
                        "description": "कंसोल अपलोड `false` से शुरू होते हैं और व्यवस्थापक द्वारा पुष्टि करने के बाद `true` हो जाते हैं; अंतिम उपयोगकर्ता अपलोड हमेशा `true` होते हैं।"
                      }
                    }
                  }
                },
                "groups": {
                  "type": "object",
                  "description": "समूह नाम (जैसे legal_presence, ownership_structure) द्वारा की-बद्ध प्रति-समूह प्रगति काउंटर।",
                  "additionalProperties": {
                    "type": "object",
                    "properties": {
                      "total": {
                        "type": "integer"
                      },
                      "approved": {
                        "type": "integer"
                      },
                      "pending": {
                        "type": "integer"
                      },
                      "declined": {
                        "type": "integer"
                      },
                      "in_review": {
                        "type": "integer"
                      },
                      "other": {
                        "type": "integer"
                      },
                      "missing": {
                        "type": "integer",
                        "description": "अनुरोधित प्लेसहोल्डर जिनमें अभी तक कोई फ़ाइल अपलोड नहीं की गई है।"
                      }
                    }
                  }
                },
                "required_groups": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "warnings": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          },
          "environment": {
            "type": "string",
            "enum": [
              "live",
              "sandbox"
            ],
            "description": "क्या सत्र किसी लाइव एप्लिकेशन (`live`) या सैंडबॉक्स एप्लिकेशन (`sandbox`) द्वारा बनाया गया था। सैंडबॉक्स सत्र निःशुल्क और पूरी तरह से सिम्युलेटेड होते हैं, और इनसे कभी भी क्रेडिट का शुल्क नहीं लिया जाता है।"
          },
          "sandbox_scenario": {
            "type": "string",
            "nullable": true,
            "description": "वह सैंडबॉक्स परिदृश्य जिसके साथ सत्र बनाया गया था। लाइव सत्रों के लिए और बिना किसी परिदृश्य के बनाए गए सैंडबॉक्स सत्रों के लिए `null`।"
          },
          "resubmissions": {
            "type": "array",
            "description": "उपयोगकर्ता और व्यवसाय सत्रों के लिए केवल `include=resubmissions` के साथ लौटाया जाता है। प्रति पुनः सबमिशन अनुरोध पर एक प्रविष्टि, सबसे पुरानी पहले। प्रत्येक प्रविष्टि उन परिणामों को ले जाती है जो पुनः सबमिट किए गए चरणों ने अनुरोध से पहले लौटाए थे, ताकि पहले के सबमिशन पढ़े जा सकें। सत्र को हटाने से प्रत्येक सबमिशन डिलीट हो जाता है।",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "integer",
                  "description": "सत्र के पहले पुनः सबमिशन के लिए 1, दूसरे के लिए 2, इत्यादि।"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "पुनः सबमिशन का अनुरोध कब किया गया था।"
                },
                "previous_status": {
                  "type": "string",
                  "description": "अनुरोध से ठीक पहले सत्र की स्थिति।"
                },
                "nodes": {
                  "type": "array",
                  "description": "उपयोगकर्ता को वापस भेजे गए वर्कफ़्लो चरण।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "node_id": {
                        "type": "string"
                      },
                      "feature": {
                        "type": "string"
                      }
                    }
                  }
                },
                "reasons": {
                  "type": "object",
                  "nullable": true,
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "प्रत्येक चरण के लिए दिया गया कारण, `node_id` के अनुसार कुंजीबद्ध।"
                },
                "requested_by": {
                  "type": "object",
                  "nullable": true,
                  "description": "पुनः सबमिशन का अनुरोध किसने किया।",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "email": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  }
                },
                "results": {
                  "type": "object",
                  "additionalProperties": true,
                  "description": "पुनः सबमिट किए गए चरणों ने अनुरोध से पहले क्या लौटाया, उन्हीं कुंजियों के तहत और उसी आकार में जैसा कि इस रिस्पॉन्स के वर्तमान परिणाम हैं (`id_verifications`, `nfc_verifications`, `liveness_checks`, `face_matches`, `poa_verifications`, `phone_verifications`, `email_verifications`, `aml_screenings`, `ip_analyses`, `database_validations`, `questionnaire_responses`, `document_ai_documents`, `geolocation_checks`; व्यावसायिक सत्रों के लिए `document_verifications` भी)। केवल वापस भेजे गए चरणों की कुंजियाँ ही दिखाई देती हैं।"
                }
              }
            }
          },
          "biometric_consent": {
            "type": "object",
            "nullable": true,
            "description": "क्या सत्र को फ़ेस कैप्चर से पहले स्पष्ट बायोमेट्रिक सहमति की आवश्यकता थी, क्यों, और उत्तर का साक्ष्य। केवल उपयोगकर्ता सत्यापन (KYC) सत्र; वही ऑब्जेक्ट सत्र webhooks के `decision` में होता है। `null` जब सत्र का कभी मूल्यांकन नहीं किया गया, उदाहरण के लिए बिना फ़ेस कैप्चर वाला वर्कफ़्लो। बिना किसी रिकॉर्ड किए गए मान वाले फ़ील्ड `null` होते हैं। 4.10.0 से नीचे का एक नेटिव SDK, या जो अपने संस्करण की रिपोर्ट नहीं करता है, सहमति चरण नहीं दिखा सकता है: इसके फ़ेस कैप्चर पहले की तरह चलते हैं, और जिस सत्र में सहमति की आवश्यकता थी वह फिर `reason: \"BIOMETRIC_CONSENT_UNSUPPORTED_SDK\"` के साथ `status: \"pending\"` रिपोर्ट करता है। देखें [बायोमेट्रिक सहमति](/hi/getting-started/biometric-consent)।",
            "properties": {
              "required": {
                "type": "boolean",
                "description": "Whether the session must collect explicit biometric consent. Never goes back to `false`."
              },
              "trigger": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "declared_state",
                  "ip_state",
                  "ip_unknown",
                  "document_issuer",
                  "forced",
                  "customer_collected"
                ],
                "description": "सहमति की आवश्यकता क्यों है, या इसे कैसे संतुष्ट किया गया। `declared_state`: आपने एक कवर किया गया राज्य घोषित किया है (`user_state`, या `expected_details` में एक अमेरिकी पता)। `ip_state`: व्यक्ति का IP कवर किए गए राज्य (इलिनोइस, टेक्सास, कोलोराडो) में है। `ip_unknown`: साक्ष्य व्यक्ति को अमेरिका में रखता है लेकिन राज्य का पता नहीं लगाया जा सकता है (IP बिना राज्य के अमेरिका में है, या इसका पता नहीं लगाया जा सकता जबकि आपके विवरण या दस्तावेज़ व्यक्ति को अमेरिका में रखते हैं)। `document_issuer`: पहचान दस्तावेज़ किसी कवर किए गए राज्य द्वारा जारी किया गया था। `forced`: एप्लिकेशन का मोड Always है। `customer_collected`: आपने सत्र बनाते समय `biometric_consent` भेजा था। आवश्यकता न होने पर `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "not_required",
                  "pending",
                  "given",
                  "declined"
                ],
                "description": "`not_required`; `pending` (आवश्यक है और दिया नहीं गया: व्यक्ति ने अभी तक उत्तर नहीं दिया है, या `reason` बताता है कि इसे क्यों एकत्र नहीं किया गया था); `given`; `declined` (एक अस्वीकृति दर्ज की गई थी और सत्र `Declined` के रूप में समाप्त हुआ; आज कोई भी Didit स्क्रीन अस्वीकृति का विकल्प नहीं देती है)।"
              },
              "given_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब सहमति दी गई थी। `customer_collected` के लिए, आपके द्वारा भेजा गया `given_at`।"
              },
              "declined_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब कोई अस्वीकृति दर्ज की गई थी।"
              },
              "text_version": {
                "type": "string",
                "nullable": true,
                "description": "व्यक्ति द्वारा उत्तर दिए गए सहमति टेक्स्ट का संस्करण id, या वह जो आपने भेजा था।"
              },
              "text_hash": {
                "type": "string",
                "nullable": true,
                "description": "दिखाए गए सटीक सहमति पाठ का SHA-256 (hex), उसी भाषा में जिसमें इसे दिखाया गया था।"
              },
              "locale": {
                "type": "string",
                "nullable": true,
                "description": "जिस भाषा में सहमति पाठ दिखाया गया था।"
              },
              "policy_url": {
                "type": "string",
                "format": "uri",
                "nullable": true,
                "description": "बायोमेट्रिक डेटा नीति, जिससे सहमति चरण लिंक किया गया था।"
              },
              "step": {
                "type": "string",
                "nullable": true,
                "description": "वर्कफ़्लो चरण जिस पर सत्र था जब व्यक्ति ने उत्तर दिया, उदाहरण के लिए `LIVENESS`।"
              },
              "node_id": {
                "type": "string",
                "nullable": true,
                "description": "वर्कफ़्लो ग्राफ़ नोड, जिस पर व्यक्ति के उत्तर देने के समय सत्र था।"
              },
              "ip_address": {
                "type": "string",
                "nullable": true,
                "description": "वह IP जिससे उत्तर आया था।"
              },
              "ip_country_code": {
                "type": "string",
                "nullable": true,
                "description": "उत्तर के IP का ISO 3166-1 alpha-2 देश।"
              },
              "ip_state": {
                "type": "string",
                "nullable": true,
                "description": "उत्तर के IP का ISO 3166-2 सबडिवीज़न, उदाहरण के लिए `US-IL`।"
              },
              "ip_city": {
                "type": "string",
                "nullable": true,
                "description": "उत्तर के IP का शहर।"
              },
              "user_agent": {
                "type": "string",
                "nullable": true,
                "description": "उत्तर के अनुरोध का यूज़र एजेंट।"
              },
              "detected_ip_address": {
                "type": "string",
                "nullable": true,
                "description": "व्यक्ति का IP जिससे आवश्यकता का अंतिम मूल्यांकन किया गया था। यह `ip_address` से भिन्न हो सकता है यदि व्यक्ति ने किसी अन्य डिवाइस पर उत्तर दिया हो।"
              },
              "detected_country_code": {
                "type": "string",
                "nullable": true,
                "description": "डिटेक्ट किए गए IP का ISO 3166-1 alpha-2 देश।"
              },
              "detected_state": {
                "type": "string",
                "nullable": true,
                "description": "डिटेक्ट किए गए IP का ISO 3166-2 सबडिवीज़न।"
              },
              "detected_city": {
                "type": "string",
                "nullable": true,
                "description": "पहचाने गए IP का शहर।"
              },
              "declared_state": {
                "type": "string",
                "nullable": true,
                "description": "आपके द्वारा घोषित ISO 3166-2 सबडिवीज़न: `user_state`, या `expected_details` में किसी अमेरिकी पते का राज्य।"
              },
              "document_state": {
                "type": "string",
                "nullable": true,
                "description": "पहचान दस्तावेज़ जारी करने वाला ISO 3166-2 सबडिवीज़न, जो ID कैप्चर के समय पढ़ा गया।"
              },
              "jurisdictions": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "अमेरिकी राज्य (USPS कोड, उदाहरण के लिए `IL`) जिनका बायोमेट्रिक कानून उस व्यक्ति को कवर करता है। `US` जब साक्ष्य व्यक्ति को अमेरिका में दर्शाता है लेकिन किसी राज्य की जानकारी नहीं है। जब कोई लागू न हो तो खाली रहता है।"
              },
              "retention_months": {
                "type": "integer",
                "nullable": true,
                "description": "`jurisdictions` में सबसे छोटी बायोमेट्रिक प्रतिधारण सीमा, महीनों में। कोई लागू न होने पर `null`।"
              },
              "reason": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "BIOMETRIC_CONSENT_UNSUPPORTED_SDK",
                  "BIOMETRIC_CONSENT_DECLINED"
                ],
                "description": "`BIOMETRIC_CONSENT_UNSUPPORTED_SDK`: सहमति आवश्यक थी और 4.10.0 से पुराने नेटिव SDK, या जिसने अपना संस्करण रिपोर्ट नहीं किया, उसने सहमति चरण के बिना चेहरे को कैप्चर कर लिया; `status` `pending` रहता है, या यदि व्यक्ति बाद में होस्ट किए गए फ़्लो में सहमत हो गया तो `given` हो जाता है। `BIOMETRIC_CONSENT_DECLINED`: एक अस्वीकृति रिकॉर्ड की गई थी (यह SDK कारण को प्रतिस्थापित करता है)। अन्यथा `null`, और जब सत्र को सहमति की आवश्यकता नहीं थी तब हमेशा `null`।"
              },
              "decline_reason": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "BIOMETRIC_CONSENT_DECLINED"
                ],
                "description": "`BIOMETRIC_CONSENT_DECLINED` जब रिकॉर्ड की गई अस्वीकृति के कारण सत्र समाप्त हुआ हो, अन्यथा `null`।"
              },
              "face_data_deleted_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब अस्वीकृति ने सत्र की चेहरे की छवियाँ, वीडियो और फ़ेस टेम्पलेट हटा दिए। `null` जब तक कि अस्वीकृति दर्ज न की गई हो।"
              }
            }
          },
          "investigator": {
            "$ref": "#/components/schemas/InvestigatorBlock"
          },
          "biometric_retention": {
            "$ref": "#/components/schemas/BiometricRetention"
          },
          "fraud_check": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "एक Fraud Check API कॉल का परिणाम। हर दूसरे सत्र के लिए `null`।"
          },
          "full_session_video": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "पूर्ण-सत्र रिकॉर्डिंग का समाप्त होने वाला URL। केवल तभी लौटाया जाता है जब आपका संगठन पूर्ण-सत्र वीडियो रिकॉर्ड करता है।"
          },
          "full_session_video_recorded_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब पूर्ण-सत्र रिकॉर्डिंग की गई थी। केवल तब लौटाया जाता है जब आपका संगठन पूर्ण-सत्र वीडियो रिकॉर्ड करता है।"
          }
        }
      },
      "WorkflowDetail": {
        "type": "object",
        "description": "नीचे दिए गए फ़ील्ड टाइप किए गए हैं; ऑब्जेक्ट अतिरिक्त विशेषताओं के रूप में वर्कफ़्लो कॉन्फ़िगरेशन के हर दूसरे कॉलम (सुविधा टॉगल, थ्रेशोल्ड, चेतावनी कार्रवाइयाँ, अनुमत दस्तावेज़, कॉलबैक) को भी ले जाता है। वे फ़ील्ड जो `workflow_type` पर लागू नहीं होते हैं, वे `null` हैं।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "प्रति-संस्करण पहचानकर्ता (`settings_uuid`)। वर्कफ़्लो के प्रत्येक संस्करण का अपना पहचानकर्ता होता है।"
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "description": "वर्कफ़्लो के प्रत्येक संस्करण द्वारा साझा किया गया स्थिर पहचानकर्ता। इसके साथ बनाए गए सत्र नवीनतम प्रकाशित संस्करण का उपयोग करते हैं।"
          },
          "workflow_label": {
            "type": "string",
            "description": "वर्कफ़्लो का डिस्प्ले नाम।"
          },
          "workflow_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "kyc",
              "kyb",
              "adaptive_age_verification",
              "biometric_authentication",
              "address_verification",
              "questionnaire_verification",
              "email_verification",
              "phone_verification",
              null
            ],
            "description": "वर्कफ़्लो टेम्पलेट। बिना टेम्पलेट के बनाए गए ग्राफ़ वर्कफ़्लो के लिए `null`।"
          },
          "is_default": {
            "type": "boolean",
            "description": "क्या यह एप्लिकेशन का डिफ़ॉल्ट वर्कफ़्लो है।"
          },
          "is_archived": {
            "type": "boolean",
            "description": "संग्रहीत वर्कफ़्लो नए सत्र शुरू नहीं कर सकते।"
          },
          "version": {
            "type": "integer",
            "description": "वर्कफ़्लो के भीतर संस्करण संख्या।"
          },
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "published"
            ],
            "description": "ड्राफ़्ट वर्ज़न संपादन योग्य होते हैं; प्रकाशित वर्ज़न अपरिवर्तनीय होते हैं और नए सत्रों के लिए उपयोग किए जाते हैं।"
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "यह संस्करण कब प्रकाशित हुआ था। ड्राफ़्ट के लिए `null`।"
          },
          "is_simple_workflow": {
            "type": "boolean",
            "description": "`true` जब वर्कफ़्लो में कोई कस्टम `workflow_graph` न हो।"
          },
          "is_editable": {
            "type": "boolean",
            "description": "केवल `draft` संस्करणों के लिए `true`।"
          },
          "workflow_url": {
            "type": "string",
            "format": "uri",
            "description": "सार्वजनिक URL जो इस वर्कफ़्लो के साथ एक सत्र शुरू करता है।"
          },
          "workflow_graph": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "वर्कफ़्लो की ग्राफ़ संरचना (नोड्स और एजेस)। सरल वर्कफ़्लो के लिए `null`।"
          },
          "features": {
            "type": "string",
            "description": "सक्षम सुविधाएँ `\" + \"` से जुड़ी हुई हैं, उदाहरण के लिए `\"OCR + LIVENESS\"`।"
          },
          "total_price": {
            "type": "number",
            "nullable": true,
            "description": "प्रति सत्र कीमत; ग्राफ़ वर्कफ़्लो के लिए सबसे महंगा पथ।"
          },
          "min_price": {
            "type": "number",
            "nullable": true,
            "description": "वर्कफ़्लो के माध्यम से सबसे सस्ते पथ की कीमत।"
          },
          "max_price": {
            "type": "number",
            "nullable": true,
            "description": "वर्कफ़्लो के माध्यम से सबसे महंगे पथ की कीमत।"
          },
          "special_add_on_prices": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "संगठन-विशिष्ट ऐड-ऑन कीमतें, या कोई सेट न होने पर `null`।"
          },
          "max_retry_attempts": {
            "type": "integer",
            "description": "अस्वीकृत सत्यापन के बाद अनुमत पुनः प्रयास।"
          },
          "retry_window_days": {
            "type": "integer",
            "nullable": true,
            "description": "वे दिन जिनके दौरान पुनः प्रयास करने की अनुमति है।"
          },
          "session_expiration_time": {
            "type": "integer",
            "description": "किसी अधूरे सत्र की समय-सीमा समाप्त होने से पहले के सेकंड।"
          },
          "questionnaire": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "वर्कफ़्लो से जुड़ी प्रश्नावली, या `null`।"
          },
          "kyb_role_settings": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            },
            "description": "KYB प्रमुख व्यक्तियों के लिए प्रति-भूमिका सत्यापन सेटिंग्स।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "signature_availability": {
            "type": "object",
            "description": "कौन से ई-हस्ताक्षर स्तर अभी हस्ताक्षर कर सकते हैं। `signature_level` सेट करने से पहले इसे जांचें। `kyc`, `kyb` और ग्राफ़ वर्कफ़्लो पर लौटाया जाता है।",
            "properties": {
              "simple": {
                "type": "boolean",
                "description": "Simple हमेशा उपलब्ध रहता है।"
              },
              "aes": {
                "type": "boolean",
                "description": "क्या Advanced (AES) अब हस्ताक्षर कर सकता है। जब तक यह `false` है, `signature_level: \"aes\"` पर एक नया चरण सहेजना `aes_not_available` के साथ अस्वीकृत कर दिया जाता है।"
              },
              "qes": {
                "type": "boolean",
                "description": "क्या Qualified (QES) अब हस्ताक्षर कर सकता है। जब तक कोई योग्य प्रदाता कनेक्ट नहीं हो जाता, यह `false` रहता है।"
              }
            }
          },
          "is_bank_verification_enabled": {
            "type": "boolean",
            "description": "क्या एक सरल KYC या KYB वर्कफ़्लो बैंक सत्यापन चलाता है। यह संपर्क चरणों (और स्थान सत्यापन) के बाद और डेटाबेस सत्यापन, AML और IP विश्लेषण से पहले चलता है। बैंक सत्यापन अभी सामान्य रूप से उपलब्ध नहीं है: जहां भी यह सक्षम नहीं है, इसे चालू करना अस्वीकृत कर दिया जाता है।"
          },
          "bank_verification_config": {
            "type": "object",
            "additionalProperties": true,
            "description": "एक सरल वर्कफ़्लो की बैंक सत्यापन सेटिंग्स, उन्हीं कुंजियों के साथ जो एक `BANK_VERIFICATION` नोड लेता है (उदाहरण के लिए `bank_countries` और `bank_method_order`)। अज्ञात कुंजियाँ छोड़ दी जाती हैं। प्रत्येक कुंजी वैकल्पिक है और एक अनुपस्थित कुंजी अपने डिफ़ॉल्ट को बनाए रखती है, इसलिए `{}` का अर्थ सभी डिफ़ॉल्ट हैं। देखें [बैंक सत्यापन सेटिंग्स](/hi/management-api/workflows/feature-configs#बैंक-सत्यापन)।",
            "example": {}
          },
          "is_geolocation_enabled": {
            "type": "boolean",
            "description": "क्या एक सरल KYC वर्कफ़्लो स्थान सत्यापन चलाता है। यह संपर्क चरणों के बाद और बैंक सत्यापन तथा डेटाबेस सत्यापन से पहले चलता है। व्यवसाय (KYB) वर्कफ़्लो इसे नहीं चला सकते।"
          },
          "geolocation_config": {
            "type": "object",
            "additionalProperties": true,
            "description": "एक साधारण वर्कफ़्लो की स्थान सत्यापन सेटिंग्स, जिनमें वही कुंजियाँ होती हैं जो एक `GEOLOCATION` नोड लेता है (उदाहरण के लिए `is_geolocation_geofencing_enabled` और `geolocation_max_attempts`)। अज्ञात कुंजियों को छोड़ दिया जाता है। प्रत्येक कुंजी वैकल्पिक है और अनुपस्थित कुंजी अपना डिफ़ॉल्ट मान बनाए रखती है, इसलिए `{}` का अर्थ सभी डिफ़ॉल्ट मान हैं।",
            "example": {}
          }
        },
        "additionalProperties": true
      },
      "UserSessionListItem": {
        "title": "KYC session row (session_kind: user)",
        "type": "object",
        "description": "उपयोगकर्ता सत्यापन (KYC) सत्र के लिए सारांश पंक्ति। पहचान फ़ील्ड (`full_name`, `country`, `document_type`, `portrait_image`, संपर्क फ़ील्ड) उत्तरोत्तर पॉप्युलेट होते हैं जैसे ही उपयोगकर्ता सत्यापन चरणों को पूरा करता है, और प्रासंगिक चरण समाप्त होने तक `null` होते हैं। वर्कफ़्लो के रिस्पॉन्स-एट्रिब्यूट कॉन्फ़िगरेशन द्वारा प्रतिबंधित फ़ील्ड भी `null` के रूप में लौटाए जाते हैं।",
        "required": [
          "session_id",
          "session_kind",
          "session_number",
          "session_url",
          "portrait_image",
          "document_type",
          "full_name",
          "country",
          "status",
          "vendor_data",
          "didit_internal_id",
          "created_at",
          "features",
          "phone_number",
          "email_address",
          "additional_details"
        ],
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन सत्र का विशिष्ट पहचानकर्ता। पूर्ण निर्णय payload प्राप्त करने के लिए इसे `GET /v3/session/{sessionId}/decision/` के साथ उपयोग करें।",
            "example": "5b3720ed-d429-42ef-b67f-37ea805f48ee"
          },
          "session_kind": {
            "type": "string",
            "enum": [
              "user"
            ],
            "description": "पंक्ति पहचानकर्ता। KYC पंक्तियों के लिए हमेशा `\"user\"`; व्यवसाय सत्यापन (KYB) पंक्तियों में `\"business\"` और एक भिन्न संरचना होती है।",
            "example": "user"
          },
          "session_number": {
            "type": "integer",
            "description": "आपके एप्लिकेशन के भीतर सत्र की मानव-पठनीय अनुक्रमिक संख्या। `search` पैरामीटर द्वारा भी मिलान किया जाता है।",
            "example": 720
          },
          "session_url": {
            "type": "string",
            "nullable": true,
            "description": "होस्टेड सत्यापन URL जिसे अंतिम उपयोगकर्ता फ़्लो पूरा करने के लिए खोलता है। जब सत्र में कोई होस्टेड URL नहीं होता है तो `null`।",
            "example": "https://verify.didit.me/session/CuXoBYCYVO5Y"
          },
          "portrait_image": {
            "type": "string",
            "nullable": true,
            "description": "सर्वश्रेष्ठ उपलब्ध पोर्ट्रेट का समाप्त होने वाला (प्रीसाइन किया हुआ) URL: उपलब्ध होने पर NFC चिप फ़ोटो, अन्यथा पहचान दस्तावेज़ पोर्ट्रेट, अन्यथा लाइवनेस संदर्भ छवि। जब तक इनमें से कोई मौजूद न हो, तब तक `null`। तुरंत डाउनलोड करें; लिंक समाप्त हो जाता है।",
            "example": "https://<media-host>/portraits/5b3720ed.jpg?X-Amz-Expires=3600&X-Amz-Signature=..."
          },
          "document_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Passport",
              "Identity Card",
              "Driver's License",
              "Residence Permit",
              "Health Insurance Card",
              "Tax Card"
            ],
            "description": "सत्यापित पहचान दस्तावेज़ का मानव-पठनीय प्रकार। दस्तावेज़ सत्यापन पूरा होने से पहले `null`, और पूरा होने के बाद भी `null` जब सत्यापित कोड में कोई डिस्प्ले मैपिंग न हो (`SSC`, `WP`, `VISA`, `PSC`, `BC`, `OTHER`)। ध्यान दें: `document_type` क्वेरी पैरामीटर छोटे कोड (`P`, `ID`, `DL`, `RP`, ...) द्वारा फ़िल्टर करता है, इन डिस्प्ले मानों द्वारा नहीं।",
            "example": "Passport"
          },
          "full_name": {
            "type": "string",
            "nullable": true,
            "description": "सत्र के लिए सर्वोत्तम उपलब्ध पूरा नाम, इस क्रम में हल किया गया: पहचान दस्तावेज़ OCR, AML स्क्रीनिंग किया गया डेटा, डेटाबेस सत्यापन किया गया डेटा, पते का प्रमाण दस्तावेज़, फिर सत्र निर्माण के समय प्रदान किए गए अपेक्षित विवरण। अभी तक कोई उपलब्ध न होने पर `null`।",
            "example": "Jane Marie Doe"
          },
          "country": {
            "type": "string",
            "nullable": true,
            "description": "सत्र से जुड़ा ISO 3166-1 alpha-3 देश, जिसे इस क्रम में निर्धारित किया जाता है: ID दस्तावेज़ जारीकर्ता राज्य, डेटाबेस-सत्यापन जारीकर्ता राज्य, पते का प्रमाण जारीकर्ता राज्य, अपेक्षित विवरण, फिर सत्यापित फ़ोन का देश। राष्ट्रीयता से भिन्न हो सकता है।",
            "example": "ESP"
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "सत्र की समग्र स्थिति। जीवनचक्र के लिए [सत्यापन स्थितियाँ](/hi/integration/verification-statuses) पेज देखें।",
            "example": "Approved"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "अंतिम उपयोगकर्ता के लिए आपका अपना पहचानकर्ता, सत्र निर्माण के समय ठीक उसी तरह वापस दोहराया जाता है जैसा भेजा गया था।",
            "example": "your-user-id-123"
          },
          "didit_internal_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "इस सत्र से संबद्ध सत्यापित उपयोगकर्ता प्रोफ़ाइल के लिए Didit का आंतरिक पहचानकर्ता। एक ही उपयोगकर्ता के कई सत्रों में स्थिर; `didit_internal_id` क्वेरी पैरामीटर के माध्यम से फ़िल्टर करने योग्य।",
            "example": "d9e78474-6c8d-4f2a-bb90-6f5c2f3a1147"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "UTC टाइमस्टैम्प जब सत्र बनाया गया था।",
            "example": "2026-06-09T12:26:54.328364Z"
          },
          "features": {
            "type": "array",
            "description": "सत्र के वर्कफ़्लो में कॉन्फ़िगर किए गए प्रत्येक सत्यापन चरण के लिए वर्कफ़्लो क्रम में प्रति-सुविधा स्थिति।",
            "items": {
              "type": "object",
              "required": [
                "feature",
                "status"
              ],
              "properties": {
                "feature": {
                  "type": "string",
                  "enum": [
                    "ID_VERIFICATION",
                    "NFC",
                    "LIVENESS",
                    "FACE_MATCH",
                    "POA",
                    "QUESTIONNAIRE",
                    "EMAIL_VERIFICATION",
                    "PHONE",
                    "AML",
                    "IP_ANALYSIS",
                    "AGE_ESTIMATION",
                    "DATABASE_VALIDATION",
                    "GEOLOCATION"
                  ],
                  "description": "सत्यापन सुविधा पहचानकर्ता।",
                  "example": "ID_VERIFICATION"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "Not Finished",
                    "Approved",
                    "Declined",
                    "In Review",
                    "Resub Requested"
                  ],
                  "description": "इस सुविधा का स्टेटस। चरण पूरा होने तक `Not Finished` रहता है।",
                  "example": "Approved"
                }
              }
            }
          },
          "phone_number": {
            "type": "object",
            "nullable": true,
            "description": "सत्र से संबद्ध फ़ोन: फ़ोन सत्यापन चलने पर सत्यापित फ़ोन, अन्यथा सत्र निर्माण के समय प्रदान किया गया संपर्क फ़ोन। दोनों मौजूद न होने पर `null`।",
            "required": [
              "number",
              "is_verified"
            ],
            "properties": {
              "number": {
                "type": "string",
                "description": "E.164 प्रारूप में फ़ोन नंबर।",
                "example": "+14155552671"
              },
              "is_verified": {
                "type": "boolean",
                "description": "`true` केवल तभी जब फ़ोन सत्यापन सुविधा ने इस नंबर को स्वीकृत किया हो।",
                "example": true
              }
            }
          },
          "email_address": {
            "type": "object",
            "nullable": true,
            "description": "सत्र से जुड़ा ईमेल: ईमेल सत्यापन चलने पर सत्यापित ईमेल, अन्यथा सत्र निर्माण के समय प्रदान किया गया संपर्क ईमेल। दोनों में से किसी के न होने पर `null`।",
            "required": [
              "email",
              "is_verified"
            ],
            "properties": {
              "email": {
                "type": "string",
                "format": "email",
                "example": "jane@example.com"
              },
              "is_verified": {
                "type": "boolean",
                "description": "`true` केवल तभी जब ईमेल सत्यापन सुविधा ने इस पते को स्वीकृत किया हो।",
                "example": true
              }
            }
          },
          "additional_details": {
            "type": "object",
            "nullable": true,
            "description": "संक्षिप्त प्रति-सुविधा अतिरिक्त विवरण। केवल वे सुविधाएं जिन्होंने डेटा उत्पन्न किया है, कुंजियों के रूप में दिखाई देती हैं; जब किसी सुविधा ने अतिरिक्त विवरण नहीं दिया हो तो `null`। वर्कफ़्लो के रिस्पॉन्स-विशेषता कॉन्फ़िगरेशन द्वारा बहिष्कृत फ़ील्ड छोड़ दिए जाते हैं।",
            "properties": {
              "aml": {
                "type": "object",
                "description": "AML स्क्रीनिंग चलने पर मौजूद होता है।",
                "properties": {
                  "total_hits": {
                    "type": "integer",
                    "description": "AML स्क्रीनिंग हिट्स की संख्या।",
                    "example": 0
                  },
                  "entity_type": {
                    "type": "string",
                    "description": "स्क्रीन किए गए निकाय का प्रकार।",
                    "example": "person"
                  },
                  "is_adverse_media_fetched": {
                    "type": "boolean",
                    "example": false
                  },
                  "screened_data": {
                    "type": "object",
                    "description": "स्क्रीन किए गए डेटा का सबसेट। केवल गैर-रिक्त कुंजियाँ शामिल हैं।",
                    "properties": {
                      "nationality": {
                        "type": "string",
                        "example": "ESP"
                      },
                      "document_number": {
                        "type": "string",
                        "example": "XX1234567"
                      },
                      "date_of_birth": {
                        "type": "string",
                        "example": "1990-05-21"
                      }
                    }
                  }
                }
              },
              "database_validation": {
                "type": "object",
                "description": "डेटाबेस सत्यापन चलने पर मौजूद होता है।",
                "properties": {
                  "validation_type": {
                    "type": "string",
                    "example": "DOCUMENT_VALIDATION"
                  },
                  "match_type": {
                    "type": "string",
                    "example": "FULL_MATCH"
                  },
                  "identification_number": {
                    "type": "string",
                    "description": "सत्यापित किया गया कर, व्यक्तिगत, या दस्तावेज़ नंबर (पहला उपलब्ध)।",
                    "example": "12345678Z"
                  }
                }
              },
              "poa": {
                "type": "object",
                "description": "पते का प्रमाण चलने पर मौजूद होता है।",
                "properties": {
                  "document_type": {
                    "type": "string",
                    "example": "UTILITY_BILL"
                  },
                  "issuer": {
                    "type": "string",
                    "example": "Energy Co"
                  },
                  "address": {
                    "type": "string",
                    "example": "Calle Mayor 1, 28013 Madrid"
                  },
                  "name_on_document": {
                    "type": "string",
                    "example": "Jane Marie Doe"
                  }
                }
              },
              "liveness": {
                "type": "object",
                "description": "लाइवनेस जांच चलने पर मौजूद होता है।",
                "properties": {
                  "method": {
                    "type": "string",
                    "example": "PASSIVE"
                  },
                  "score": {
                    "type": "number",
                    "description": "लाइवनेस विश्वास स्कोर, 2 दशमलव स्थानों तक पूर्णांकित।",
                    "example": 0.98
                  }
                }
              },
              "face_match": {
                "type": "object",
                "description": "चेहरा मिलान चलने पर मौजूद होता है।",
                "properties": {
                  "score": {
                    "type": "number",
                    "description": "चेहरा-मिलान समानता स्कोर, 2 दशमलव स्थानों तक पूर्णांकित।",
                    "example": 0.95
                  },
                  "source_image": {
                    "type": "string",
                    "description": "स्रोत चेहरे की छवि का समाप्त होने वाला (प्रीसाइन किया हुआ) URL।",
                    "example": "https://<media-host>/faces/source.jpg?X-Amz-Expires=3600&..."
                  },
                  "target_image": {
                    "type": "string",
                    "description": "लक्ष्य चेहरे की छवि का समाप्त होने वाला (प्रीसाइन किया हुआ) URL।",
                    "example": "https://<media-host>/faces/target.jpg?X-Amz-Expires=3600&..."
                  }
                }
              },
              "phone_verification": {
                "type": "object",
                "description": "फ़ोन सत्यापन चलने पर मौजूद होता है।",
                "properties": {
                  "country_code": {
                    "type": "string",
                    "description": "फ़ोन नंबर का ISO 3166-1 alpha-2 देश।",
                    "example": "US"
                  },
                  "is_temporary": {
                    "type": "boolean",
                    "example": false
                  },
                  "is_ported": {
                    "type": "boolean",
                    "example": false
                  },
                  "is_blocked": {
                    "type": "boolean",
                    "example": false
                  }
                }
              },
              "email_verification": {
                "type": "object",
                "description": "ईमेल सत्यापन चलने पर मौजूद होता है।",
                "properties": {
                  "is_breached": {
                    "type": "boolean",
                    "example": false
                  },
                  "is_disposable": {
                    "type": "boolean",
                    "example": false
                  },
                  "is_undeliverable": {
                    "type": "boolean",
                    "example": false
                  },
                  "is_blocklisted": {
                    "type": "boolean",
                    "example": false
                  }
                }
              }
            }
          },
          "assignee": {
            "type": "object",
            "nullable": true,
            "description": "कंसोल समीक्षक जिसे सत्र सौंपा गया है, या `null` जब इसे कोई नहीं संभाल रहा हो।",
            "properties": {
              "email": {
                "type": "string",
                "format": "email"
              },
              "assigned_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              }
            }
          },
          "waiting_since": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सत्र समीक्षा की प्रतीक्षा कब करने लगा। `null` जब तक कि सत्र `In Review` में न हो।"
          },
          "sla_due_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "Console में आपके एप्लिकेशन के लिए निर्धारित समीक्षा समय-सीमा के अनुसार, समीक्षा कब नियत है। `null` जब तक कि सत्र `In Review` में न हो और कोई समय-सीमा निर्धारित हो।"
          },
          "top_warnings": {
            "type": "array",
            "description": "त्वरित समीक्षा दृश्य के लिए सत्र की अधिकतम कुछ सबसे महत्वपूर्ण चेतावनियाँ। पूरी सूची निर्णय में है।",
            "items": {
              "type": "object",
              "properties": {
                "risk": {
                  "type": "string",
                  "description": "चेतावनी कोड, उदाहरण के लिए `FACE_MATCH_LOW_SIMILARITY`।"
                },
                "feature": {
                  "type": "string",
                  "description": "वह सुविधा जिसने इसे उत्पन्न किया।"
                },
                "log_type": {
                  "type": "string",
                  "nullable": true,
                  "description": "`error` या `warning`; लीगेसी प्रविष्टि के लिए `null`।"
                },
                "short_description": {
                  "type": "string"
                }
              }
            }
          },
          "warnings_count": {
            "type": "integer",
            "description": "सत्र पर चेतावनियों की संख्या।"
          }
        }
      },
      "BusinessSessionListItem": {
        "title": "KYB session row (session_kind: business)",
        "type": "object",
        "description": "व्यवसाय सत्यापन (KYB) सत्र के लिए सारांश पंक्ति। केवल तभी लौटाया जाता है जब `session_kind` का मान `business` या `all` हो।",
        "required": [
          "session_id",
          "session_kind",
          "session_number",
          "status",
          "vendor_data",
          "created_at",
          "workflow_id",
          "workflow_type",
          "workflow_label",
          "company_name",
          "registration_number",
          "country"
        ],
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "व्यवसाय सत्यापन सत्र का विशिष्ट पहचानकर्ता।",
            "example": "8a1f63c2-1b9e-4f3a-9c41-2f6a1f0b7d52"
          },
          "session_kind": {
            "type": "string",
            "enum": [
              "business"
            ],
            "description": "पंक्ति पहचानकर्ता। KYB पंक्तियों के लिए हमेशा `\"business\"`।",
            "example": "business"
          },
          "session_number": {
            "type": "integer",
            "description": "आपके एप्लिकेशन के भीतर व्यवसाय सत्र की मानव-पठनीय अनुक्रमिक संख्या। KYC सत्रों से स्वतंत्र रूप से क्रमांकित।",
            "example": 42
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "सत्र की समग्र स्थिति। [सत्यापन स्थितियाँ](/hi/integration/verification-statuses) पेज देखें।",
            "example": "Approved"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "व्यवसाय के लिए आपका अपना पहचानकर्ता, सत्र निर्माण के समय ठीक उसी तरह वापस दोहराया जाता है जैसा भेजा गया था।",
            "example": "your-company-id-77"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "UTC टाइमस्टैम्प जब सत्र बनाया गया था।",
            "example": "2026-06-08T09:14:02.118450Z"
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "उस वर्कफ़्लो का पहचानकर्ता जिसके साथ यह सत्र बनाया गया था।",
            "example": "9f9b1234-aaaa-bbbb-cccc-1234567890ab"
          },
          "workflow_type": {
            "type": "string",
            "nullable": true,
            "description": "वर्कफ़्लो प्रकार। व्यावसायिक वर्कफ़्लो के लिए `kyb`।",
            "example": "kyb"
          },
          "workflow_label": {
            "type": "string",
            "nullable": true,
            "description": "वर्कफ़्लो का डिस्प्ले नाम।",
            "example": "Standard KYB"
          },
          "company_name": {
            "type": "string",
            "nullable": true,
            "description": "सत्यापित की जा रही कंपनी का नाम, सत्र से जुड़ी रजिस्ट्री कंपनी से प्राप्त। कंपनी चुने जाने तक `null`।",
            "example": "Acme Holdings S.L."
          },
          "registration_number": {
            "type": "string",
            "nullable": true,
            "description": "सत्र से जुड़ी रजिस्ट्री कंपनी से कंपनी पंजीकरण संख्या।",
            "example": "B12345678"
          },
          "country": {
            "type": "string",
            "nullable": true,
            "description": "सत्र से जुड़ी रजिस्ट्री कंपनी का देश कोड।",
            "example": "ES"
          }
        }
      },
      "TransactionVerificationSessionAction": {
        "title": "Verification session",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "verification_session"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "अंतिम उपयोगकर्ता के लिए खोलने हेतु होस्टेड सत्यापन URL।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन सत्र की ID।"
          },
          "session_token": {
            "type": "string",
            "description": "सत्र token, जिसका उपयोग मोबाइल SDK द्वारा फ़्लो को मूल रूप से लॉन्च करने के लिए किया जाता है।"
          },
          "status": {
            "type": "string",
            "description": "सत्यापन सत्र की स्थिति।"
          }
        },
        "required": [
          "type",
          "url"
        ]
      },
      "TransactionWalletOwnershipAction": {
        "title": "Wallet ownership",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "wallet_ownership"
            ]
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "होस्टेड वॉलेट-स्वामित्व विजेट URL। इसे वास्तविक ब्राउज़र में खोलें - मोबाइल पर SFSafariViewController या Chrome Custom Tab का उपयोग करें; इसे कभी भी एम्बेडेड वेबव्यू में न खोलें।"
          },
          "widget_session_id": {
            "type": "string",
            "format": "uuid",
            "description": "वॉलेट-स्वामित्व विजेट सत्र id।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "विजेट सत्र की समय-सीमा कब समाप्त होती है।"
          }
        },
        "required": [
          "type",
          "url"
        ]
      },
      "TransactionRuleActionAddScore": {
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "add_score"
            ]
          },
          "value": {
            "type": "integer",
            "description": "लेन-देन के जोखिम स्कोर में जोड़े गए अंक। नकारात्मक हो सकते हैं।"
          }
        },
        "description": "लेन-देन के संचयी जोखिम स्कोर में अंक जोड़ें; कुल योग एप्लिकेशन के समीक्षा/अस्वीकृति थ्रेशोल्ड के माध्यम से स्थिति तय करता है।"
      },
      "TransactionRuleActionChangeStatus": {
        "type": "object",
        "required": [
          "type",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "change_status"
            ]
          },
          "value": {
            "type": "string",
            "enum": [
              "APPROVED",
              "IN_REVIEW",
              "DECLINED",
              "AWAITING_USER"
            ],
            "description": "स्कोर की परवाह किए बिना तुरंत सेट किया जाने वाला स्टेटस। उपनाम कुंजी: status।"
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "description": "मान AWAITING_USER होने पर आवश्यक: सत्यापन वर्कफ़्लो जिसे विषय को पूरा करने के लिए कहा जाता है। उपनाम कुंजी: remediation_workflow_id। नियम ट्रिगर होने पर Didit विषय के लिए एक होस्टेड रेमेडिएशन सत्र बनाता है।"
          }
        },
        "description": "सीधे लेन-देन की स्थिति सेट करें। मिलान किए गए नियमों में DECLINED को हमेशा प्राथमिकता मिलती है।"
      },
      "TransactionRuleActionAddTags": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "add_tags"
            ]
          },
          "tag_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "संलग्न करने के लिए मौजूदा एप्लिकेशन टैग।"
          },
          "tag_name": {
            "type": "string",
            "description": "संलग्न करने के लिए टैग का नाम; पहली बार उपयोग पर बनाया जाता है (बड़े अक्षरों में संग्रहीत)। tag_uuid या tag_name प्रदान करें।"
          },
          "tag_color": {
            "type": "string",
            "description": "हेक्साडेसिमल रंग जिसका उपयोग तब किया जाता है जब tag_name एक नया टैग बनाता है, उदा. #007AFE।"
          }
        },
        "description": "मिलान किए गए लेन-देन में एक एप्लिकेशन टैग संलग्न करें।"
      },
      "TransactionRuleActionAddNote": {
        "type": "object",
        "required": [
          "type",
          "note"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "add_note"
            ]
          },
          "note": {
            "type": "string",
            "description": "लेन-देन से जुड़ा नोट टेक्स्ट (लेखक: Rule Engine)। उपनाम कुंजी: मान।"
          }
        },
        "description": "मिलान किए गए लेन-देन में एक स्वचालित विश्लेषक नोट संलग्न करें।"
      },
      "TransactionRuleActionAddToList": {
        "type": "object",
        "required": [
          "type",
          "list_id"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "add_to_list"
            ]
          },
          "list_id": {
            "type": "string",
            "format": "uuid",
            "description": "वह सूची जिसमें विषय का vendor_data जोड़ना है।"
          }
        },
        "description": "सब्जेक्ट के vendor_data को ब्लॉकलिस्ट, अनुमति सूची या कस्टम सूची में जोड़ें।"
      },
      "TransactionRuleActionOpenCase": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "open_case"
            ]
          },
          "blueprint": {
            "type": "string",
            "format": "uuid",
            "description": "केस ब्लूप्रिंट UUID; एप्लिकेशन के डिफ़ॉल्ट ब्लूप्रिंट पर डिफ़ॉल्ट होता है।"
          },
          "grouping": {
            "type": "string",
            "enum": [
              "by_applicant",
              "by_rule_and_applicant"
            ],
            "description": "क्या दोहराए गए मिलान प्रति आवेदक एक केस में शामिल होते हैं या प्रति नियम+आवेदक एक में।"
          },
          "attach_matched_transaction": {
            "type": "boolean",
            "description": "मिलान किए गए लेन-देन को केस से संलग्न करें।"
          }
        },
        "description": "जांच केस खोलें (या उसमें जोड़ें)। किसी नियम पर केवल पहली open_case कार्रवाई लागू की जाती है।"
      },
      "KYBRegistrySearchResults": {
        "type": "object",
        "properties": {
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kyb_response_id": {
                  "type": "string",
                  "nullable": true,
                  "description": "इस उम्मीदवार के लिए हैंडल — पूरा प्रोफ़ाइल प्राप्त करने के लिए इसे `POST /v3/kyb/select/` पर पास करें। अल्पकालिक और इस खोज तक सीमित: इसे दीर्घावधि तक संग्रहीत न करें; नया प्राप्त करने के लिए पुनः खोजें।",
                  "example": "69aeeb95febb0f1704042259"
                },
                "name": {
                  "type": "string",
                  "nullable": true,
                  "description": "पंजीकृत कंपनी का नाम।",
                  "example": "Tesco PLC"
                },
                "registration_number": {
                  "type": "string",
                  "nullable": true,
                  "description": "रजिस्ट्री पंजीकरण संख्या।",
                  "example": "00445790"
                },
                "status": {
                  "type": "string",
                  "nullable": true,
                  "description": "कंपनी की सामान्यीकृत रजिस्ट्री स्थिति (उदा. `active`, `dissolved`, `inactive`, `struck off`)।",
                  "example": "active"
                },
                "type": {
                  "type": "string",
                  "nullable": true,
                  "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया कानूनी रूप।",
                  "example": "Public Limited Company"
                },
                "registered_address": {
                  "type": "string",
                  "nullable": true,
                  "description": "उम्मीदवार का पंजीकृत पता, जब रजिस्ट्री इसे लौटाती है। समान नाम वाली कंपनियों में अंतर करने के लिए पंजीकरण संख्या के साथ इसका उपयोग करें: संयुक्त राज्य अमेरिका में एक उम्मीदवार को आपके द्वारा खोजे गए राज्य के बजाय उस राज्य के तहत सूचीबद्ध किया जा सकता है जहाँ कंपनी संचालित होती है।",
                  "example": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, AL7 1GA"
                },
                "risk_level": {
                  "type": "string",
                  "nullable": true,
                  "description": "रजिस्ट्री द्वारा रिपोर्ट किया गया जोखिम स्तर, जब उपलब्ध हो। आमतौर पर खोज के समय `null`।"
                },
                "fetch_status": {
                  "type": "string",
                  "nullable": true,
                  "description": "खोज में मिले उम्मीदवारों के लिए हमेशा `pending` — पूर्ण कंपनी प्रोफ़ाइल केवल तभी प्राप्त की जाती है (और बिल की जाती है) जब आप उम्मीदवार का चयन करते हैं।",
                  "example": "pending"
                }
              }
            },
            "description": "डुप्लिकेट हटाई गई उम्मीदवार सूची। `search_resolved=false` (webhook मोड) होने पर या कुछ भी मेल न खाने पर खाली।"
          },
          "pagination": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "description": "लौटाए गए उम्मीदवारों की संख्या।"
              },
              "page": {
                "type": "integer"
              },
              "per_page": {
                "type": "integer",
                "example": 25
              }
            }
          },
          "search_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "pending",
              "resolved"
            ],
            "description": "रजिस्ट्री खोज लाइफ़साइकिल स्थिति।"
          },
          "search_resolved": {
            "type": "boolean",
            "description": "उम्मीदवार सूची अंतिम होने पर `true`।"
          }
        }
      },
      "KYBRegistryCandidateRequest": {
        "type": "object",
        "required": [
          "kyb_response_id"
        ],
        "properties": {
          "kyb_response_id": {
            "type": "string",
            "maxLength": 1024,
            "description": "`POST /v3/kyb/search/` (`kyb_registry.companies[].kyb_response_id`) से कैंडिडेट हैंडल। अल्पकालिक: इसे उत्पन्न करने वाली खोज के तुरंत बाद उपयोग करें। हैंडल लंबे हो सकते हैं, इसलिए मान को बिना ट्रिम किए या लंबाई का अनुमान लगाए ठीक उसी तरह स्टोर करें और भेजें जैसा कि लौटाया गया है।",
            "example": "69aeeb95febb0f1704042259"
          },
          "vendor_data": {
            "type": "string",
            "description": "इस कंपनी के लिए आपका पहचानकर्ता; वापस दोहराया जाता है और व्यवसाय सत्र के साथ संग्रहीत किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "description": "व्यवसाय सत्र के साथ संग्रहीत और वापस लौटाया गया फ़्री-फ़ॉर्म JSON।"
          },
          "save_api_request": {
            "type": "boolean",
            "default": true,
            "description": "`true` होना चाहिए (डिफ़ॉल्ट)। KYB रजिस्ट्री चयन हमेशा बनाए रखे जाते हैं ताकि बिलिंग और पुनर्प्राप्ति को ट्रैक किया जा सके; `false` `400` लौटाता है।"
          }
        }
      },
      "WebhookEventEnvelope": {
        "type": "object",
        "description": "इवेंट का प्रकार चाहे जो भी हो, Didit प्रत्येक हस्ताक्षरित webhook डिलीवरी में फ़ील्ड जोड़ता है। आपको कौन सा payload प्राप्त हुआ है, यह जानने के लिए `webhook_type` पढ़ें।",
        "required": [
          "event_id",
          "webhook_type",
          "timestamp",
          "created_at",
          "application_id",
          "environment"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "format": "uuid",
            "description": "इवेंट का पहचानकर्ता। प्रत्येक गंतव्य को समान मान प्राप्त होता है और पुनः डिलीवरी इसे बनाए रखती है, इसलिए इसका उपयोग डिडुप्लिकेट करने के लिए करें।"
          },
          "webhook_type": {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix समय सेकंड में जिस पर इस डिलीवरी पर हस्ताक्षर किए गए थे। `X-Timestamp` हेडर के बराबर; पुनः डिलीवरी में नया मान होता है।"
          },
          "created_at": {
            "type": "integer",
            "description": "इवेंट उत्पन्न करने वाले परिवर्तन का Unix समय सेकंड में।"
          },
          "application_id": {
            "type": "string",
            "format": "uuid",
            "description": "वह एप्लिकेशन जिससे यह इवेंट संबंधित है।"
          },
          "environment": {
            "type": "string",
            "enum": [
              "live",
              "sandbox"
            ],
            "description": "सैंडबॉक्स सत्रों और सैंडबॉक्स एप्लिकेशनों के लिए `sandbox`, अन्यथा `live`।"
          }
        }
      },
      "SessionWebhookEventData": {
        "type": "object",
        "description": "`status.updated` और `data.updated` के सत्र फ़ील्ड। जब लागू नहीं होते हैं, तो वैकल्पिक फ़ील्ड छोड़ दिए जाते हैं, उन्हें कभी भी `null` के रूप में नहीं भेजा जाता है। व्यवसाय (KYB) सत्र `business_session_id`, `session_kind` और `vendor_business_id` जोड़ते हैं।",
        "required": [
          "session_id",
          "status",
          "sandbox_scenario"
        ],
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन सत्र।"
          },
          "business_session_id": {
            "type": "string",
            "format": "uuid",
            "description": "केवल व्यवसाय (KYB) सत्र: `session_id` के समान मान।"
          },
          "session_kind": {
            "type": "string",
            "enum": [
              "business"
            ],
            "description": "केवल व्यवसाय (KYB) सत्र। उपयोगकर्ता (KYC) सत्र इवेंट में कोई शीर्ष-स्तरीय `session_kind` नहीं होता है; इसके बजाय `decision.session_kind` पढ़ें।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "परिवर्तन के बाद सत्र की स्थिति।"
          },
          "trigger": {
            "type": "string",
            "description": "तब मौजूद होता है जब इवेंट सत्यापन फ़्लो द्वारा स्वयं उत्पन्न नहीं किया गया था, उदाहरण के लिए `manual_review`, `manual_step_update`, `ongoing_monitoring`, `webhook_reconciliation` (एक `status.updated` पुनः भेजा गया क्योंकि पहला अंतिम webhook कभी नहीं बना था, इसलिए आपको उस निर्णय के लिए दूसरा इवेंट प्राप्त हो सकता है जो आपको पहले ही मिल चुका है: `session_id` और `status` पर डिडुप्लिकेट करें), `manual_webhook_recovery`, `kyb_registry_change`, `biometric_retention` (सत्र का लाइव बायोमेट्रिक डेटा शेड्यूल के अनुसार हटाए जाने पर भेजा गया `data.updated`) या कोई `console_*` संपादन जैसे `console_registry_edit`, `console_key_people_skip` या `console_key_people_regenerate`।"
          },
          "workflow_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्र का वर्कफ़्लो। सत्र में कोई वर्कफ़्लो न होने पर छोड़ दिया जाता है।"
          },
          "workflow_version": {
            "type": "integer",
            "description": "वर्कफ़्लो का संस्करण जिस पर सत्र चला। `workflow_id` के साथ भेजा जाता है।"
          },
          "vendor_data": {
            "type": "string",
            "description": "सत्र के लिए आपका `vendor_data`। खाली होने पर छोड़ दिया जाता है।"
          },
          "vendor_business_id": {
            "type": "string",
            "description": "केवल व्यवसाय (KYB) सत्र: वह व्यवसाय जिससे यह सत्र संबंधित है। कुछ न होने पर छोड़ दिया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "description": "आपका सत्र `metadata`। खाली होने पर छोड़ दिया जाता है।"
          },
          "decision": {
            "$ref": "#/components/schemas/SessionDecision"
          },
          "resubmit_info": {
            "type": "object",
            "description": "केवल तब जब `status` `Resubmitted` हो: वे चरण जिन्हें उपयोगकर्ता को दोबारा करना होगा और उसका कारण।",
            "required": [
              "nodes_to_resubmit",
              "reasons"
            ],
            "properties": {
              "nodes_to_resubmit": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "node_id",
                    "feature"
                  ],
                  "properties": {
                    "node_id": {
                      "type": "string",
                      "description": "सत्र के वर्कफ़्लो परिभाषा में प्रदर्शित नोड पहचानकर्ता (उदाहरण के लिए `feature_ocr`, `feature_liveness`)।",
                      "example": "feature_poa"
                    },
                    "feature": {
                      "type": "string",
                      "description": "नोड का सुविधा प्रकार, उदाहरण के लिए `OCR`, `LIVENESS` या `PROOF_OF_ADDRESS`।",
                      "example": "PROOF_OF_ADDRESS"
                    }
                  }
                },
                "description": "वर्कफ़्लो चरण जिन्हें उपयोगकर्ता को फिर से करना होगा। वही `{node_id, feature}` प्रविष्टियाँ जो [Update Status](#patch-/v3/session/-sessionId-/update-status/) में `nodes_to_resubmit` के रूप में हैं।"
              },
              "reasons": {
                "type": "object",
                "additionalProperties": true,
                "description": "`nodes_to_resubmit` में प्रति `node_id` कारण।"
              }
            }
          },
          "sandbox_scenario": {
            "type": "string",
            "nullable": true,
            "description": "सैंडबॉक्स सत्र पर सक्रिय किया गया सिम्युलेटेड परिणाम, या `null`। लाइव सत्रों के लिए हमेशा `null`।"
          }
        }
      },
      "SessionStatusUpdatedEvent": {
        "description": "एक सत्यापन सत्र की स्थिति बदल गई। `decision` केवल `Approved`, `Declined`, `In Review` और `Abandoned` के लिए भेजा जाता है; इसमें webhook संस्करण 3 (डिफ़ॉल्ट) पर गंतव्यों के लिए `GET /v3/session/{sessionId}/decision/` का प्रारूप होता है, और संस्करण 1 या 2 गंतव्यों के लिए पुराना संक्षिप्त प्रारूप होता है। व्यावसायिक सत्रों को हमेशा संस्करण 3 का व्यावसायिक निर्णय प्राप्त होता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "$ref": "#/components/schemas/SessionWebhookEventData"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "status.updated"
                ],
                "description": "हमेशा `status.updated`।"
              }
            },
            "required": [
              "webhook_type"
            ]
          }
        ]
      },
      "SessionDataUpdatedEvent": {
        "description": "किसी सत्यापन सत्र का डेटा बिना स्थिति बदले बदल गया, उदाहरण के लिए मैन्युअल समीक्षा संपादन, चरण ओवरराइड या सतत निगरानी रीस्क्रीन के बाद। `decision` केवल `Approved`, `Declined`, `In Review` और `Abandoned` के लिए भेजा जाता है; इसमें webhook संस्करण 3 (डिफ़ॉल्ट) पर गंतव्यों के लिए `GET /v3/session/{sessionId}/decision/` का आकार होता है, और संस्करण 1 या 2 गंतव्यों के लिए पुराना संक्षिप्त रूप होता है। व्यावसायिक सत्रों को हमेशा संस्करण 3 का व्यावसायिक निर्णय प्राप्त होता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "$ref": "#/components/schemas/SessionWebhookEventData"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "data.updated"
                ],
                "description": "हमेशा `data.updated`।"
              }
            },
            "required": [
              "webhook_type"
            ]
          }
        ]
      },
      "UserStatusUpdatedEvent": {
        "description": "किसी उपयोगकर्ता की स्थिति बदल गई। उपयोगकर्ता बनाए जाने पर नहीं भेजा जाता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "user.status.updated"
                ],
                "description": "हमेशा `user.status.updated`।"
              },
              "vendor_user_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह उपयोगकर्ता जिसके बारे में यह इवेंट है।"
              },
              "vendor_data": {
                "type": "string",
                "nullable": true,
                "description": "उपयोगकर्ता के लिए आपका `vendor_data`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन के बाद उपयोगकर्ता स्थिति।"
              },
              "previous_status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन से पहले की स्थिति।"
              }
            },
            "required": [
              "webhook_type",
              "vendor_user_id",
              "vendor_data",
              "status",
              "previous_status"
            ]
          }
        ]
      },
      "UserDataUpdatedEvent": {
        "description": "उपयोगकर्ता के फ़ील्ड बदले गए। उपयोगकर्ता बनाए जाने पर नहीं भेजा जाता है। एक ही बार सेव करने पर स्थिति और डेटा दोनों इवेंट उत्पन्न हो सकते हैं।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "user.data.updated"
                ],
                "description": "हमेशा `user.data.updated`।"
              },
              "vendor_user_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह उपयोगकर्ता जिसके बारे में यह इवेंट है।"
              },
              "vendor_data": {
                "type": "string",
                "nullable": true,
                "description": "उपयोगकर्ता के लिए आपका `vendor_data`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन के बाद उपयोगकर्ता स्थिति।"
              },
              "changed_fields": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "vendor_data",
                    "display_name",
                    "full_name",
                    "date_of_birth",
                    "metadata",
                    "portrait_image",
                    "issuing_states",
                    "approved_emails",
                    "approved_phones",
                    "features",
                    "session_count",
                    "approved_count",
                    "declined_count",
                    "in_review_count",
                    "first_session_at",
                    "last_session_at"
                  ]
                },
                "description": "बदले गए फ़ील्ड्स के नाम।"
              },
              "changes": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "previous": {
                      "nullable": true,
                      "description": "परिवर्तन से पहले का मान। दिनांक ISO 8601 स्ट्रिंग हैं।"
                    },
                    "current": {
                      "nullable": true,
                      "description": "परिवर्तन के बाद का मान। दिनांक ISO 8601 स्ट्रिंग हैं।"
                    }
                  }
                },
                "description": "प्रत्येक बदले गए फ़ील्ड का पिछला और वर्तमान मान, फ़ील्ड नाम को कुंजी के रूप में उपयोग करके। मान व्यक्तिगत डेटा (नाम, जन्म तिथि, पोर्ट्रेट लिंक, ईमेल, फ़ोन नंबर) हो सकते हैं; उन्हें तदनुसार संभालें।"
              }
            },
            "required": [
              "webhook_type",
              "vendor_user_id",
              "vendor_data",
              "status",
              "changed_fields",
              "changes"
            ]
          }
        ]
      },
      "BusinessStatusUpdatedEvent": {
        "description": "एक व्यवसाय की स्थिति बदल गई। व्यवसाय बनाए जाने पर नहीं भेजा जाता।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "business.status.updated"
                ],
                "description": "हमेशा `business.status.updated`।"
              },
              "vendor_business_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह व्यवसाय जिसके बारे में इवेंट है।"
              },
              "vendor_data": {
                "type": "string",
                "nullable": true,
                "description": "व्यवसाय के लिए आपका `vendor_data`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन के बाद व्यवसाय की स्थिति।"
              },
              "previous_status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन से पहले की स्थिति।"
              }
            },
            "required": [
              "webhook_type",
              "vendor_business_id",
              "vendor_data",
              "status",
              "previous_status"
            ]
          }
        ]
      },
      "BusinessDataUpdatedEvent": {
        "description": "व्यवसाय के फ़ील्ड बदले गए। व्यवसाय बनने पर नहीं भेजा जाता है। एक ही बार सेव करने पर स्थिति और डेटा दोनों इवेंट उत्पन्न हो सकते हैं।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "business.data.updated"
                ],
                "description": "हमेशा `business.data.updated`।"
              },
              "vendor_business_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह व्यवसाय जिसके बारे में इवेंट है।"
              },
              "vendor_data": {
                "type": "string",
                "nullable": true,
                "description": "व्यवसाय के लिए आपका `vendor_data`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "ACTIVE",
                  "IN_REVIEW",
                  "FLAGGED",
                  "BLOCKED"
                ],
                "description": "परिवर्तन के बाद व्यवसाय की स्थिति।"
              },
              "changed_fields": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "vendor_data",
                    "display_name",
                    "metadata",
                    "legal_name",
                    "registration_number",
                    "country_code",
                    "session_count",
                    "approved_count",
                    "declined_count",
                    "in_review_count",
                    "features",
                    "first_session_at",
                    "last_session_at"
                  ]
                },
                "description": "बदले गए फ़ील्ड्स के नाम।"
              },
              "changes": {
                "type": "object",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "previous": {
                      "nullable": true,
                      "description": "परिवर्तन से पहले का मान। दिनांक ISO 8601 स्ट्रिंग हैं।"
                    },
                    "current": {
                      "nullable": true,
                      "description": "परिवर्तन के बाद का मान। दिनांक ISO 8601 स्ट्रिंग हैं।"
                    }
                  }
                },
                "description": "प्रत्येक बदले गए फ़ील्ड का पिछला और वर्तमान मान, फ़ील्ड नाम को कुंजी के रूप में उपयोग करके।"
              }
            },
            "required": [
              "webhook_type",
              "vendor_business_id",
              "vendor_data",
              "status",
              "changed_fields",
              "changes"
            ]
          }
        ]
      },
      "TransactionCreatedEvent": {
        "description": "एक लेन-देन बनाया गया और स्क्रीन किया गया। केवल लाइव एप्लिकेशन के लिए भेजा गया।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "transaction.created"
                ],
                "description": "हमेशा `transaction.created`।"
              },
              "transaction_id": {
                "type": "string",
                "format": "uuid",
                "description": "लेन-देन का Didit पहचानकर्ता।"
              },
              "txn_id": {
                "type": "string",
                "nullable": true,
                "description": "निर्माण के समय आपके द्वारा प्रदान किया गया `transaction_id`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED",
                  "AWAITING_USER"
                ],
                "description": "परिवर्तन के बाद निगरानी स्थिति।"
              },
              "score": {
                "type": "integer",
                "description": "नियमों द्वारा संचित जोखिम स्कोर।"
              },
              "severity": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "UNKNOWN",
                  "LOW",
                  "MEDIUM",
                  "HIGH",
                  "CRITICAL",
                  null
                ],
                "description": "जोखिम गंभीरता, या किसी नियम या प्रदाता द्वारा सेट किए जाने तक `null`।"
              },
              "amount": {
                "type": "string",
                "description": "दशमलव स्ट्रिंग के रूप में लेन-देन राशि। API के विपरीत इसे सामान्यीकृत नहीं किया जाता है, इसलिए इसमें अनुगामी शून्य हो सकते हैं (18 दशमलव स्थानों तक)।"
              },
              "currency": {
                "type": "string",
                "description": "`amount` का मुद्रा कोड या क्रिप्टो एसेट सिंबल।"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "INBOUND",
                  "OUTBOUND"
                ],
                "description": "विषय (subject) के सापेक्ष दिशा।"
              },
              "action_required": {
                "type": "object",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TransactionVerificationSessionAction"
                  },
                  {
                    "$ref": "#/components/schemas/TransactionWalletOwnershipAction"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "verification_session": "#/components/schemas/TransactionVerificationSessionAction",
                    "wallet_ownership": "#/components/schemas/TransactionWalletOwnershipAction"
                  }
                },
                "description": "लंबित अंतिम उपयोगकर्ता कार्रवाई, या `null`। लेन-देन पर `action_required` जैसा ही ऑब्जेक्ट; `session_token` एक क्रेडेंशियल है, इसलिए इसे कभी भी लॉग न करें।"
              }
            },
            "required": [
              "webhook_type",
              "transaction_id",
              "txn_id",
              "status",
              "score",
              "severity",
              "amount",
              "currency",
              "direction",
              "action_required"
            ]
          }
        ]
      },
      "TransactionStatusUpdatedEvent": {
        "description": "किसी नियम, समीक्षा या अंतिम उपयोगकर्ता की कार्रवाई से किसी लेन-देन की स्थिति बदल गई। केवल लाइव एप्लिकेशन के लिए भेजा गया।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "transaction.status.updated"
                ],
                "description": "हमेशा `transaction.status.updated`।"
              },
              "transaction_id": {
                "type": "string",
                "format": "uuid",
                "description": "लेन-देन का Didit पहचानकर्ता।"
              },
              "txn_id": {
                "type": "string",
                "nullable": true,
                "description": "निर्माण के समय आपके द्वारा प्रदान किया गया `transaction_id`, या `null`।"
              },
              "status": {
                "type": "string",
                "enum": [
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED",
                  "AWAITING_USER"
                ],
                "description": "परिवर्तन के बाद निगरानी स्थिति।"
              },
              "score": {
                "type": "integer",
                "description": "नियमों द्वारा संचित जोखिम स्कोर।"
              },
              "severity": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "UNKNOWN",
                  "LOW",
                  "MEDIUM",
                  "HIGH",
                  "CRITICAL",
                  null
                ],
                "description": "जोखिम गंभीरता, या किसी नियम या प्रदाता द्वारा सेट किए जाने तक `null`।"
              },
              "amount": {
                "type": "string",
                "description": "दशमलव स्ट्रिंग के रूप में लेन-देन राशि। API के विपरीत इसे सामान्यीकृत नहीं किया जाता है, इसलिए इसमें अनुगामी शून्य हो सकते हैं (18 दशमलव स्थानों तक)।"
              },
              "currency": {
                "type": "string",
                "description": "`amount` का मुद्रा कोड या क्रिप्टो एसेट सिंबल।"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "INBOUND",
                  "OUTBOUND"
                ],
                "description": "विषय (subject) के सापेक्ष दिशा।"
              },
              "action_required": {
                "type": "object",
                "nullable": true,
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TransactionVerificationSessionAction"
                  },
                  {
                    "$ref": "#/components/schemas/TransactionWalletOwnershipAction"
                  }
                ],
                "discriminator": {
                  "propertyName": "type",
                  "mapping": {
                    "verification_session": "#/components/schemas/TransactionVerificationSessionAction",
                    "wallet_ownership": "#/components/schemas/TransactionWalletOwnershipAction"
                  }
                },
                "description": "लंबित अंतिम उपयोगकर्ता कार्रवाई, या `null`। लेन-देन पर `action_required` जैसा ही ऑब्जेक्ट; `session_token` एक क्रेडेंशियल है, इसलिए इसे कभी भी लॉग न करें।"
              }
            },
            "required": [
              "webhook_type",
              "transaction_id",
              "txn_id",
              "status",
              "score",
              "severity",
              "amount",
              "currency",
              "direction",
              "action_required"
            ]
          }
        ]
      },
      "TravelRuleStatusUpdatedEvent": {
        "description": "एक Travel Rule एक्सचेंज की स्थिति बदल गई। `FINISHED`, `CANCELLED` या `EXPIRED` तक और इसमें शामिल प्रत्येक ट्रांज़िशन पर भेजा जाता है, इसके बाद कभी नहीं। लाइव एप्लिकेशनों के लिए और Travel Rule एक्सचेंजों के लिए सैंडबॉक्स एप्लिकेशनों (`environment: sandbox`) के लिए भी भेजा जाता है। कोई शीर्ष-स्तरीय `status` नहीं है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "travel_rule.status.updated"
                ],
                "description": "हमेशा `travel_rule.status.updated`।"
              },
              "transaction_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह लेन-देन जिससे एक्सचेंज संबंधित है।"
              },
              "txn_id": {
                "type": "string",
                "nullable": true,
                "description": "निर्माण के समय आपके द्वारा प्रदान किया गया `transaction_id`, या `null`।"
              },
              "travel_rule_status": {
                "type": "string",
                "enum": [
                  "AWAITING_COUNTERPARTY",
                  "ON_HOLD",
                  "COMPLETED",
                  "FINISHED",
                  "CANCELLED",
                  "EXPIRED",
                  "COUNTERPARTY_MISMATCHED_DATA",
                  "COUNTERPARTY_VASP_NOT_FOUND",
                  "COUNTERPARTY_VASP_NOT_REACHABLE",
                  "UNCONFIRMED_OWNERSHIP",
                  "COUNTERPARTY_VASP_GENERAL_DECLINE",
                  "NOT_ENOUGH_COUNTERPARTY_DATA",
                  "NOT_APPLICABLE"
                ],
                "description": "परिवर्तन के बाद विनिमय स्थिति।"
              },
              "rail": {
                "type": "string",
                "enum": [
                  "",
                  "INTERNAL",
                  "TRP",
                  "GTR",
                  "TRUST",
                  "VERIFYVASP",
                  "SYGNA",
                  "EMAIL",
                  "TEST_VASP"
                ],
                "description": "वह नेटवर्क जिस पर एक्सचेंज चलता है, या खाली स्ट्रिंग जब किसी का निर्धारण नहीं किया जा सका। `TEST_VASP` एक सैंडबॉक्स ट्रांसफर है जिसका Didit Test VASP ने उत्तर दिया।"
              },
              "test_vasp": {
                "type": "boolean",
                "description": "केवल उस सैंडबॉक्स ट्रांसफ़र पर मौजूद और `true` होता है जिसका Didit Test VASP ने उत्तर दिया हो।"
              },
              "test_vasp_scenario": {
                "type": "string",
                "description": "केवल `test_vasp` के साथ मौजूद: सैंडबॉक्स परिदृश्य जिसने परिणाम तय किया, या एक खाली स्ट्रिंग।"
              },
              "direction": {
                "type": "string",
                "enum": [
                  "INBOUND",
                  "OUTBOUND"
                ],
                "description": "ट्रांसफ़र की दिशा।"
              }
            },
            "required": [
              "webhook_type",
              "transaction_id",
              "txn_id",
              "travel_rule_status",
              "rail",
              "direction"
            ]
          }
        ]
      },
      "WorkflowComplianceChangedEvent": {
        "description": "पुनर्मूल्यांकन के बाद किसी प्रकाशित वर्कफ़्लो की अनुपालन स्थिति बदल गई। प्रति वर्कफ़्लो एक इवेंट। कोई शीर्ष-स्तरीय `status` नहीं है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "workflow.compliance_changed"
                ],
                "description": "हमेशा `workflow.compliance_changed`।"
              },
              "workflow_id": {
                "type": "string",
                "format": "uuid",
                "description": "वह वर्कफ़्लो जो बदल गया।"
              },
              "workflow_version": {
                "type": "integer",
                "description": "वह संस्करण जिसका मूल्यांकन किया गया था।"
              },
              "workflow_label": {
                "type": "string",
                "nullable": true,
                "description": "वर्कफ़्लो का डिस्प्ले नाम।"
              },
              "transition": {
                "type": "object",
                "required": [
                  "from",
                  "to"
                ],
                "properties": {
                  "from": {
                    "type": "string",
                    "enum": [
                      "compliant",
                      "gaps_detected",
                      "pending_change",
                      "unknown_coverage",
                      "not_evaluated"
                    ],
                    "description": "पुनः मूल्यांकन से पहले की स्थिति।"
                  },
                  "to": {
                    "type": "string",
                    "enum": [
                      "compliant",
                      "gaps_detected",
                      "pending_change",
                      "unknown_coverage",
                      "not_evaluated"
                    ],
                    "description": "पुनः मूल्यांकन के बाद की स्थिति।"
                  }
                }
              },
              "severity": {
                "type": "string",
                "enum": [
                  "actionable",
                  "indicative",
                  "informative"
                ],
                "description": "कमियों का पता चलने पर `actionable`, लंबित परिवर्तन के लिए `indicative`, कमियों का समाधान होने पर `informative`।"
              },
              "kb_version": {
                "type": "string",
                "description": "उपयोग किए गए नियामक नॉलेज बेस का संस्करण।"
              }
            },
            "required": [
              "webhook_type",
              "workflow_id",
              "workflow_version",
              "workflow_label",
              "transition",
              "severity",
              "kb_version"
            ]
          }
        ]
      },
      "WebhookEventPayload": {
        "description": "हस्ताक्षरित webhook डिलीवरी का मुख्य भाग (body), जिसे `webhook_type` द्वारा विभेदित किया गया है। `activity.created` की सदस्यता ली जा सकती है लेकिन वर्तमान में यह नहीं भेजा जाता है। किसी भी अन्य `webhook_type` को एक नए इवेंट प्रकार के रूप में मानें और मूल raw body को सुरक्षित रखें।",
        "oneOf": [
          {
            "$ref": "#/components/schemas/SessionStatusUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/SessionDataUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/UserStatusUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/UserDataUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/BusinessStatusUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/BusinessDataUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/TransactionCreatedEvent"
          },
          {
            "$ref": "#/components/schemas/TransactionStatusUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/TravelRuleStatusUpdatedEvent"
          },
          {
            "$ref": "#/components/schemas/WorkflowComplianceChangedEvent"
          },
          {
            "$ref": "#/components/schemas/TransactionRuleSuggestionsCreatedEvent"
          }
        ],
        "discriminator": {
          "propertyName": "webhook_type",
          "mapping": {
            "status.updated": "#/components/schemas/SessionStatusUpdatedEvent",
            "data.updated": "#/components/schemas/SessionDataUpdatedEvent",
            "user.status.updated": "#/components/schemas/UserStatusUpdatedEvent",
            "user.data.updated": "#/components/schemas/UserDataUpdatedEvent",
            "business.status.updated": "#/components/schemas/BusinessStatusUpdatedEvent",
            "business.data.updated": "#/components/schemas/BusinessDataUpdatedEvent",
            "transaction.created": "#/components/schemas/TransactionCreatedEvent",
            "transaction.status.updated": "#/components/schemas/TransactionStatusUpdatedEvent",
            "travel_rule.status.updated": "#/components/schemas/TravelRuleStatusUpdatedEvent",
            "workflow.compliance_changed": "#/components/schemas/WorkflowComplianceChangedEvent",
            "transaction_rule_suggestions.created": "#/components/schemas/TransactionRuleSuggestionsCreatedEvent"
          }
        }
      },
      "KYBRegistrySearchResolvedCallback": {
        "type": "object",
        "description": "रजिस्ट्री खोज पूर्ण होने के बाद `POST /v3/kyb/search/` के `webhook_url` पर भेजे गए कॉलबैक का मुख्य भाग (body)। यह हस्ताक्षरित नहीं होता है: अनुरोध में `X-Didit-Unsigned-Callback: true` होता है और कोई भी हस्ताक्षर हेडर शामिल नहीं होता है, इसलिए अपने द्वारा शुरू की गई खोज से `request_id` का मिलान करके इसकी पुष्टि करें। इसमें `webhook_type` के बजाय `event_type` का उपयोग होता है।",
        "required": [
          "event_id",
          "event_type",
          "request_id",
          "vendor_data",
          "metadata",
          "search_status",
          "search_resolved",
          "kyb_registry",
          "timestamp",
          "created_at"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "format": "uuid",
            "description": "कॉलबैक का पहचानकर्ता।"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "kyb.registry_search.resolved"
            ],
            "description": "हमेशा `kyb.registry_search.resolved`।"
          },
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "`POST /v3/kyb/search/` द्वारा लौटाया गया `request_id`।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा भेजे गए `vendor_data` का इको।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "आपके द्वारा भेजे गए `metadata` का इको।"
          },
          "search_status": {
            "type": "string",
            "description": "वर्तमान में हमेशा `resolved`।"
          },
          "search_resolved": {
            "type": "boolean",
            "description": "`true` जब `search_status` `resolved` हो।"
          },
          "kyb_registry": {
            "$ref": "#/components/schemas/KYBRegistrySearchResults"
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix समय सेकंड में जिस पर कॉलबैक कतारबद्ध किया गया था।"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix समय सेकंड में जिस पर कॉलबैक कतारबद्ध किया गया था।"
          }
        }
      },
      "AMLScreening": {
        "type": "object",
        "properties": {
          "node_id": {
            "type": "string",
            "description": "वर्कफ़्लो ग्राफ़ में इस AML चरण के लिए विशिष्ट पहचानकर्ता।"
          },
          "status": {
            "type": "string",
            "description": "इस AML स्क्रीनिंग की सुविधा-स्तरीय स्थिति। शीर्ष-स्तरीय सत्र `status` से स्वतंत्र — एक सत्र अपने समग्र निर्णय तक पहुँच सकता है जबकि एक अलग सुविधा `In Review` रह सकती है।",
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Resub Requested"
            ]
          },
          "total_hits": {
            "type": "integer",
            "description": "पाए गए मिलानों की कुल संख्या"
          },
          "entity_type": {
            "type": "string",
            "description": "स्क्रीन किए गए निकाय का प्रकार: व्यक्ति या कंपनी"
          },
          "hits": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "हिट के लिए Didit का स्थायी आइडेंटिफ़ायर: `hit_` के बाद 24 हेक्साडेसिमल वर्ण। विषय की दोबारा स्क्रीनिंग होने पर भी वही मिलान की गई एंटिटी समान `id` बनाए रखती है। इसे AML हिट समीक्षा endpoints पर `hit_id` के रूप में पास करें।"
                },
                "url": {
                  "type": "string",
                  "format": "uri",
                  "description": "मिलान के लिए स्रोत URL"
                },
                "match": {
                  "type": "boolean",
                  "description": "क्या यह एक पुष्ट मिलान है"
                },
                "score": {
                  "type": "number",
                  "format": "float",
                  "nullable": true,
                  "minimum": 0,
                  "maximum": 1,
                  "description": "0-1 रेंज में बहिष्कृत भारित मिलान स्कोर (उदा. `0.73`)। इसके बजाय `match_score` (0-100) का उपयोग करें।",
                  "deprecated": true
                },
                "target": {
                  "type": "boolean",
                  "nullable": true,
                  "description": "क्या मिलान की गई इकाई लिस्टिंग का सीधा लक्ष्य है (संबंधित पक्ष के विपरीत)। `null` जब स्रोत इसे निर्दिष्ट नहीं करता है।"
                },
                "caption": {
                  "type": "string",
                  "description": "मिलान का कैप्शन या शीर्षक"
                },
                "datasets": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "PEP",
                      "PEP Level 1",
                      "PEP Level 2",
                      "PEP Level 3",
                      "PEP Level 4",
                      "Sanctions",
                      "Adverse Media",
                      "Warnings and Regulatory Enforcement",
                      "Fitness and Probity",
                      "SIP",
                      "SIE",
                      "Insolvency",
                      "Other Lists"
                    ]
                  },
                  "description": "डेटासेट श्रेणियों की सूची जहाँ मिलान पाया गया था। इंगित करता है कि क्या निकाय PEP सूचियों (स्तर के साथ), प्रतिबंध डेटाबेस, प्रतिकूल मीडिया, चेतावनियों/नियामक प्रवर्तन, या अन्य अनुपालन डेटासेट में दिखाई दिया है। जब निकाय का स्रोत इनमें से किसी भी श्रेणी का उल्लेख नहीं करता है, तो `Other Lists`।"
                },
                "features": {
                  "type": "object",
                  "nullable": true,
                  "description": "मिलान की अतिरिक्त विशेषताएँ"
                },
                "rca_name": {
                  "type": "string",
                  "description": "यदि लागू हो तो RCA का नाम"
                },
                "last_seen": {
                  "type": "string",
                  "format": "date-time",
                  "description": "तारीख जब मिलान अंतिम बार देखा गया था"
                },
                "risk_view": {
                  "type": "object",
                  "properties": {
                    "crimes": {
                      "type": "object",
                      "properties": {
                        "score": {
                          "type": "integer"
                        },
                        "weightage": {
                          "type": "integer"
                        },
                        "risk_level": {
                          "type": "string"
                        },
                        "risk_scores": {
                          "type": "object"
                        }
                      }
                    },
                    "countries": {
                      "type": "object",
                      "properties": {
                        "score": {
                          "type": "integer"
                        },
                        "weightage": {
                          "type": "integer"
                        },
                        "risk_level": {
                          "type": "string"
                        },
                        "risk_scores": {
                          "type": "object"
                        }
                      }
                    },
                    "categories": {
                      "type": "object",
                      "properties": {
                        "score": {
                          "type": "integer"
                        },
                        "weightage": {
                          "type": "integer"
                        },
                        "risk_level": {
                          "type": "string"
                        },
                        "risk_scores": {
                          "type": "object"
                        }
                      }
                    },
                    "custom_list": {
                      "type": "object"
                    }
                  }
                },
                "first_seen": {
                  "type": "string",
                  "format": "date-time",
                  "description": "तारीख जब मिलान पहली बार देखा गया था"
                },
                "properties": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "alias": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "title": {
                      "type": "string",
                      "nullable": true
                    },
                    "gender": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "height": {
                      "type": "string",
                      "nullable": true
                    },
                    "topics": {
                      "type": "string",
                      "nullable": true
                    },
                    "weight": {
                      "type": "string",
                      "nullable": true
                    },
                    "address": {
                      "type": "string",
                      "nullable": true
                    },
                    "country": {
                      "type": "string",
                      "nullable": true
                    },
                    "website": {
                      "type": "string",
                      "nullable": true
                    },
                    "eyeColor": {
                      "type": "string",
                      "nullable": true
                    },
                    "keywords": {
                      "type": "string",
                      "nullable": true
                    },
                    "lastName": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "position": {
                      "type": "string",
                      "nullable": true
                    },
                    "religion": {
                      "type": "string",
                      "nullable": true
                    },
                    "birthDate": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "education": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "ethnicity": {
                      "type": "string",
                      "nullable": true
                    },
                    "firstName": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "hairColor": {
                      "type": "string",
                      "nullable": true
                    },
                    "weakAlias": {
                      "type": "string",
                      "nullable": true
                    },
                    "birthPlace": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "modifiedAt": {
                      "type": "string",
                      "nullable": true
                    },
                    "wikidataId": {
                      "type": "string",
                      "nullable": true
                    },
                    "citizenship": {
                      "type": "string",
                      "nullable": true
                    },
                    "nationality": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                },
                "match_score": {
                  "type": "number",
                  "description": "नाम समानता, जन्म तिथि और देश मिलान से परिकलित भारित पहचान विश्वास स्कोर (0-100)। यह निर्धारित करने के लिए उपयोग किया जाता है कि हिट फ़ॉल्स पॉज़िटिव है या संभावित मिलान।",
                  "format": "float",
                  "nullable": true
                },
                "risk_score": {
                  "type": "number",
                  "description": "इकाई जोखिम स्कोर (0-100)। गैर-फ़ॉल्स पॉज़िटिव हिट्स के बीच उच्चतम risk_score के आधार पर अंतिम AML स्थिति (स्वीकृत/समीक्षाधीन/अस्वीकृत) निर्धारित करने के लिए उपयोग किया जाता है।"
                },
                "review_status": {
                  "type": "string",
                  "description": "इस हिट के लिए समीक्षा स्थिति। यह 'Unreviewed', 'Confirmed Match', 'False Positive', या 'Inconclusive' हो सकती है।",
                  "enum": [
                    "Unreviewed",
                    "Confirmed Match",
                    "False Positive",
                    "Inconclusive"
                  ]
                },
                "score_breakdown": {
                  "type": "object",
                  "description": "match_score की गणना कैसे की गई, इसका विस्तृत विवरण।",
                  "properties": {
                    "name_score": {
                      "type": "integer",
                      "description": "रॉ नाम समानता प्रतिशत (0-100)।"
                    },
                    "name_weight": {
                      "type": "integer",
                      "description": "कॉन्फ़िगरेशन से नाम के लिए मूल वेट (0-100)।"
                    },
                    "name_weight_normalized": {
                      "type": "number",
                      "description": "गुम डेटा के लिए पुन: भारण के बाद नाम के लिए सामान्यीकृत भार (0-100)।"
                    },
                    "name_contribution": {
                      "type": "number",
                      "description": "कुल स्कोर में नाम द्वारा योगदान किए गए अंक।"
                    },
                    "dob_score": {
                      "type": "integer",
                      "description": "जन्म तिथि मिलान स्कोर (-100 से 100)।"
                    },
                    "dob_weight": {
                      "type": "integer",
                      "description": "कॉन्फ़िगरेशन से DOB के लिए मूल वेट (0-100)।"
                    },
                    "dob_weight_normalized": {
                      "type": "number",
                      "description": "गुम डेटा के लिए पुन: भारण के बाद DOB के लिए सामान्यीकृत भार (0-100)।"
                    },
                    "dob_contribution": {
                      "type": "number",
                      "description": "कुल स्कोर में जन्म तिथि द्वारा योगदान किए गए अंक।"
                    },
                    "country_score": {
                      "type": "integer",
                      "description": "देश मिलान स्कोर (-100 से 100)।"
                    },
                    "country_weight": {
                      "type": "integer",
                      "description": "कॉन्फ़िगरेशन से देश के लिए मूल वेट (0-100)।"
                    },
                    "country_weight_normalized": {
                      "type": "number",
                      "description": "गुम डेटा के लिए पुन: भारण के बाद देश के लिए सामान्यीकृत भार (0-100)।"
                    },
                    "country_contribution": {
                      "type": "number",
                      "description": "कुल स्कोर में देश द्वारा योगदान किए गए अंक।"
                    },
                    "document_number_match_type": {
                      "type": "string",
                      "description": "दस्तावेज़ संख्या 'Golden Key' मूल्यांकन का परिणाम।",
                      "enum": [
                        "MATCH",
                        "NEUTRAL",
                        "HARD_MISMATCH"
                      ]
                    },
                    "document_number_effect": {
                      "type": "string",
                      "description": "स्कोर पर दस्तावेज़ संख्या के प्रभाव का मानव-पठनीय विवरण।"
                    },
                    "total_score": {
                      "type": "integer",
                      "description": "अंतिम भारित मिलान स्कोर (0-100)।"
                    }
                  }
                },
                "pep_matches": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "aliases": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "education": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "list_name": {
                        "type": "string"
                      },
                      "publisher": {
                        "type": "string"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "description": {
                        "type": "string"
                      },
                      "matched_name": {
                        "type": "string"
                      },
                      "pep_position": {
                        "type": "string"
                      },
                      "date_of_birth": {
                        "type": "string"
                      },
                      "other_sources": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "place_of_birth": {
                        "type": "string"
                      }
                    }
                  }
                },
                "linked_entities": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "active": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "status": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "details": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "relation": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "warning_matches": {
                  "type": "array",
                  "description": "चेतावनी और नियामक प्रवर्तन मिलानों की सूची। इसमें श्रेणियों की प्रविष्टियाँ शामिल हैं: Warning, SIP, Warnings and Regulatory Enforcement, Fitness and Probity, SIE, और Insolvency।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "list_name": {
                        "type": "string",
                        "description": "चेतावनी सूची प्रकाशक का नाम"
                      },
                      "matched_name": {
                        "type": "string",
                        "description": "चेतावनी सूची से मेल खाने वाला नाम"
                      },
                      "description": {
                        "type": "string",
                        "description": "चेतावनी प्रविष्टि का विवरण"
                      },
                      "publisher": {
                        "type": "string",
                        "description": "चेतावनी का प्रकाशक या स्रोत"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "चेतावनी के स्रोत का URL"
                      },
                      "other_sources": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "अतिरिक्त स्रोत URL"
                      },
                      "countries": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true,
                        "description": "चेतावनी से जुड़े देश"
                      },
                      "created_at": {
                        "type": "string",
                        "nullable": true,
                        "description": "चेतावनी प्रविष्टि बनाए जाने की तारीख"
                      },
                      "updated_at": {
                        "type": "string",
                        "nullable": true,
                        "description": "चेतावनी प्रविष्टि को अंतिम बार अपडेट किए जाने की तारीख"
                      },
                      "additional_data": {
                        "type": "object",
                        "description": "चेतावनी स्रोत से अतिरिक्त डेटा। इसमें `case_details` ऐरे के साथ एक `data` ऑब्जेक्ट शामिल हो सकता है।",
                        "properties": {
                          "data": {
                            "type": "object",
                            "properties": {
                              "case_details": {
                                "type": "array",
                                "description": "इस मिलान से जुड़े चेतावनी मामलों का विवरण",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "case_type": {
                                      "type": "string",
                                      "description": "चेतावनी केस का प्रकार",
                                      "enum": [
                                        "Accusation",
                                        "Arrest",
                                        "Bribery",
                                        "Criminal",
                                        "Fraud",
                                        "Illegal Fundraising",
                                        "Non-conviction Terror",
                                        "Proclaimed Offender",
                                        "Regulatory Enforcement",
                                        "Terrorism",
                                        "Terrorism-related",
                                        "Terrorism-related listing"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "sanction_matches": {
                  "type": "array",
                  "description": "इस निकाय के लिए पाए गए प्रतिबंध सूची मिलानों की सूची।",
                  "items": {
                    "type": "object",
                    "properties": {
                      "list_name": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true,
                        "description": "प्रतिबंध सूची/सूचियों के नाम"
                      },
                      "matched_name": {
                        "type": "string",
                        "description": "प्रतिबंध सूची से मेल खाने वाला नाम"
                      },
                      "description": {
                        "type": "string",
                        "description": "प्रतिबंध प्रविष्टि का विवरण"
                      },
                      "reason": {
                        "type": "string",
                        "nullable": true,
                        "description": "मुक्त-पाठ कारण कि इकाई पर प्रतिबंध क्यों लगाया गया था। प्रतिबंध सूची की कारण प्रविष्टियों से संयोजित। उदाहरण: 'Executive Order 13224 (Terrorism)', 'Support for actions undermining Ukraine's sovereignty', 'Listed due to national security concerns.'"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri",
                        "description": "प्रतिबंध के स्रोत का URL"
                      },
                      "other_sources": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "अतिरिक्त स्रोत URL"
                      },
                      "details": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "प्रतिबंध के बारे में अतिरिक्त विवरण"
                      },
                      "legal_basis": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "प्रतिबंध के लिए कानूनी आधार"
                      },
                      "listed_on": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true,
                        "description": "तारीखें जब इकाई को सूचीबद्ध किया गया था"
                      },
                      "sanction_list": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "nullable": true,
                        "description": "प्रतिबंध सूची पहचानकर्ता"
                      },
                      "sanction_program": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "प्रतिबंध कार्यक्रम जिसके तहत इकाई सूचीबद्ध है"
                      },
                      "sanctioning_authority": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "प्राधिकरण जिसने/जिन्होंने प्रतिबंध लगाया"
                      },
                      "updated_on": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "प्रतिबंध प्रविष्टि को अंतिम बार अपडेट किए जाने की तारीख/तारीखें"
                      },
                      "additional_data": {
                        "type": "object",
                        "description": "प्रतिबंध स्रोत से अतिरिक्त डेटा जो मुख्य फ़ील्ड में कैप्चर नहीं किया गया है"
                      }
                    }
                  }
                },
                "adverse_media_details": {
                  "type": "object",
                  "properties": {
                    "sentiment": {
                      "type": "string"
                    },
                    "entity_type": {
                      "type": "string"
                    },
                    "sentiment_score": {
                      "type": "integer"
                    },
                    "adverse_keywords": {
                      "type": "object",
                      "additionalProperties": {
                        "type": "integer"
                      }
                    }
                  }
                },
                "adverse_media_matches": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "country": {
                        "type": "string"
                      },
                      "summary": {
                        "type": "string"
                      },
                      "headline": {
                        "type": "string"
                      },
                      "sentiment": {
                        "type": "string"
                      },
                      "thumbnail": {
                        "type": "string",
                        "format": "uri"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri"
                      },
                      "author_name": {
                        "type": "string",
                        "nullable": true
                      },
                      "other_sources": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "adverse_keywords": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "sentiment_score": {
                        "type": "integer"
                      },
                      "publication_date": {
                        "type": "string",
                        "format": "date-time"
                      }
                    }
                  }
                },
                "additional_information": {
                  "type": "object"
                }
              }
            }
          },
          "score": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "minimum": 0,
            "maximum": 100,
            "description": "समग्र AML स्क्रीनिंग स्कोर — सभी हिट्स में उच्चतम जोखिम स्कोर (फ़्लोट, 0-100)। गणना होने तक `null`।"
          },
          "screened_data": {
            "type": "object",
            "properties": {
              "full_name": {
                "type": "string"
              },
              "nationality": {
                "type": "string"
              },
              "date_of_birth": {
                "type": "string",
                "format": "date"
              },
              "document_number": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "is_ongoing_monitoring_enabled": {
            "type": "boolean",
            "description": "क्या इस स्क्रीनिंग के लिए सतत AML निगरानी सक्षम है। `true` होने पर, निकाय की समय-समय पर पुनः स्क्रीनिंग की जाती है और कोई भी नया मिलान रिपोर्ट को अपडेट करता है।"
          },
          "next_ongoing_monitoring_bill_date": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "तारीख (YYYY-MM-DD) जब इस सतत निगरानी सब्सक्रिप्शन का अगला बिल लिया जाएगा। `is_ongoing_monitoring_enabled = true` होने पर अंतिम सतत निगरानी बिलिंग की तारीख में 365 दिन जोड़कर गणना की जाती है; अन्यथा `null`। यह बिलिंग की तारीख है, स्क्रीनिंग की तारीख नहीं - उसके लिए `last_ongoing_screening_at` का उपयोग करें।"
          },
          "last_ongoing_screening_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब सतत निगरानी ने अंतिम बार इस रिकॉर्ड की पुनः स्क्रीनिंग पूरी की थी, चाहे परिणाम बदला हो या नहीं। `null` जब रिकॉर्ड की कभी पुनः स्क्रीनिंग नहीं की गई हो; इसे सक्षमीकरण या बिलिंग तिथि से कभी बैक-फ़िल नहीं किया जाता है।"
          },
          "last_ongoing_screening_datasets_updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "उस स्क्रीनिंग के समय प्रदाता द्वारा रिपोर्ट की गई सबसे हालिया AML डेटासेट अपडेट तिथि। प्रदाता द्वारा कोई डेटासेट तिथियां रिपोर्ट न किए जाने पर `null`; कभी अनुमानित नहीं।"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "feature": {
                  "type": "string",
                  "enum": [
                    "ID_VERIFICATION",
                    "NFC",
                    "LIVENESS",
                    "FACEMATCH",
                    "PROOF_OF_ADDRESS",
                    "PHONE",
                    "EMAIL",
                    "AML",
                    "LOCATION",
                    "DATABASE_VALIDATION",
                    "QUESTIONNAIRE",
                    "DOCUMENT_AI",
                    "KYB_REGISTRY",
                    "KYB_DOCUMENTS",
                    "KYB_KEY_PEOPLE",
                    "GEOLOCATION",
                    "SIGNATURE"
                  ],
                  "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। AML स्क्रीनिंग के भीतर यह आमतौर पर `AML` होता है, लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                },
                "risk": {
                  "type": "string"
                },
                "additional_data": {
                  "type": "object",
                  "nullable": true
                },
                "log_type": {
                  "type": "string"
                },
                "short_description": {
                  "type": "string"
                },
                "long_description": {
                  "type": "string"
                },
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                }
              }
            }
          }
        }
      },
      "MonitoringEvent": {
        "type": "object",
        "description": "सूची और सब्जेक्ट-टाइमलाइन endpoints द्वारा लौटाया गया एक संग्रहीत निगरानी इवेंट। प्रतिबंधित साक्ष्य (payload, डिवाइस संदर्भ, नियम साक्ष्य) केवल `GET /v3/events/{event_uuid}/` द्वारा लौटाया जाता है।",
        "required": [
          "event_uuid",
          "event_id",
          "event_category",
          "action_type",
          "occurred_at",
          "received_at",
          "status",
          "score",
          "subject_vendor_data",
          "subject_entity_type",
          "subject_uuid",
          "counterparty_vendor_data",
          "session_id",
          "device_fingerprint",
          "ip_address",
          "ip_country",
          "amount",
          "currency",
          "game_id",
          "round_id",
          "bonus_id",
          "affiliate_code",
          "payment_reference_id",
          "retention_class",
          "rules_matched_count",
          "correlation_pending",
          "is_droppable"
        ],
        "properties": {
          "event_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "इवेंट का Didit पहचानकर्ता। retrieve और delete कॉल में इसका उपयोग `{event_uuid}` के रूप में करें।"
          },
          "event_id": {
            "type": "string",
            "maxLength": 128,
            "description": "आपका अपना पहचानकर्ता, आपके द्वारा भेजी गई आइडेम्पोटेंसी कुंजी।"
          },
          "event_category": {
            "type": "string",
            "enum": [
              "auth",
              "session",
              "gameplay",
              "bonus",
              "affiliate",
              "payment",
              "dispute",
              "security",
              "responsible_gambling",
              "custom"
            ],
            "description": "इवेंट श्रेणी।"
          },
          "action_type": {
            "type": "string",
            "maxLength": 128,
            "description": "श्रेणी के भीतर क्या हुआ, जैसा कि आपने भेजा था।"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब इवेंट आपकी ओर से हुआ था।"
          },
          "received_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने इवेंट को कब स्वीकार किया।"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACCEPTED",
              "APPROVED",
              "IN_REVIEW",
              "DECLINED"
            ],
            "description": "`ACCEPTED`: संग्रहीत, किसी भी मिलान किए गए नियम ने इसकी स्थिति नहीं बदली (अधिकांश इवेंट के लिए सामान्य उत्तर, और सैंडबॉक्स एप्लिकेशन में हमेशा उत्तर, जहां कोई नियम नहीं चलते हैं)। `APPROVED`: एक नियम का मिलान हुआ और स्कोर आपके समीक्षा थ्रेशोल्ड के तहत रहा। `IN_REVIEW`: एक नियम ने स्कोर को समीक्षा थ्रेशोल्ड से अधिक कर दिया या स्थिति सेट कर दी। `DECLINED`: एक नियम ने इसे अस्वीकृत कर दिया या स्कोर आपके अस्वीकृति थ्रेशोल्ड को पार कर गया।"
          },
          "score": {
            "type": "integer",
            "description": "संचित नियम स्कोर। 0 से शुरू होता है; नियम की `add_score` कार्रवाइयां इसे बदलती हैं (ऋणात्मक डेल्टा अनुमत हैं)।"
          },
          "subject_vendor_data": {
            "type": "string",
            "maxLength": 255,
            "description": "इवेंट का `subject.vendor_data`: उपयोगकर्ता या कंपनी के लिए आपकी id।"
          },
          "subject_entity_type": {
            "type": "string",
            "description": "`individual` या `company`: `subject_vendor_data` किस प्रकार के विषय का नाम निर्दिष्ट करता है।",
            "example": "individual"
          },
          "subject_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "उस उपयोगकर्ता (व्यक्ति) या कंपनी का UUID जिससे इवेंट संबद्ध हुआ, या वह रिकॉर्ड अब मौजूद न होने पर null।"
          },
          "counterparty_vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "P2P इवेंट का अन्य पक्ष (`payload.counterparty_vendor_data` से प्रमोट किया गया)।",
            "maxLength": 255
          },
          "session_id": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट के साथ भेजा गया `session.session_id`।",
            "maxLength": 255
          },
          "device_fingerprint": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट के साथ भेजा गया `device_context.fingerprint`।",
            "maxLength": 255
          },
          "ip_address": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट का IP पता। सर्वर लेन पर यह `device_context.network_context.ip_address` होता है जैसा आपने भेजा था; डिवाइस लेन पर यह अनुरोध का IP होता है।",
            "maxLength": 64
          },
          "ip_country": {
            "type": "string",
            "nullable": true,
            "description": "IP संवर्धन से `ip_address` का देश कोड, या पता संवर्धित न होने पर null (अनुपलब्ध, निजी, या कम मूल्य वाला टेलीमेट्री जिसका पता पहले से ज्ञात नहीं था)।",
            "example": "ES"
          },
          "amount": {
            "type": "string",
            "nullable": true,
            "description": "18 दशमलव स्थानों के साथ दशमलव स्ट्रिंग के रूप में राशि, इसी क्रम में `transaction_context.amount`, `payload.amount` या `payload.stake_amount` से।",
            "example": "250.000000000000000000"
          },
          "currency": {
            "type": "string",
            "nullable": true,
            "description": "`transaction_context.currency` या `payload.currency` से प्राप्त मुद्रा।",
            "maxLength": 10
          },
          "game_id": {
            "type": "string",
            "nullable": true,
            "description": "`payload.game_id` से प्रमोट किया गया।",
            "maxLength": 128
          },
          "round_id": {
            "type": "string",
            "nullable": true,
            "description": "`payload.round_id` से प्रमोट किया गया।",
            "maxLength": 128
          },
          "bonus_id": {
            "type": "string",
            "nullable": true,
            "description": "`payload.bonus_id` से प्रमोट किया गया।",
            "maxLength": 128
          },
          "affiliate_code": {
            "type": "string",
            "nullable": true,
            "description": "`payload.affiliate_code` से प्रमोट किया गया।",
            "maxLength": 128
          },
          "payment_reference_id": {
            "type": "string",
            "nullable": true,
            "description": "`transaction_context.payment_reference_id` या `payload.payment_reference_id` से भुगतान संदर्भ।",
            "maxLength": 255
          },
          "retention_class": {
            "type": "string",
            "enum": [
              "low_value",
              "standard",
              "risk_relevant",
              "monetary_or_compliance"
            ],
            "description": "रिटेंशन क्लास। भुगतान और विवाद इवेंट `monetary_or_compliance` हैं; सुरक्षा और ज़िम्मेदार-जुआ इवेंट `risk_relevant` हैं; `session.page_view`, `session.sdk_heartbeat`, `session.sdk_loaded`, `session.device_seen`, `session.bot_signal_observed`, `bonus.promotion_viewed` और `affiliate.referral_clicked` `low_value` हैं; बाकी सब कुछ `standard` है। जिस इवेंट से कोई सक्रिय नियम मेल खाता है, उसे `risk_relevant` में प्रमोट किया जाता है (कभी डिमोट नहीं किया जाता)।"
          },
          "rules_matched_count": {
            "type": "integer",
            "minimum": 0,
            "description": "इवेंट से मेल खाने वाले नियमों की संख्या, जिसमें `TEST` मोड के नियम शामिल हैं (जो साक्ष्य रिकॉर्ड करते हैं लेकिन कोई कार्रवाई लागू नहीं करते हैं)।"
          },
          "correlation_pending": {
            "type": "boolean",
            "description": "`true` जब तक इस इवेंट के लिए कोई एसिंक्रोनस नियम (क्रॉस-सब्जेक्ट सहसंबंध, या 24 घंटे से अधिक का अनुक्रम) चलना बाकी हो। यह कुछ मिनटों के भीतर हल हो जाता है और `status`, `score` तथा `rules_matched_count` उसी स्थान पर अपडेट हो जाते हैं।"
          },
          "is_droppable": {
            "type": "boolean",
            "description": "क्या बैकप्रेशर के तहत SDK इस प्रकार के इवेंट को ड्रॉप कर सकता है। प्रत्येक `security`, `payment`, `dispute` और `responsible_gambling` इवेंट के लिए और `gameplay.bet_placed`, `gameplay.bet_settled` तथा `gameplay.p2p_settlement` के लिए `false`।"
          }
        }
      },
      "MonitoringEventDetail": {
        "description": "अपने पूर्ण लिफ़ाफ़े, संवर्धन और नियम साक्ष्य के साथ एक निगरानी इवेंट। `MonitoringEvent` का प्रत्येक फ़ील्ड और नीचे दिए गए फ़ील्ड।",
        "allOf": [
          {
            "$ref": "#/components/schemas/MonitoringEvent"
          },
          {
            "type": "object",
            "required": [
              "payload",
              "custom_values",
              "device_context",
              "field_sources",
              "session_sequence",
              "table_id",
              "hand_id",
              "match_id",
              "market_id",
              "side",
              "role",
              "net_result_amount",
              "payment_fingerprint",
              "instrument_reference_hash",
              "withdrawal_address_hash",
              "dispute_id",
              "chargeback_id",
              "changed_field",
              "identity_match_ref",
              "schema_version",
              "expires_at",
              "rules_evaluated_count",
              "rule_runs",
              "ip_enrichment",
              "subject_profile",
              "tags"
            ],
            "properties": {
              "payload": {
                "type": "object",
                "additionalProperties": true,
                "description": "वे श्रेणी फ़ील्ड जो आपने `payload` में भेजे हैं।"
              },
              "custom_values": {
                "type": "object",
                "additionalProperties": true,
                "description": "आपके द्वारा भेजे गए स्केलर `custom_values`। Didit `vpn_or_proxy_detected: true` या `is_data_center: true` जोड़ता है जब IP संवर्धन पते को फ़्लैग करता है और आपने उन्हें सेट नहीं किया है।"
              },
              "device_context": {
                "type": "object",
                "additionalProperties": true,
                "description": "स्टोर किया गया डिवाइस संदर्भ: आपका `device_context` (भेजे जाने पर `fingerprint`, `persistent_device_id` और `bot_score` सहित), जिसमें आपके द्वारा खाली छोड़ी गई कुंजियों के लिए IP एनरिचमेंट (`ip_country`, `ip_country_code`, `ip_city`, `asn_number`, `asn_organization`, `is_vpn_or_tor`, `is_data_center`, `proxy_type`, `connection_type`) द्वारा `network_context` को पूरा किया गया है।"
              },
              "field_sources": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "enum": [
                    "customer",
                    "sdk",
                    "server"
                  ]
                },
                "description": "मूल स्रोत (provenance) का फ़ील्ड पथ: `customer` (आपके बैकएंड द्वारा भेजा गया), `sdk` (डिवाइस लेन के माध्यम से भेजा गया) या `server` (Didit द्वारा व्युत्पन्न, जैसे कि `received_at` और संवर्धित नेटवर्क फ़ील्ड)। किसी मिलान पर कार्रवाई करने से पहले इसे जांचें।"
              },
              "session_sequence": {
                "type": "integer",
                "format": "int64",
                "nullable": true,
                "description": "इवेंट के साथ भेजा गया `session.sequence`।"
              },
              "table_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.table_id` से प्रमोट किया गया।",
                "maxLength": 128
              },
              "hand_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.hand_id` से प्रमोट किया गया।",
                "maxLength": 128
              },
              "match_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.match_id` से प्रमोट किया गया।",
                "maxLength": 128
              },
              "market_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.market_id` से प्रमोट किया गया।",
                "maxLength": 128
              },
              "side": {
                "type": "string",
                "nullable": true,
                "description": "`payload.side` से प्रमोट किया गया।",
                "maxLength": 64
              },
              "role": {
                "type": "string",
                "nullable": true,
                "description": "`payload.role` से प्रमोट किया गया।",
                "maxLength": 64
              },
              "net_result_amount": {
                "type": "string",
                "nullable": true,
                "description": "`payload.net_result_amount` से प्रमोट किया गया, 18 दशमलव स्थानों वाली दशमलव स्ट्रिंग के रूप में।",
                "example": "-120.000000000000000000"
              },
              "payment_fingerprint": {
                "type": "string",
                "nullable": true,
                "description": "`payload.payment_fingerprint` से प्रमोट किया गया।",
                "maxLength": 255
              },
              "instrument_reference_hash": {
                "type": "string",
                "nullable": true,
                "description": "`payload.instrument_reference_hash` से प्रमोट किया गया।",
                "maxLength": 255
              },
              "withdrawal_address_hash": {
                "type": "string",
                "nullable": true,
                "description": "`payload.withdrawal_address_hash` (या `payload.destination_reference_hash`) से प्रमोट किया गया।",
                "maxLength": 255
              },
              "dispute_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.dispute_id` से प्रमोट किया गया।",
                "maxLength": 255
              },
              "chargeback_id": {
                "type": "string",
                "nullable": true,
                "description": "`payload.chargeback_id` से प्रमोट किया गया।",
                "maxLength": 255
              },
              "changed_field": {
                "type": "string",
                "nullable": true,
                "description": "`payload.changed_field` से प्रमोट किया गया (सुरक्षा परिवर्तन इवेंट)।",
                "maxLength": 128
              },
              "identity_match_ref": {
                "type": "string",
                "nullable": true,
                "description": "`payload.identity_match_ref` से प्रमोट किया गया (जिम्मेदार-जुआ रजिस्ट्री मिलान)।",
                "maxLength": 255
              },
              "schema_version": {
                "type": "integer",
                "description": "इवेंट एनवेलप स्कीमा का संस्करण। वर्तमान में `1`।",
                "example": 1
              },
              "expires_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब इवेंट अपनी प्रतिधारण श्रेणी के तहत समाप्त हो जाता है और हटा दिया जाता है: `occurred_at` और साथ में श्रेणी अवधि (डिफ़ॉल्ट रूप से 14, 30 या 90 दिन, प्रति एप्लिकेशन समायोज्य)। `monetary_or_compliance` इवेंट के लिए Null, जो लेन-देन प्रतिधारण का पालन करते हैं।"
              },
              "rules_evaluated_count": {
                "type": "integer",
                "minimum": 0,
                "description": "इस इवेंट के लिए मूल्यांकित इवेंट नियमों की संख्या।"
              },
              "rule_runs": {
                "type": "array",
                "description": "प्रत्येक नियम जो इवेंट से मेल खाता है, सबसे नया पहले।",
                "items": {
                  "$ref": "#/components/schemas/MonitoringEventRuleRun"
                }
              },
              "ip_enrichment": {
                "type": "object",
                "nullable": true,
                "description": "इवेंट के IP पते का संवर्धन, या पता संवर्धित न होने पर null। देखें [IP संवर्धन](https://docs.didit.me/hi/transaction-monitoring/ip-enrichment)।",
                "properties": {
                  "ip_country_code": {
                    "type": "string",
                    "nullable": true,
                    "description": "पते का देश कोड।"
                  },
                  "ip_city": {
                    "type": "string",
                    "nullable": true,
                    "description": "पते का शहर।"
                  },
                  "asn_number": {
                    "type": "integer",
                    "nullable": true,
                    "description": "ऑटोनोमस सिस्टम नंबर।"
                  },
                  "asn_organization": {
                    "type": "string",
                    "nullable": true,
                    "description": "संगठन जो ऑटोनॉमस सिस्टम को संचालित करता है।"
                  },
                  "is_vpn_or_tor": {
                    "type": "boolean",
                    "description": "क्या पता एक ज्ञात VPN या Tor निकास है।"
                  },
                  "is_data_center": {
                    "type": "boolean",
                    "description": "क्या पता किसी होस्टिंग या डेटा-सेंटर नेटवर्क से संबंधित है।"
                  },
                  "proxy_type": {
                    "type": "string",
                    "nullable": true,
                    "description": "अस्पष्ट स्ट्रिंग के रूप में पते का प्रॉक्सी वर्गीकरण, या null।"
                  },
                  "last_enriched_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true,
                    "description": "जब पते को अंतिम बार समृद्ध किया गया था।"
                  }
                },
                "required": [
                  "ip_country_code",
                  "ip_city",
                  "asn_number",
                  "asn_organization",
                  "is_vpn_or_tor",
                  "is_data_center",
                  "proxy_type",
                  "last_enriched_at"
                ]
              },
              "subject_profile": {
                "type": "object",
                "nullable": true,
                "description": "विषय के कैश्ड ईमेल और फ़ोन जोखिम संकेत, या विषय के लिए कोई प्रोफ़ाइल मौजूद न होने पर null।",
                "properties": {
                  "email_risk_score": {
                    "type": "integer",
                    "nullable": true,
                    "description": "ईमेल जोखिम स्कोर।"
                  },
                  "email_deliverability": {
                    "type": "string",
                    "nullable": true,
                    "description": "ईमेल डिलिवरेबिलिटी निर्णय।"
                  },
                  "email_is_disposable": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "क्या ईमेल पता डिस्पोज़ेबल है।"
                  },
                  "email_is_breached": {
                    "type": "boolean",
                    "nullable": true,
                    "description": "क्या ईमेल पता ज्ञात डेटा उल्लंघनों में दिखाई देता है।"
                  },
                  "email_social_count": {
                    "type": "integer",
                    "nullable": true,
                    "description": "ईमेल पते से जुड़े ऑनलाइन खातों की संख्या।"
                  },
                  "email_social_providers": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "उन ऑनलाइन सेवाओं के नाम जहाँ ईमेल पते से जुड़ा खाता मिला था।"
                  },
                  "phone_risk_score": {
                    "type": "integer",
                    "nullable": true,
                    "description": "फ़ोन जोखिम स्कोर।"
                  },
                  "phone_line_type": {
                    "type": "string",
                    "nullable": true,
                    "description": "फ़ोन लाइन का प्रकार।"
                  },
                  "phone_carrier": {
                    "type": "string",
                    "nullable": true,
                    "description": "फ़ोन कैरियर का नाम।"
                  },
                  "phone_social_count": {
                    "type": "integer",
                    "nullable": true,
                    "description": "फ़ोन नंबर से जुड़े ऑनलाइन खातों की संख्या।"
                  },
                  "phone_social_providers": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "उन ऑनलाइन सेवाओं के नाम जहाँ फ़ोन नंबर से जुड़ा खाता मिला था।"
                  },
                  "source_provider": {
                    "type": "string",
                    "nullable": true,
                    "description": "प्रोफ़ाइल के स्रोत का अपारदर्शी पहचानकर्ता।"
                  },
                  "last_enriched_at": {
                    "type": "string",
                    "format": "date-time",
                    "nullable": true,
                    "description": "प्रोफ़ाइल अंतिम बार कब रीफ़्रेश की गई थी।"
                  }
                },
                "required": [
                  "email_risk_score",
                  "email_deliverability",
                  "email_is_disposable",
                  "email_is_breached",
                  "email_social_count",
                  "email_social_providers",
                  "phone_risk_score",
                  "phone_line_type",
                  "phone_carrier",
                  "phone_social_count",
                  "phone_social_providers",
                  "source_provider",
                  "last_enriched_at"
                ]
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "इवेंट से जुड़े टैग्स के नाम (नियम `add_tags` कार्रवाइयाँ)।"
              }
            }
          }
        ]
      },
      "MonitoringEventRuleRun": {
        "type": "object",
        "properties": {
          "rule_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "लेन-देन निगरानी नियम का UUID।"
          },
          "rule_title": {
            "type": "string",
            "description": "नियम का शीर्षक।"
          },
          "library_key": {
            "type": "string",
            "nullable": true,
            "description": "जब नियम को नियम लाइब्रेरी से इंस्टॉल किया गया था, तब लाइब्रेरी कुंजी, अन्यथा null।"
          },
          "matched": {
            "type": "boolean",
            "description": "हमेशा `true`: केवल मिलान वाले रन ही रिकॉर्ड किए जाते हैं।"
          },
          "mode": {
            "type": "string",
            "enum": [
              "ACTIVE",
              "TEST"
            ],
            "description": "नियम के चलने के समय का मोड। एक `TEST` रन साक्ष्य रिकॉर्ड करता है लेकिन कोई कार्रवाई लागू नहीं करता है।"
          },
          "is_async": {
            "type": "boolean",
            "description": "`true` जब रन इंगेस्ट अनुरोध के बजाय एसिंक्रोनस सहसंबंध पास से आया हो।"
          },
          "severity": {
            "type": "string",
            "nullable": true,
            "enum": [
              "UNKNOWN",
              "LOW",
              "MEDIUM",
              "HIGH",
              "CRITICAL",
              null
            ],
            "description": "नियम की गंभीरता। `TEST` निष्पादन और बिना गंभीरता वाले नियमों के लिए Null।"
          },
          "score_delta": {
            "type": "integer",
            "description": "इस रन ने इवेंट के स्कोर को कितना बदल दिया (`TEST` रनों के लिए 0)।"
          },
          "action_summary": {
            "type": "string",
            "nullable": true,
            "description": "लागू की गई कार्रवाइयों का संक्षिप्त सारांश, उदाहरण के लिए `score +40; add_tag:VPN_LOGIN`। कुछ भी लागू न होने पर Null।"
          },
          "matched_payload": {
            "type": "array",
            "description": "वे शर्तें और एग्रीगेशन जो मेल खाती हैं। शर्त प्रविष्टियों में `field`, `operator`, `expected_value`, `current_value`, `matched`, `group_index`, `group_logic` और `field_source` (`server`, `sdk` या `customer`) शामिल होते हैं; एग्रीगेशन प्रविष्टियों में `metric`, `field`, `operator`, `expected_value`, `computed_value`, `window`, `filters`, `matched` और `sample_references` शामिल होते हैं।",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "नियम रन कब रिकॉर्ड किया गया था।"
          }
        },
        "required": [
          "rule_uuid",
          "rule_title",
          "library_key",
          "matched",
          "mode",
          "is_async",
          "severity",
          "score_delta",
          "action_summary",
          "matched_payload",
          "created_at"
        ]
      },
      "MonitoringEventPage": {
        "type": "object",
        "description": "निगरानी इवेंट्स का एक पेज, सबसे नया `occurred_at` पहले।",
        "required": [
          "count",
          "next",
          "previous",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "description": "मिलान वाले इवेंट्स की संख्या, 100 तक सटीक और उससे अधिक होने पर 100 पर सीमित। इससे पेज संख्या की गणना न करें; जब तक यह नल न हो जाए तब तक `next` का अनुसरण करें।"
          },
          "next": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "अगले पेज का URL, या अंतिम पेज पर null।"
          },
          "previous": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "पिछले पेज का URL, या पहले पेज पर null।"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitoringEvent"
            }
          }
        }
      },
      "MonitoringEventCreateRequest": {
        "type": "object",
        "description": "इवेंट एनवेलप, प्रत्येक श्रेणी के लिए समान। camelCase उपनाम स्वीकार किए जाते हैं: `eventId`, `eventCategory` (या `category`), `actionType`, `occurredAt`, `timeZone` (या `zoneId`), `deviceContext` (या `device`), `transactionContext`, `customValues` (या `props`); `subject` के अंदर: `vendorData`, `entityType`, `fullName`; `session` के अंदर: `sessionId`, `pageUrl`; `transaction_context` के अंदर: `paymentReferenceId`।",
        "required": [
          "event_id",
          "event_category",
          "action_type",
          "occurred_at",
          "subject"
        ],
        "properties": {
          "event_id": {
            "type": "string",
            "maxLength": 128,
            "description": "इवेंट के लिए आपका पहचानकर्ता, प्रति एप्लिकेशन अद्वितीय। यह आइडेम्पोटेंसी कुंजी है: इसके तहत समान `event_category`, `action_type`, `occurred_at`, `subject.vendor_data` और `payload` को फिर से भेजना एक रीप्ले है, कुछ भी भिन्न होना एक विरोधाभास (conflict) है।",
            "example": "login-2026-10-17-000001"
          },
          "event_category": {
            "type": "string",
            "enum": [
              "auth",
              "session",
              "gameplay",
              "bonus",
              "affiliate",
              "payment",
              "dispute",
              "security",
              "responsible_gambling",
              "custom"
            ],
            "description": "इवेंट श्रेणी।",
            "example": "auth"
          },
          "action_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128,
            "description": "श्रेणी के भीतर क्या हुआ। ओपन वोकैब्युलरी; [Event ingestion](https://docs.didit.me/hi/transaction-monitoring/events) में सूचीबद्ध प्रबंधित कार्रवाइयां (उदाहरण के लिए `login`, `deposit_completed`, `chargeback_opened`) टाइप्ड सत्यापन और प्रबंधित नियम फ़ील्ड अनलॉक करती हैं। शुरुआत और अंत के व्हाइटस्पेस को ट्रिम कर दिया जाता है।",
            "example": "login"
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब इवेंट आपकी ओर से हुआ था, ISO 8601 (ऑफ़सेट के बिना किसी मान को UTC माना जाता है)। अतीत में 7 दिनों से अधिक और भविष्य में 5 मिनट से अधिक नहीं होना चाहिए।",
            "example": "2026-10-17T09:15:02.481Z"
          },
          "time_zone": {
            "type": "string",
            "nullable": true,
            "maxLength": 64,
            "description": "आपकी ओर से घटना का टाइम ज़ोन, उदाहरण के लिए `Europe/Madrid`। इवेंट के साथ संग्रहीत किया जाता है; रीड endpoint द्वारा वापस नहीं किया जाता।"
          },
          "subject": {
            "type": "object",
            "description": "वह उपयोगकर्ता या कंपनी जिससे यह इवेंट संबंधित है। यह आपके एप्लिकेशन में इस `vendor_data` वाले उपयोगकर्ता (या कंपनी) से मेल खाता है; यदि कोई मौजूद नहीं है तो एक बनाया जाता है।",
            "required": [
              "vendor_data"
            ],
            "properties": {
              "vendor_data": {
                "type": "string",
                "minLength": 1,
                "maxLength": 255,
                "description": "विषय के लिए आपकी id।",
                "example": "user-42"
              },
              "entity_type": {
                "type": "string",
                "maxLength": 32,
                "default": "individual",
                "description": "`company` सब्जेक्ट को एक कंपनी के रूप में रिज़ॉल्व करता है; कोई अन्य मान (डिफ़ॉल्ट `individual`) इसे एक व्यक्ति के रूप में रिज़ॉल्व करता है। एक ही `vendor_data` दोनों में से एक-एक को नामित कर सकता है।",
                "example": "individual"
              },
              "full_name": {
                "type": "string",
                "nullable": true,
                "maxLength": 512,
                "description": "डिस्प्ले नाम, केवल तभी उपयोग किया जाता है जब यह इवेंट उपयोगकर्ता या कंपनी बनाता है।"
              },
              "email": {
                "type": "string",
                "format": "email",
                "nullable": true,
                "description": "ईमेल पते के रूप में सत्यापित; इवेंट पर संग्रहीत नहीं।"
              },
              "phone": {
                "type": "string",
                "nullable": true,
                "maxLength": 32,
                "description": "सत्यापित; इवेंट पर संग्रहीत नहीं।"
              },
              "country": {
                "type": "string",
                "nullable": true,
                "maxLength": 3,
                "description": "सत्यापित; इवेंट पर संग्रहीत नहीं।"
              }
            }
          },
          "business": {
            "type": "object",
            "description": "वह व्यवसाय जिससे इवेंट संबंधित है, जब यह विषय से भिन्न होता है। केवल `vendor_data` पढ़ा जाता है।",
            "additionalProperties": true,
            "properties": {
              "vendor_data": {
                "type": "string",
                "maxLength": 255,
                "description": "व्यवसाय के लिए आपकी id। `business_vendor_data` के रूप में फ़िल्टर करने योग्य।",
                "example": "merchant-7"
              }
            }
          },
          "session": {
            "type": "object",
            "description": "इवेंट के लिए आपका सत्र संदर्भ।",
            "properties": {
              "session_id": {
                "type": "string",
                "nullable": true,
                "maxLength": 255,
                "description": "आपका सत्र पहचानकर्ता। फ़िल्टर करने योग्य और `session_id` के रूप में वापस किया गया।"
              },
              "sequence": {
                "type": "integer",
                "nullable": true,
                "description": "सत्र के भीतर इवेंट की स्थिति। `session_sequence` के रूप में लौटाया गया।"
              },
              "page_url": {
                "type": "string",
                "nullable": true,
                "maxLength": 2048,
                "description": "सत्यापित; इवेंट पर संग्रहीत नहीं।"
              },
              "referrer": {
                "type": "string",
                "nullable": true,
                "maxLength": 2048,
                "description": "सत्यापित; इवेंट पर संग्रहीत नहीं।"
              }
            }
          },
          "device_context": {
            "type": "object",
            "additionalProperties": true,
            "description": "डिवाइस और नेटवर्क संदर्भ, जैसा भेजा गया था वैसे ही संग्रहीत और `GET /v3/events/{event_uuid}/` द्वारा लौटाया गया। इस सर्वर लेन पर Didit अंतिम उपयोगकर्ता का कनेक्शन नहीं देखता है, इसलिए नियमों द्वारा संवर्धित और उपयोग किया जाने वाला IP आपके द्वारा भेजा गया `network_context.ip_address` है।",
            "properties": {
              "fingerprint": {
                "type": "string",
                "maxLength": 255,
                "description": "डिवाइस फ़िंगरप्रिंट। `device_fingerprint` के रूप में फ़िल्टर करने योग्य।"
              },
              "persistent_device_id": {
                "type": "string",
                "maxLength": 255,
                "description": "आपका स्थायी डिवाइस पहचानकर्ता।"
              },
              "bot_score": {
                "type": "integer",
                "description": "आपकी अपनी पहचान प्रणाली से प्राप्त बॉट स्कोर, एक पूर्णांक (integer) के रूप में।"
              },
              "network_context": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "ip_address": {
                    "type": "string",
                    "maxLength": 64,
                    "description": "अंतिम उपयोगकर्ता का IP पता। प्रत्येक विशिष्ट सार्वजनिक पते को एक बार समृद्ध किया जाता है।",
                    "example": "203.0.113.42"
                  }
                }
              }
            }
          },
          "transaction_context": {
            "type": "object",
            "description": "धन संबंधी संदर्भ। यहाँ गैर-रिक्त मान कार्रवाई की आवश्यक payload कुंजियों को भी संतुष्ट करते हैं।",
            "properties": {
              "amount": {
                "type": "string",
                "nullable": true,
                "description": "दशमलव स्ट्रिंग के रूप में राशि (एक संख्या भी स्वीकार की जाती है)।",
                "example": "1000.00"
              },
              "currency": {
                "type": "string",
                "nullable": true,
                "maxLength": 10,
                "description": "मुद्रा कोड।"
              },
              "direction": {
                "type": "string",
                "nullable": true,
                "maxLength": 16,
                "description": "धन के संचलन की दिशा, उदाहरण के लिए `inbound` या `outbound`।"
              },
              "payment_reference_id": {
                "type": "string",
                "nullable": true,
                "maxLength": 255,
                "description": "आपका भुगतान संदर्भ। `payment_reference_id` के रूप में फ़िल्टर करने योग्य।"
              }
            }
          },
          "payload": {
            "type": "object",
            "additionalProperties": true,
            "description": "श्रेणी के डोमेन फ़ील्ड, JSON-एन्कोड होने के बाद अधिकतम 16384 बाइट्स। कुछ कार्रवाइयों के लिए कुंजियों की आवश्यकता होती है (`payload` या `transaction_context` में): `gameplay.p2p_settlement` के लिए `game_id`, `counterparty_vendor_data`, `stake_amount`, `net_result_amount`, `role` और `hand_id`, `round_id`, `match_id` में से एक आवश्यक है; `gameplay.bet_placed` और `gameplay.bet_settled` के लिए `game_id` आवश्यक है; `payment.deposit_initiated`, `payment.deposit_completed`, `payment.withdrawal_requested` और `payment.withdrawal_completed` के लिए `payment_reference_id`, `amount`, `currency`, `payment_method`, `status` आवश्यक हैं; `payment.withdrawal_address_changed` के लिए `withdrawal_address_hash` आवश्यक है; `dispute.chargeback_opened`, `dispute.chargeback_won` और `dispute.chargeback_lost` के लिए `payment_reference_id` और `dispute_id`, `chargeback_id` में से एक आवश्यक है; `session.bot_signal_observed` के लिए `telemetry_schema_version` और `bot_score`, `actions_per_minute`, `timing_variance_ms`, `pointer_entropy`, `keystroke_entropy`, `reaction_time_ms_p50` में से एक आवश्यक है; `responsible_gambling.self_exclusion_match` के लिए `registry_source`, `exclusion_status`, `identity_match_ref` आवश्यक हैं। `_changed` पर समाप्त होने वाली प्रत्येक `security` कार्रवाई के लिए `changed_field`, साथ ही `previous_reference_hash` या `new_reference_hash` आवश्यक है जब फ़ील्ड `password`, `mfa_method`, `mfa`, `email`, `phone`, `withdrawal_address`, `payout_method` या `api_key` हो। हैश और संदर्भ भेजें, कभी भी कार्ड नंबर, पूर्ण निकासी पता, पासवर्ड हैश या MFA सीक्रेट न भेजें।"
          },
          "custom_values": {
            "type": "object",
            "description": "आपकी अपनी अधिकतम 100 कुंजियाँ, जिन्हें नियमों से `custom_values.<key>` के रूप में संदर्भित किया जा सकता है। मान अदिश (string, number, boolean या null) होने चाहिए; नेस्टेड ऑब्जेक्ट और ऐरे अस्वीकार कर दिए जाते हैं।",
            "additionalProperties": {
              "nullable": true,
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          }
        },
        "example": {
          "event_id": "login-2026-10-17-000001",
          "event_category": "auth",
          "action_type": "login",
          "occurred_at": "2026-10-17T09:15:02.481Z",
          "time_zone": "Europe/Madrid",
          "subject": {
            "vendor_data": "user-42",
            "entity_type": "individual"
          },
          "session": {
            "session_id": "web-session-abc",
            "sequence": 142
          },
          "device_context": {
            "fingerprint": "fp-a8c1",
            "network_context": {
              "ip_address": "203.0.113.42"
            }
          },
          "payload": {
            "method": "password"
          },
          "custom_values": {
            "vip_tier": "gold"
          }
        }
      },
      "MonitoringEventIngestResult": {
        "type": "object",
        "description": "एक इवेंट को इनजेस्ट करने का परिणाम। नए इवेंट और आइडेम्पोटेंट रीप्ले दोनों के लिए समान संरचना लौटाई जाती है।",
        "required": [
          "event_uuid",
          "event_id",
          "status",
          "score",
          "rules_evaluated_count",
          "rules_matched_count",
          "correlation_pending",
          "retention_class",
          "expires_at",
          "idempotent_replay",
          "rule_matches"
        ],
        "properties": {
          "event_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "संग्रहीत इवेंट का Didit पहचानकर्ता।"
          },
          "event_id": {
            "type": "string",
            "description": "आपकी `event_id`।"
          },
          "status": {
            "type": "string",
            "enum": [
              "ACCEPTED",
              "APPROVED",
              "IN_REVIEW",
              "DECLINED"
            ],
            "description": "रीयल-टाइम नियम चलने के बाद की स्थिति। `MonitoringEvent.status` देखें।"
          },
          "score": {
            "type": "integer",
            "description": "रीयल-टाइम नियम चलने के बाद का स्कोर।"
          },
          "rules_evaluated_count": {
            "type": "integer",
            "minimum": 0,
            "description": "अनुरोध में मूल्यांकित इवेंट नियमों की संख्या। सैंडबॉक्स एप्लिकेशन में 0, जहाँ कोई नियम नहीं चलता।"
          },
          "rules_matched_count": {
            "type": "integer",
            "minimum": 0,
            "description": "मेल खाने वाले नियमों की संख्या, जिसमें `TEST` मोड के नियम शामिल हैं।"
          },
          "correlation_pending": {
            "type": "boolean",
            "description": "`true` जब किसी एसिंक्रोनस नियम को अभी चलना बाकी हो। अंतिम `status` और `score` के लिए कुछ मिनट बाद `GET /v3/events/{event_uuid}/` पढ़ें।"
          },
          "retention_class": {
            "type": "string",
            "enum": [
              "low_value",
              "standard",
              "risk_relevant",
              "monetary_or_compliance"
            ],
            "description": "रिटेंशन क्लास, मेल खाने वाले नियम द्वारा किसी भी प्रमोशन के बाद।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब इवेंट अपनी प्रतिधारण श्रेणी के तहत समाप्त हो जाता है और हटा दिया जाता है। `monetary_or_compliance` (भुगतान और विवाद) इवेंट के लिए Null।"
          },
          "idempotent_replay": {
            "type": "boolean",
            "description": "`true` जब इस `event_id` और समान सामग्री वाला कोई इवेंट पहले से संग्रहीत था; मान संग्रहीत इवेंट के हैं और कोई नियम दोबारा नहीं चला।"
          },
          "rule_matches": {
            "type": "array",
            "description": "वे नियम जो इवेंट से मेल खाते हैं।",
            "items": {
              "type": "object",
              "required": [
                "rule_id",
                "library_key",
                "mode",
                "is_async"
              ],
              "properties": {
                "rule_id": {
                  "type": "string",
                  "format": "uuid",
                  "description": "नियम का UUID।"
                },
                "library_key": {
                  "type": "string",
                  "nullable": true,
                  "description": "जब नियम को नियम लाइब्रेरी से इंस्टॉल किया गया था, तब लाइब्रेरी कुंजी, अन्यथा null।"
                },
                "mode": {
                  "type": "string",
                  "enum": [
                    "ACTIVE",
                    "TEST"
                  ],
                  "description": "`TEST` नियम मिलान रिकॉर्ड करते हैं लेकिन कोई कार्रवाई लागू नहीं करते हैं।"
                },
                "is_async": {
                  "type": "boolean",
                  "description": "`true` जब मिलान एसिंक्रोनस पास से आया हो।"
                }
              }
            }
          }
        }
      },
      "ComplianceList": {
        "type": "object",
        "description": "एक एप्लिकेशन की ब्लॉकलिस्ट, allowlist या कस्टम सूची।",
        "required": [
          "uuid",
          "name",
          "description",
          "list_type",
          "entry_type",
          "is_system",
          "entry_count",
          "last_entry_added_at",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "सूची पहचानकर्ता। इसे सूची और प्रविष्टि endpoint में `list_uuid` के रूप में, और `value_type: \"list\"` के साथ वर्कफ़्लो या लेन-देन नियम शर्त के मान के रूप में उपयोग करें।"
          },
          "name": {
            "type": "string",
            "maxLength": 255,
            "description": "सूची का नाम, एप्लिकेशन की सूचियों के बीच अद्वितीय।"
          },
          "description": {
            "type": "string",
            "description": "मुक्त-पाठ विवरण। सेट न होने पर खाली स्ट्रिंग।"
          },
          "list_type": {
            "type": "string",
            "enum": [
              "blocklist",
              "allowlist",
              "custom"
            ],
            "description": "`blocklist`: एक मिलान सत्र या लेन-देन को अस्वीकार कर देता है (केवल सिस्टम सूचियां, प्रति प्रविष्टि प्रकार एक)। `allowlist`: मिलान करने वाले आइटम विश्वसनीय होते हैं, उदाहरण के लिए एक फ़ेस अनुमति सूची डुप्लिकेट-फ़ेस कार्रवाई को छोड़ देती है; कभी भी ब्लॉकलिस्ट मिलान को ओवरराइड नहीं करती। `custom`: वर्कफ़्लो और लेन-देन नियम शर्तों में उपयोग किया जाता है (`value_type: \"list\"`)।"
          },
          "entry_type": {
            "type": "string",
            "enum": [
              "face",
              "document",
              "phone",
              "email",
              "ip_address",
              "device_fingerprint",
              "wallet_address",
              "bank_account",
              "country",
              "user",
              "business",
              "key"
            ],
            "description": "सूची में क्या समाहित है: `face`, `document` (दस्तावेज़ संख्या), `phone`, `email`, `ip_address` (IP पता या CIDR रेंज), `device_fingerprint`, `wallet_address`, `bank_account`, `country` (ISO 3166-1 alpha-3), `user` या `business` (आपका `vendor_data`), या `key` (कोई भी स्ट्रिंग)। यह तय करता है कि प्रविष्टि मानों को कैसे मान्य और मिलान किया जाता है।"
          },
          "is_system": {
            "type": "boolean",
            "description": "Didit द्वारा प्रदान की जाने वाली सूचियों के लिए `true`: प्रत्येक प्रविष्टि प्रकार (`face`, `document`, `phone`, `email`, `ip_address`, `device_fingerprint`, `wallet_address`, `bank_account`, `user`, `business`) के लिए एक ब्लॉकलिस्ट, **High Risk Countries** कस्टम सूची, और सिस्टम अनुमत सूचियाँ। सिस्टम सूचियों का नाम बदला, संपादित या हटाया नहीं जा सकता; आप उनकी प्रविष्टियाँ जोड़ और हटा सकते हैं।"
          },
          "entry_count": {
            "type": "integer",
            "minimum": 0,
            "description": "वर्तमान में सूची में प्रविष्टियों की संख्या।"
          },
          "last_entry_added_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "नवीनतम वर्तमान प्रविष्टि कब जोड़ी गई थी। खाली सूची के लिए `null`।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "सूची कब बनाई गई थी।"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "सूची अंतिम बार कब अपडेट की गई थी।"
          }
        }
      },
      "ComplianceListEntry": {
        "type": "object",
        "description": "सूची में एक मान।",
        "required": [
          "uuid",
          "value",
          "display_label",
          "comment",
          "added_by",
          "reference_session_id",
          "reference_session_number",
          "reference_session_type",
          "reference_object_uuid",
          "metadata",
          "created_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "प्रविष्टि पहचानकर्ता। ‘सूची प्रविष्टि हटाएँ’ में इसे `entry_uuid` के रूप में उपयोग करें।"
          },
          "value": {
            "type": "string",
            "description": "सूचीबद्ध मान: E.164 में एक फ़ोन नंबर, एक ईमेल पता, एक दस्तावेज़ संख्या, एक IP पता या CIDR रेंज, एक डिवाइस फ़िंगरप्रिंट, एक वॉलेट पता, एक बैंक खाता, एक ISO 3166-1 alpha-3 देश कोड, एक `vendor_data`, `key` सूची पर कोई भी स्ट्रिंग, या फ़ेस सूची पर संग्रहीत चेहरे का UUID। आपके द्वारा भेजे गए मान लोअरकेस में संग्रहीत किए जाते हैं, फ़ोन नंबरों और देश कोडों को छोड़कर। मिलान केस-इनसेंसिटिव होता है।"
          },
          "display_label": {
            "type": "string",
            "nullable": true,
            "maxLength": 512,
            "description": "मानव-पठनीय लेबल। Didit इसे किसी सत्र से ली गई प्रविष्टियों (उदाहरण के लिए धारक का नाम और दस्तावेज़ संख्या) के लिए भरता है जब आप कोई नहीं भेजते हैं।"
          },
          "comment": {
            "type": "string",
            "description": "मुक्त-पाठ नोट। सेट न होने पर खाली स्ट्रिंग।"
          },
          "added_by": {
            "type": "string",
            "nullable": true,
            "description": "प्रविष्टि किसने जोड़ी: `api` (एक API कुंजी), कंसोल उपयोगकर्ता का ईमेल पता या `console`, `system` या `migration` (Didit द्वारा बनाई गई प्रविष्टियाँ), या `rule` (एक लेन-देन या निगरानी नियम कार्रवाई)।"
          },
          "reference_session_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "सत्यापन सत्र जिससे प्रविष्टि ली गई थी। `null` जब प्रविष्टि मान द्वारा जोड़ी गई थी।"
          },
          "reference_session_number": {
            "type": "integer",
            "nullable": true,
            "description": "उस सत्र का एप्लिकेशन-स्कोप नंबर, जैसा कि कंसोल में दिखाया गया है।"
          },
          "reference_session_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "kyc",
              "kyb",
              null
            ],
            "description": "व्यक्ति सत्यापन सत्र के लिए `kyc`, व्यवसाय सत्यापन सत्र के लिए `kyb`, कोई सत्र न होने पर `null`।"
          },
          "reference_object_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "वह रिकॉर्ड जिसका प्रतिनिधित्व यह प्रविष्टि करती है: सत्र से पढ़ा गया चेहरा, दस्तावेज़, फ़ोन या ईमेल रिकॉर्ड, ‘सूची में चेहरा अपलोड करें’ द्वारा बनाया गया चेहरा, या आपके द्वारा भेजा गया UUID (उदाहरण के लिए एक लेन-देन UUID या उपयोगकर्ता की `didit_internal_id`)।"
          },
          "metadata": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "अतिरिक्त संदर्भ। Didit द्वारा सेट की गई कुंजियों (यहाँ सूचीबद्ध) को प्रविष्टि बनाते समय आपके द्वारा भेजे गए किसी भी `metadata` के साथ मर्ज करके रखता है, जो संग्रहीत रूप में लौटाया जाता है। कुछ न होने पर `null`।",
            "properties": {
              "reference_image_url": {
                "type": "string",
                "description": "चेहरे की प्रविष्टियाँ: अल्पकालिक हस्ताक्षरित URL, प्रत्येक कॉल पर फिर से जारी किया जाता है; बिना `media: read` वाली स्कोप्ड API कुंजी के लिए `null`। प्रविष्टि से संबंधित कोई छवि न होने पर अनुपस्थित।"
              },
              "front_image_url": {
                "type": "string",
                "description": "दस्तावेज़ प्रविष्टियां जिनमें दस्तावेज़ की सामने की छवि शामिल है: अल्पकालिक हस्ताक्षरित URL, प्रत्येक कॉल पर पुनः जारी किया जाता है; `media: read` के बिना स्कोप्ड API कुंजी के लिए `null`।"
              },
              "full_name": {
                "type": "string",
                "description": "सत्र से ली गई दस्तावेज़ प्रविष्टियां: धारक का पूरा नाम।"
              },
              "issuing_state": {
                "type": "string",
                "description": "सत्र से ली गई दस्तावेज़ प्रविष्टियां: ISO 3166-1 alpha-3 जारीकर्ता देश।"
              },
              "document_type": {
                "type": "string",
                "description": "सत्र से ली गई दस्तावेज़ प्रविष्टियां: दस्तावेज़ प्रकार कोड, उदाहरण के लिए `P`, `ID` या `DL`।"
              },
              "region": {
                "type": "string",
                "description": "सत्र से ली गई दस्तावेज़ प्रविष्टियां: क्षेत्रीय रूप से जारी दस्तावेज़ का जारीकर्ता राज्य या प्रांत, लागू न होने पर खाली। Add session items to the blocklist द्वारा सेट नहीं किया गया।"
              },
              "document_number": {
                "type": "string",
                "description": "सत्र से ली गई दस्तावेज़ प्रविष्टियां: दस्तावेज़ संख्या।"
              },
              "face_image_source": {
                "type": "string",
                "enum": [
                  "front_image_camera_front",
                  "back_image_camera_front"
                ],
                "description": "दस्तावेज़-कैप्चर सेल्फ़ी से ली गई चेहरे की प्रविष्टियाँ: कौन सी सेल्फ़ी। लाइवनेस चेहरों के लिए अनुपस्थित।"
              },
              "reference_node_id": {
                "type": "string",
                "nullable": true,
                "description": "दस्तावेज़-कैप्चर सेल्फ़ी से ली गई चेहरे की प्रविष्टियाँ: वह पहचान सत्यापन नोड जहाँ से सेल्फ़ी आई थी।"
              },
              "fingerprint_tier": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "persistent_id",
                  "composite_hash",
                  "legacy_fp",
                  "unknown",
                  null
                ],
                "description": "सत्र से ली गई डिवाइस फ़िंगरप्रिंट प्रविष्टियां: फ़िंगरप्रिंट कैसे प्राप्त किया गया था। `persistent_id` एक डिवाइस की पहचान करता है; `composite_hash` और `legacy_fp` को एक ही मॉडल के डिवाइसों द्वारा साझा किया जा सकता है।"
              },
              "sandbox": {
                "type": "boolean",
                "description": "सैंडबॉक्स एप्लिकेशन में अपलोड की गई चेहरा प्रविष्टि पर `true`; ऐसी प्रविष्टि किसी से मेल नहीं खाती।"
              },
              "reference_type": {
                "type": "string",
                "enum": [
                  "transaction",
                  "vendor_user",
                  "vendor_business"
                ],
                "description": "आपके द्वारा सेट किया गया: `reference_object_uuid` किस ओर इंगित करता है, ताकि कंसोल वापस उससे लिंक कर सके।"
              },
              "reference_id": {
                "type": "string",
                "description": "आपके द्वारा सेट किया गया: स्रोत रिकॉर्ड का पहचानकर्ता।"
              }
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब प्रविष्टि जोड़ी गई थी।"
          }
        }
      },
      "BlocklistedItem": {
        "type": "object",
        "description": "सत्यापन सत्र का एक ब्लॉकलिस्ट किया गया चेहरा, पहचान दस्तावेज़, फ़ोन नंबर या ईमेल पता। वे फ़ील्ड जो आइटम के `type` पर लागू नहीं होते हैं, वे `null` हैं।",
        "required": [
          "type",
          "session_id",
          "session_number",
          "blocklisted_at",
          "face_image",
          "document_type",
          "document_number",
          "front_image",
          "phone_number",
          "country_code",
          "email"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "face",
              "document",
              "phone",
              "email"
            ],
            "description": "क्या ब्लॉकलिस्ट किया गया था।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्यापन सत्र जिससे यह आइटम संबंधित है।"
          },
          "session_number": {
            "type": "integer",
            "nullable": true,
            "description": "उस सत्र का एप्लिकेशन-स्कोप नंबर, जैसा कि कंसोल में दिखाया गया है।"
          },
          "blocklisted_at": {
            "type": "string",
            "format": "date-time",
            "description": "आइटम को अंतिम बार कब ब्लॉकलिस्ट किया गया था।"
          },
          "face_image": {
            "type": "string",
            "nullable": true,
            "description": "चेहरे के आइटम: अल्पकालिक हस्ताक्षरित URL, प्रत्येक कॉल पर फिर से जारी किया जाता है; बिना `media: read` वाली स्कोप्ड API कुंजी के लिए `null`। कोई संदर्भ छवि संग्रहीत न होने पर भी `null`।"
          },
          "document_type": {
            "type": "string",
            "nullable": true,
            "description": "दस्तावेज़ आइटम: दस्तावेज़ प्रकार कोड, उदाहरण के लिए `P` (पासपोर्ट), `ID` (राष्ट्रीय पहचान पत्र), `DL` (ड्राइविंग लाइसेंस) या `RP` (निवास परमिट)।"
          },
          "document_number": {
            "type": "string",
            "nullable": true,
            "description": "दस्तावेज़ आइटम: दस्तावेज़ संख्या, या दस्तावेज़ में न होने पर व्यक्तिगत संख्या।"
          },
          "front_image": {
            "type": "string",
            "nullable": true,
            "description": "दस्तावेज़ आइटम: दस्तावेज़ की सामने की छवि, अल्पकालिक हस्ताक्षरित URL, प्रत्येक कॉल पर पुनः जारी किया जाता है; `media: read` के बिना स्कोप्ड API कुंजी के लिए `null`।"
          },
          "phone_number": {
            "type": "string",
            "nullable": true,
            "description": "फ़ोन आइटम: E.164 में फ़ोन नंबर।"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "फ़ोन आइटम: नंबर का ISO 3166-1 alpha-2 देश।"
          },
          "email": {
            "type": "string",
            "nullable": true,
            "description": "ईमेल आइटम: ईमेल पता।"
          }
        }
      },
      "TransactionNote": {
        "type": "object",
        "description": "निगरानी किए गए लेन-देन की समीक्षा टाइमलाइन पर एक नोट।",
        "required": [
          "uuid",
          "note",
          "actor_email",
          "actor_name",
          "metadata",
          "created_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "नोट पहचानकर्ता।"
          },
          "note": {
            "type": "string",
            "description": "सादे टेक्स्ट वाले नोट का मुख्य भाग।"
          },
          "actor_email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "description": "उस कंसोल उपयोगकर्ता का ईमेल जिसने नोट लिखा या स्थिति बदली। API कुंजी से बनाए गए नोटों और Didit द्वारा स्वचालित रूप से जोड़े गए नोटों के लिए `null`।"
          },
          "actor_name": {
            "type": "string",
            "nullable": true,
            "description": "Console उपयोगकर्ता का डिस्प्ले नाम (यदि कोई नाम नहीं है तो उनका ईमेल)। Didit द्वारा स्वचालित रूप से जोड़े गए नोट्स पर `Rule Engine`। API कुंजी के साथ बनाए गए नोट्स के लिए `null`।"
          },
          "metadata": {
            "type": "object",
            "description": "नोट के प्रकारों में अंतर बताता है। API या कंसोल के माध्यम से लिखे गए नोटों में `mentioned_emails` शामिल होता है। कंसोल में किए गए स्थिति परिवर्तन में `previous_status`, `new_status`, `reason_code` और `reason_label` के साथ `type: status_change` शामिल होता है। Didit द्वारा जोड़े गए नोटों में `source` शामिल होता है: किसी नियम की `add_note` कार्रवाई के लिए `rule_action` (`rule_uuid` के साथ), या उपयोगकर्ता-कार्रवाई सत्यापन सत्र बनाने में किसी समस्या के लिए `remediation_session`।",
            "properties": {
              "mentioned_emails": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "email"
                },
                "description": "उल्लिखित संगठन के सदस्य, लोअर-केस में किए गए और डुप्लिकेट हटाए गए। किसी का उल्लेख न होने पर खाली।"
              },
              "type": {
                "type": "string",
                "enum": [
                  "status_change"
                ],
                "description": "कंसोल में किए गए स्थिति परिवर्तन को रिकॉर्ड करने वाले नोट्स में मौजूद।"
              },
              "previous_status": {
                "type": "string",
                "enum": [
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED",
                  "AWAITING_USER"
                ],
                "description": "परिवर्तन से पहले की स्थिति।"
              },
              "new_status": {
                "type": "string",
                "enum": [
                  "APPROVED",
                  "IN_REVIEW",
                  "DECLINED",
                  "AWAITING_USER"
                ],
                "description": "परिवर्तन के बाद की स्थिति।"
              },
              "reason_code": {
                "type": "string",
                "nullable": true,
                "description": "परिवर्तन के साथ दिया गया कारण कोड।"
              },
              "reason_label": {
                "type": "string",
                "nullable": true,
                "description": "परिवर्तन के साथ दिया गया कारण लेबल।"
              },
              "source": {
                "type": "string",
                "enum": [
                  "rule_action",
                  "remediation_session"
                ],
                "description": "Didit द्वारा स्वचालित रूप से जोड़े गए नोट्स में मौजूद।"
              },
              "rule_uuid": {
                "type": "string",
                "format": "uuid",
                "description": "वह नियम जिसकी `add_note` कार्रवाई ने नोट लिखा (`source: rule_action` के साथ)।"
              }
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "नोट कब संग्रहीत किया गया था।"
          }
        }
      },
      "TransactionSummary": {
        "type": "object",
        "description": "निगरानी किए गए लेन-देन का सारांश, जिस प्रारूप को `GET /v3/transactions/` सूचीबद्ध करता है। पार्टियों, अलर्ट और नियम निष्पादन के लिए `uuid` के साथ `GET /v3/transactions/{transaction_id}/` को कॉल करें।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "Didit लेन-देन UUID। लेन-देन endpoints पर इसका उपयोग `{transaction_id}` के रूप में करें।"
          },
          "transaction_number": {
            "type": "integer",
            "nullable": true,
            "description": "कंसोल में दिखाया गया एप्लिकेशन-स्कोप क्रमिक नंबर।"
          },
          "txn_id": {
            "type": "string",
            "nullable": true,
            "description": "क्रिएट कॉल से आपका अपना पहचानकर्ता। प्रति एप्लिकेशन अद्वितीय।"
          },
          "transaction_type": {
            "type": "string",
            "description": "संग्रहीत श्रेणी: `finance`, `kyc`, `travelRule`, `userPlatformEvent`, `gamblingBet`, `gamblingLimitChange`, `gamblingBonusChange` या `auditTrailEvent`।"
          },
          "action_type": {
            "type": "string",
            "description": "श्रेणी के भीतर उप-प्रकार, उदाहरण के लिए `withdrawal`।"
          },
          "status": {
            "type": "string",
            "enum": [
              "APPROVED",
              "IN_REVIEW",
              "DECLINED",
              "AWAITING_USER"
            ],
            "description": "वर्तमान निगरानी निर्णय।"
          },
          "source": {
            "type": "string",
            "enum": [
              "LIVE",
              "IMPORTED"
            ],
            "description": "निगरानी के लिए सबमिट किए गए लेन-देन के लिए `LIVE`, ऐतिहासिक इंपोर्ट के लिए `IMPORTED`।"
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ],
            "description": "विषय (subject) के सापेक्ष दिशा।"
          },
          "amount": {
            "type": "string",
            "description": "अंतिम शून्यों को हटाकर दशमलव स्ट्रिंग के रूप में राशि (18 दशमलव स्थानों तक)।"
          },
          "currency": {
            "type": "string",
            "description": "`amount` का मुद्रा कोड या क्रिप्टो एसेट सिंबल।"
          },
          "currency_type": {
            "type": "string",
            "nullable": true,
            "description": "ज्ञात होने पर `fiat` या `crypto`।"
          },
          "preferred_currency_amount": {
            "type": "string",
            "nullable": true,
            "description": "`amount` को एप्लिकेशन की पसंदीदा मुद्रा में परिवर्तित किया गया, जब दर उपलब्ध थी।"
          },
          "preferred_currency_code": {
            "type": "string",
            "nullable": true,
            "description": "`preferred_currency_amount` की मुद्रा।"
          },
          "payment_details": {
            "type": "string",
            "nullable": true,
            "description": "मुक्त-पाठ भुगतान संदर्भ।"
          },
          "txn_date": {
            "type": "string",
            "format": "date-time",
            "description": "लेन-देन कब हुआ।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने इसे कब रिकॉर्ड किया।"
          },
          "score": {
            "type": "integer",
            "description": "जोखिम स्कोर। उच्चतर अधिक जोखिम भरा होता है।"
          },
          "severity": {
            "type": "string",
            "nullable": true,
            "enum": [
              "UNKNOWN",
              "LOW",
              "MEDIUM",
              "HIGH",
              "CRITICAL",
              null
            ],
            "description": "जोखिम गंभीरता, कुछ इसे सेट करने तक `null`।"
          },
          "decision_reason_code": {
            "type": "string",
            "nullable": true,
            "description": "वर्तमान `status` का मशीन-पठनीय कारण।"
          },
          "decision_reason_label": {
            "type": "string",
            "nullable": true,
            "description": "`decision_reason_code` के लिए मानव-पठनीय लेबल।"
          },
          "tags": {
            "type": "array",
            "description": "लेन-देन पर मौजूद टैग।",
            "items": {
              "type": "object",
              "properties": {
                "uuid": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "color": {
                  "type": "string",
                  "description": "हेक्साडेसिमल रंग, उदाहरण के लिए `#F59E0B`।"
                },
                "description": {
                  "type": "string",
                  "nullable": true
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "didit",
                    "custom"
                  ],
                  "description": "Didit प्रीसेट या कस्टम टैग।"
                }
              }
            }
          },
          "subject_name": {
            "type": "string",
            "nullable": true,
            "description": "`APPLICANT` पक्ष का पूरा नाम।"
          },
          "subject_vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आवेदक के लिए आपका `vendor_data`।"
          },
          "subject_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "user",
              "business",
              null
            ],
            "description": "क्या आवेदक किसी Didit उपयोगकर्ता या व्यवसाय से जुड़ा हुआ है; `null` जब यह दोनों में से किसी से नहीं जुड़ा हो।"
          },
          "subject_uuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "Didit उपयोगकर्ता या व्यवसाय का UUID जिससे आवेदक जुड़ा हुआ है।"
          },
          "subject_country": {
            "type": "string",
            "nullable": true,
            "description": "आवेदक का देश कोड।"
          },
          "counterparty_name": {
            "type": "string",
            "nullable": true,
            "description": "`COUNTERPARTY` पक्ष का पूरा नाम, यदि कोई हो।"
          },
          "counterparty_vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "प्रतिपक्ष के लिए आपका `vendor_data`।"
          },
          "counterparty_country": {
            "type": "string",
            "nullable": true,
            "description": "प्रतिपक्ष का देश कोड।"
          },
          "assigned_to_name": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन के लिए सौंपे गए Console समीक्षक का नाम।"
          },
          "travel_rule_status": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन के Travel Rule ट्रांसफर का स्टेटस, या इसमें कोई न होने पर `null`।"
          },
          "application_id": {
            "type": "string",
            "format": "uuid",
            "description": "एप्लिकेशन जिसके पास लेन-देन का स्वामित्व है।"
          },
          "application_name": {
            "type": "string",
            "nullable": true,
            "description": "उस एप्लिकेशन का नाम।"
          },
          "organization_id": {
            "type": "string",
            "format": "uuid",
            "description": "संगठन जिसके स्वामित्व में एप्लिकेशन है।"
          },
          "organization_name": {
            "type": "string",
            "nullable": true,
            "description": "उस संगठन का नाम।"
          }
        }
      },
      "ApplicationAnalyticsDataPoint": {
        "type": "object",
        "description": "निर्माण तिथि (UTC) के अनुसार एक दिन के लिए सत्र गणना। प्रत्येक गणना सत्र की वर्तमान स्थिति को दर्शाती है। पिछली अवधि के डेटा बिंदुओं में कम से कम आवश्यक फ़ील्ड शामिल होते हैं।",
        "required": [
          "rounded_date",
          "total",
          "approved",
          "declined",
          "canceled",
          "pending"
        ],
        "properties": {
          "rounded_date": {
            "type": "string",
            "format": "date",
            "description": "दिन, `YYYY-MM-DD`।"
          },
          "total": {
            "type": "integer",
            "description": "उस दिन बनाए गए सत्र।"
          },
          "approved": {
            "type": "integer",
            "description": "उनमें से, `Approved` या `Kyc Expired` वाले सत्र।"
          },
          "declined": {
            "type": "integer",
            "description": "सत्र `Declined`।"
          },
          "canceled": {
            "type": "integer",
            "description": "सत्र `Expired` या `Abandoned`।"
          },
          "pending": {
            "type": "integer",
            "description": "सत्र `Not Started`, `In Progress` या `In Review`।"
          },
          "in_review": {
            "type": "integer",
            "description": "सत्र `In Review`।"
          },
          "expired": {
            "type": "integer",
            "description": "सत्र `Expired`।"
          },
          "abandoned": {
            "type": "integer",
            "description": "सत्र `Abandoned`।"
          },
          "in_progress": {
            "type": "integer",
            "description": "सत्र `In Progress`।"
          },
          "not_started": {
            "type": "integer",
            "description": "सत्र `Not Started`।"
          },
          "manually_approved": {
            "type": "integer",
            "description": "वे सत्र जिन्हें वर्कफ़्लो द्वारा कोई अन्य निर्णय दिए जाने के बाद समीक्षक ने स्वीकृत किया।"
          },
          "manually_declined": {
            "type": "integer",
            "description": "वे सत्र जिन्हें वर्कफ़्लो द्वारा कोई अन्य निर्णय दिए जाने के बाद समीक्षक ने अस्वीकृत किया।"
          }
        }
      },
      "ApplicationAnalyticsRequestBreakdown": {
        "type": "object",
        "description": "अवधि के लिए कुल स्टेटस। पिछली अवधि के ब्रेकडाउन में कम से कम आवश्यक फ़ील्ड शामिल हैं।",
        "required": [
          "total_approved",
          "total_in_review",
          "total_declined",
          "total_canceled",
          "total_pending"
        ],
        "properties": {
          "total_approved": {
            "type": "integer",
            "description": "सत्र `Approved` या `Kyc Expired`।"
          },
          "total_in_review": {
            "type": "integer",
            "description": "सत्र `In Review`।"
          },
          "total_declined": {
            "type": "integer",
            "description": "सत्र `Declined`।"
          },
          "total_canceled": {
            "type": "integer",
            "description": "सत्र `Expired` या `Abandoned`।"
          },
          "total_pending": {
            "type": "integer",
            "description": "सत्र `Not Started`, `In Progress` या `In Review` (`total_in_review` शामिल है)।"
          },
          "total_expired": {
            "type": "integer",
            "description": "सत्र `Expired`।"
          },
          "total_abandoned": {
            "type": "integer",
            "description": "सत्र `Abandoned`।"
          },
          "total_in_progress": {
            "type": "integer",
            "description": "सत्र `In Progress`।"
          },
          "total_not_started": {
            "type": "integer",
            "description": "सत्र `Not Started`।"
          },
          "total_manually_approved": {
            "type": "integer",
            "description": "एक समीक्षक द्वारा स्वीकृत।"
          },
          "total_manually_declined": {
            "type": "integer",
            "description": "एक समीक्षक द्वारा अस्वीकृत।"
          }
        }
      },
      "ApplicationAnalyticsCountryCount": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "देश का नाम।"
          },
          "country_code": {
            "type": "string",
            "description": "दो अक्षरों वाला देश कोड।"
          },
          "session_count": {
            "type": "integer",
            "description": "उस देश के सत्र।"
          }
        }
      },
      "ApplicationAnalyticsLocationStats": {
        "type": "object",
        "properties": {
          "ip_countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsCountryCount"
            },
            "description": "उपयोगकर्ताओं के IP पते के देश, सर्वाधिक सत्र पहले।"
          },
          "countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsCountryCount"
            },
            "description": "`ip_countries` जैसी ही सूची।"
          },
          "id_countries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsCountryCount"
            },
            "description": "सत्यापित पहचान दस्तावेज़ों के जारीकर्ता देश, सर्वाधिक सत्र वाले पहले।"
          },
          "conversion_by_country": {
            "type": "array",
            "description": "प्रति दस्तावेज़ जारीकर्ता देश: पूर्ण हो चुके सत्र (स्वीकृत, अस्वीकृत या समीक्षाधीन) और उनमें से कितने स्वीकृत हुए। सबसे अधिक पूर्ण पहले।",
            "items": {
              "type": "object",
              "properties": {
                "country": {
                  "type": "string"
                },
                "country_code": {
                  "type": "string"
                },
                "finished": {
                  "type": "integer"
                },
                "approved": {
                  "type": "integer"
                }
              }
            }
          },
          "cities": {
            "type": "array",
            "description": "अधिकतम 100 IP शहर, सर्वाधिक सत्र पहले।",
            "items": {
              "type": "object",
              "properties": {
                "location": {
                  "type": "string",
                  "description": "`City, Country`।"
                },
                "session_count": {
                  "type": "integer"
                },
                "latitude": {
                  "type": "number",
                  "nullable": true
                },
                "longitude": {
                  "type": "number",
                  "nullable": true
                }
              }
            }
          }
        }
      },
      "ApplicationAnalyticsDemographicStats": {
        "type": "object",
        "properties": {
          "age_distribution": {
            "type": "object",
            "description": "पहचान दस्तावेज़ से प्रति आयु वर्ग सत्र। डेटा न होने पर रिक्त।",
            "properties": {
              "under_18": {
                "type": "integer"
              },
              "18_24": {
                "type": "integer"
              },
              "25_34": {
                "type": "integer"
              },
              "35_44": {
                "type": "integer"
              },
              "45_64": {
                "type": "integer"
              },
              "65_plus": {
                "type": "integer"
              }
            },
            "additionalProperties": {
              "type": "integer"
            }
          },
          "gender_distribution": {
            "type": "object",
            "description": "दस्तावेज़ के लिंग कोड के अनुसार सत्र: `M`, `F` या `U` (अज्ञात)।",
            "additionalProperties": {
              "type": "integer"
            }
          }
        }
      },
      "ApplicationAnalyticsDeviceDetails": {
        "type": "object",
        "description": "प्रत्येक के शीर्ष पाँच; सबसे अधिक सत्र वाले पहले।",
        "properties": {
          "device_models": {
            "type": "array",
            "description": "डिवाइस ब्रांड: `Apple`, `Android`, `LG`, बाकी सभी को `Other` के रूप में समूहीकृत किया गया है।",
            "items": {
              "type": "object",
              "properties": {
                "device": {
                  "type": "string"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          },
          "browsers": {
            "type": "array",
            "description": "ब्राउज़र: `Chrome`, `Safari`, `Didit App`, `Firefox`, बाकी सभी को `Other` के रूप में समूहीकृत किया गया है।",
            "items": {
              "type": "object",
              "properties": {
                "browser": {
                  "type": "string"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          },
          "operating_systems": {
            "type": "array",
            "description": "ऑपरेटिंग सिस्टम।",
            "items": {
              "type": "object",
              "properties": {
                "os": {
                  "type": "string"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "ApplicationAnalyticsWorkflowFunnel": {
        "type": "object",
        "description": "वर्कफ़्लो ID द्वारा कुंजीबद्ध। `total` उस वर्कफ़्लो पर शुरू किए गए सत्र हैं; `steps` प्रत्येक चरण (`OCR`, `LIVENESS`, `FACE_MATCH`, `AML`, `POA`, `PHONE`, `EMAIL`, `NFC`, `DATABASE_VALIDATION`, `QUESTIONNAIRE`, `IP_ANALYSIS`, `AGE_ESTIMATION`, `KYB_REGISTRY`, `KYB_DOCUMENTS`, `KYB_KEY_PEOPLE`) तक पहुंचे सत्रों की गणना करता है। किसी चरण तक पहुँचना उसे पास करना नहीं है।",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "total": {
              "type": "integer"
            },
            "steps": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "reached": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      },
      "ApplicationAnalyticsVerificationTimeStats": {
        "type": "object",
        "description": "सक्रिय समय जो उपयोगकर्ताओं ने सत्यापन में बिताया, निष्क्रिय अंतरालों को छोड़कर। कोई डेटा न होने पर एक खाली ऑब्जेक्ट।",
        "properties": {
          "overall_avg_seconds": {
            "type": "number",
            "description": "प्रति सत्र औसत, एक दशमलव अंक।"
          },
          "overall_count": {
            "type": "integer",
            "description": "मापे गए सत्र।"
          },
          "per_feature": {
            "type": "object",
            "description": "सुविधा द्वारा कुंजीबद्ध, उदाहरण के लिए `OCR` या `LIVENESS`।",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "avg_seconds": {
                  "type": "number"
                },
                "total_seconds": {
                  "type": "number"
                },
                "count": {
                  "type": "integer"
                }
              }
            }
          },
          "per_sub_step": {
            "type": "object",
            "description": "सुविधा द्वारा, फिर उप-चरण द्वारा कुंजीबद्ध, उदाहरण के लिए `front_id_photo`।",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "avg_seconds": {
                    "type": "number"
                  },
                  "total_seconds": {
                    "type": "number"
                  },
                  "count": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      },
      "ApplicationAnalyticsResubmissionStats": {
        "type": "object",
        "properties": {
          "first_pass": {
            "type": "integer",
            "description": "पूर्ण सत्र जिन्हें बिना किसी पुनः सबमिशन के पूरा किया गया।"
          },
          "second": {
            "type": "integer",
            "description": "पूर्ण सत्र जिन्हें एक बार पुनः सबमिट किया गया।"
          },
          "third_plus": {
            "type": "integer",
            "description": "पूर्ण सत्र जिन्हें दो या अधिक बार पुनः सबमिट किया गया।"
          },
          "abandoned": {
            "type": "integer",
            "description": "छोड़े गए सत्र।"
          }
        }
      },
      "ApplicationAnalyticsOriginalStatusStats": {
        "type": "object",
        "description": "वर्कफ़्लो का स्वचालित निर्णय, इससे पहले कि किसी समीक्षक ने इसे बदला हो।",
        "properties": {
          "approved": {
            "type": "integer"
          },
          "in_review": {
            "type": "integer"
          },
          "declined": {
            "type": "integer"
          }
        }
      },
      "ApplicationAnalyticsWarningStats": {
        "type": "object",
        "description": "सुविधा (`ID_VERIFICATION`, `LIVENESS`, `FACEMATCH`, `AML`, `PROOF_OF_ADDRESS`, `PHONE`, `EMAIL`, `NFC`, `LOCATION`, `DATABASE_VALIDATION`, `QUESTIONNAIRE` और KYB सुविधाओं) द्वारा कुंजीबद्ध। `total` वे सत्र हैं जो सुविधा तक पहुंचे; `risks` प्रति चेतावनी कोड और स्तर सत्रों की गणना करता है।",
        "additionalProperties": {
          "type": "object",
          "properties": {
            "total": {
              "type": "integer"
            },
            "risks": {
              "type": "object",
              "additionalProperties": {
                "type": "object",
                "properties": {
                  "error": {
                    "type": "integer"
                  },
                  "warning": {
                    "type": "integer"
                  },
                  "information": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      },
      "ApplicationAnalyticsDemographicPoint": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "अवधि कुंजी: `grouping_mode` के अनुसार एक दिन के लिए `YYYY-MM-DD`, एक सप्ताह का सोमवार, या एक महीने के लिए `YYYY-MM`।"
          },
          "age_distribution": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "gender_distribution": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          }
        }
      },
      "ApplicationAnalyticsDevicePoint": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "अवधि कुंजी: `grouping_mode` के अनुसार एक दिन के लिए `YYYY-MM-DD`, एक सप्ताह का सोमवार, या एक महीने के लिए `YYYY-MM`।"
          },
          "devices": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "browsers": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "operating_systems": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          }
        }
      },
      "ApplicationAnalyticsVerificationTimePoint": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "अवधि कुंजी: `grouping_mode` के अनुसार एक दिन के लिए `YYYY-MM-DD`, एक सप्ताह का सोमवार, या एक महीने के लिए `YYYY-MM`।"
          },
          "overall_avg": {
            "type": "number",
            "description": "प्रति सत्र औसत सक्रिय सेकंड।"
          },
          "per_feature": {
            "type": "object",
            "description": "प्रति सुविधा औसत सक्रिय सेकंड।",
            "additionalProperties": {
              "type": "number"
            }
          }
        }
      },
      "ApplicationAnalyticsResubmissionPoint": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "अवधि कुंजी: `grouping_mode` के अनुसार एक दिन के लिए `YYYY-MM-DD`, एक सप्ताह का सोमवार, या एक महीने के लिए `YYYY-MM`।"
          },
          "first_pass": {
            "type": "integer"
          },
          "second": {
            "type": "integer"
          },
          "third_plus": {
            "type": "integer"
          },
          "abandoned": {
            "type": "integer"
          }
        }
      },
      "ApplicationAnalyticsOriginalStatusPoint": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "अवधि कुंजी: `grouping_mode` के अनुसार एक दिन के लिए `YYYY-MM-DD`, एक सप्ताह का सोमवार, या एक महीने के लिए `YYYY-MM`।"
          },
          "approved": {
            "type": "integer"
          },
          "in_review": {
            "type": "integer"
          },
          "declined": {
            "type": "integer"
          }
        }
      },
      "ApplicationAnalyticsSummary": {
        "type": "object",
        "description": "उपयोगकर्ता सत्यापन (KYC) सारांश, तब लौटाया जाता है जब न तो `scope` और न ही `widget_keys` भेजा जाता है।",
        "required": [
          "data_points",
          "request_breakdown",
          "previous_data_points",
          "previous_request_breakdown",
          "conversion_rate",
          "location_stats",
          "demographic_stats",
          "device_details",
          "workflow_funnel_stats",
          "verification_time_stats",
          "resubmission_stats",
          "warning_stats",
          "original_status_stats",
          "grouping_mode",
          "demographic_time_series",
          "device_time_series",
          "verification_time_time_series",
          "resubmission_time_series",
          "original_status_time_series"
        ],
        "properties": {
          "data_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDataPoint"
            },
            "description": "प्रति दिन एक बिंदु, सीमा में सत्रों वाले पहले दिन से लेकर `end_date` तक। हमेशा दैनिक, चाहे `grouping_mode` कुछ भी कहे।"
          },
          "request_breakdown": {
            "$ref": "#/components/schemas/ApplicationAnalyticsRequestBreakdown"
          },
          "previous_data_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDataPoint"
            },
            "description": "`start_date` से ठीक पहले समान अवधि के दैनिक पॉइंट्स।"
          },
          "previous_request_breakdown": {
            "$ref": "#/components/schemas/ApplicationAnalyticsRequestBreakdown"
          },
          "conversion_rate": {
            "type": "number",
            "nullable": true,
            "description": "`total_approved / (total_approved + total_declined + total_in_review) x 100`, एक दशमलव स्थान। जब कुछ भी पूरा न हुआ हो तब `null`।"
          },
          "location_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsLocationStats"
          },
          "demographic_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsDemographicStats"
          },
          "device_details": {
            "$ref": "#/components/schemas/ApplicationAnalyticsDeviceDetails"
          },
          "workflow_funnel_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsWorkflowFunnel"
          },
          "verification_time_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsVerificationTimeStats"
          },
          "resubmission_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsResubmissionStats"
          },
          "warning_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsWarningStats"
          },
          "original_status_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsOriginalStatusStats"
          },
          "grouping_mode": {
            "type": "string",
            "enum": [
              "day",
              "week",
              "month"
            ],
            "description": "`*_time_series` सूचियों को कैसे समूहीकृत किया जाता है: 14 दिनों तक के लिए `day`, 90 दिनों तक `week`, उसके बाद `month`। सीमा में सत्रों वाले पहले दिन से मापा जाता है।"
          },
          "demographic_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDemographicPoint"
            }
          },
          "device_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDevicePoint"
            }
          },
          "verification_time_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsVerificationTimePoint"
            }
          },
          "resubmission_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsResubmissionPoint"
            }
          },
          "original_status_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsOriginalStatusPoint"
            }
          }
        }
      },
      "ApplicationAnalyticsWidget": {
        "type": "object",
        "description": "एक डैशबोर्ड विजेट। प्रत्येक विजेट में `kind` और `title` होते हैं; अन्य फ़ील्ड `kind` पर निर्भर करते हैं। सत्र विजेट सारांश ऑब्जेक्ट्स (`data_points`, `request_breakdown`, `workflow_funnel_stats` आदि) का पुन: उपयोग करते हैं; सूची विजेट अपनी प्रविष्टियों को `items` में रखते हैं; लेन-देन मेट्रिक्स `value` का उपयोग करते हैं।",
        "required": [
          "kind",
          "title"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "sessions_volume",
              "workflow_funnel",
              "average_verification_time",
              "country_distribution",
              "warning_insights",
              "conversion_rate",
              "conversion_by_country",
              "resubmission_insights",
              "original_status_distribution",
              "database_validation_coverage",
              "database_validation_latency",
              "demographics",
              "device_details",
              "horizontal_bar",
              "kyb_registry_coverage",
              "kyb_registry_data_completeness",
              "metric",
              "time_series",
              "breakdown",
              "status_time_series",
              "leaderboard",
              "histogram"
            ],
            "description": "विजेट प्रकार।"
          },
          "title": {
            "type": "string",
            "description": "डिस्प्ले शीर्षक, उदाहरण के लिए `Verification volume`।"
          },
          "grouping_mode": {
            "type": "string",
            "enum": [
              "day",
              "week",
              "month"
            ],
            "description": "`*_time_series` सूचियों को कैसे समूहीकृत किया जाता है: 14 दिनों तक के लिए `day`, 90 दिनों तक `week`, उसके बाद `month`। सीमा में सत्रों वाले पहले दिन से मापा जाता है।"
          },
          "data_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDataPoint"
            }
          },
          "request_breakdown": {
            "$ref": "#/components/schemas/ApplicationAnalyticsRequestBreakdown"
          },
          "previous_data_points": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDataPoint"
            }
          },
          "previous_request_breakdown": {
            "$ref": "#/components/schemas/ApplicationAnalyticsRequestBreakdown"
          },
          "conversion_rate": {
            "type": "number",
            "nullable": true
          },
          "workflow_funnel_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsWorkflowFunnel"
          },
          "verification_time_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsVerificationTimeStats"
          },
          "verification_time_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsVerificationTimePoint"
            }
          },
          "warning_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsWarningStats"
          },
          "resubmission_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsResubmissionStats"
          },
          "resubmission_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsResubmissionPoint"
            }
          },
          "original_status_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsOriginalStatusStats"
          },
          "original_status_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsOriginalStatusPoint"
            }
          },
          "demographic_stats": {
            "$ref": "#/components/schemas/ApplicationAnalyticsDemographicStats"
          },
          "demographic_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDemographicPoint"
            }
          },
          "device_details": {
            "$ref": "#/components/schemas/ApplicationAnalyticsDeviceDetails"
          },
          "device_time_series": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicationAnalyticsDevicePoint"
            }
          },
          "items": {
            "type": "array",
            "description": "एक सूची विजेट की प्रविष्टियाँ। `country_distribution` (KYC): `country`, `country_code`, `session_count`। `conversion_by_country`: `country`, `country_code`, `finished`, `approved`। `time_series`: `date`, `value`। `status_time_series`: `date`, `approved`, `declined`, `flagged`। `breakdown`: `transaction_type` या `action_type` के साथ `count` और `volume`, या `tag_id`, `tag_name`, `count`। `leaderboard`: `rule_title`, `trigger_count` या `assignee`, `handled_count`, `average_processing_seconds`, प्रत्येक के साथ `approved_percentage`, `declined_percentage`, `flagged_percentage`। `histogram`: `score`, `count`।",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "previous_items": {
            "type": "array",
            "description": "`start_date` से ठीक पहले समान अवधि के लिए लेन-देन समय श्रृंखला।",
            "items": {
              "type": "object",
              "additionalProperties": {}
            }
          },
          "value": {
            "type": "number",
            "description": "`metric` विजेट: रेंज के लिए आंकड़ा।"
          },
          "currency": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन वॉल्यूम और राशि विजेट: एप्लिकेशन की डिफ़ॉल्ट लेन-देन मुद्रा।"
          },
          "thresholds": {
            "type": "object",
            "description": "`histogram` विजेट: एप्लिकेशन के समीक्षा और अस्वीकृति स्कोर के थ्रेशोल्ड।",
            "properties": {
              "review": {
                "type": "integer"
              },
              "decline": {
                "type": "integer"
              }
            }
          },
          "search": {
            "type": "object",
            "description": "`kyb_registry_coverage` विजेट: रजिस्ट्री खोज कुल योग।",
            "properties": {
              "searches_total": {
                "type": "integer"
              },
              "searches_with_no_candidates": {
                "type": "integer"
              }
            }
          }
        }
      },
      "ApplicationAnalyticsWidgetResponse": {
        "type": "object",
        "description": "डैशबोर्ड विजेट, `scope` या `widget_keys` भेजे जाने पर वापस किए जाते हैं।",
        "required": [
          "scope",
          "available_widget_keys",
          "requested_widget_keys",
          "widgets"
        ],
        "properties": {
          "scope": {
            "type": "string",
            "enum": [
              "home",
              "kyc",
              "kyb",
              "transactions"
            ],
            "description": "डैशबोर्ड टैब।"
          },
          "available_widget_keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "प्रत्येक विजेट कुंजी जिसे यह स्कोप स्वीकार करता है।"
          },
          "requested_widget_keys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "क्रम में उत्तर दी गई विजेट कुंजियां: आपकी मान्य `widget_keys`, या स्कोप के डिफ़ॉल्ट।"
          },
          "widgets": {
            "type": "object",
            "description": "विजेट कुंजी द्वारा कुंजीबद्ध, `requested_widget_keys` के क्रम में।",
            "additionalProperties": {
              "$ref": "#/components/schemas/ApplicationAnalyticsWidget"
            }
          }
        }
      },
      "ApplicationAnalyticsToday": {
        "type": "object",
        "description": "पिछले सप्ताह के उसी कार्यदिवस के मुकाबले स्थानीय घंटे के अनुसार आज के सत्यापन।",
        "required": [
          "time_zone",
          "date",
          "current_hour",
          "previous_date",
          "hours",
          "previous_hours",
          "total",
          "previous_total_so_far",
          "outcomes"
        ],
        "properties": {
          "time_zone": {
            "type": "string",
            "description": "IANA समय क्षेत्र जिसमें दिन और उसके घंटे हैं।",
            "example": "Europe/Madrid"
          },
          "date": {
            "type": "string",
            "format": "date",
            "description": "उस टाइम ज़ोन में आज।",
            "example": "2026-10-30"
          },
          "current_hour": {
            "type": "integer",
            "minimum": 0,
            "maximum": 23,
            "description": "वर्तमान स्थानीय घंटा।",
            "example": 14
          },
          "previous_date": {
            "type": "string",
            "format": "date",
            "description": "तुलना का दिन: एक सप्ताह पहले का वही कार्यदिवस।",
            "example": "2026-10-23"
          },
          "hours": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "minItems": 24,
            "maxItems": 24,
            "description": "आज 00:00 से प्रति स्थानीय घंटे बनाए गए सत्यापन। आने वाले घंटों के लिए यह 0 है।"
          },
          "previous_hours": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "minItems": 24,
            "maxItems": 24,
            "description": "तुलना वाले दिन 00:00 से प्रति स्थानीय घंटे बनाए गए सत्यापन।"
          },
          "total": {
            "type": "integer",
            "minimum": 0,
            "description": "आज अब तक बनाए गए सत्यापन।",
            "example": 165
          },
          "previous_total_so_far": {
            "type": "integer",
            "minimum": 0,
            "description": "तुलना वाले दिन उसी स्थानीय समय तक बनाए गए सत्यापन।",
            "example": 151
          },
          "outcomes": {
            "type": "object",
            "description": "आज के सत्यापनों में से, कितने अब स्वीकृत हैं, समीक्षा में प्रतीक्षा कर रहे हैं और अस्वीकृत हैं। बाकी अभी समाप्त नहीं हुए हैं।",
            "required": [
              "approved",
              "in_review",
              "declined"
            ],
            "properties": {
              "approved": {
                "type": "integer",
                "minimum": 0
              },
              "in_review": {
                "type": "integer",
                "minimum": 0
              },
              "declined": {
                "type": "integer",
                "minimum": 0
              }
            }
          }
        }
      },
      "WebhookConfigDestination": {
        "type": "object",
        "description": "webhook कॉन्फ़िगरेशन में सूचीबद्ध webhook गंतव्य, बिना डिलीवरी मेट्रिक्स के। `GET /v3/webhook/destinations/{destination_uuid}/` इसका डिलीवरी सारांश जोड़ता है।",
        "required": [
          "uuid",
          "label",
          "url",
          "enabled",
          "webhook_version",
          "secret_shared_key",
          "subscribed_events",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "गंतव्य ID।"
          },
          "label": {
            "type": "string",
            "maxLength": 255,
            "description": "मानव-पठनीय नाम।"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2000,
            "description": "HTTPS endpoint जिस पर Didit इवेंट पोस्ट करता है।"
          },
          "enabled": {
            "type": "boolean",
            "description": "`false` इस गंतव्य पर डिलीवरी रोक देता है।"
          },
          "webhook_version": {
            "type": "string",
            "enum": [
              "v1",
              "v2",
              "v3"
            ],
            "description": "इस गंतव्य पर भेजा गया payload संस्करण।"
          },
          "secret_shared_key": {
            "type": "string",
            "description": "इस गंतव्य का साइनिंग सीक्रेट (43-अक्षर वाला URL-सुरक्षित token)। प्रत्येक webhook को उस गंतव्य के सीक्रेट से सत्यापित करें जिसे यह भेजा गया था। API कुंजी कॉल करने वालों को यह हमेशा पूरा प्राप्त होता है; बिना `read:webhooks` वाले कंसोल उपयोगकर्ताओं को एक खाली स्ट्रिंग प्राप्त होती है।"
          },
          "subscribed_events": {
            "type": "array",
            "uniqueItems": true,
            "description": "इस गंतव्य पर डिलीवर किए जाने वाले इवेंट प्रकार। खाली जब गंतव्य बिना किसी इवेंट के बनाया गया था, जिस स्थिति में इसे कुछ भी प्राप्त नहीं होता है।",
            "items": {
              "$ref": "#/components/schemas/WebhookEvent"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "WebhookConfig": {
        "type": "object",
        "description": "प्रत्येक webhook गंतव्य के साथ एप्लिकेशन-स्तरीय webhook कॉन्फ़िगरेशन, प्रतिधारण नीति और Digital ID वॉलेट रिटर्न होस्ट।",
        "required": [
          "webhook_url",
          "webhook_version",
          "secret_shared_key",
          "capture_method",
          "data_retention_months",
          "face_retention_policy",
          "face_retention_days",
          "available_events",
          "allowed_return_hosts",
          "endpoints"
        ],
        "properties": {
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "एप्लिकेशन-स्तरीय (लीगेसी) webhook URL। Didit इस पर केवल तभी भेजता है जब एप्लिकेशन के पास कोई सक्षम गंतव्य न हो, और फिर केवल `status.updated` और `data.updated`। किसी गंतव्य का प्रत्येक निर्माण, अपडेट या विलोपन इसे सबसे पुराने सक्षम गंतव्य के URL पर सेट करता है, या सक्षम न होने पर `null` पर।"
          },
          "webhook_version": {
            "type": "string",
            "enum": [
              "v1",
              "v2",
              "v3"
            ],
            "description": "लेगसी `webhook_url` का payload संस्करण। प्रत्येक गंतव्य का अपना `webhook_version` होता है।"
          },
          "secret_shared_key": {
            "type": "string",
            "description": "एप्लिकेशन-स्तरीय साइनिंग सीक्रेट (43-वर्णों वाला URL-सुरक्षित token)। यह केवल लीगेसी `webhook_url` पर डिलीवरी पर हस्ताक्षर करता है; प्रत्येक गंतव्य अपनी `secret_shared_key` से हस्ताक्षर करता है। API कुंजी का उपयोग करने वाले कॉलकर्ताओं को यह हमेशा पूरी तरह से प्राप्त होता है; बिना `read:webhooks` वाले कंसोल उपयोगकर्ताओं को एक खाली स्ट्रिंग प्राप्त होती है।"
          },
          "capture_method": {
            "type": "string",
            "enum": [
              "MOBILE",
              "MOBILE_AND_DESKTOP"
            ],
            "description": "लीगेसी एप्लिकेशन सेटिंग। सत्यापन फ़्लो इसे नहीं पढ़ता है: कैप्चर विकल्प प्रति वर्कफ़्लो कॉन्फ़िगर किए जाते हैं।"
          },
          "data_retention_months": {
            "type": "integer",
            "nullable": true,
            "minimum": 1,
            "maximum": 120,
            "description": "स्वचालित विलोपन विंडो। इस संख्या से अधिक महीने पहले बनाए गए उपयोगकर्ता सत्यापन सत्र (एक महीने को 30 दिन गिना जाता है) स्वचालित रूप से हटा दिए जाते हैं, और यह विलोपन अपरिवर्तनीय होता है। `null` का अर्थ है कि सत्र कभी भी स्वचालित रूप से नहीं हटाए जाते हैं। देखें [डेटा प्रतिधारण](https://docs.didit.me/hi/console/data-retention)।"
          },
          "face_retention_policy": {
            "type": "string",
            "enum": [
              "delete_with_session",
              "retain_until_user_deleted"
            ],
            "description": "सत्र हटाए जाने पर सत्र के फ़ेस एम्बेडिंग का क्या होता है। `delete_with_session` (डिफ़ॉल्ट) इसे सत्र के साथ हटा देता है। `retain_until_user_deleted` ऑप्ट-इन [बायोमेट्रिक टेम्पलेट प्रतिधारण](https://docs.didit.me/hi/console/data-retention#बायोमेट्रिक-टेम्पलेट-प्रतिधारण) है: उपयोगकर्ता से जुड़ा एक छवि-मुक्त बायोमेट्रिक टेम्पलेट तब तक अलग से प्रबंधित किया जाता है जब तक कि इसकी प्रतिधारण अवधि समाप्त न हो जाए, उपयोगकर्ता हटा न दिया जाए, या आप इसे पर्ज न कर दें।"
          },
          "face_retention_days": {
            "type": "integer",
            "nullable": true,
            "minimum": 1,
            "maximum": 3650,
            "description": "`retain_until_user_deleted` के तहत बायोमेट्रिक टेम्पलेट्स की डेटा प्रतिधारण अवधि, दिनों में। यह नीति सेट होने पर आवश्यक है।"
          },
          "biometric_consent_mode": {
            "type": "string",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "description": "होस्टेड फ़्लो और नेटिव SDK चेहरा कैप्चर करने से पहले व्यक्ति से स्पष्ट बायोमेट्रिक सहमति कब मांगते हैं। `auto` (डिफ़ॉल्ट) केवल तभी पूछता है जब कोई ट्रिगर लागू होता है: घोषित राज्य, व्यक्ति का IP, या पहचान दस्तावेज़ का जारीकर्ता Illinois, Texas या Colorado में हो, या व्यक्ति US में प्रतीत होता हो, लेकिन राज्य ज्ञात न हो। `always` ऐसे प्रत्येक व्यक्ति से पूछता है जिसके वर्कफ़्लो में चेहरा कैप्चर किया जाता है। `never` कभी भी यह चरण नहीं दिखाता है, और आप सेल्फ़ी से पहले सहमति स्वयं एकत्र करते हैं। प्रत्येक परिवर्तन ऑडिट लॉग में दर्ज किया जाता है। [बायोमेट्रिक सहमति](https://docs.didit.me/hi/getting-started/biometric-consent) देखें।"
          },
          "available_events": {
            "type": "array",
            "description": "प्रत्येक इवेंट प्रकार जिसे एक गंतव्य सब्सक्राइब कर सकता है, एक डिस्प्ले लेबल के साथ।",
            "items": {
              "type": "object",
              "required": [
                "value",
                "label"
              ],
              "properties": {
                "value": {
                  "$ref": "#/components/schemas/WebhookEvent"
                },
                "label": {
                  "type": "string",
                  "description": "डिस्प्ले लेबल, उदाहरण के लिए `Session status updated`।"
                }
              }
            }
          },
          "allowed_return_hosts": {
            "type": "array",
            "maxItems": 20,
            "description": "होस्टनाम (सटीक मिलान, केवल HTTPS) जिन पर स्टैंडअलोन डिजिटल ID वॉलेट सत्यापन उपयोगकर्ता को अपने `return_url` के साथ वापस भेज सकता है। आपका व्हाइट लेबल डोमेन भी हमेशा अनुमत है। देखें [अपना वापसी गंतव्य पंजीकृत करें](https://docs.didit.me/hi/standalone-apis/digital-id-wallets#अपना-रिटर्न-गंतव्य-पंजीकृत-करें)।",
            "items": {
              "type": "string",
              "maxLength": 253
            }
          },
          "endpoints": {
            "type": "array",
            "description": "एप्लिकेशन का प्रत्येक webhook गंतव्य, सबसे पुराना पहले, प्रत्येक अपने हस्ताक्षर सीक्रेट के साथ। यहाँ केवल पढ़ने के लिए: `/v3/webhook/destinations/` endpoints के साथ गंतव्यों का प्रबंधन करें।",
            "items": {
              "$ref": "#/components/schemas/WebhookConfigDestination"
            }
          },
          "allowed_domains": {
            "type": "array",
            "maxItems": 50,
            "items": {
              "type": "string",
              "maxLength": 300
            },
            "description": "ऑरिजिन (उदाहरण के लिए `https://app.example.com`; केवल `localhost` के लिए `http`) जिनमें होस्टेड सत्यापन प्रवाह को एम्बेड किया जा सकता है और जो सत्र कॉलबैक के साथ उपयोगकर्ता को वापस भेज सकते हैं। सर्वर-टू-सर्वर कॉल प्रभावित नहीं होती हैं। एक खाली सूची का अर्थ है कोई प्रतिबंध नहीं। Didit प्रत्येक ऑरिजिन को बिना डिफ़ॉल्ट पोर्ट के लोअरकेस में संग्रहीत करता है। अमान्य प्रविष्टि `allowed_domains` पर `400` के साथ विफल हो जाती है।",
            "example": [
              "https://app.example.com"
            ]
          }
        }
      },
      "WebhookDestinationDelivery": {
        "type": "object",
        "description": "एक webhook गंतव्य पर एक डिलीवरी प्रयास। किसी इवेंट का पहला प्रेषण, प्रत्येक स्वचालित पुनः प्रयास और प्रत्येक पुनः प्रेषण अलग-अलग डिलीवरी हैं।",
        "required": [
          "uuid",
          "session_id",
          "request_url",
          "response_status",
          "response_time_ms",
          "status",
          "webhook_type",
          "created_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "डिलीवरी ID, विवरण और पुनः भेजने के कॉल के लिए।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "उपयोगकर्ता सत्यापन सत्र जिससे यह इवेंट संबंधित है। व्यवसाय सत्र, उपयोगकर्ता, व्यवसाय, लेन-देन, Travel Rule और वर्कफ़्लो इवेंट के लिए `null`।"
          },
          "request_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "वह URL जिस पर डिलीवरी भेजी गई थी: इवेंट जनरेट होने के समय गंतव्य का URL।"
          },
          "response_status": {
            "type": "integer",
            "nullable": true,
            "description": "आपके endpoint द्वारा लौटाया गया HTTP स्टेटस। जब डिलीवरी कतार में हो और अभी तक प्रयास न किया गया हो तो `null`। जब कोई HTTP उत्तर प्राप्त नहीं हुआ, तो Didit अपनी स्वयं की स्थिति दर्ज करता है: जब आपके endpoint ने 5 सेकंड के भीतर उत्तर नहीं दिया तो `504`, कनेक्शन विफलता के लिए `503`, जब URL को असुरक्षित (उदाहरण के लिए एक निजी या आंतरिक पता) के रूप में अस्वीकार कर दिया गया था तो `400`, और किसी भी अन्य अनुरोध त्रुटि के लिए `404`। `400` या उससे अधिक को विफल डिलीवरी माना जाता है।"
          },
          "response_time_ms": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "description": "प्रयास में लगा समय, मिलीसेकंड में। जब तक डिलीवरी कतार में है तब तक `null`।"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट जनरेट होने पर उसके द्वारा रिपोर्ट किया गया स्टेटस: सत्र इवेंट के लिए सत्र स्टेटस (उदाहरण के लिए `Approved` या `In Review`), उपयोगकर्ता और व्यवसाय इवेंट के लिए व्यक्ति या कंपनी का स्टेटस, और लेन-देन इवेंट के लिए लेन-देन का स्टेटस। बिना किसी स्टेटस वाले इवेंट के लिए `null`।"
          },
          "webhook_type": {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब डिलीवरी बनाई गई थी।"
          }
        }
      },
      "WebhookDestinationDeliveryDetail": {
        "type": "object",
        "description": "एक webhook गंतव्य पर एक डिलीवरी प्रयास, सटीक अनुरोध हेडर और मुख्य भाग के साथ जो Didit ने भेजा था।",
        "required": [
          "uuid",
          "session_id",
          "request_url",
          "response_status",
          "response_time_ms",
          "status",
          "webhook_type",
          "created_at",
          "request_header",
          "request_body"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "डिलीवरी ID, विवरण और पुनः भेजने के कॉल के लिए।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "उपयोगकर्ता सत्यापन सत्र जिससे यह इवेंट संबंधित है। व्यवसाय सत्र, उपयोगकर्ता, व्यवसाय, लेन-देन, Travel Rule और वर्कफ़्लो इवेंट के लिए `null`।"
          },
          "request_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "वह URL जिस पर डिलीवरी भेजी गई थी: इवेंट जनरेट होने के समय गंतव्य का URL।"
          },
          "response_status": {
            "type": "integer",
            "nullable": true,
            "description": "आपके endpoint द्वारा लौटाया गया HTTP स्टेटस। जब डिलीवरी कतार में हो और अभी तक प्रयास न किया गया हो तो `null`। जब कोई HTTP उत्तर प्राप्त नहीं हुआ, तो Didit अपनी स्वयं की स्थिति दर्ज करता है: जब आपके endpoint ने 5 सेकंड के भीतर उत्तर नहीं दिया तो `504`, कनेक्शन विफलता के लिए `503`, जब URL को असुरक्षित (उदाहरण के लिए एक निजी या आंतरिक पता) के रूप में अस्वीकार कर दिया गया था तो `400`, और किसी भी अन्य अनुरोध त्रुटि के लिए `404`। `400` या उससे अधिक को विफल डिलीवरी माना जाता है।"
          },
          "response_time_ms": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "description": "प्रयास में लगा समय, मिलीसेकंड में। जब तक डिलीवरी कतार में है तब तक `null`।"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट जनरेट होने पर उसके द्वारा रिपोर्ट किया गया स्टेटस: सत्र इवेंट के लिए सत्र स्टेटस (उदाहरण के लिए `Approved` या `In Review`), उपयोगकर्ता और व्यवसाय इवेंट के लिए व्यक्ति या कंपनी का स्टेटस, और लेन-देन इवेंट के लिए लेन-देन का स्टेटस। बिना किसी स्टेटस वाले इवेंट के लिए `null`।"
          },
          "webhook_type": {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब डिलीवरी बनाई गई थी।"
          },
          "request_header": {
            "type": "string",
            "description": "Didit द्वारा भेजे गए अनुरोध हेडर का JSON टेक्स्ट (एक स्ट्रिंग): `Content-Type`, `X-Signature`, `X-Signature-V2`, `X-Signature-Simple`, `X-Timestamp` और `User-Agent`। इसे JSON पार्सर से पार्स करें। इसमें हस्ताक्षर होते हैं, लेकिन साइनिंग सीक्रेट कभी नहीं होता।"
          },
          "request_body": {
            "type": "string",
            "description": "Didit द्वारा भेजे गए सटीक payload का JSON टेक्स्ट (एक स्ट्रिंग), कुंजियाँ सॉर्ट की गई हैं, जिसमें `event_id` और `timestamp` शामिल हैं। इसे JSON पार्सर से पार्स करें; [Payload shape](https://docs.didit.me/hi/integration/webhooks#payload-संरचना) देखें। बिना `media: read` वाली स्कोप्ड कुंजी के लिए, इसके अंदर मीडिया URL `null` होते हैं; बिना `sessions: write` के, सत्र token और होस्टेड सत्यापन लिंक `null` होते हैं। इस तरह बदली गई बॉडी अब अपने हस्ताक्षरों से मेल नहीं खाती है। Didit आपके endpoint द्वारा लौटाए गए रिस्पॉन्स बॉडी को रिकॉर्ड नहीं करता है।"
          }
        }
      },
      "SessionWebhookDelivery": {
        "type": "object",
        "description": "सत्यापन सत्र के लिए रिकॉर्ड किया गया एक webhook डिलीवरी प्रयास, जिसमें Didit द्वारा भेजे गए सटीक अनुरोध हेडर और बॉडी शामिल हैं।",
        "required": [
          "uuid",
          "session_id",
          "request_url",
          "response_status",
          "status",
          "webhook_type",
          "request_header",
          "request_body",
          "created_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "डिलीवरी ID। इस डिलीवरी को प्राप्त करने या पुनः भेजने के लिए इसे `{webhook_uuid}` के रूप में उपयोग करें।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "वह सत्र जिससे डिलीवरी संबंधित है (पाथ में दिया गया सत्र)।"
          },
          "request_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "वह URL जिस पर डिलीवरी भेजी गई थी।"
          },
          "response_status": {
            "type": "integer",
            "nullable": true,
            "description": "आपके endpoint द्वारा लौटाया गया HTTP स्टेटस। जब डिलीवरी कतार में हो और अभी तक प्रयास न किया गया हो तो `null`। जब कोई HTTP उत्तर प्राप्त नहीं हुआ, तो Didit अपनी स्वयं की स्थिति दर्ज करता है: जब आपके endpoint ने 5 सेकंड के भीतर उत्तर नहीं दिया तो `504`, कनेक्शन विफलता के लिए `503`, जब URL को असुरक्षित (उदाहरण के लिए एक निजी या आंतरिक पता) के रूप में अस्वीकार कर दिया गया था तो `400`, और किसी भी अन्य अनुरोध त्रुटि के लिए `404`। `400` या उससे अधिक को विफल डिलीवरी माना जाता है।"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट जनरेट होने पर सत्र की स्थिति, उदाहरण के लिए `In Progress`, `Approved` या `Declined`।"
          },
          "webhook_type": {
            "$ref": "#/components/schemas/WebhookEvent"
          },
          "request_header": {
            "type": "string",
            "description": "Didit द्वारा भेजे गए अनुरोध हेडर का JSON टेक्स्ट (एक स्ट्रिंग): `Content-Type`, `X-Signature`, `X-Signature-V2`, `X-Signature-Simple`, `X-Timestamp` और `User-Agent`। इसे JSON पार्सर से पार्स करें। इसमें हस्ताक्षर होते हैं, लेकिन साइनिंग सीक्रेट कभी नहीं होता।"
          },
          "request_body": {
            "type": "string",
            "description": "Didit द्वारा भेजे गए सटीक payload का JSON टेक्स्ट (एक स्ट्रिंग), कुंजियाँ सॉर्ट की गई हैं, जिसमें `event_id` और `timestamp` शामिल हैं। इसे JSON पार्सर से पार्स करें; [Payload shape](https://docs.didit.me/hi/integration/webhooks#payload-संरचना) देखें। बिना `media: read` वाली स्कोप्ड कुंजी के लिए, इसके अंदर मीडिया URL `null` होते हैं; बिना `sessions: write` के, सत्र token और होस्टेड सत्यापन लिंक `null` होते हैं। इस तरह बदली गई बॉडी अब अपने हस्ताक्षरों से मेल नहीं खाती है। Didit आपके endpoint द्वारा लौटाए गए रिस्पॉन्स बॉडी को रिकॉर्ड नहीं करता है।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब डिलीवरी बनाई गई थी।"
          }
        }
      },
      "SessionEvent": {
        "type": "object",
        "description": "सत्यापन सत्र की इवेंट टाइमलाइन की एक प्रविष्टि।",
        "required": [
          "uuid",
          "event_type",
          "created_at",
          "component",
          "feature_step",
          "step",
          "details",
          "ip_address",
          "user_agent",
          "device_info",
          "file_url",
          "sent_at"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "इवेंट पहचानकर्ता।"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "SESSION_CREATED",
              "SESSION_COMPLETED",
              "SESSION_STATUS_CHANGED",
              "LINK_OPENED",
              "FORM_SUBMITTED",
              "BUTTON_CLICKED",
              "FILE_UPLOADED",
              "ATTEMPT_FAILED",
              "FEATURE_STEP_CHANGED",
              "STEP_RENDERED",
              "NOTE_ADDED",
              "MANUAL_REVIEW_STARTED",
              "WORKFLOW_BRANCH_EVALUATED",
              "WORKFLOW_STATUS_NODE_REACHED",
              "LOG"
            ],
            "description": "क्या हुआ। होस्टेड फ़्लो या SDK के दौरान डिवाइस द्वारा रिपोर्ट किया गया: `LINK_OPENED`, `STEP_RENDERED`, `BUTTON_CLICKED`, `FORM_SUBMITTED`, `FILE_UPLOADED`, `ATTEMPT_FAILED` और `LOG` (डीबगिंग)। सर्वर द्वारा रिकॉर्ड किया गया: `SESSION_CREATED`, `SESSION_STATUS_CHANGED` (`details.old_status`, `details.current_status`), `FEATURE_STEP_CHANGED` (`details.old_feature_step`, `details.current_feature_step`), `WORKFLOW_BRANCH_EVALUATED` और `WORKFLOW_STATUS_NODE_REACHED` (वर्कफ़्लो रूटिंग ट्रेस)। पुराने सत्रों में `SESSION_COMPLETED`, `NOTE_ADDED` और `MANUAL_REVIEW_STARTED` दिखाई दे सकते हैं।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने इवेंट को कब संग्रहीत किया। इवेंट्स को एसिंक्रोनस रूप से, `sent_at` के कुछ सेकंड बाद संग्रहीत किया जाता है।"
          },
          "component": {
            "type": "string",
            "nullable": true,
            "description": "UI घटक जिसने इवेंट की रिपोर्ट की (केवल डिवाइस इवेंट)।"
          },
          "feature_step": {
            "type": "string",
            "nullable": true,
            "enum": [
              "OCR",
              "OCR_BACK",
              "NFC",
              "AML",
              "FACE",
              "LIVENESS",
              "FACE_MATCH",
              "IP_ANALYSIS",
              "AGE_ESTIMATION",
              "PROOF_OF_ADDRESS",
              "PHONE_VERIFICATION",
              "EMAIL_VERIFICATION",
              "FACE_SEARCH",
              "DATABASE_VALIDATION",
              "QUESTIONNAIRE",
              "KYB_REGISTRY",
              "KYB_DOCUMENTS",
              "KYB_KEY_PEOPLE",
              "DOCUMENT_AI",
              "GEOLOCATION",
              null
            ],
            "description": "वह सत्यापन सुविधा जिस पर सत्र तब था जब इवेंट घटित हुआ।"
          },
          "step": {
            "type": "string",
            "nullable": true,
            "description": "सुविधा के भीतर स्क्रीन, उदाहरण के लिए `DOCUMENT_CAPTURE_FRONT` या `FACE_PASSIVE_LIVENESS`।"
          },
          "details": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "इवेंट-विशिष्ट डेटा। कुंजियाँ `event_type` पर निर्भर करती हैं।"
          },
          "ip_address": {
            "type": "string",
            "nullable": true,
            "description": "वह IP पता जिससे डिवाइस ने इवेंट की रिपोर्ट की थी। सर्वर द्वारा रिकॉर्ड किए गए इवेंट के लिए `null`।"
          },
          "user_agent": {
            "type": "string",
            "nullable": true,
            "description": "डिवाइस का यूज़र एजेंट। सर्वर द्वारा रिकॉर्ड किए गए इवेंट के लिए `null`।"
          },
          "device_info": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true,
            "description": "SDK या ब्राउज़र द्वारा रिपोर्ट किए गए डिवाइस विवरण।"
          },
          "file_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "इवेंट से जुड़ी फ़ाइल (उदाहरण के लिए एक कैप्चर की गई छवि) का अल्पकालिक प्रीसाइन्ड लिंक। कोई फ़ाइल न होने पर `null`, और बिना `media: read` वाली स्कोप्ड API कुंजी के लिए हमेशा `null`।"
          },
          "sent_at": {
            "type": "integer",
            "format": "int64",
            "description": "जब इवेंट हुआ था, मिलीसेकंड में Unix टाइमस्टैम्प के रूप में। परिणाम इसके अनुसार क्रमित होते हैं।"
          }
        }
      },
      "AMLDatasetSourceFreshness": {
        "type": "object",
        "description": "AML डेटासेट के एक परिवार की नवीनता।",
        "required": [
          "last_updated_at",
          "oldest_updated_at",
          "dataset_count",
          "dated_dataset_count"
        ],
        "properties": {
          "last_updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "फ़ैमिली में किसी भी डेटासेट का सबसे हालिया अपडेट।"
          },
          "oldest_updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "स्टेलनेस बाउंड: परिवार का प्रत्येक डेटासेट कम से कम इतना अद्यतित है। जब परिवार में कम से कम एक डेटासेट ने कोई अपडेट तिथि रिपोर्ट नहीं की हो तो `null`, क्योंकि तब यह सीमा अज्ञात होती है।"
          },
          "dataset_count": {
            "type": "integer",
            "description": "फ़ैमिली में डेटासेट की संख्या।"
          },
          "dated_dataset_count": {
            "type": "integer",
            "description": "उन डेटासेट की संख्या जिन्होंने अपडेट तिथि की सूचना दी।"
          }
        }
      },
      "AMLDatasetFreshness": {
        "type": "object",
        "description": "स्क्रीनिंग चलने पर AML डेटासेट कितने अद्यतित थे। तिथियों का अनुमान कभी नहीं लगाया जाता है।",
        "required": [
          "captured_at",
          "provider",
          "catalog_version",
          "sources"
        ],
        "properties": {
          "captured_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने वह डेटासेट कैटलॉग कब पढ़ा जिससे यह ताजगी आती है।"
          },
          "provider": {
            "type": "string",
            "description": "AML डेटा स्रोत का अपारदर्शी पहचानकर्ता। इसे एक अपारदर्शी स्ट्रिंग के रूप में मानें; इस पर शाखा न बनाएं।",
            "example": "aml_data_source"
          },
          "catalog_version": {
            "type": "string",
            "nullable": true,
            "description": "डेटासेट कैटलॉग का संस्करण पहचानकर्ता, जब स्रोत किसी संस्करण की रिपोर्ट करता है।"
          },
          "sources": {
            "type": "object",
            "description": "प्रति डेटासेट परिवार नवीनता। जिस परिवार के डेटासेट ने कोई अपडेट तिथि रिपोर्ट नहीं की है, वह `null` से भरे जाने के बजाय अनुपस्थित रहता है।",
            "properties": {
              "sanctions": {
                "$ref": "#/components/schemas/AMLDatasetSourceFreshness"
              },
              "pep": {
                "$ref": "#/components/schemas/AMLDatasetSourceFreshness"
              },
              "warnings": {
                "$ref": "#/components/schemas/AMLDatasetSourceFreshness"
              },
              "adverse_media": {
                "$ref": "#/components/schemas/AMLDatasetSourceFreshness"
              }
            }
          }
        }
      },
      "AMLScreeningRun": {
        "type": "object",
        "description": "AML जाँच की एक पूर्ण सतत-निगरानी पुनः स्क्रीनिंग।",
        "required": [
          "uuid",
          "run_id",
          "completed_at",
          "started_at",
          "outcome",
          "trigger",
          "provider",
          "status",
          "score",
          "total_hits",
          "new_hits",
          "entities_screened",
          "dataset_freshness"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "इस स्क्रीनिंग रन का पहचानकर्ता।"
          },
          "run_id": {
            "type": "string",
            "format": "uuid",
            "description": "निगरानी रन जिससे यह स्क्रीनिंग संबंधित है। एक ही रन में स्क्रीन किया गया प्रत्येक सत्यापन इसे साझा करता है।"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "description": "इस विषय की पुनः स्क्रीनिंग कब समाप्त हुई। परिणाम इसी के अनुसार क्रमबद्ध होते हैं, सबसे नए पहले।"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "description": "निगरानी बैच कब शुरू हुआ जिससे यह पुनः स्क्रीनिंग संबंधित है।"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "NO_CHANGE",
              "CHANGED",
              "FAILED"
            ],
            "description": "`NO_CHANGE`: पूर्ण हुआ और परिणाम में कोई बदलाव नहीं हुआ। `CHANGED`: पूर्ण हुआ और स्कोर, स्थिति, हिट संख्या या हिट बदल गए। `FAILED`: इस विषय के लिए कोई उपयोग करने योग्य उत्तर नहीं मिला, इसलिए जाँच को वैसा ही छोड़ दिया गया जैसा वह था।"
          },
          "trigger": {
            "type": "string",
            "enum": [
              "ONGOING_MONITORING"
            ],
            "description": "स्क्रीनिंग किस कारण से शुरू हुई। वर्तमान में हमेशा `ONGOING_MONITORING`।"
          },
          "provider": {
            "type": "string",
            "description": "उत्तर देने वाले AML डेटा स्रोत का अपारदर्शी पहचानकर्ता। इसे एक अपारदर्शी स्ट्रिंग के रूप में मानें; इस पर शाखा न बनाएं।",
            "example": "aml_data_source"
          },
          "status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Resub Requested",
              null
            ],
            "description": "AML जाँच स्थिति जिस पर इस रन ने जाँच को छोड़ा।"
          },
          "score": {
            "type": "number",
            "format": "float",
            "nullable": true,
            "minimum": 0,
            "maximum": 100,
            "description": "AML स्कोर जिस पर इस रन ने जाँच को छोड़ा।"
          },
          "total_hits": {
            "type": "integer",
            "nullable": true,
            "description": "हिट्स की संख्या जो इस रन ने जाँच में छोड़ी।"
          },
          "new_hits": {
            "type": "integer",
            "nullable": true,
            "description": "इस रन में मिले उन हिट्स की संख्या जो जाँच में पहले नहीं थे। `0` जब कुछ नया नहीं मिला; `null` जब रन विफल रहा या इस गिनती के अस्तित्व में आने से पहले रिकॉर्ड किया गया था।"
          },
          "entities_screened": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1,
            "description": "उन इकाइयों की संख्या जिनकी इस रन ने सत्यापन के लिए स्क्रीनिंग की: `1` जब विषय की स्क्रीनिंग की गई थी, `0` जब रन विफल रहा।"
          },
          "dataset_freshness": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AMLDatasetFreshness"
              }
            ],
            "nullable": true,
            "description": "इस रन के डेटासेट की ताजगी, या जब कोई तारीख उपलब्ध न हो तो `null`।"
          }
        }
      },
      "KYBKeyPeopleParty": {
        "type": "object",
        "description": "व्यवसाय सत्यापन (KYB) सत्र की एक प्रमुख व्यक्ति पार्टी, उसके चाइल्ड सत्यापन के साथ। वही पार्टी व्यवसाय सत्र निर्णय के `key_people_checks[].submitted.parties[]` में दिखाई देती है।",
        "required": [
          "uuid",
          "entity_type",
          "source",
          "name",
          "is_active",
          "is_skipped",
          "requires_verification",
          "roles",
          "kyc_session_deleted",
          "kyb_sub_session_deleted"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "पक्ष पहचानकर्ता।"
          },
          "entity_type": {
            "type": "string",
            "enum": [
              "person",
              "company"
            ],
            "description": "क्या पक्ष कोई व्यक्ति है या कंपनी।"
          },
          "source": {
            "type": "string",
            "enum": [
              "REGISTRY",
              "USER"
            ],
            "description": "`REGISTRY`: कंपनी रजिस्ट्री से लिया गया। `USER`: Key People स्क्रीन में दर्ज किया गया।"
          },
          "name": {
            "type": "string",
            "description": "पक्ष का डिस्प्ले नाम।"
          },
          "first_name": {
            "type": "string",
            "nullable": true,
            "description": "पहला नाम (व्यक्ति)।"
          },
          "last_name": {
            "type": "string",
            "nullable": true,
            "description": "अंतिम नाम (व्यक्तियों का)।"
          },
          "company_name": {
            "type": "string",
            "nullable": true,
            "description": "कंपनी का नाम (कंपनी पक्ष)।"
          },
          "registration_number": {
            "type": "string",
            "nullable": true,
            "description": "कंपनी पंजीकरण संख्या (कंपनी पक्ष)।"
          },
          "email": {
            "type": "string",
            "format": "email",
            "nullable": true,
            "description": "वह ईमेल जिस पर सत्यापन लिंक भेजा जाता है।"
          },
          "nationality": {
            "type": "string",
            "nullable": true,
            "description": "व्यक्तियों के लिए राष्ट्रीयता, कंपनियों के लिए निगमन का देश।"
          },
          "phone_number": {
            "type": "string",
            "nullable": true,
            "description": "पक्ष के लिए एकत्र किया गया फ़ोन नंबर।"
          },
          "date_of_birth": {
            "type": "string",
            "format": "date",
            "nullable": true,
            "description": "जन्म तिथि (व्यक्ति)।"
          },
          "position": {
            "type": "string",
            "nullable": true,
            "description": "मुक्त-पाठ पद का नाम (व्यक्तियों के लिए)।"
          },
          "custom_fields": {
            "type": "object",
            "additionalProperties": true,
            "description": "वर्कफ़्लो-परिभाषित कस्टम फ़ील्ड जो पार्टी के लिए एकत्र किए गए हैं, फ़ील्ड कुंजी द्वारा अनुक्रमित।"
          },
          "is_active": {
            "type": "boolean",
            "description": "क्या पक्ष सक्रिय है।"
          },
          "is_skipped": {
            "type": "boolean",
            "description": "क्या पक्ष सत्यापन से मुक्त है। पुनः जनरेट करने पर यह साफ़ हो जाता है।"
          },
          "requires_verification": {
            "type": "boolean",
            "description": "क्या भूमिका और स्वामित्व के नियमों को इस पक्ष के लिए सत्यापन की आवश्यकता है।"
          },
          "roles": {
            "type": "array",
            "description": "कंपनी में पक्ष द्वारा धारित भूमिकाएं।",
            "items": {
              "type": "object",
              "required": [
                "role",
                "ownership_percent",
                "voting_percent"
              ],
              "properties": {
                "role": {
                  "type": "string",
                  "enum": [
                    "director",
                    "non_executive_director",
                    "secretary",
                    "chairman",
                    "ubo",
                    "shareholder",
                    "representative",
                    "founder",
                    "legal_advisor",
                    "authorized_signatory",
                    "trustee",
                    "beneficiary",
                    "settlor",
                    "protector",
                    "company_officer",
                    "investor",
                    "other"
                  ],
                  "description": "भूमिका कोड।"
                },
                "ownership_percent": {
                  "type": "number",
                  "nullable": true,
                  "description": "इस भूमिका के लिए स्वामित्व प्रतिशत, जब ज्ञात हो।"
                },
                "voting_percent": {
                  "type": "number",
                  "nullable": true,
                  "description": "इस भूमिका के लिए मतदान-अधिकार प्रतिशत, जब ज्ञात हो।"
                }
              }
            }
          },
          "kyc_session_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "चाइल्ड व्यक्तिगत KYC सत्र (व्यक्ति)।"
          },
          "kyc_session_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User",
              null
            ],
            "description": "चाइल्ड KYC सत्र की स्थिति। हटाया गया सत्र वही स्थिति बनाए रखता है जो हटाए जाने के समय उसकी थी।"
          },
          "kyc_session_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "चाइल्ड KYC सत्र का होस्टेड लिंक। जब कोई नहीं है या इसे हटा दिया गया था, और बिना `sessions: write` वाली स्कोप्ड API कुंजी के लिए `null`।"
          },
          "kyc_session_deleted": {
            "type": "boolean",
            "description": "चाइल्ड KYC सत्र हटा दिया गया था, इसलिए यह कभी सेटल नहीं हो सकता।"
          },
          "kyb_sub_session_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "चाइल्ड KYB सत्र (कंपनी पक्षकार)।"
          },
          "kyb_sub_session_status": {
            "type": "string",
            "nullable": true,
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User",
              null
            ],
            "description": "चाइल्ड KYB सत्र की स्थिति।"
          },
          "kyb_sub_session_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "चाइल्ड KYB सत्र का होस्टेड लिंक, उन्हीं `null` नियमों के साथ जो `kyc_session_url` के लिए हैं।"
          },
          "kyb_sub_session_deleted": {
            "type": "boolean",
            "description": "`kyc_session_deleted` का कंपनी-पक्ष समकक्ष।"
          },
          "verification_workflow_type": {
            "type": "string",
            "nullable": true,
            "enum": [
              "kyc",
              "kyb",
              "adaptive_age_verification",
              "biometric_authentication",
              "address_verification",
              "questionnaire_verification",
              "email_verification",
              "phone_verification",
              null
            ],
            "description": "वर्कफ़्लो का प्रकार जिसे चाइल्ड सत्र चलाता है।"
          },
          "verification_workflow_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "वर्कफ़्लो जो चाइल्ड सत्र चलाता है।"
          },
          "verification_workflow_label": {
            "type": "string",
            "nullable": true,
            "description": "उस वर्कफ़्लो का लेबल।"
          },
          "verification_workflow_features": {
            "type": "array",
            "nullable": true,
            "description": "चाइल्ड सत्र के वर्कफ़्लो की सुविधाएँ उनकी वर्तमान स्थिति के साथ।",
            "items": {
              "type": "object",
              "required": [
                "feature",
                "status"
              ],
              "properties": {
                "feature": {
                  "type": "string",
                  "description": "सुविधा कोड, उदाहरण के लिए `ID_VERIFICATION` या `LIVENESS`।"
                },
                "status": {
                  "type": "string",
                  "description": "सुविधा स्थिति, चलने तक `Not Finished`।"
                }
              }
            }
          },
          "didit_internal_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "सत्यापित व्यक्ति का Didit पहचानकर्ता, ज्ञात होने पर।"
          }
        }
      },
      "TravelRuleDelivery": {
        "type": "object",
        "description": "स्थानांतरण द्वारा दूसरे पक्ष को भेजे जाने वाले नवीनतम संदेश की स्थिति। Didit उस अनुरोध के वापस आने के बाद प्रतिपक्ष से संपर्क करता है जिसने स्थानांतरण बनाया या बदला था, इसलिए यह ऑब्जेक्ट बताता है कि वह संदेश पहुँचा या नहीं: कतारबद्ध, भेजा जा रहा है, त्रुटि के बाद पुनः प्रयास की प्रतीक्षा में, वितरित, या विफल। ऐसी विफलता जिससे नेटवर्क अभी भी उबर सकता है (समय पर उत्तर न मिलना, विफल कनेक्शन, HTTP `408`, `429` या `5xx`), उसका 30 सेकंड, 2 मिनट, 10 मिनट, 30 मिनट और 1 घंटे के बाद पुनः प्रयास किया जाता है। जब कोई पहला संदेश (`kind: SEND`) स्थायी रूप से विफल हो जाता है, क्योंकि नेटवर्क ने इसे अस्वीकार कर दिया या छठा प्रयास भी विफल रहा, तो स्थानांतरण अपनी `timeline` में `last_error` के साथ `COUNTERPARTY_VASP_NOT_REACHABLE` पर चला जाता है; स्थायी रूप से विफल होने वाले किसी भी अन्य संदेश को `timeline` में दर्ज किया जाता है। स्वयं एक्सचेंज के लिए स्थानांतरण का `status` ही सत्य का प्राथमिक स्रोत बना रहता है।",
        "required": [
          "kind",
          "status",
          "rail",
          "attempts",
          "last_error",
          "next_attempt_at",
          "delivered_at"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "SEND",
              "ANSWER",
              "TXID",
              "CANCEL",
              "POLL"
            ],
            "description": "संदेश में क्या शामिल है। `SEND`: प्रतिपक्ष को ट्रांसफ़र का पहला संदेश (आउटबाउंड; भेजे जाने पर रेल चुनी जाती है)। `ANSWER`: आपकी स्वीकृति या अस्वीकृति, उस नेटवर्क के प्रति देय जिसने अनुरोध किया था (इनबाउंड)। `TXID`: ट्रांसफ़र समाप्त करने के बाद ऑन-चेन लेन-देन हैश। `CANCEL`: आपके द्वारा रद्द किए जाने के बाद रद्दीकरण। `POLL`: ऐसी सुविधा प्रदान करने वाले नेटवर्क से स्थिति क्वेरी, जब तक ट्रांसफ़र प्रतिपक्ष की प्रतीक्षा करता है, हर 5 मिनट में दोहराई जाती है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "QUEUED",
              "SENDING",
              "RETRYING",
              "DELIVERED",
              "FAILED"
            ],
            "description": "`QUEUED`: भेजे जाने की प्रतीक्षा में। `SENDING`: एक प्रयास चल रहा है। `RETRYING`: एक प्रयास विफल रहा और अगला प्रयास `next_attempt_at` पर चलेगा। `DELIVERED`: दूसरे पक्ष ने संदेश प्राप्त कर लिया। `FAILED`: दूसरे पक्ष ने इसे अस्वीकार कर दिया, या अंतिम प्रयास विफल रहा।"
          },
          "rail": {
            "type": "string",
            "enum": [
              "INTERNAL",
              "TRP",
              "GTR",
              "TRUST",
              "VERIFYVASP",
              "SYGNA",
              "EMAIL",
              ""
            ],
            "description": "संदेश ले जाने वाली रेल। जब तक Didit पहले संदेश के लिए किसी एक को चुन नहीं लेता, तब तक खाली रहता है।"
          },
          "attempts": {
            "type": "integer",
            "minimum": 0,
            "description": "इस संदेश के लिए अब तक किए गए प्रयास। एक संदेश जो स्थिति पोल नहीं है, उसके लिए अधिकतम 6 बार प्रयास किया जाता है।"
          },
          "last_error": {
            "type": "string",
            "description": "अंतिम प्रयास में हुई विफलता का प्रकार, कोई विफलता न होने पर `\"\"`: उदाहरण के लिए `email undeliverable`, `trp identity endpoint unreachable` या `trp transfer inquiry delivery failed`। इसमें कभी भी प्रतिपक्ष का अपना उत्तर नहीं होता, जो ट्रांसफ़र की `timeline` पर रहता है।\nजब GTR किसी त्रुटि के साथ उत्तर देता है, तो उसका अपना स्टेटस कोड और संदेश शामिल होता है। रिस्पॉन्स बॉडी कभी शामिल नहीं की जाती है।",
            "example": "email undeliverable"
          },
          "next_attempt_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "अगला प्रयास कब चलेगा जब संदेश `QUEUED` या `RETRYING` स्थिति में हो।"
          },
          "delivered_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "दूसरे पक्ष ने संदेश कब प्राप्त किया।"
          }
        }
      },
      "TravelRuleDiscoveryStep": {
        "type": "object",
        "description": "आउटबाउंड ट्रांसफ़र के लिए Didit द्वारा चलाई गई प्रतिपक्ष खोज का एक चरण, जिस क्रम में इसे चलाया गया था। किसी रूट वाले VASP का नाम बताने वाला पहला चरण श्रृंखला को समाप्त कर देता है।",
        "properties": {
          "step": {
            "type": "string",
            "enum": [
              "internal_address_book",
              "wallet_attribution",
              "network_lookup",
              "customer_hint",
              "end_user"
            ],
            "description": "`internal_address_book`: अन्य Didit ग्राहक जिसने गंतव्य वॉलेट पर नियंत्रण सिद्ध किया है। `wallet_attribution`: वॉलेट का ब्लॉकचेन एनालिटिक्स एट्रिब्यूशन। `network_lookup`: एक नेटवर्क जो यह बता सकता है कि किस VASP के पास यह पता है। `customer_hint`: VASP नाम, LEI या अधिकार क्षेत्र जो आपने `beneficiary_data` में भेजा है। `end_user`: वह प्रतिपक्ष जिसे अंतिम उपयोगकर्ता (या आपने) चुना है, या किसी एक को चुनने का अनुरोध।"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "match",
              "miss",
              "skipped"
            ],
            "description": "`match`: चरण ने एक प्रतिपक्ष का नाम निर्दिष्ट किया। `miss`: यह चला और कोई नहीं मिला। `skipped`: यह नहीं चल सका, और `reason` बताता है कि क्यों।"
          },
          "reason": {
            "type": "string",
            "description": "मशीन-पठनीय कारण, मिलान होने पर `\"\"`: `no_proven_internal_wallet`, `attribution_disabled`, `already_attributed`, `no_attributed_entity`, `directory_match_no_route`, `gtr_address_lookup_runs_on_dispatch`, `no_membership`, `network_switched_off`, `no_network_address_lookup`, `no_directory_match`, `awaiting_end_user` या `picked_member_without_proven_wallet`।"
          },
          "vasp": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "डायरेक्टरी VASP जिसे चरण ने नामित किया है, यदि उसने किसी को नामित किया हो।"
          },
          "rail": {
            "type": "string",
            "nullable": true,
            "description": "वह रेल जो उस प्रतिपक्ष तक पहुँचती है, जब चरण को कोई रेल मिल जाती है।"
          },
          "at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleNextAction": {
        "type": "object",
        "description": "एक क्रिया जो `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफ़र को आगे बढ़ाती है। देखें [ट्रांसफ़र क्यों अटका हुआ है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।",
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "select_counterparty_vasp",
              "declare_self_hosted",
              "add_vasp_hint",
              "update_compliance_email",
              "resend"
            ],
            "description": "`select_counterparty_vasp`: अंतिम उपयोगकर्ता वॉलेट-स्वामित्व विजेट में गंतव्य VASP चुनता है, या आप `action=beneficiary_vasp` को PATCH करते हैं। `declare_self_hosted`: अंतिम उपयोगकर्ता विजेट में वॉलेट को स्व-होस्टेड घोषित करता है। `add_vasp_hint`: Didit को बताएं कि VASP नाम, LEI या Travel Address (उदाहरण के लिए गंतव्य वॉलेट की एड्रेस-बुक प्रविष्टि पर एक `travel_address`) के साथ प्रतिपक्ष कौन है, फिर पुनः भेजें। `update_compliance_email` और `resend`, `PATCH /v3/transactions/{transaction_id}/travel-rule/` के `action` मान हैं: प्रतिपक्ष का अनुपालन ईमेल फिर से दें, और रूटिंग दोबारा चलाएँ।"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "`select_counterparty_vasp` और `declare_self_hosted` पर वॉलेट-स्वामित्व विजेट लिंक, जब ट्रांसफर में एक खुला विजेट सत्र हो।"
          }
        },
        "required": [
          "action"
        ]
      },
      "TransactionTravelRule": {
        "type": "object",
        "description": "किसी लेन-देन का Travel Rule ट्रांसफर, जैसा कि `GET /v3/transactions/{transaction_id}/`, `POST /v3/transactions/` का `201` और `GET /v3/transactions/` की प्रत्येक पंक्ति इसे लौटाती है। `direction`, `rail`, `counterparty_vasp`, `delivery`, `discovery`, `reason` और `next_actions` का आकार `PATCH /v3/transactions/{transaction_id}/travel-rule/` जैसा ही होता है, इसलिए लेन-देन को एक बार पढ़ने से पता चलता है कि उसका ट्रांसफर क्यों रुका हुआ है और क्या चीज़ इसे आगे बढ़ाती है।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string"
          },
          "protocol": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "obligations_count": {
            "type": "integer"
          },
          "originator_data": {
            "type": "object",
            "description": "प्रेषक पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक प्रतिपक्ष के मान छिपाए जाते हैं।"
          },
          "beneficiary_data": {
            "type": "object",
            "description": "लाभार्थी पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक प्रतिपक्ष के मान छिपे रहते हैं।"
          },
          "name_match": {
            "type": "object",
            "nullable": true,
            "description": "नाम तुलना जिसने ट्रांसफर तय किया (स्कोर और सख्ती)। एक बार चलने तक Null। तुलना किए गए नाम पक्षों के साथ मास्क किए जाते हैं।"
          },
          "data_match": {
            "$ref": "#/components/schemas/TravelRuleDataMatch"
          },
          "mismatched_fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "`data_match.mismatched_fields` के लिए शॉर्टकट। कुछ भी भिन्न न होने पर खाली।"
          },
          "data_unmasked": {
            "$ref": "#/components/schemas/TravelRuleDataUnmasked"
          },
          "data_masked": {
            "type": "boolean",
            "description": "सही जब इस रिस्पॉन्स में प्रतिपक्ष का व्यक्तिगत डेटा मास्क किया गया हो।"
          },
          "metadata": {
            "type": "object"
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ],
            "description": "यह ट्रांसफ़र एक्सचेंज का कौन सा पक्ष है।"
          },
          "rail": {
            "type": "string",
            "nullable": true,
            "description": "वह रेल जिसके माध्यम से ट्रांसफर हुआ: `INTERNAL`, `TRP`, `GTR`, `TRUST`, `VERIFYVASP`, `SYGNA` या `EMAIL` (सैंडबॉक्स एप्लिकेशन पर `TEST_VASP`, जब Didit Test VASP ने उत्तर दिया), या जब तक रेल नहीं चुनी जाती तब तक `null`।"
          },
          "counterparty_vasp": {
            "type": "object",
            "nullable": true,
            "properties": {
              "name": {
                "type": "string"
              },
              "lei": {
                "type": "string"
              },
              "dd_score": {
                "type": "integer",
                "description": "0 से 100 तक ड्यू-डिलिजेंस स्कोर, जहाँ अधिक स्कोर बेहतर होता है। VASP डायरेक्टरी के समान पैमाना।"
              },
              "dd_score_breakdown": {
                "type": "object",
                "description": "dd_score में प्रति-घटक योगदान, VASP डायरेक्टरी (jurisdiction, verification, protocol, lei, history, essentials, responsiveness) के अनुसार प्रति घटक एक ऑब्जेक्ट, प्रत्येक {points, max, reason, detail}। प्रतिपक्ष का मूल्यांकन होने तक {}।",
                "additionalProperties": {
                  "type": "object",
                  "properties": {
                    "points": {
                      "type": "number",
                      "description": "इस घटक के लिए दिए गए अंक।"
                    },
                    "max": {
                      "type": "integer",
                      "description": "अधिकतम अंक जो यह घटक दे सकता है।"
                    },
                    "reason": {
                      "type": "string",
                      "description": "घटक के निर्णय का मशीन-पठनीय कोड।"
                    },
                    "detail": {
                      "type": "string",
                      "description": "प्रदान किए गए अंकों का मानव-पठनीय कारण।"
                    }
                  }
                }
              },
              "dd_assessed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब उचित जाँच-पड़ताल मूल्यांकन अंतिम बार चला था। जब तक प्रतिपक्ष का मूल्यांकन न किया गया हो तब तक Null।"
              }
            },
            "description": "प्रतिपक्ष की डायरेक्टरी प्रविष्टि, या `null` जब ट्रांसफ़र किसी को लिंक नहीं करता है।"
          },
          "delivery": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleDelivery"
              }
            ],
            "description": "वह नवीनतम संदेश जो ट्रांसफ़र का किसी अन्य पक्ष पर बकाया है। `null` जब कोई बकाया नहीं रहा हो, उदाहरण के लिए `threshold_amount` से कम होने पर या घोषित स्व-होस्टेड वॉलेट के लिए।"
          },
          "discovery": {
            "type": "array",
            "description": "Didit ने प्रतिपक्ष की खोज कैसे की, निष्पादित प्रत्येक चरण के लिए एक प्रविष्टि। जब कोई खोज नहीं चली, उदाहरण के लिए इनबाउंड ट्रांसफ़र पर, तो रिक्त।",
            "items": {
              "$ref": "#/components/schemas/TravelRuleDiscoveryStep"
            }
          },
          "reason": {
            "type": "string",
            "description": "एक `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफर क्यों अटका हुआ है; किसी अन्य स्थिति के लिए `\"\"`। एक विफल डिलीवरी इसे पहले तय करती है, केवल `COUNTERPARTY_VASP_NOT_REACHABLE` पर: `email_undeliverable` (मेल प्रदाता ने अनुपालन ईमेल को अस्वीकार कर दिया और आज़माने के लिए कोई पता नहीं बचा: जब इसे भेजा गया था, रिमाइंडर पर, या बाद में रिपोर्ट किए गए स्थायी बाउंस के रूप में) या `delivery_failed` (जो रेल डिलीवर कर रही थी वह स्थायी रूप से विफल हो गई: एक नेटवर्क रेल ने संदेश को अस्वीकार कर दिया या उसके पुनः प्रयास समाप्त हो गए, एक `TRP` पहचान होस्ट ने उत्तर नहीं दिया, या प्रतिपक्ष के `TRP` होस्ट ने पूछताछ स्वीकार नहीं की)। अन्यथा `discovery` ट्रेस इसे तय करता है: `awaiting_end_user` (किसी भी चरण ने ऐसे प्रतिपक्ष का नाम नहीं दिया जिस तक Didit पहुँच सके), `directory_match_no_route` (एक चरण ने एक निर्देशिका VASP का नाम दिया जिसका कोई रूट नहीं है), `picked_member_without_proven_wallet` (अंतिम उपयोगकर्ता ने ऐसे Didit ग्राहक को चुना जिसने वॉलेट पर नियंत्रण साबित नहीं किया है), या `no_directory_match` जब ट्रेस कोई अन्य कारण नहीं देता है। पुनः भेजना ट्रांसफर को आगे बढ़ाता है, इसलिए कारण साफ़ हो जाता है। देखें [ट्रांसफर क्यों अटका हुआ है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।"
          },
          "next_actions": {
            "type": "array",
            "description": "ट्रांसफ़र को क्या आगे बढ़ाता है; `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` को छोड़कर किसी भी स्थिति के लिए `[]`। `email_undeliverable` `update_compliance_email`, फिर `resend` प्रदान करता है। `delivery_failed` `resend` प्रदान करता है। डिस्कवरी कारण `select_counterparty_vasp`, `declare_self_hosted`, `add_vasp_hint` और `resend` प्रदान करता है।",
            "items": {
              "$ref": "#/components/schemas/TravelRuleNextAction"
            }
          },
          "chain_details": {
            "$ref": "#/components/schemas/TravelRuleChainDetails"
          }
        }
      },
      "NetworkListCounts": {
        "type": "object",
        "description": "सूची के दृश्यों और फ़िल्टर विकल्पों के लिए नेटवर्क संख्या, प्रत्येक नेटवर्क की एक बार गणना की गई है। केवल तभी लौटाया जाता है जब `summary` `false` न हो। `scopes` एप्लिकेशन को दिखाई देने वाले प्रत्येक नेटवर्क की गणना करता है। `views` चयनित `scope` के अंदर दिखाई देने वाले नेटवर्क की गणना करता है। `facets` चयनित `scope` और `status` दृश्य में नेटवर्क की गणना करता है (खारिज किए गए नेटवर्क तब तक छोड़ दिए जाते हैं जब तक कि `status` में वे शामिल न हों)। अन्य सूची फ़िल्टर इन गणनाओं को नहीं बदलते हैं।",
        "properties": {
          "scopes": {
            "type": "object",
            "description": "उत्पाद के अनुसार दृश्यमान नेटवर्क।",
            "properties": {
              "all": {
                "type": "integer"
              },
              "identity": {
                "type": "integer",
                "description": "प्रत्येक अन्य नेटवर्क।"
              },
              "transactions": {
                "type": "integer",
                "description": "वे नेटवर्क जिनके सदस्य सभी लेन-देन पक्ष हैं।"
              }
            }
          },
          "views": {
            "type": "object",
            "description": "चयनित `scope` के अंदर दृश्यमान नेटवर्क, स्थिति के अनुसार, साथ ही दो सहेजे गए दृश्य।",
            "properties": {
              "all": {
                "type": "integer"
              },
              "active": {
                "type": "integer"
              },
              "in_review": {
                "type": "integer"
              },
              "resolved": {
                "type": "integer"
              },
              "dismissed": {
                "type": "integer"
              },
              "mine": {
                "type": "integer",
                "description": "कॉल करने वाले कंसोल सदस्य को असाइन किए गए नेटवर्क। API कुंजी के लिए हमेशा 0।"
              },
              "high_risk": {
                "type": "integer",
                "description": "80 या उससे अधिक के जोखिम स्कोर वाले नेटवर्क जो खारिज नहीं किए गए हैं।"
              }
            }
          },
          "facets": {
            "type": "object",
            "description": "चयनित `scope` और स्थिति दृश्य में, प्रत्येक फ़िल्टर विकल्प के लिए संख्या।",
            "properties": {
              "total": {
                "type": "integer",
                "description": "चयनित `scope` और स्थिति दृश्य में नेटवर्क।"
              },
              "last_activity_days": {
                "type": "object",
                "description": "पिछले 7, 30 और 90 दिनों में गतिविधि वाले नेटवर्क, दिनों की संख्या द्वारा कुंजीबद्ध।",
                "properties": {
                  "7": {
                    "type": "integer"
                  },
                  "30": {
                    "type": "integer"
                  },
                  "90": {
                    "type": "integer"
                  }
                }
              },
              "risk_min": {
                "type": "object",
                "description": "कम से कम 50 और कम से कम 80 के जोखिम स्कोर वाले नेटवर्क, थ्रेशोल्ड द्वारा कुंजीबद्ध।",
                "properties": {
                  "50": {
                    "type": "integer"
                  },
                  "80": {
                    "type": "integer"
                  }
                }
              },
              "signal_types": {
                "type": "object",
                "description": "प्रत्येक प्रकार के कम से कम एक सिग्नल वाले नेटवर्क।",
                "properties": {
                  "ip_address": {
                    "type": "integer"
                  },
                  "device": {
                    "type": "integer"
                  },
                  "face": {
                    "type": "integer"
                  },
                  "document_number": {
                    "type": "integer"
                  },
                  "phone": {
                    "type": "integer"
                  },
                  "email": {
                    "type": "integer"
                  },
                  "address": {
                    "type": "integer"
                  }
                }
              },
              "priority": {
                "type": "object",
                "description": "प्राथमिकता के आधार पर नेटवर्क। `none` बिना प्राथमिकता वाले नेटवर्क की गणना करता है।",
                "properties": {
                  "low": {
                    "type": "integer"
                  },
                  "medium": {
                    "type": "integer"
                  },
                  "high": {
                    "type": "integer"
                  },
                  "none": {
                    "type": "integer"
                  }
                }
              },
              "assignee": {
                "type": "object",
                "description": "असाइनी के अनुसार नेटवर्क।",
                "properties": {
                  "me": {
                    "type": "integer",
                    "description": "कॉल करने वाले कंसोल सदस्य को असाइन किया गया। API कुंजी के लिए हमेशा 0 होता है।"
                  },
                  "unassigned": {
                    "type": "integer",
                    "description": "किसी को असाइन नहीं किया गया।"
                  },
                  "users": {
                    "type": "array",
                    "description": "प्रत्येक असाइनी के लिए एक प्रविष्टि, सबसे अधिक नेटवर्क वाले पहले।",
                    "items": {
                      "type": "object",
                      "properties": {
                        "uuid": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "full_name": {
                          "type": "string",
                          "description": "असाइनी का नाम, या कोई नाम सेट न होने पर उनका ईमेल।"
                        },
                        "email": {
                          "type": "string"
                        },
                        "count": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              },
              "has_case": {
                "type": "integer",
                "description": "वे नेटवर्क जिनके लिए इस एप्लिकेशन ने केस खोला है।"
              },
              "min_size": {
                "type": "object",
                "description": "कम से कम 10 सदस्यों वाले नेटवर्क, न्यूनतम आकार द्वारा कुंजीबद्ध।",
                "properties": {
                  "10": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        }
      },
      "NetworkTag": {
        "type": "object",
        "description": "नेटवर्क पर आपके एप्लिकेशन के टैग में से एक।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "टैग का UUID, वही मान जो आप `tag_uuid` के रूप में पास करते हैं।"
          },
          "name": {
            "type": "string"
          },
          "color": {
            "type": "string",
            "description": "हेक्साडेसिमल रंग, उदाहरण के लिए `#6366F1`।"
          },
          "source": {
            "type": "string",
            "enum": [
              "didit",
              "custom"
            ],
            "description": "Didit प्रीसेट टैग के लिए `didit`, आपकी टीम द्वारा बनाए गए टैग के लिए `custom`।"
          },
          "added_by": {
            "type": "string",
            "nullable": true,
            "description": "टैग जोड़ने वाले कंसोल सदस्य का ईमेल। API कुंजी द्वारा जोड़े जाने पर Null।"
          },
          "added_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "NetworkOutcomes": {
        "type": "object",
        "description": "नेटवर्क के व्यक्तियों और व्यवसायों की स्थिति। आपके द्वारा देखा जाने वाला प्रत्येक सदस्य एक बार गिना जाता है, उनके सबसे हालिया सत्यापन की स्थिति के आधार पर जो किसी निर्णय तक पहुँचा था। लेन-देन के पक्षों की गणना नहीं की जाती है।",
        "properties": {
          "approved": {
            "type": "integer",
            "description": "वे सदस्य जिनका नवीनतम निर्णय किया गया सत्यापन स्वीकृत किया गया था।"
          },
          "declined": {
            "type": "integer",
            "description": "वे सदस्य जिनका नवीनतम निर्णय किया गया सत्यापन अस्वीकृत किया गया था।"
          },
          "in_review": {
            "type": "integer",
            "description": "वे सदस्य जिनका नवीनतम निर्णय किया गया सत्यापन समीक्षाधीन है।"
          },
          "total": {
            "type": "integer",
            "description": "कम से कम एक सत्यापन वाले सदस्य, चाहे उन पर निर्णय हुआ हो या नहीं। ऐसा सदस्य जिसके सभी सत्यापन अनिर्णीत हैं (शुरू नहीं हुए, प्रगति पर, समय-सीमा समाप्त या छोड़े गए), केवल यहाँ गिना जाता है और किसी अन्य कुंजी में नहीं।"
          }
        }
      },
      "NetworkPatternScore": {
        "type": "object",
        "description": "पूरे नेटवर्क में सदस्यों का एक प्रकार का डेटा कितना समान है। एक पैटर्न कोई सिग्नल नहीं है: कोई साझा मान सदस्यों को नहीं जोड़ता है।",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "background"
            ],
            "description": "`background`: व्यक्ति को मास्क आउट करके प्रत्येक सदस्य सेल्फ़ी पृष्ठभूमि की जोड़ी की औसत समानता। यह प्रत्येक व्यक्ति की नवीनतम सेल्फ़ी पढ़ता है, अधिकतम 50 नवीनतम, और आयु आश्वासन सत्रों को छोड़ देता है। यह केवल आपके एप्लिकेशन के सदस्यों को ही नहीं, बल्कि पूरे नेटवर्क को कवर करता है।"
          },
          "score": {
            "type": "number",
            "nullable": true,
            "minimum": 0,
            "maximum": 1,
            "description": "0 से 1 तक, 4 दशमलव स्थानों तक पूर्णांकित। `reason` सेट होने पर null।"
          },
          "members": {
            "type": "integer",
            "nullable": true,
            "description": "स्कोर ने कितने सदस्यों की सेल्फ़ी की तुलना की। जिस सेल्फ़ी को पढ़ा नहीं जा सकता, या जिसमें बहुत कम बैकग्राउंड दिखता है, उसकी तुलना नहीं की जाती है। `computing` के दौरान नल; `not_enough_selfies` के साथ 0 या 1।"
          },
          "reason": {
            "type": "string",
            "enum": [
              "computing",
              "not_enough_selfies"
            ],
            "nullable": true,
            "description": "स्कोर क्यों नहीं है। `computing`: वर्तमान सदस्यों के लिए स्कोर की गणना की जा रही है; नेटवर्क को बाद में फिर से पढ़ें। `not_enough_selfies`: दो से कम सदस्यों के पास उपयोग योग्य सेल्फ़ी है। स्कोर होने पर Null।"
          },
          "computed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "स्कोर की गणना कब की गई थी। `computing` के दौरान Null।"
          }
        }
      },
      "NetworkDetailResponse": {
        "description": "नेटवर्क विवरण, साथ ही संगठन का शेयरिंग मोड, क्या इस पर क्रॉस-संगठन सिग्नल लागू होते हैं, नेटवर्क पर आपके एप्लिकेशन के टैग, सदस्य परिणाम और पैटर्न स्कोर।",
        "allOf": [
          {
            "$ref": "#/components/schemas/NetworkDetail"
          },
          {
            "type": "object",
            "properties": {
              "sharing_mode": {
                "type": "string",
                "enum": [
                  "off",
                  "private",
                  "global"
                ],
                "description": "संगठन का क्रॉस-संगठन शेयरिंग मोड। केवल `global` ही विभिन्न संगठनों के नेटवर्क की तुलना करता है; `private` और `off` उन्हें संगठन के अपने इतिहास तक ही सीमित रखते हैं।",
                "example": "global"
              },
              "cross_org_available": {
                "type": "boolean",
                "description": "क्या क्रॉस-संगठन संकेत इस संगठन पर लागू होते हैं। उन्हें Enterprise प्लान और `global` शेयरिंग मोड दोनों की आवश्यकता होती है।",
                "example": true
              },
              "cross_org_unavailable_reason": {
                "type": "string",
                "enum": [
                  "plan",
                  "sharing_mode"
                ],
                "nullable": true,
                "description": "क्रॉस-ऑर्गेनाइज़ेशन सिग्नल क्यों लागू नहीं होते, इस क्रम में जाँचे जाते हैं। `plan`: संगठन के प्लान में क्रॉस-ऑर्गेनाइज़ेशन फ़्रॉड नेटवर्क शामिल नहीं है (इसके लिए Enterprise प्लान की आवश्यकता है), भले ही शेयरिंग मोड कुछ भी हो। `sharing_mode`: प्लान में यह शामिल है, लेकिन शेयरिंग मोड `private` या `off` है। `cross_org_available` के `true` होने पर Null।",
                "example": null
              },
              "tags": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NetworkTag"
                },
                "description": "नेटवर्क पर आपकी एप्लिकेशन के टैग, सबसे पुराने पहले। प्रत्येक एप्लिकेशन केवल अपने स्वयं के टैग देखती है। `fraud_tags` अलग और अपरिवर्तित है: वे टैग जो नेटवर्क के सदस्यों के पास हैं।"
              },
              "outcomes": {
                "$ref": "#/components/schemas/NetworkOutcomes"
              },
              "patterns": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/NetworkPatternScore"
                },
                "description": "पूरे नेटवर्क पर पैटर्न स्कोर। वर्तमान में एक आइटम, `background`।"
              }
            }
          }
        ]
      },
      "NetworkTagRequest": {
        "type": "object",
        "required": [
          "tag_uuid"
        ],
        "properties": {
          "tag_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "आपके एप्लिकेशन के टैग में से किसी एक का UUID।"
          }
        },
        "example": {
          "tag_uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
        }
      },
      "NetworkTimeline": {
        "title": "Default timeline (no contract)",
        "type": "object",
        "description": "`contract` के बिना: नेटवर्क के अपने इवेंट, सबसे पुराने पहले, पेजिनेट नहीं किए गए।",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkTimelineEvent"
            }
          }
        }
      },
      "NetworkTimelinePage": {
        "title": "Typed timeline page (contract=2)",
        "type": "object",
        "description": "`contract=2` के साथ: टाइप किए गए इवेंट्स का एक पेज, सबसे नए पहले।",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkTypedTimelineEvent"
            }
          },
          "next_cursor": {
            "type": "string",
            "nullable": true,
            "description": "अगला पृष्ठ पढ़ने के लिए `cursor` के रूप में पास करें। अंतिम पृष्ठ पर नल (Null)।"
          }
        }
      },
      "NetworkTypedTimelineEvent": {
        "type": "object",
        "description": "एक टाइप्ड टाइमलाइन इवेंट: चार डिफ़ॉल्ट फ़ील्ड, साथ ही इसकी id, जब Didit ने इसे संग्रहीत किया, सदस्य खाता और रिकॉर्ड जिससे यह संबंधित है, और इसके इवेंट प्रकार का विवरण ब्लॉक। अन्य विवरण ब्लॉक null हैं।",
        "properties": {
          "id": {
            "type": "string",
            "description": "`<source>:<uuid>`, टाइमलाइन के भीतर अद्वितीय।",
            "example": "session:3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "event_type": {
            "type": "string",
            "enum": [
              "network_detected",
              "signal_observed",
              "network_active",
              "network_in_review",
              "network_resolved",
              "network_dismissed",
              "verification_attempt",
              "transaction",
              "login",
              "rule_hit",
              "case_linked",
              "note_added"
            ]
          },
          "occurred_at": {
            "type": "string",
            "format": "date-time",
            "description": "यह कब हुआ।"
          },
          "ingested_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने इसे कब संग्रहीत किया।"
          },
          "label": {
            "type": "string",
            "description": "एक संक्षिप्त अंग्रेज़ी लेबल, उदाहरण के लिए `Verification attempt 2 of 3`।"
          },
          "metadata": {
            "type": "object",
            "description": "नेटवर्क के अपने इवेंट के लिए, डिफ़ॉल्ट टाइमलाइन जैसा ही मेटाडेटा। अन्यथा खाली।"
          },
          "account": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineAccount"
              }
            ],
            "nullable": true,
            "description": "सदस्य खाता। नेटवर्क के अपने इवेंट्स, `case_linked` और `note_added` के लिए Null।"
          },
          "source_ref": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineSourceRef"
              }
            ],
            "nullable": true,
            "description": "स्रोत रिकॉर्ड। नेटवर्क के अपने इवेंट और `note_added` के लिए नल (Null)।"
          },
          "verification_attempt": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineAttempt"
              }
            ],
            "nullable": true,
            "description": "`verification_attempt` इवेंट्स पर सेट होता है।"
          },
          "transaction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineTransaction"
              }
            ],
            "nullable": true,
            "description": "`transaction` इवेंट्स पर सेट होता है।"
          },
          "login": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineLogin"
              }
            ],
            "nullable": true,
            "description": "`login` इवेंट्स पर सेट होता है।"
          },
          "rule_hit": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineRuleHit"
              }
            ],
            "nullable": true,
            "description": "`rule_hit` इवेंट्स पर सेट होता है।"
          },
          "case_linked": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineCaseLinked"
              }
            ],
            "nullable": true,
            "description": "`case_linked` इवेंट्स पर सेट होता है।"
          },
          "note_added": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineNoteAdded"
              }
            ],
            "nullable": true,
            "description": "`note_added` इवेंट्स पर सेट होता है। किसी API कुंजी को कभी नहीं लौटाया जाता।"
          }
        }
      },
      "NetworkTimelineAccount": {
        "type": "object",
        "description": "सदस्य खाता जिससे यह इवेंट संबंधित है।",
        "properties": {
          "node_id": {
            "type": "string",
            "description": "`<kind>:<uuid>`, जहां kind `vendor_user`, `vendor_business` या `transaction_party` है।",
            "example": "vendor_user:3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "node_type": {
            "type": "string",
            "enum": [
              "account",
              "business_account",
              "transaction_party"
            ]
          },
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "ownership": {
            "type": "string",
            "enum": [
              "owned",
              "organization"
            ],
            "description": "जब रिकॉर्ड उस एप्लिकेशन से संबंधित हो जिसे आपने कॉल किया है (कंसोल सदस्य के लिए, उस एप्लिकेशन से जिसका एक्सेस उन्हें दिया गया था) तब `owned`। जब यह आपके संगठन के किसी अन्य एप्लिकेशन से संबंधित हो तब `organization`।"
          },
          "route": {
            "$ref": "#/components/schemas/NetworkTimelineRoute"
          }
        }
      },
      "NetworkTimelineSourceRef": {
        "type": "object",
        "description": "वह रिकॉर्ड जिससे इवेंट पढ़ा गया था।",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "session",
              "business_session",
              "transaction",
              "monitoring_event",
              "case"
            ]
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "ownership": {
            "type": "string",
            "enum": [
              "owned",
              "organization"
            ],
            "description": "जब रिकॉर्ड उस एप्लिकेशन से संबंधित हो जिसे आपने कॉल किया है (कंसोल सदस्य के लिए, उस एप्लिकेशन से जिसका एक्सेस उन्हें दिया गया था) तब `owned`। जब यह आपके संगठन के किसी अन्य एप्लिकेशन से संबंधित हो तब `organization`।"
          },
          "route": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineRoute"
              }
            ],
            "description": "`monitoring_event` और `case` के लिए अनुपस्थित।"
          }
        }
      },
      "NetworkTimelineRoute": {
        "type": "object",
        "description": "रिकॉर्ड कहाँ खुलता है: इसका प्रकार, इसका UUID और वह एप्लिकेशन जिससे यह संबंधित है।",
        "properties": {
          "kind": {
            "type": "string",
            "description": "खाते के लिए `user`, `business` या `transaction_party`; स्रोत रिकॉर्ड के लिए `session`, `business_session` या `transaction`।"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "application_id": {
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "NetworkTimelineAttempt": {
        "type": "object",
        "description": "खाते का एक सत्यापन सत्र।",
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "सत्र UUID, या किसी कंपनी के लिए व्यावसायिक सत्र UUID।"
          },
          "session_number": {
            "type": "integer",
            "nullable": true
          },
          "attempt": {
            "type": "integer",
            "description": "निर्माण क्रम में, खाते के सत्रों के बीच इस सत्र की स्थिति।"
          },
          "attempt_count": {
            "type": "integer",
            "description": "खाते में कितने सत्र हैं।"
          },
          "status": {
            "type": "string",
            "description": "सत्र की स्थिति, उदाहरण के लिए `Approved` या `Declined`।"
          },
          "status_changed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "decline_reasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NetworkTimelineDeclineReason"
            },
            "description": "केवल अस्वीकृत सत्र के लिए: इसकी चेतावनियाँ, सबसे पुरानी पहले, प्रति चेतावनी एक बार। अन्यथा खाली।"
          }
        }
      },
      "NetworkTimelineDeclineReason": {
        "type": "object",
        "properties": {
          "risk": {
            "type": "string",
            "description": "चेतावनी कोड।"
          },
          "feature": {
            "type": "string",
            "description": "वह सुविधा जिसने चेतावनी उत्पन्न की।"
          },
          "short_description": {
            "type": "string"
          }
        }
      },
      "NetworkTimelineTransaction": {
        "type": "object",
        "description": "एक लेन-देन जिसमें किसी सदस्य खाते ने भाग लिया था, उसकी लेन-देन तिथि के अनुसार दिनांकित।",
        "properties": {
          "transaction_id": {
            "type": "string",
            "format": "uuid"
          },
          "transaction_number": {
            "type": "integer",
            "nullable": true
          },
          "transaction_type": {
            "type": "string"
          },
          "action_type": {
            "type": "string"
          },
          "amount": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineAmount"
              }
            ],
            "nullable": true,
            "description": "जब लेन-देन में कोई राशि न हो तो नल।"
          },
          "status": {
            "type": "string"
          },
          "decision_reason_code": {
            "type": "string",
            "nullable": true
          },
          "decision_reason_label": {
            "type": "string",
            "nullable": true
          },
          "party_role": {
            "type": "string",
            "description": "लेन-देन में खाते की भूमिका: `APPLICANT`, `REMITTER`, `BENEFICIARY` या `COUNTERPARTY`।"
          }
        }
      },
      "NetworkTimelineAmount": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "स्ट्रिंग के रूप में दशमलव राशि।"
          },
          "currency": {
            "type": "string"
          },
          "direction": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "NetworkTimelineLogin": {
        "type": "object",
        "description": "एक साइन-इन इवेंट जिसे आपने इवेंट API के माध्यम से किसी व्यक्ति के लिए पोस्ट किया था।",
        "properties": {
          "action": {
            "type": "string",
            "description": "`<event_category>.<action_type>`: साइन-इन के लिए `auth.login` या `security.login_succeeded`, असफल होने पर `auth.login_failed` या `security.login_failed`।"
          },
          "succeeded": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "description": "इवेंट की स्थिति।"
          },
          "ip": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineIP"
              }
            ],
            "nullable": true,
            "description": "जब इवेंट में कोई IP पता न हो तो नल।"
          },
          "device": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NetworkTimelineDevice"
              }
            ],
            "nullable": true,
            "description": "जब इवेंट में कोई डिवाइस फ़िंगरप्रिंट या संदर्भ न हो तो नल।"
          },
          "is_first_login": {
            "type": "boolean",
            "description": "रिकॉर्ड में खाते का पहला सफल साइन-इन।"
          },
          "is_new_device": {
            "type": "boolean",
            "description": "एक ऐसे डिवाइस से एक सफल साइन-इन जिससे खाते के पिछले सफल साइन-इन में से कोई भी नहीं आया था। पहले साइन-इन पर कभी भी सत्य (true) नहीं होता।"
          }
        }
      },
      "NetworkTimelineIP": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string"
          },
          "country_code": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "connection_type": {
            "type": "string",
            "nullable": true,
            "description": "पते के लिए कनेक्शन प्रकार का लेबल, फ़्री टेक्स्ट के रूप में।"
          },
          "is_vpn_or_tor": {
            "type": "boolean"
          },
          "is_data_center": {
            "type": "boolean"
          }
        }
      },
      "NetworkTimelineDevice": {
        "type": "object",
        "properties": {
          "fingerprint": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true,
            "description": "इवेंट के डिवाइस संदर्भ से निर्मित एक पठनीय डिवाइस लेबल।"
          }
        }
      },
      "NetworkTimelineRuleHit": {
        "type": "object",
        "description": "एक लाइव नियम जो किसी सदस्य के लेन-देन या इवेंट से मेल खाता है। टेस्ट-मोड मिलान शामिल नहीं हैं।",
        "properties": {
          "rule_id": {
            "type": "string",
            "format": "uuid"
          },
          "rule_title": {
            "type": "string"
          },
          "rule_category": {
            "type": "string"
          },
          "rule_source": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "nullable": true
          },
          "score_delta": {
            "type": "integer"
          },
          "status_target": {
            "type": "string",
            "nullable": true
          },
          "action_summary": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "NetworkTimelineCaseLinked": {
        "type": "object",
        "description": "आपके संगठन में नेटवर्क के लिए खोला गया एक केस। `source_ref.ownership` बताता है कि यह आपके द्वारा कॉल किए गए एप्लिकेशन से संबंधित है या नहीं।",
        "properties": {
          "case_id": {
            "type": "string",
            "format": "uuid"
          },
          "case_number": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string"
          },
          "author_email": {
            "type": "string",
            "nullable": true
          },
          "author_name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "NetworkTimelineNoteAdded": {
        "type": "object",
        "description": "नेटवर्क पर छोड़ा गया एक नोट। नोट टेक्स्ट शामिल नहीं है।",
        "properties": {
          "note_id": {
            "type": "string",
            "format": "uuid"
          },
          "author_email": {
            "type": "string"
          }
        }
      },
      "FeatureStatusOverride": {
        "type": "object",
        "description": "`PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/` के साथ किए गए चेक (सुविधा) स्थिति का एक ओवरराइड: यह क्या बदलता है, क्या यह लागू हुआ या अभी भी व्यक्ति द्वारा फ़्लो पूरा करने की प्रतीक्षा कर रहा है, किसने अनुरोध किया और क्यों।",
        "required": [
          "id",
          "node_id",
          "feature_type",
          "feature_model",
          "previous_status",
          "new_status",
          "state",
          "forced",
          "reason",
          "requested_by",
          "requested_at",
          "applied_at",
          "cancelled_at",
          "cancel_reason"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ओवरराइड का पहचानकर्ता। इसे रद्द करने वाले endpoint पर पास करें।",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "node_id": {
            "type": "string",
            "description": "अनुरोध में नामित वर्कफ़्लो नोड (नोड के बिना वाले चरण के लिए `default`)।",
            "example": "feature_ocr_1"
          },
          "feature_type": {
            "type": "string",
            "description": "अनुरोध द्वारा पास किया गया `feature_type`, या यदि कोई पास नहीं किया गया तो खाली स्ट्रिंग।",
            "example": ""
          },
          "feature_model": {
            "type": "string",
            "description": "ओवरराइड की गई जाँच का प्रकार, उदाहरण के लिए `KYC`, `Face`, `AML` या `GeolocationCheck`।",
            "example": "KYC"
          },
          "previous_status": {
            "type": "string",
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Resub Requested"
            ],
            "description": "ओवरराइड का अनुरोध किए जाने के समय जाँच की स्थिति।",
            "example": "In Review"
          },
          "new_status": {
            "type": "string",
            "enum": [
              "Approved",
              "Declined",
              "In Review"
            ],
            "description": "वह स्थिति जिसे ओवरराइड सेट करता है।",
            "example": "Approved"
          },
          "state": {
            "type": "string",
            "enum": [
              "applied",
              "pending_until_flow_finishes",
              "cancelled"
            ],
            "description": "`applied`: जांच की नई स्थिति है। `pending_until_flow_finishes`: ओवरराइड प्रतीक्षा करता है और तब लागू होता है जब व्यक्ति फ़्लो पूरा करता है। `cancelled`: इसने प्रतीक्षा की और कभी लागू नहीं हुआ (`cancel_reason` देखें)।",
            "example": "applied"
          },
          "forced": {
            "type": "boolean",
            "description": "`true` जब ओवरराइड तुरंत लागू हो गया, जबकि व्यक्ति अभी भी फ़्लो में था।",
            "example": false
          },
          "reason": {
            "type": "string",
            "nullable": true,
            "description": "अनुरोध के साथ भेजा गया `comment`, या `null`।",
            "example": "Document manually verified by compliance."
          },
          "requested_by": {
            "type": "object",
            "nullable": true,
            "description": "ओवरराइड का अनुरोध किसने किया, या ज्ञात न होने पर `null`।",
            "properties": {
              "email": {
                "type": "string",
                "format": "email",
                "nullable": true,
                "description": "कंसोल उपयोगकर्ता का ईमेल, या API कुंजियों और सिस्टम के लिए `null`।",
                "example": "reviewer@example.com"
              },
              "name": {
                "type": "string",
                "nullable": true,
                "description": "अनुरोधकर्ता का डिस्प्ले नाम, या `null`।",
                "example": "Alex Reviewer"
              },
              "type": {
                "type": "string",
                "enum": [
                  "CONSOLE_USER",
                  "API_KEY",
                  "SYSTEM"
                ],
                "description": "अनुरोध किसने किया: एक कंसोल उपयोगकर्ता, एक API कुंजी, या स्वयं Didit।",
                "example": "CONSOLE_USER"
              }
            }
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "description": "ओवरराइड का अनुरोध कब किया गया था।",
            "example": "2026-10-13T09:15:00Z"
          },
          "applied_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब जाँच ने नई स्थिति ग्रहण की, या प्रतीक्षा करते समय या रद्द हो जाने पर `null`।",
            "example": "2026-10-13T09:15:00Z"
          },
          "cancelled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब एक प्रतीक्षारत ओवरराइड रद्द कर दिया गया था, या `null`।",
            "example": null
          },
          "cancel_reason": {
            "type": "string",
            "nullable": true,
            "enum": [
              "cancelled_by_reviewer",
              "replaced",
              "check_changed",
              "session_closed",
              null
            ],
            "description": "प्रतीक्षारत ओवरराइड कभी लागू क्यों नहीं हुआ, या `null`। `cancelled_by_reviewer`: कैंसल endpoint से रद्द किया गया। `replaced`: उसी जाँच पर नए ओवरराइड ने इसे बदल दिया। `check_changed`: व्यक्ति ने फ़्लो पूरा करने से पहले जाँच को दोबारा किया। `session_closed`: व्यक्ति द्वारा इसे पूरा करने से पहले सत्र फ़्लो से बाहर हो गया (छोड़ा गया, समय-सीमा समाप्त, या फ़्लो के बीच में निर्णय लिया गया)।",
            "example": null
          }
        }
      },
      "SandboxSimulateRequest": {
        "type": "object",
        "description": "सैंडबॉक्स सत्र की स्थिति को बाध्य करें। प्रत्येक फ़ील्ड वैकल्पिक है, लेकिन `new_status`, `scenario` या `risk` में से कम से कम एक आवश्यक है।",
        "properties": {
          "new_status": {
            "type": "string",
            "enum": [
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned"
            ],
            "description": "सेट की जाने वाली स्थिति। जब आप इसे छोड़ देते हैं, तो यह डिफ़ॉल्ट रूप से जोखिम केस की डिफ़ॉल्ट स्थिति (`risk`, या पहला जोखिम जो परिदृश्य के जादुई मानों में होता है) पर सेट हो जाती है, अन्यथा परिदृश्य की डिफ़ॉल्ट स्थिति पर।",
            "example": "Declined"
          },
          "comment": {
            "type": "string",
            "maxLength": 500,
            "description": "स्थिति परिवर्तन रिकॉर्ड करने वाली गतिविधि प्रविष्टि में जोड़ा गया नोट।",
            "example": "Testing the decline path"
          },
          "scenario": {
            "type": "string",
            "maxLength": 100,
            "description": "कैटलॉग (`GET /v1/sandbox/scenarios/`) से एक परिदृश्य स्लग। यह डिफ़ॉल्ट स्थिति और, `risk` के बिना, इसके मैजिक मानों में निहित चेतावनी प्रदान करता है। अज्ञात स्लग `400` लौटाता है।",
            "example": "decline_aml_hit"
          },
          "risk": {
            "type": "string",
            "maxLength": 128,
            "description": "कैटलॉग से एक जोखिम केस। इसकी चेतावनी को सत्र में जोड़ा जाता है, जिसमें `new_status` का अनुसरण करने वाला एक लॉग प्रकार होता है। अज्ञात मान `400` लौटाता है।",
            "example": "POSSIBLE_MATCH_FOUND"
          },
          "node_id": {
            "type": "string",
            "maxLength": 128,
            "description": "वर्कफ़्लो नोड जिससे जोखिम चेतावनी जुड़ी है। डिफ़ॉल्ट रूप से सत्र का वर्तमान नोड होता है।",
            "example": "feature_aml_1"
          },
          "send_webhooks": {
            "type": "boolean",
            "default": true,
            "description": "`true` ठीक वही webhook भेजता है जो एक वास्तविक स्थिति परिवर्तन सैंडबॉक्स एप्लिकेशन के गंतव्यों को भेजता है: `status.updated`, साथ ही इस परिवर्तन से उत्पन्न `user.status.updated` / `user.data.updated` (या `business.status.updated` / `business.data.updated`) इवेंट, उन गंतव्यों के लिए जो इनके लिए सब्सक्राइब हैं। `false` बिना किसी लॉगिंग या webhook भेजे स्थिति को बदल देता है: छूटी हुई webhook रिकवरी उस निर्णय को कभी फिर से नहीं भेजती है, कंसोल अभी भी लाइव अपडेट होता है, और सत्र का अगला स्थिति परिवर्तन सामान्य रूप से webhook भेजता है।",
            "example": true
          }
        }
      },
      "SandboxSimulateResponse": {
        "type": "object",
        "required": [
          "session_id",
          "previous_status",
          "status",
          "scenario",
          "risk",
          "send_webhooks"
        ],
        "properties": {
          "session_id": {
            "type": "string",
            "format": "uuid",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "previous_status": {
            "type": "string",
            "enum": [
              "Not Started",
              "In Progress",
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned",
              "Kyc Expired",
              "Resubmitted",
              "Awaiting User"
            ],
            "description": "सिमुलेशन से पहले सत्र की स्थिति।",
            "example": "In Progress"
          },
          "status": {
            "type": "string",
            "enum": [
              "Approved",
              "Declined",
              "In Review",
              "Expired",
              "Abandoned"
            ],
            "description": "सिम्युलेशन द्वारा सेट की गई स्थिति।",
            "example": "Declined"
          },
          "scenario": {
            "type": "string",
            "nullable": true,
            "description": "आपके द्वारा पास किया गया परिदृश्य स्लग, या `null`।",
            "example": "decline_aml_hit"
          },
          "risk": {
            "type": "string",
            "nullable": true,
            "description": "लागू किया गया जोखिम केस (`risk`, या परिदृश्य से लिया गया), या कोई न होने पर `null`।",
            "example": "POSSIBLE_MATCH_FOUND"
          },
          "send_webhooks": {
            "type": "boolean",
            "description": "सिमुलेशन द्वारा लागू किया गया `send_webhooks` मान।",
            "example": false
          }
        }
      },
      "CaseTeamSummary": {
        "type": "object",
        "nullable": true,
        "description": "समीक्षा टीम जो केस का स्वामित्व रखती है, या कोई टीम इसका स्वामित्व न रखने पर null। जब कोई रूटिंग नियम केस को उसकी किसी एक टीम को सौंपता है, तो रूटिंग इसे सेट करती है। इसे `PATCH .../cases/{case_uuid}/` (`team`) के साथ बदलें या साफ़ करें।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CaseChecker": {
        "type": "object",
        "nullable": true,
        "description": "लंबित समाधान को स्वीकृत या अस्वीकृत करने के लिए नामित सदस्य। केवल तभी सेट किया जाता है जब फ़ोर-आईज़ समाधान किसी नामित चेकर की प्रतीक्षा कर रहा हो। कुछ भी लंबित न होने पर, लंबित समाधान के चेकर कतार में प्रतीक्षा करने के दौरान, और साक्ष्य बदलने के कारण समाधान स्वीकृत, अस्वीकृत, या नई समीक्षा के लिए वापस किए जाने के बाद Null।",
        "properties": {
          "member_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "सदस्य का उपयोगकर्ता uuid: वह मान जो आप केस हल करते समय `checker` के रूप में पास करते हैं।"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "description": "सदस्य का पूरा नाम, या ज्ञात न होने पर null।"
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        }
      },
      "ServiceStatusFeed": {
        "type": "object",
        "description": "सार्वजनिक सेवा स्थिति: प्रत्येक Didit सेवा की स्थिति, समग्र स्थिति, और वे घटनाएं जो जारी हैं या पिछले 7 दिनों में हल की गई थीं।",
        "required": [
          "status",
          "updated_at",
          "services",
          "incidents"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "operational",
              "degraded",
              "down"
            ],
            "description": "वर्तमान में किसी भी सेवा की सबसे खराब स्थिति, जो केवल चल रही घटनाओं द्वारा तय की जाती है।",
            "example": "degraded"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Didit ने यह रिस्पॉन्स कब तैयार किया (ISO 8601, UTC)। रिस्पॉन्स 30 सेकंड के लिए कैश किए जाते हैं, इसलिए यह 30 सेकंड तक पुराना हो सकता है।",
            "example": "2026-10-13T09:41:07.512345Z"
          },
          "services": {
            "type": "array",
            "description": "प्रति सेवा एक प्रविष्टि, प्रत्येक सेवा हमेशा सूचीबद्ध होती है।",
            "items": {
              "$ref": "#/components/schemas/ServiceStatusService"
            }
          },
          "incidents": {
            "type": "array",
            "description": "नवीनतम `started_at` पहले। प्रत्येक जारी घटना, साथ ही पिछले 7 दिनों में हल की गई घटनाएं (अधिकतम 50 हल की गई घटनाएं)। उस समय में कुछ भी न होने पर खाली।",
            "items": {
              "$ref": "#/components/schemas/ServiceStatusIncident"
            }
          }
        }
      },
      "ServiceStatusService": {
        "type": "object",
        "required": [
          "key",
          "name",
          "status"
        ],
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "service_id_verification",
              "service_liveness_face_match",
              "service_aml_screening",
              "service_kyb_registries",
              "service_database_validation",
              "service_phone_delivery",
              "service_email_delivery",
              "service_transaction_monitoring"
            ],
            "description": "स्थिर सर्विस कुंजी। इस पर मिलान करें, कभी भी डिस्प्ले नाम पर नहीं। `service_id_verification`: पहचान सत्यापन, `service_liveness_face_match`: लाइवनेस और चेहरा मिलान, `service_aml_screening`: AML स्क्रीनिंग, `service_kyb_registries`: KYB रजिस्ट्रियाँ, `service_database_validation`: डेटाबेस सत्यापन, `service_phone_delivery`: फ़ोन सत्यापन डिलीवरी, `service_email_delivery`: ईमेल सत्यापन डिलीवरी, `service_transaction_monitoring`: लेन-देन निगरानी।",
            "example": "service_database_validation"
          },
          "name": {
            "type": "string",
            "description": "सेवा का अंग्रेज़ी डिस्प्ले नाम।",
            "example": "Database validation"
          },
          "status": {
            "type": "string",
            "enum": [
              "operational",
              "degraded",
              "down"
            ],
            "description": "जब सेवा के लिए कोई घटना जारी न हो तब `operational`, अन्यथा इसकी जारी घटनाओं की सबसे खराब स्थिति।",
            "example": "degraded"
          }
        }
      },
      "ServiceStatusIncident": {
        "type": "object",
        "required": [
          "id",
          "service",
          "service_name",
          "state",
          "status",
          "title",
          "body",
          "affected",
          "country_name",
          "started_at",
          "resolved_at",
          "duration_minutes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "इंसिडेंट ID।",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "service": {
            "type": "string",
            "enum": [
              "service_id_verification",
              "service_liveness_face_match",
              "service_aml_screening",
              "service_kyb_registries",
              "service_database_validation",
              "service_phone_delivery",
              "service_email_delivery",
              "service_transaction_monitoring"
            ],
            "description": "प्रभावित सेवा की कुंजी (`services[].key` देखें)।",
            "example": "service_database_validation"
          },
          "service_name": {
            "type": "string",
            "description": "प्रभावित सेवा का अंग्रेज़ी डिस्प्ले नाम।",
            "example": "Database validation"
          },
          "state": {
            "type": "string",
            "enum": [
              "degraded",
              "down"
            ],
            "description": "सेवा कैसे प्रभावित होती है। एक हल किया गया इंसिडेंट अपनी अंतिम स्थिति को बनाए रखता है।",
            "example": "degraded"
          },
          "status": {
            "type": "string",
            "enum": [
              "ongoing",
              "resolved"
            ],
            "description": "सेवा के ठीक होने तक `ongoing`, फिर `resolved`।",
            "example": "ongoing"
          },
          "title": {
            "type": "string",
            "description": "अंग्रेज़ी शीर्षक। इसका अनुवाद करने के लिए, `service`, `state` और `country_name` से अपना स्वयं का टेक्स्ट बनाएं।",
            "example": "Database validation is degraded in Brazil."
          },
          "body": {
            "type": "string",
            "description": "अंग्रेज़ी विवरण पंक्ति: कब से जाँच धीमी हो सकती है या विफल हो सकती है, या कब यह ठीक हो गई।",
            "example": "Checks against Brazil (CPF) may be slow or fail since 08:55 UTC."
          },
          "affected": {
            "type": "string",
            "description": "प्रभावित देश या रजिस्ट्रियाँ, उदाहरण के लिए `Brazil (CPF)`। खाली जब घटना किसी देश या रजिस्ट्री से जुड़ी न हो।",
            "example": "Brazil (CPF)"
          },
          "country_name": {
            "type": "string",
            "description": "प्रभावित देश, अंग्रेज़ी में। खाली जब घटना किसी देश से जुड़ी न हो।",
            "example": "Brazil"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "description": "इंसीडेंट कब शुरू हुआ (ISO 8601, UTC)।",
            "example": "2026-10-13T08:55:00Z"
          },
          "resolved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "सेवा कब पुनर्बहाल हुई (ISO 8601, UTC)। इंसीडेंट जारी रहने के दौरान `null`।"
          },
          "duration_minutes": {
            "type": "integer",
            "nullable": true,
            "description": "`started_at` से `resolved_at` तक के पूर्ण मिनट। घटना जारी रहने तक `null`।"
          }
        }
      },
      "TravelRuleJoinInvitation": {
        "type": "object",
        "description": "कुछ भी टाइप करने से पहले जॉइन पेज क्या दिखाता है।",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "description": "वह पता जिस पर आमंत्रण भेजा गया था।"
          },
          "vasp_name": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "description": "निमंत्रण कहाँ से आया, उदाहरण के लिए `pickup`।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "prefill": {
            "type": "object",
            "properties": {
              "vasp_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "legal_name": {
                "type": "string"
              },
              "lei": {
                "type": "string"
              },
              "jurisdiction": {
                "type": "string"
              },
              "domains": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "TravelRuleJoinRegisterRequest": {
        "type": "object",
        "required": [
          "email",
          "password"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254,
            "description": "वही पता होना चाहिए जिस पर आमंत्रण भेजा गया था।"
          },
          "password": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128
          }
        }
      },
      "TravelRuleJoinVerifyRequest": {
        "type": "object",
        "required": [
          "email",
          "code"
        ],
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          },
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6,
            "description": "पंजीकरण के बाद ईमेल से भेजा गया 6-वर्ण का कोड"
          }
        }
      },
      "TravelRuleJoinCredentials": {
        "type": "object",
        "description": "नया निःशुल्क संगठन और वे क्रेडेंशियल जिनके साथ इसका एप्लिकेशन API को कॉल करता है।",
        "properties": {
          "organization": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          "application": {
            "type": "object",
            "properties": {
              "uuid": {
                "type": "string",
                "format": "uuid"
              }
            }
          },
          "client_id": {
            "type": "string"
          },
          "api_key": {
            "type": "string",
            "description": "वर्कस्पेस endpoint पर `x-api-key` हेडर के रूप में भेजें।"
          }
        }
      },
      "TravelRuleWorkspaceClaimRequest": {
        "type": "object",
        "required": [
          "vasp_id"
        ],
        "properties": {
          "vasp_id": {
            "type": "string",
            "format": "uuid",
            "description": "डायरेक्टरी एंट्री जो यह वर्कस्पेस है। `GET /v3/travel-rule/vasps/` से id पढ़ें।"
          }
        }
      },
      "TravelRuleWorkspaceDomainConfirmRequest": {
        "type": "object",
        "required": [
          "code"
        ],
        "properties": {
          "code": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6
          }
        }
      },
      "TravelRuleWorkspaceBillingRequest": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean",
            "default": true,
            "description": "केवल `true` स्वीकार किया जाता है: API के माध्यम से आउटबाउंड बिलिंग को वापस बंद नहीं किया जा सकता है।"
          }
        }
      },
      "TravelRuleWorkspaceDomainCodeResponse": {
        "type": "object",
        "properties": {
          "domain": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "unverified",
              "code_sent",
              "verified"
            ]
          },
          "txt": {
            "$ref": "#/components/schemas/TravelRuleWorkspaceTxtRecord"
          }
        }
      },
      "TravelRuleWorkspaceTxtRecord": {
        "type": "object",
        "description": "DNS प्रमाण के लिए प्रकाशित किया जाने वाला TXT रिकॉर्ड। प्रमाण शुरू होने तक खाली।",
        "properties": {
          "host": {
            "type": "string",
            "example": "didit-tr-verify.example.com"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "TravelRuleWorkspace": {
        "type": "object",
        "description": "मुफ़्त में शामिल हुए एप्लिकेशन का निःशुल्क Travel Rule कार्यस्थान।",
        "properties": {
          "joined_free": {
            "type": "boolean"
          },
          "work_email": {
            "type": "string",
            "format": "email"
          },
          "joined_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "claim": {
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "unclaimed",
                  "pending_review",
                  "claimed",
                  "rejected"
                ]
              },
              "proved_by_domain": {
                "type": "boolean"
              },
              "claimed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "reviewed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "review_note": {
                "type": "string"
              },
              "vasp_id": {
                "type": "string",
                "format": "uuid",
                "nullable": true
              },
              "vasp_name": {
                "type": "string"
              }
            }
          },
          "prefill": {
            "type": "object",
            "description": "निर्देशिका प्रविष्टि से लिए गए प्रोफ़ाइल मान: `vasp_id`, `legal_name`, `lei`, `jurisdiction`, `compliance_email`, `domains`। दावा किए जाने तक कुछ भी नहीं लिखा जाता है।"
          },
          "domain": {
            "type": "object",
            "properties": {
              "domain": {
                "type": "string"
              },
              "status": {
                "type": "string",
                "enum": [
                  "unverified",
                  "code_sent",
                  "verified"
                ]
              },
              "verified_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true
              },
              "txt": {
                "$ref": "#/components/schemas/TravelRuleWorkspaceTxtRecord"
              }
            }
          },
          "billing_enabled": {
            "type": "boolean",
            "description": "Travel Rule डेटा प्राप्त करना निःशुल्क है। भेजना केवल बिलिंग सक्षम होने के बाद ही बिल किया जाता है।"
          },
          "billing_enabled_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "didit_network": {
            "type": "object",
            "description": "क्या Didit नेटवर्क इस VASP को सूचीबद्ध करता है और, यदि नहीं, तो प्रत्येक शर्त जिसे यह अभी भी पूरा नहीं करता है।"
          },
          "settings": {
            "$ref": "#/components/schemas/TravelRuleSettingsDetail"
          }
        }
      },
      "InvestigatorDecision": {
        "type": "object",
        "description": "आइटम Investigator कतार से कैसे बाहर निकला। `decided_by`, `original_outcome` और `overrides` accept और override endpoints तथा रिपोर्ट द्वारा लौटाए जाते हैं; सत्र निर्णय का `investigator` ब्लॉक अन्य फ़ील्ड रखता है।",
        "properties": {
          "outcome": {
            "type": "string",
            "enum": [
              "accepted",
              "edited",
              "overridden",
              "decided_elsewhere",
              "automated"
            ],
            "description": "`accepted` या `edited` ने अनुशंसा को स्वीकार किया (`edited` पुनः लिखे गए विवरण के साथ), `overridden` ने दूसरी कार्रवाई की, `decided_elsewhere` रिपोर्ट खुली होने के दौरान Investigator के बाहर लिया गया निर्णय है, `automated` ऐसा निर्णय है जो Investigator ने स्वयं लिया था।"
          },
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "decline",
              "escalate",
              "request"
            ]
          },
          "actor_email": {
            "type": "string",
            "nullable": true
          },
          "actor_name": {
            "type": "string",
            "nullable": true
          },
          "override_category": {
            "type": "string",
            "enum": [
              "missing_context",
              "needs_information",
              "policy_differs",
              "evidence_misread",
              "other",
              ""
            ],
            "nullable": true
          },
          "override_reason": {
            "type": "string",
            "nullable": true
          },
          "final_status": {
            "type": "string",
            "description": "निर्णय के बाद आइटम की स्थिति।"
          },
          "agreed": {
            "type": "boolean",
            "description": "क्या निर्णय सिफ़ारिश से मेल खाता था।",
            "nullable": true
          },
          "decided_at": {
            "type": "string",
            "format": "date-time"
          },
          "billed": {
            "type": "boolean",
            "description": "समीक्षा के लिए शुल्क लिया गया था।"
          },
          "decided_by": {
            "type": "string",
            "enum": [
              "investigator",
              "member"
            ]
          },
          "original_outcome": {
            "type": "object",
            "description": "Investigator द्वारा स्वतंत्र रूप से लिया गया निर्णय, जो बाद के ओवरराइड द्वारा अपरिवर्तित रहता है। टीम द्वारा लिए गए निर्णय के लिए null।",
            "properties": {
              "action": {
                "type": "string"
              },
              "final_status": {
                "type": "string"
              },
              "decided_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "nullable": true
          },
          "overrides": {
            "type": "array",
            "description": "अन्वेषक द्वारा अपने दम पर लिए गए निर्णय का प्रत्येक ओवरराइड, सबसे पुराना पहले।",
            "items": {
              "type": "object",
              "properties": {
                "action": {
                  "type": "string"
                },
                "actor_email": {
                  "type": "string",
                  "nullable": true
                },
                "actor_name": {
                  "type": "string",
                  "nullable": true
                },
                "override_category": {
                  "type": "string"
                },
                "override_reason": {
                  "type": "string"
                },
                "previous_status": {
                  "type": "string"
                },
                "final_status": {
                  "type": "string"
                },
                "agreed": {
                  "type": "boolean",
                  "nullable": true
                },
                "overridden_at": {
                  "type": "string",
                  "format": "date-time"
                }
              }
            }
          }
        }
      },
      "InvestigatorBlock": {
        "type": "object",
        "nullable": true,
        "description": "आइटम की नवीनतम Investigator समीक्षा, या जब इसकी कभी कोई समीक्षा नहीं हुई हो तो null। V3 सत्र और व्यावसायिक सत्र के निर्णय (और इसलिए `status.updated` webhooks) द्वारा वहन किए जाते हैं।",
        "properties": {
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "enum": [
              "running",
              "completed",
              "failed"
            ]
          },
          "stage": {
            "type": "string",
            "enum": [
              "shadow",
              "live"
            ]
          },
          "queue": {
            "type": "string",
            "enum": [
              "kyc",
              "kyb",
              "aml",
              "transactions",
              "cases"
            ]
          },
          "is_open": {
            "type": "boolean"
          },
          "recommendation": {
            "type": "string",
            "enum": [
              "approve",
              "decline",
              "escalate",
              "request"
            ],
            "nullable": true
          },
          "recommendation_detail": {
            "type": "string",
            "nullable": true
          },
          "confidence": {
            "type": "string",
            "enum": [
              "high",
              "moderate",
              "low"
            ],
            "nullable": true
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "ready_to_accept": {
            "type": "boolean"
          },
          "prepared_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "automated": {
            "type": "boolean",
            "description": "इन्वेस्टिगेटर ने स्वयं निर्णय लिया, भले ही बाद में निर्णय को ओवरराइड कर दिया गया हो।"
          },
          "decided_by": {
            "type": "string",
            "enum": [
              "investigator",
              "member"
            ],
            "nullable": true
          },
          "decision": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/InvestigatorDecision"
              }
            ],
            "type": "object"
          }
        }
      },
      "InvestigatorQueueRow": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "session",
              "business_session",
              "transaction",
              "case"
            ]
          },
          "queue": {
            "type": "string",
            "enum": [
              "kyc",
              "kyb",
              "aml",
              "transactions",
              "cases"
            ]
          },
          "stage": {
            "type": "string",
            "enum": [
              "shadow",
              "live"
            ]
          },
          "subject": {
            "type": "object",
            "description": "समीक्षाधीन आइटम: `id`, `number`, `status`, `name` और, प्रकार के आधार पर, `country`, `workflow`, `vendor_data`, `txn_id`, `amount`, `currency`, `direction`, `title` या `priority`।",
            "additionalProperties": true
          },
          "recommendation": {
            "type": "string",
            "enum": [
              "approve",
              "decline",
              "escalate",
              "request"
            ]
          },
          "recommendation_detail": {
            "type": "string"
          },
          "confidence": {
            "type": "string",
            "enum": [
              "high",
              "moderate",
              "low"
            ]
          },
          "summary": {
            "type": "string"
          },
          "sources_count": {
            "type": "integer"
          },
          "ready_to_accept": {
            "type": "boolean"
          },
          "guardrails": {
            "description": "इस आइटम को होल्ड करने वाले लॉक्ड गार्डरेल्स, यदि कोई हों।"
          },
          "waiting_since": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "due_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "prepared_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "InvestigatorRunDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/InvestigatorQueueRow"
          },
          {
            "type": "object",
            "properties": {
              "status": {
                "type": "string"
              },
              "is_open": {
                "type": "boolean"
              },
              "lookups": {
                "type": "integer",
                "description": "इसने कितने अनुभागों और लिंक किए गए रिकॉर्ड्स को पढ़ा।"
              },
              "duration_ms": {
                "type": "integer",
                "nullable": true
              },
              "agent_version": {
                "type": "string"
              },
              "prepared_before_opened": {
                "type": "boolean",
                "nullable": true
              },
              "report": {
                "type": "object",
                "additionalProperties": true,
                "description": "रिपोर्ट: तर्क, उनके निर्णय (`ok`, `risk`, `look`, `explained`, `context`) और उद्धृत स्रोतों के साथ साक्ष्य बिंदु, स्क्रीनिंग हिट निर्णय (`same`, `not_same`, `unclear`) और सुझाए गए अगले चरण।"
              },
              "trail": {
                "description": "मैंने क्या जाँचा: इसके द्वारा क्रम से पढ़े गए ओवरव्यू, अनुभाग और रिकॉर्ड।"
              },
              "decision": {
                "nullable": true,
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvestigatorDecision"
                  }
                ],
                "type": "object"
              },
              "autonomy": {
                "type": "object",
                "additionalProperties": true,
                "description": "ऑटोनॉमी ने रिपोर्ट से क्या निष्कर्ष निकाला (`result`, `reason`, `tier`, `policy_version`, `rule`, `agreement`, `decisions`, `threshold`, `at`)। जब कतार स्वचालित नहीं होती है तो Null।",
                "nullable": true
              }
            }
          }
        ]
      },
      "InvestigatorAcceptRequest": {
        "type": "object",
        "properties": {
          "narrative": {
            "type": "string",
            "maxLength": 4000,
            "description": "एक पुनर्लिखित विवरण। इसे भेजने पर निर्णय को संपादित और स्वीकृत के रूप में रिकॉर्ड किया जाता है।"
          },
          "send_email": {
            "type": "boolean",
            "default": false,
            "description": "व्यक्ति को निर्णय के बारे में ईमेल करें।"
          },
          "email_address": {
            "type": "string",
            "format": "email",
            "description": "जब `send_email` true हो, तब आवश्यक है।"
          },
          "email_language": {
            "type": "string",
            "default": "en",
            "maxLength": 16
          }
        }
      },
      "InvestigatorOverrideRequest": {
        "type": "object",
        "required": [
          "action",
          "category",
          "reason"
        ],
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "decline",
              "escalate",
              "request"
            ]
          },
          "category": {
            "type": "string",
            "enum": [
              "missing_context",
              "needs_information",
              "policy_differs",
              "evidence_misread",
              "other"
            ]
          },
          "reason": {
            "type": "string",
            "minLength": 10,
            "maxLength": 500
          },
          "send_email": {
            "type": "boolean",
            "default": false,
            "description": "व्यक्ति को निर्णय के बारे में ईमेल करें।"
          },
          "email_address": {
            "type": "string",
            "format": "email",
            "description": "जब `send_email` true हो, तब आवश्यक है।"
          },
          "email_language": {
            "type": "string",
            "default": "en",
            "maxLength": 16
          }
        }
      },
      "InvestigatorBatchAcceptRequest": {
        "type": "object",
        "required": [
          "run_ids"
        ],
        "properties": {
          "run_ids": {
            "type": "array",
            "minItems": 1,
            "maxItems": 50,
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        }
      },
      "InvestigatorBatchAcceptResponse": {
        "type": "object",
        "properties": {
          "accepted": {
            "type": "integer"
          },
          "skipped": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "run_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "result": {
                  "type": "string",
                  "enum": [
                    "accepted",
                    "skipped"
                  ]
                },
                "reason": {
                  "type": "string",
                  "enum": [
                    "not_found",
                    "forbidden",
                    "already_decided",
                    "not_ready",
                    "guardrail",
                    "invalid"
                  ]
                },
                "detail": {},
                "action": {
                  "type": "string"
                },
                "final_status": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "InvestigatorSettings": {
        "type": "object",
        "properties": {
          "stage": {
            "type": "string",
            "enum": [
              "none",
              "shadow",
              "live"
            ]
          },
          "stage_changed_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "stage_changed_by": {
            "type": "string",
            "readOnly": true
          },
          "monthly_spend_limit": {
            "type": "string",
            "format": "decimal",
            "description": "आपकी बिलिंग मुद्रा में मासिक सीमा, 0.01 से 1,000,000। Null इसे बंद कर देता है।",
            "nullable": true
          },
          "spend_limit": {
            "type": "object",
            "readOnly": true,
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "limit": {
                "type": "string",
                "format": "decimal",
                "nullable": true
              },
              "spent": {
                "type": "string",
                "format": "decimal"
              },
              "reviews": {
                "type": "integer"
              },
              "reserved": {
                "type": "string",
                "format": "decimal",
                "description": "प्रत्येक खुली लाइव रिपोर्ट की कीमत, जिसे रोक कर रखा गया है क्योंकि इसे स्वीकार करने पर शुल्क लगता है।"
              },
              "currency": {
                "type": "string"
              },
              "paused": {
                "type": "boolean",
                "description": "सीमा पर: कोई नई समीक्षा शुरू नहीं होती है।"
              }
            }
          }
        }
      },
      "TravelRuleUtxoEntry": {
        "type": "object",
        "description": "एक UTXO लेन-देन का एक इनपुट या आउटपुट, जैसा कि ब्लॉकचेन ने इसे रिकॉर्ड किया है।",
        "required": [
          "address"
        ],
        "properties": {
          "address": {
            "type": "string",
            "maxLength": 128
          },
          "amount": {
            "type": "string",
            "nullable": true,
            "description": "कॉइन की अपनी इकाई (BTC, satoshis नहीं) में दशमलव स्ट्रिंग। वैकल्पिक।",
            "example": "0.0125"
          },
          "txid": {
            "type": "string",
            "maxLength": 128,
            "description": "वैकल्पिक। वह लेन-देन जिसे कोई इनपुट खर्च करता है।"
          },
          "vout": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "description": "वैकल्पिक। वह आउटपुट इंडेक्स जिसे कोई इनपुट खर्च करता है।"
          }
        }
      },
      "TravelRuleUtxo": {
        "type": "object",
        "description": "UTXO ट्रांसफर (BTC, LTC, BCH, DOGE) के इनपुट और आउटपुट। केवल उन्हीं चेन पर स्वीकार किए जाते हैं: किसी अन्य चेन पर यह `400` होता है। उनसे Didit प्रेषक वॉलेट (घोषित किया गया वॉलेट, अन्यथा सबसे अधिक योगदान देने वाला इनपुट पता) और लाभार्थी आउटपुट (घोषित किया गया आउटपुट, अन्यथा एकमात्र आउटपुट जो किसी इनपुट पते को चेंज के रूप में वापस भुगतान नहीं करता है, अन्यथा ट्रांसफर राशि का भुगतान करने वाला एक आउटपुट) का अनुमान लगाता है। परिणाम ट्रांसफर के `chain_details` पर होता है।",
        "required": [
          "outputs"
        ],
        "properties": {
          "inputs": {
            "type": "array",
            "maxItems": 1000,
            "items": {
              "$ref": "#/components/schemas/TravelRuleUtxoEntry"
            },
            "description": "वैकल्पिक। इनपुट के बिना किसी प्रेषक का अनुमान नहीं लगाया जाता है और कोई चेंज आउटपुट पहचाना नहीं जाता है।"
          },
          "outputs": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1000,
            "items": {
              "$ref": "#/components/schemas/TravelRuleUtxoEntry"
            }
          }
        }
      },
      "TravelRuleChainSide": {
        "type": "object",
        "description": "एक पक्ष का वॉलेट जैसा कि Didit ने चेन डेटा से हल किया है।",
        "properties": {
          "address": {
            "type": "string",
            "description": "वॉलेट। मेमो नेटवर्क पर क्लासिक पता (एक XRP X-address अपने क्लासिक पते और उसके टैग में विभाजित होता है); Lightning पर प्राप्तकर्ता नोड id या Lightning Address।"
          },
          "memo": {
            "type": "string",
            "description": "वॉलेट का हिस्सा बनने वाला डेस्टिनेशन टैग या मेमो; किसी के न होने पर `\"\"`।"
          },
          "source": {
            "type": "string",
            "enum": [
              "declared",
              "x_address",
              "largest_input",
              "only_non_change_output",
              "amount_match",
              "invoice_payee",
              "updated"
            ],
            "description": "वॉलेट कहाँ से आया था: `declared` (आपका अनुरोध), `x_address` (XRP X-address से विभाजित), `largest_input` (UTXO इनपुट पता जिसने सबसे अधिक योगदान दिया), `only_non_change_output` (एकमात्र UTXO आउटपुट जो चेंज नहीं है), `amount_match` (ट्रांसफ़र राशि का भुगतान करने वाला एक UTXO आउटपुट), `invoice_payee` (Lightning भुगतान अनुरोध द्वारा निर्दिष्ट आदाता), `updated` (`action: update_originator_wallet` के साथ बाद में सेट किया गया)।"
          }
        }
      },
      "TravelRuleChainDetails": {
        "type": "object",
        "description": "ट्रांसफ़र की चेन अपने दो वॉलेट को कैसे नाम देती है, जब ट्रांसफ़र केवल एक पते द्वारा दूसरे को भुगतान करने तक सीमित न हो। खाता-श्रृंखला ट्रांसफ़र (EVM, Solana, Tron) के लिए खाली (`{}`), जहाँ दोनों पते वॉलेट हैं। मिलान, रूटिंग और एड्रेस बुक वॉलेट्स को सबसे पहले यहाँ से पढ़ते हैं।",
        "properties": {
          "chain": {
            "type": "string",
            "description": "कैनोनिकल चेन, उदा. `BTC`, `XRP`, या Lightning ट्रांसफ़र के लिए `LIGHTNING`।"
          },
          "shape": {
            "type": "string",
            "enum": [
              "utxo",
              "memo",
              "lightning"
            ]
          },
          "originator": {
            "$ref": "#/components/schemas/TravelRuleChainSide"
          },
          "beneficiary": {
            "$ref": "#/components/schemas/TravelRuleChainSide"
          },
          "utxo": {
            "type": "object",
            "description": "एक UTXO ट्रांसफ़र पर: संग्रहीत इनपुट और आउटपुट (दशमलव स्ट्रिंग के रूप में राशियां) और Didit ने किन आउटपुट को क्या पढ़ा।",
            "properties": {
              "inputs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TravelRuleUtxoEntry"
                }
              },
              "outputs": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TravelRuleUtxoEntry"
                }
              },
              "change_output_indexes": {
                "type": "array",
                "items": {
                  "type": "integer"
                },
                "description": "आउटपुट जो इनपुट पते पर वापस भुगतान करते हैं।"
              },
              "beneficiary_output_index": {
                "type": "integer",
                "nullable": true,
                "description": "वह आउटपुट जो लाभार्थी को भुगतान करता है; null जब किसी को अलग से पहचाना न जा सके।"
              }
            }
          },
          "lightning": {
            "type": "object",
            "description": "Lightning ट्रांसफ़र पर: भुगतान अनुरोध क्या कहता है। हमेशा `kind` (`bolt11`, `bolt12_offer`, `bolt12_invoice`, `bolt12_invoice_request`, `lnurl`, `lightning_address`, `node_id` या `unknown`); एक BOLT11 इनवॉइस `network`, `payee_node_id`, `payment_hash`, `amount_msat`, `created_at` और `expires_at` जोड़ता है; एक BOLT12 स्ट्रिंग `blinded_paths` और `payee_node_id` जोड़ती है; एक LNURL या एक Lightning Address अपना `domain` जोड़ता है। नेटवर्क पर कुछ भी हल नहीं किया जाता है: अनुरोध केवल डिकोड किया जाता है।",
            "additionalProperties": true
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "declared_originator_not_an_input",
                "declared_beneficiary_not_an_output",
                "beneficiary_output_ambiguous",
                "beneficiary_output_amount_differs"
              ]
            },
            "description": "UTXO विसंगतियाँ जिन पर ध्यान देने की आवश्यकता है: घोषित प्रेषक कोई इनपुट नहीं है, घोषित लाभार्थी कोई आउटपुट नहीं है, किसी एकल लाभार्थी आउटपुट की अलग से पहचान नहीं की जा सकी, या लाभार्थी आउटपुट लेन-देन में बताई गई राशि से भिन्न राशि का भुगतान करता है।"
          },
          "not_applicable_reason": {
            "type": "string",
            "enum": [
              "LIGHTNING_NO_PAYEE_IDENTIFIER",
              "LIGHTNING_BOLT12_BLINDED_PAYEE",
              "LIGHTNING_LNURL_NAMES_NO_PAYEE"
            ],
            "description": "एक आउटबाउंड Lightning ट्रांसफ़र पर जिसका भुगतान अनुरोध किसी प्राप्तकर्ता का नाम नहीं देता है: ट्रांसफ़र `NOT_APPLICABLE` क्यों है। `LIGHTNING_NO_PAYEE_IDENTIFIER` (अनुरोध किसी प्राप्तकर्ता नोड का नाम नहीं देता है, या डिकोड नहीं किया जा सका), `LIGHTNING_BOLT12_BLINDED_PAYEE` (ऑफ़र अपने प्राप्तकर्ता को ब्लाइंडेड पाथ के पीछे छुपाता है), `LIGHTNING_LNURL_NAMES_NO_PAYEE` (एक LNURL किसी सेवा का नाम देता है, प्राप्तकर्ता का नहीं)। वही कोड ट्रांसफ़र की अंतिम `timeline` प्रविष्टि को खोलता है।"
          }
        }
      },
      "WalletAddressImportRow": {
        "type": "object",
        "description": "इंपोर्ट करने के लिए एक वॉलेट: इसके `address`, इसके `address_hash`, या दोनों द्वारा। इन फ़ील्ड के camelCase रूपों को भी स्वीकार किया जाता है, जैसे `walletAddress`, `walletAddressHash`, `destinationTag` और `externalUserId`।",
        "properties": {
          "address": {
            "type": "string",
            "maxLength": 128,
            "description": "वॉलेट पता। उपनाम: `walletAddress`।"
          },
          "address_hash": {
            "type": "string",
            "description": "लोअरकेस पते का SHA-256, 64 hex वर्णों या 44 base64 वर्णों के रूप में। पते का खुलासा किए बिना वॉलेट पंजीकृत करने के लिए इसे अकेले भेजें; `address` के साथ भेजे जाने पर, यह उस पते का हैश होना चाहिए। उपनाम: `walletAddressHash`।"
          },
          "chain": {
            "type": "string",
            "maxLength": 32
          },
          "memo": {
            "type": "string",
            "maxLength": 256,
            "description": "डेस्टिनेशन टैग या मेमो। XRP: एक डेस्टिनेशन टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (एक JSON संख्या स्वीकार की जाती है)। XLM: 28 बाइट्स तक का टेक्स्ट मेमो, 64-बिट id या हेक्स में 32-बाइट हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक। Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और Lightning वॉलेट कोई मेमो स्वीकार नहीं करते हैं: वहाँ मेमो देने पर `400` मिलता है।"
          },
          "holder_name": {
            "type": "string",
            "maxLength": 255
          },
          "holder_vendor_data": {
            "type": "string",
            "maxLength": 255,
            "description": "धारक के लिए आपका आंतरिक पहचानकर्ता। उपनाम: `externalUserId`।"
          },
          "entity_type": {
            "type": "string",
            "enum": [
              "individual",
              "company"
            ],
            "default": "individual"
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "owner_type": {
            "type": "string",
            "enum": [
              "customer",
              "internal",
              "vasp"
            ],
            "default": "customer"
          },
          "travel_address": {
            "type": "string",
            "maxLength": 512
          },
          "self_declared": {
            "type": "boolean",
            "default": false,
            "description": "जब आपकी सेटिंग्स इसकी अनुमति दें, तो स्व-घोषणा के माध्यम से पहले से सत्यापित प्रविष्टि बनाएं।"
          }
        }
      },
      "WalletAddressImportReport": {
        "type": "object",
        "description": "इंपोर्ट की प्रत्येक पंक्ति के साथ क्या हुआ, भेजे गए क्रम में।",
        "properties": {
          "total": {
            "type": "integer"
          },
          "created": {
            "type": "integer"
          },
          "existing": {
            "type": "integer"
          },
          "duplicate": {
            "type": "integer"
          },
          "failed": {
            "type": "integer"
          },
          "rows": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "row": {
                  "type": "integer",
                  "description": "पंक्ति संख्या, 1 से शुरू।"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "created",
                    "existing",
                    "duplicate",
                    "failed"
                  ],
                  "description": "`created`: बुक में जोड़ा गया। `existing`: वॉलेट पहले से बुक में है और इसे अछूता छोड़ दिया गया था। `duplicate`: इस इंपोर्ट की पिछली पंक्ति को दोहराता है। `failed`: `errors` देखें।"
                },
                "entry_id": {
                  "type": "string",
                  "format": "uuid",
                  "nullable": true,
                  "description": "पंक्ति द्वारा बनाई गई या पाई गई एड्रेस-बुक प्रविष्टि।"
                },
                "errors": {
                  "type": "object",
                  "description": "एक `failed` पंक्ति की फ़ील्ड त्रुटियाँ; अन्यथा खाली।"
                },
                "duplicate_of_row": {
                  "type": "integer",
                  "nullable": true,
                  "description": "एक `duplicate` पंक्ति पर, वह पंक्ति जिसे यह दोहराती है।"
                }
              }
            }
          }
        }
      },
      "TravelRuleCounterpartyContact": {
        "type": "object",
        "description": "एक अनुपालन पता जिस पर EMAIL रेल किसी एक डायरेक्टरी प्रविष्टि के लिए लिखता है।",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid"
          },
          "counterparty": {
            "type": "string",
            "format": "uuid",
            "description": "डायरेक्टरी एंट्री की `id`, जैसा कि GET /v3/travel-rule/vasps/ दिखाता है।"
          },
          "counterparty_name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "name": {
            "type": "string",
            "description": "वैकल्पिक लेबल, उदाहरण के लिए टीम का नाम।"
          },
          "source": {
            "type": "string",
            "enum": [
              "staff",
              "application",
              "learned"
            ],
            "description": "staff: Didit द्वारा क्यूरेट किया गया। learned: VASP के अपने डोमेन में से एक का पता जिसने अपने रिस्पॉन्स लिंक के माध्यम से अनुरोध का उत्तर दिया। application: आपके एप्लिकेशन द्वारा जोड़ा गया।"
          },
          "scope": {
            "type": "string",
            "enum": [
              "platform",
              "application"
            ],
            "description": "platform: Didit द्वारा क्यूरेट किया गया या सत्यापित उत्तर से सीखा गया, प्रत्येक Didit ग्राहक के लिए उपयोग किया जाता है, आपके लिए केवल पढ़ने योग्य। application: आपके एप्लिकेशन के लिए निजी।"
          },
          "created_by": {
            "type": "string",
            "description": "प्लेटफ़ॉर्म संपर्कों और किसी API कुंजी द्वारा जोड़े गए संपर्कों के लिए खाली।"
          },
          "verified_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "इस पते ने अपने रिस्पॉन्स लिंक के माध्यम से किसी अनुरोध का अंतिम बार उत्तर कब दिया।"
          },
          "is_invalid": {
            "type": "boolean",
            "description": "पता बाउंस होने या शिकायत दर्ज होने के बाद true; EMAIL रेल इसे छोड़ देती है।"
          },
          "invalid_reason": {
            "type": "string",
            "enum": [
              "",
              "hard_bounce",
              "soft_bounce",
              "spam_complaint",
              "suppressed"
            ]
          },
          "invalid_detail": {
            "type": "string",
            "description": "प्राप्तकर्ता मेल सर्वर का कारण, जब उसने कोई कारण दिया हो।"
          },
          "invalid_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleCounterpartyContactCreate": {
        "type": "object",
        "required": [
          "counterparty",
          "email"
        ],
        "properties": {
          "counterparty": {
            "type": "string",
            "format": "uuid",
            "description": "डायरेक्टरी एंट्री की `id`।"
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          },
          "name": {
            "type": "string",
            "description": "वैकल्पिक लेबल।",
            "maxLength": 255
          }
        }
      },
      "TravelRuleNameMatch": {
        "type": "object",
        "nullable": true,
        "description": "नाम तुलना जिसने ट्रांसफर तय किया, या एक बार चलने तक null। जब तक पक्ष मास्क किए गए हों, और INTERNAL एक्सचेंज की अन्य ग्राहक की प्रति पर, `transfer_name`, `compared_name`, `matched_names` और `mismatched_names` छिपे होते हैं। `score` और `matched` असहमत हो सकते हैं: `matched` सख्ती का पालन करता है, `score` दोनों पूरे नामों की समानता है।",
        "properties": {
          "score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "दोनों पूरे नामों की समानता, 0 से 100। दोनों में से कोई भी नाम खाली होने पर 0।"
          },
          "matched": {
            "type": "boolean",
            "description": "क्या नाम `strictness` को संतुष्ट करते हैं। ट्रांसफ़र का परिणाम `data_match` का पालन करता है, जो प्रत्येक फ़ील्ड की तुलना करता है, इसलिए इसके true होने पर भी कोई ट्रांसफ़र COUNTERPARTY_MISMATCHED_DATA हो सकता है।"
          },
          "method": {
            "type": "string",
            "enum": [
              "none",
              "exact_token",
              "token_subset",
              "token_containment",
              "sequence_ratio"
            ],
            "description": "`matched` कैसे तय किया गया था: none (`NONE`), exact_token (`STRICT`), token_subset (`DEFAULT`), token_containment (`CONTAINS`) या sequence_ratio (`FUZZY`)।"
          },
          "strictness": {
            "type": "string",
            "enum": [
              "NONE",
              "STRICT",
              "CONTAINS",
              "DEFAULT",
              "FUZZY"
            ]
          },
          "compared_with": {
            "type": "string",
            "enum": [
              "wallet_holder",
              "counterparty_vasp"
            ],
            "description": "wallet_holder: वॉलेट के लिए रिकॉर्ड किया गया धारक। counterparty_vasp: वह नाम जिससे प्रतिपक्ष ने ईमेल रिस्पॉन्स पेज पर उत्तर दिया, या सैंडबॉक्स में Didit Test VASP का उत्तर।"
          },
          "transfer_name": {
            "type": "string",
            "description": "ट्रांसफर पर नाम।"
          },
          "compared_name": {
            "type": "string",
            "description": "वह नाम जिसके साथ इसकी तुलना की गई थी।"
          },
          "matched_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "`compared_name` में पाए गए `transfer_name` के शब्द।"
          },
          "mismatched_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "`compared_name` में अनुपस्थित `transfer_name` के शब्द, फिर `transfer_name` में अनुपस्थित `compared_name` के शब्द।"
          }
        }
      },
      "TravelRuleTransferRow": {
        "type": "object",
        "description": "एक Travel Rule ट्रांसफर जैसा कि ट्रांसफर सूची दिखाती है: केवल VASP नाम, वॉलेट और मेमो, कभी भी प्रेषक या लाभार्थी का व्यक्तिगत डेटा नहीं।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "ट्रांसफर की id।"
          },
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "description": "Didit लेन-देन जिससे यह ट्रांसफर संबंधित है।"
          },
          "txn_id": {
            "type": "string",
            "nullable": true,
            "description": "लेन-देन के लिए आपका अपना id। Didit आपके लिए जो ट्रांसफ़र बुक करता है, जैसे कि Didit Test VASP इनबाउंड ट्रांसफ़र, उनमें जनरेट किया गया id होता है।"
          },
          "txn_date": {
            "type": "string",
            "format": "date-time"
          },
          "kind": {
            "type": "string",
            "enum": [
              "withdrawal",
              "deposit",
              "message"
            ],
            "description": "withdrawal: आउटबाउंड। message: एक इनबाउंड ट्रांसफर जिसे किसी रेल ने प्रतिपक्ष के संदेश (एक TRP पूछताछ, INTERNAL इनबाउंड लेग, या एक GTR, VerifyVASP या Sygna Bridge संदेश) से बनाया है। deposit: कोई अन्य इनबाउंड ट्रांसफर।"
          },
          "direction": {
            "type": "string",
            "enum": [
              "INBOUND",
              "OUTBOUND"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "AWAITING_COUNTERPARTY",
              "ON_HOLD",
              "COMPLETED",
              "FINISHED",
              "CANCELLED",
              "EXPIRED",
              "COUNTERPARTY_MISMATCHED_DATA",
              "COUNTERPARTY_VASP_NOT_FOUND",
              "COUNTERPARTY_VASP_NOT_REACHABLE",
              "UNCONFIRMED_OWNERSHIP",
              "COUNTERPARTY_VASP_GENERAL_DECLINE",
              "NOT_ENOUGH_COUNTERPARTY_DATA",
              "NOT_APPLICABLE"
            ]
          },
          "reason": {
            "type": "string",
            "description": "एक `COUNTERPARTY_VASP_NOT_FOUND` या `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफर क्यों अटका हुआ है, ट्रांसफर के अपने `reason` जैसा ही मान, ताकि सूची प्रत्येक ट्रांसफर को खोले बिना बाउंस हुए अनुपालन ईमेल और बिना किसी रूट वाले प्रतिपक्ष के बीच अंतर बता सके। किसी अन्य स्थिति के लिए `\"\"`। देखें [ट्रांसफर क्यों अटका हुआ है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।"
          },
          "rail": {
            "type": "string",
            "nullable": true,
            "enum": [
              "INTERNAL",
              "TRP",
              "GTR",
              "TRUST",
              "VERIFYVASP",
              "SYGNA",
              "EMAIL",
              "TEST_VASP",
              null
            ]
          },
          "asset": {
            "type": "string",
            "description": "लेन-देन की मुद्रा।"
          },
          "amount": {
            "type": "string",
            "description": "सादे दशमलव के रूप में राशि, उदाहरण के लिए \"1.25\"।"
          },
          "originator_vasp": {
            "type": "string",
            "description": "आउटबाउंड: आपके VASP का कानूनी नाम। इनबाउंड: प्रतिपक्ष का नाम, उसकी डायरेक्टरी प्रविष्टि से, Didit नेटवर्क सदस्य, TRP प्रेषक, Didit Test VASP, या ट्रांसफर द्वारा घोषित नाम। कोई ज्ञात न होने पर खाली।"
          },
          "beneficiary_vasp": {
            "type": "string",
            "description": "आउटबाउंड: प्रतिपक्ष का नाम, जिसे उसी तरह निकाला गया है। इनबाउंड: आपके VASP का कानूनी नाम।"
          },
          "originator_wallet": {
            "type": "string"
          },
          "beneficiary_wallet": {
            "type": "string"
          },
          "originator_memo": {
            "type": "string",
            "description": "मेमो या गंतव्य टैग, उन श्रृंखलाओं पर खाली जहाँ यह नहीं होता।"
          },
          "beneficiary_memo": {
            "type": "string"
          },
          "originator_wallet_type": {
            "type": "string",
            "enum": [
              "vasp",
              "self_hosted",
              "own"
            ],
            "description": "vasp, self_hosted (अनहोस्टेड घोषित) या own (एक वॉलेट जिसे आपकी पता पुस्तिका आपका मानकर रिकॉर्ड करती है)। आपका अपना पक्ष हमेशा vasp होता है।"
          },
          "beneficiary_wallet_type": {
            "type": "string",
            "enum": [
              "vasp",
              "self_hosted",
              "own"
            ]
          },
          "matched_transaction_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "किसी डिपॉज़िट का दूसरा पक्ष जिसे आपने घोषित ट्रांसफ़र से मैन्युअल रूप से मिलाया है।"
          },
          "deadline_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "यदि ट्रांसफर अभी भी अपने प्रतिपक्ष की प्रतीक्षा कर रहा है, तो इसकी समय-सीमा कब समाप्त होगी। आपके द्वारा `POST /v3/transactions/` के साथ बनाए जाने वाले प्रत्येक ट्रांसफर पर सेट किया जाता है, जिसके लिए एक्सचेंज की आवश्यकता होती है, चाहे वह आउटबाउंड हो या इनबाउंड। थ्रेशोल्ड से नीचे, ऐसे Lightning भुगतान पर जिस पर Travel Rule लागू नहीं होता है, और ऐसे इनबाउंड ट्रांसफर पर null होता है जिसे प्रतिपक्ष द्वारा आपसे संपर्क करने पर Didit बनाता है (एक इनबाउंड TRP पूछताछ, एक नेटवर्क संदेश या INTERNAL इनबाउंड लेग)।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BankAccountCheckHolder": {
        "description": "वह नाम जिसके विरुद्ध खाते की जांच की जाती है। `full_name` और `business_name` में से ठीक एक भेजें।",
        "oneOf": [
          {
            "$ref": "#/components/schemas/BankAccountCheckPersonHolder"
          },
          {
            "$ref": "#/components/schemas/BankAccountCheckBusinessHolder"
          }
        ]
      },
      "BankAccountCheckRequest": {
        "type": "object",
        "required": [
          "country",
          "account",
          "holder"
        ],
        "properties": {
          "country": {
            "type": "string",
            "minLength": 3,
            "maxLength": 3,
            "description": "खाते का देश, ISO 3166-1 alpha-3 कोड के रूप में, उदाहरण के लिए `NGA`। लोअरकेस स्वीकार किया जाता है।",
            "example": "NGA"
          },
          "account": {
            "type": "object",
            "description": "खाता जिस तरह से उसका देश इसे लिखता है: एक `iban`, या देश के लिए आवश्यक बैंक या शाखा कोड के साथ एक `account_number` (`sort_code`, `routing_number`, `transit_institution`, `bsb`, `ifsc`, `bank_code` या `bic`)। मेक्सिको एक `clabe` और अर्जेंटीना एक `cbu_cvu` लेता है, जो पहले से ही बैंक का नाम बताते हैं। एक व्यावसायिक खाता वहां एक `registration_id` जोड़ता है जहां देश इसकी मांग करता है। रिक्त स्थान, डैश और बिंदुओं को अनदेखा किया जाता है। देश की जांच में उपयोग न की जाने वाली कुंजियों को अनदेखा किया जाता है; एक कुंजी जिसकी उसे आवश्यकता है और जो नहीं मिलती है वह एक `400` है जो इसका नाम बताती है।",
            "properties": {
              "iban": {
                "type": "string",
                "maxLength": 64,
                "description": "IBAN, ऐसे देश में जो IBAN का उपयोग करता है। यह `country` से संबंधित होना चाहिए।"
              },
              "account_number": {
                "type": "string",
                "maxLength": 64,
                "description": "खाता संख्या, ऐसे देश में जो खाते को एक अलग बैंक या शाखा कोड के साथ लिखता है।"
              },
              "sort_code": {
                "type": "string",
                "maxLength": 64,
                "description": "यूनाइटेड किंगडम: 6-अंकीय सॉर्ट कोड।"
              },
              "routing_number": {
                "type": "string",
                "maxLength": 64,
                "description": "संयुक्त राज्य अमेरिका: 9-अंकीय ABA रूटिंग नंबर।"
              },
              "transit_institution": {
                "type": "string",
                "maxLength": 64,
                "description": "कनाडा: 8-अंकीय ट्रांज़िट और संस्थान संख्या।"
              },
              "bsb": {
                "type": "string",
                "maxLength": 64,
                "description": "ऑस्ट्रेलिया: 6-अंकीय BSB।"
              },
              "ifsc": {
                "type": "string",
                "maxLength": 64,
                "description": "भारत: 11-वर्णीय IFSC।"
              },
              "bank_code": {
                "type": "string",
                "maxLength": 64,
                "description": "बैंक का कोड, जहाँ देश को इसकी आवश्यकता होती है, उदाहरण के लिए नाइजीरिया में।"
              },
              "bic": {
                "type": "string",
                "maxLength": 64,
                "description": "बैंक का BIC, जहाँ देश की जांच में इसकी आवश्यकता होती है।"
              },
              "clabe": {
                "type": "string",
                "maxLength": 64,
                "description": "मेक्सिको: 18-अंकीय CLABE। यह पहले से ही बैंक की पहचान करता है।"
              },
              "cbu_cvu": {
                "type": "string",
                "maxLength": 64,
                "description": "अर्जेंटीना: 22-अंकीय CBU या CVU। यह पहले से ही बैंक का नाम बताता है।"
              },
              "registration_id": {
                "type": "string",
                "maxLength": 64,
                "description": "एक व्यवसाय खाते की पंजीकरण संख्या, जहाँ देश इसकी माँग करता है।"
              }
            },
            "additionalProperties": {
              "type": "string",
              "maxLength": 64
            },
            "example": {
              "bank_code": "000014",
              "account_number": "0123450001"
            }
          },
          "holder": {
            "$ref": "#/components/schemas/BankAccountCheckHolder"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस जाँच के लिए आपका अपना संदर्भ, बिना किसी बदलाव के वापस किया गया।",
            "example": "payout_20481"
          },
          "consent": {
            "type": "boolean",
            "default": false,
            "description": "जब खाताधारक ने इस जाँच के लिए स्पष्ट रूप से सहमति दी हो, तो `true` पर सेट करें। उन देशों में आवश्यक है जहाँ खाता जाँच के लिए उस सहमति की आवश्यकता होती है: इसके बिना जाँच को `400` के साथ अस्वीकार कर दिया जाता है जिसका `field` `consent` है और जिसका `reason` `required` है, और कुछ भी बिल नहीं किया जाता है। अन्य जगहों पर यह वैकल्पिक है, और जब आप इसे भेजते हैं तो Didit इसे जाँच के शुल्क के साथ रिकॉर्ड करता है।",
            "example": true
          }
        }
      },
      "BankAccountCheckResponse": {
        "type": "object",
        "required": [
          "request_id",
          "result",
          "holder_name",
          "account",
          "vendor_data",
          "created_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस जांच की ID।"
          },
          "result": {
            "type": "string",
            "enum": [
              "match",
              "close_match",
              "no_match",
              "cannot_verify"
            ],
            "description": "`match`: बैंक में खाता आपके द्वारा भेजे गए नाम के तहत है। `close_match`: मिलते-जुलते नाम के तहत, उदाहरण के लिए छूटा हुआ मध्य नाम या कोई टाइपो। `no_match`: किसी अन्य नाम के तहत, या ऐसा कोई खाता मौजूद नहीं है। `cannot_verify`: बैंक ने नाम की तुलना किए बिना उत्तर दिया, उदाहरण के लिए किसी ब्लॉक या बंद खाते के लिए।"
          },
          "holder_name": {
            "type": "string",
            "nullable": true,
            "description": "केवल `close_match` पर, और केवल तभी जब बैंक ने इसे लौटाया हो: खाते में दर्ज नाम, जैसा कि बैंक के रिकॉर्ड में है। अन्यथा `null`।"
          },
          "account": {
            "type": "string",
            "description": "खाता, केवल अंतिम 4 वर्ण दिखाते हुए मास्क किया गया।"
          },
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "आपका अपना संदर्भ, जैसा आपने भेजा था।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब जाँच चली थी, UTC में।"
          }
        }
      },
      "BankAccountCheckError": {
        "type": "object",
        "required": [
          "detail"
        ],
        "properties": {
          "detail": {
            "type": "string",
            "description": "क्या समस्या हुई, अंग्रेज़ी में।"
          },
          "code": {
            "type": "string",
            "description": "शाखा (branch) निर्धारित करने के लिए एक स्थिर कोड। `401` और `403` पर अनुपस्थित।"
          },
          "field": {
            "type": "string",
            "description": "केवल `400`: सही करने के लिए बॉडी फ़ील्ड, एक डॉटेड पाथ के रूप में, उदाहरण के लिए `account.sort_code`।"
          },
          "reason": {
            "type": "string",
            "enum": [
              "required",
              "length",
              "format",
              "checksum",
              "country_mismatch",
              "rejected"
            ],
            "description": "केवल `400`: फ़ील्ड अस्वीकार किए जाने का कारण। `required`, `length`, `format`, `checksum` और `country_mismatch` (किसी अन्य देश का IBAN) Didit के अपने चेक हैं; `rejected` का अर्थ है कि बैंक ने खाते को भेजे गए अनुसार अस्वीकार कर दिया।"
          }
        }
      },
      "BankVerificationResult": {
        "type": "object",
        "description": "उपयोगकर्ता और व्यवसाय सत्यापन के लिए एक बैंक सत्यापन चरण का परिणाम। `method` बताता है कि खाते का सत्यापन कैसे किया गया था, और `none` कि व्यक्ति ने किसी भी प्रयास का मूल्यांकन किए जाने से पहले बैंक के बिना जारी रखा। `continued_without_bank` बताता है कि व्यक्ति ने बैंक के बिना जारी रखा, मूल्यांकन किए गए प्रयास के बाद भी। देखें [बैंक सत्यापन विधियाँ](/hi/core-technology/bank-verification/verification-methods) और [जब व्यक्ति अपने बैंक का सत्यापन नहीं कर सकता](/hi/core-technology/bank-verification/fallbacks)।",
        "properties": {
          "schema_version": {
            "type": "integer",
            "description": "इस परिणाम संरचना का संस्करण। वर्तमान में `1`।"
          },
          "bank_verification_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस परिणाम की ID।"
          },
          "node_id": {
            "type": "string",
            "description": "वर्कफ़्लो नोड जिससे यह परिणाम संबंधित है।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Expired"
            ],
            "description": "अपनी कार्रवाइयों और स्थिति नियमों के बाद, चरण का निर्णय।"
          },
          "original_status": {
            "type": "string",
            "nullable": true,
            "description": "चरण द्वारा निकाला गया पहला निर्णय, किसी भी बाद के परिवर्तन जैसे कि मैन्युअल समीक्षा से पहले।"
          },
          "method": {
            "type": "string",
            "nullable": true,
            "enum": [
              "open_banking",
              "account_lookup",
              "microdeposits",
              "statement",
              "none"
            ],
            "description": "खाते को कैसे सत्यापित किया गया: `open_banking` (बैंक साइन-इन: व्यक्ति ने अपने बैंक में साइन इन किया), `account_lookup` (खाता जांच: व्यक्ति ने खाता विवरण टाइप किया और बैंक ने नाम की पुष्टि की), `microdeposits` या `statement` (विवरण अपलोड)। `none` जब किसी भी प्रयास का मूल्यांकन होने से पहले व्यक्ति बैंक के बिना आगे बढ़ गया, इसलिए कोई खाता सत्यापित नहीं हुआ। मूल्यांकन किए गए प्रयास के बाद, यह उस प्रयास की विधि बनी रहती है। किसी खाते का मूल्यांकन होने तक, और जब वर्कफ़्लो अपने द्वारा लौटाए जाने वाले डेटा को सीमित करता है, तब `null` रहता है। वर्कफ़्लो नियम `bank.method` के समान मान पढ़ते हैं।"
          },
          "provider": {
            "type": "string",
            "nullable": true,
            "description": "उस रूट की कुंजी जिसने कनेक्शन चलाया। खाता कैसे सत्यापित किया गया था, यह जानने के लिए इस कुंजी को नहीं, बल्कि `method` को पढ़ें।"
          },
          "credential_source": {
            "type": "string",
            "nullable": true,
            "enum": [
              "native",
              "byok"
            ],
            "description": "`native`: Didit का अपना रूट, जिसका बिल आपके Didit बैलेंस से लिया जाता है। `byok`: एक मार्केटप्लेस प्रदाता जिसे आपने अपने क्रेडेंशियल्स से कनेक्ट किया है।"
          },
          "route": {
            "type": "object",
            "nullable": true,
            "description": "सहमति से पहले चुना गया रूट। यह बाद में कभी नहीं बदलता है।",
            "properties": {
              "provider_key": {
                "type": "string",
                "nullable": true,
                "description": "रूट की कुंजी।"
              },
              "credential_source": {
                "type": "string",
                "enum": [
                  "native",
                  "byok"
                ]
              },
              "is_fallback": {
                "type": "boolean",
                "description": "क्या Didit का अपना रूट किसी ऐसे मार्केटप्लेस प्रदाता के स्थान पर प्रयुक्त हुआ जो कनेक्ट नहीं हो सका।"
              },
              "provider_connection_id": {
                "type": "string",
                "nullable": true,
                "description": "`byok` के लिए उपयोग किया गया मार्केटप्लेस कनेक्शन।"
              },
              "requested_scopes": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "कनेक्शन द्वारा अनुरोधित डेटा, उदाहरण के लिए `ownership` या `balances`।"
              }
            }
          },
          "connection": {
            "type": "object",
            "nullable": true,
            "description": "नवीनतम प्रयास का कनेक्शन। पहले प्रयास से पहले `null`।",
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "connected",
                  "cancelled",
                  "timeout",
                  "failed",
                  "unsupported",
                  "revoked",
                  "expired"
                ]
              },
              "institution_id": {
                "type": "string",
                "nullable": true,
                "description": "बैंक की ID। खाता जांच के लिए `null`, जहाँ कोई बैंक नहीं चुना गया है।"
              },
              "institution_name": {
                "type": "string",
                "nullable": true,
                "description": "बैंक का नाम। खाता जांच के लिए `null`।"
              },
              "institution_country": {
                "type": "string",
                "nullable": true,
                "description": "खाते का देश, ISO 3166-1 alpha-3।"
              },
              "oauth": {
                "type": "boolean",
                "nullable": true,
                "description": "क्या बैंक साइन-इन OAuth या ऐप-टू-ऐप पर चला था। खाता जाँच के लिए `null`।"
              },
              "connected_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब कनेक्शन सफल हुआ था।"
              },
              "consent_expires_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "बैंक साइन-इन के लिए, बैंक सहमति कब समाप्त होती है।"
              },
              "last_refreshed_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "जब वित्तीय डेटा अंतिम बार पुनः पढ़ा गया था।"
              },
              "attempts": {
                "type": "integer",
                "description": "व्यक्ति द्वारा इस चरण पर किए गए प्रयास, हर विधि को मिलाकर।"
              },
              "reason_code": {
                "type": "string",
                "nullable": true,
                "description": "कनेक्शन केवल `connected` क्यों नहीं है, उदाहरण के लिए `USER_CANCELLED`, `INSTITUTION_DOWN`, `ACCOUNT_NOT_FOUND`, `REFERENCE_IDENTITY_MISSING` या `VERIFICATION_COMPLETED`।"
              }
            }
          },
          "account": {
            "type": "object",
            "nullable": true,
            "description": "मूल्यांकित खाता। जब तक किसी खाते का मूल्यांकन नहीं हो जाता तब तक `null`।",
            "properties": {
              "account_id_masked": {
                "type": "string",
                "nullable": true,
                "description": "खाता संख्या, मास्क की गई।"
              },
              "iban_masked": {
                "type": "string",
                "nullable": true,
                "description": "IBAN, मास्क किया गया।"
              },
              "sort_code": {
                "type": "string",
                "nullable": true,
                "description": "यूनाइटेड किंगडम में सॉर्ट कोड।"
              },
              "routing_number_masked": {
                "type": "string",
                "nullable": true,
                "description": "राउटिंग नंबर, मास्क किया गया।"
              },
              "type": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "checking",
                  "current",
                  "savings",
                  "business",
                  "other"
                ]
              },
              "subtype": {
                "type": "string",
                "nullable": true,
                "description": "बैंक का अपना खाता उपप्रकार।"
              },
              "currency": {
                "type": "string",
                "nullable": true,
                "description": "खाते की ISO 4217 करेंसी।"
              },
              "holder_type": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "person",
                  "business",
                  "unknown"
                ]
              },
              "holders_count": {
                "type": "integer",
                "nullable": true
              },
              "is_joint": {
                "type": "boolean",
                "nullable": true
              },
              "is_business": {
                "type": "boolean",
                "nullable": true
              }
            }
          },
          "ownership": {
            "type": "object",
            "nullable": true,
            "description": "सत्यापित पहचान के साथ खाताधारक की तुलना कैसे की गई। किसी खाते का मूल्यांकन होने तक `null`।",
            "properties": {
              "result": {
                "type": "string",
                "enum": [
                  "match",
                  "partial_match",
                  "no_match",
                  "unknown",
                  "not_verifiable"
                ],
                "description": "`partial_match` एक करीबी मिलान है। `not_verifiable`: बैंक ने ऐसा उत्तर दिया जिसमें तुलना करने के लिए कोई खाताधारक नहीं था। `unknown`: साक्ष्य पढ़ा नहीं जा सका, या तुलना करने के लिए कोई पहचान नहीं थी।"
              },
              "reference_identity_source": {
                "type": "string",
                "nullable": true,
                "description": "वह चरण जिसकी पहचान से धारक की तुलना की गई थी: `kyc`, `database_validation`, `expected_details`, `questionnaire`, `document_ai` या `kyb`।"
              },
              "name_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "Didit का धारक नाम स्कोर।"
              },
              "provider_name_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "बैंक का अपना खाताधारक नाम स्कोर, जब उसने एक लौटाया हो।"
              },
              "address_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "धारक के पते का स्कोर, जब पता मिलान चलाया गया हो।"
              },
              "email_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "धारक के ईमेल का स्कोर, जब ईमेल मिलान चलाया गया हो।"
              },
              "phone_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "धारक के फ़ोन का स्कोर, जब फ़ोन मिलान चलाया गया हो।"
              },
              "dob_score": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "nullable": true,
                "description": "धारक की जन्म तिथि का स्कोर, जब बैंक ने इसे साझा किया हो।"
              },
              "close_match": {
                "type": "boolean",
                "nullable": true,
                "description": "क्या नाम क्लोज़-मैच बैंड में आया।"
              },
              "holder_confirmation": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "pending",
                  "confirmed",
                  "rejected"
                ],
                "description": "करीबी मिलान वाले नाम की पुष्टि करने के लिए पूछे जाने पर व्यक्ति का उत्तर। पूछे न जाने पर `null`।"
              },
              "method": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "exact",
                  "token_set",
                  "nickname",
                  "transliteration",
                  "fuzzy",
                  "provider_only",
                  "microdeposits"
                ],
                "description": "किस नाम तुलना ने स्कोर उत्पन्न किया। यह सत्यापन विधि नहीं है: उसके लिए शीर्ष-स्तरीय `method` पढ़ें।"
              },
              "matched_holder_index": {
                "type": "integer",
                "nullable": true
              },
              "holders": {
                "type": "array",
                "items": {
                  "type": "object"
                },
                "description": "बैंक द्वारा सूचीबद्ध प्रत्येक धारक, उसके स्कोर के साथ।"
              },
              "owner_identity_available": {
                "type": "boolean",
                "nullable": true
              },
              "evidence_freshness": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "live",
                  "cached",
                  "refreshed"
                ]
              },
              "evaluated_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "निर्णय की गणना कब की गई थी।"
              }
            }
          },
          "financial_data": {
            "type": "object",
            "description": "वित्तीय डेटा जो चरण ने पढ़ा। केवल बैंक साइन-इन इसे पढ़ता है।",
            "properties": {
              "balances": {
                "type": "object",
                "nullable": true,
                "description": "`balances` स्कोप के साथ।"
              },
              "transactions": {
                "type": "object",
                "nullable": true,
                "description": "`transactions` स्कोप के साथ।"
              },
              "income": {
                "type": "object",
                "nullable": true,
                "description": "`income` स्कोप के साथ।"
              },
              "categorization": {
                "type": "object",
                "nullable": true,
                "description": "पढ़े गए लेन-देन का Didit द्वारा वर्गीकरण। उनके बिना `null`।"
              },
              "not_collected": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "balances",
                    "income",
                    "transactions"
                  ]
                },
                "description": "चरण द्वारा अनुरोधित डेटा जिसे खाते को सत्यापित करने वाली विधि द्वारा एकत्र नहीं किया जाता है। बैलेंस, लेन-देन और आय केवल बैंक साइन-इन से आते हैं, इसलिए खाता जांच द्वारा सत्यापित खाता उन्हें यहाँ सूचीबद्ध करता है। यह कभी विफलता नहीं होती। अन्यथा खाली।"
              }
            }
          },
          "billing": {
            "type": "object",
            "nullable": true,
            "properties": {
              "route": {
                "type": "string",
                "enum": [
                  "native",
                  "byok"
                ]
              },
              "billed": {
                "type": "boolean"
              },
              "marketplace_fee": {
                "type": "string",
                "nullable": true,
                "description": "`byok` के लिए लिया गया मार्केटप्लेस प्लेटफॉर्म शुल्क।"
              },
              "usage_type": {
                "type": "string",
                "nullable": true,
                "description": "उपयोग पंक्ति जिस पर शुल्क बुक किया गया था: बैंक साइन-इन या खाता जाँच के लिए `bank_verification`, जिससे पहले कोई शुल्क वाला बैंक प्रयास न हुआ हो ऐसे स्टेटमेंट अपलोड के लिए `bank_statement_upload`, और आपके अपने प्रदाता पर मार्केटप्लेस शुल्क के लिए `bank_byok_fee`। कुछ भी बिल न किए जाने पर `null`।"
              }
            }
          },
          "reference_identity": {
            "type": "object",
            "nullable": true,
            "description": "वह पहचान जिससे धारक की तुलना की गई थी, उसके स्रोत के साथ।"
          },
          "signals": {
            "type": "object",
            "nullable": true,
            "description": "लेन-देन इतिहास से पढ़े गए खाता सिग्नल, जब चरण ने किसी को पढ़ा हो।"
          },
          "connection_abandoned": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या व्यक्ति द्वारा अपने बैंक में प्रक्रिया छोड़ने के बाद यह चरण बिना किसी मिलान के समाप्त हो गया।"
          },
          "not_covered": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या इस चरण पर व्यक्ति के बैंक या देश तक नहीं पहुँचा जा सका। तब भी `true` होता है जब व्यक्ति बिना बैंक के आगे बढ़ा क्योंकि कोई भी तरीका उसके देश या बैंक को सत्यापित नहीं कर सका।"
          },
          "continued_without_bank": {
            "type": "boolean",
            "description": "क्या व्यक्ति ने **Continue without your bank** के साथ चरण छोड़ दिया। `continuation` तब कारण बताता है। जब उनके आगे बढ़ने से पहले किसी भी प्रयास का मूल्यांकन नहीं किया गया था, तो `method` `none` होता है। किसी मूल्यांकित प्रयास के बाद, जैसे कि ऐसा खाताधारक जो मेल नहीं खाता, `method` उस प्रयास का तरीका बना रहता है और उसका निर्णय तथा कारण कोड मान्य रहते हैं। यह तब भी वापस किया जाता है जब वर्कफ़्लो अपने द्वारा लौटाए जाने वाले डेटा को सीमित करता है।"
          },
          "continuation": {
            "type": "object",
            "nullable": true,
            "description": "व्यक्ति बैंक के बिना कैसे आगे बढ़ा। जब वे आगे नहीं बढ़े तो `null`। जब वर्कफ़्लो अपने द्वारा लौटाए जाने वाले डेटा को सीमित करता है, तब भी `reason` लौटाया जाता है और प्रत्येक अन्य कुंजी `null` होती है।",
            "properties": {
              "reason": {
                "type": "string",
                "enum": [
                  "no_route",
                  "institution_unsupported",
                  "attempts_exhausted",
                  "person_choice"
                ],
                "description": "कारण, जैसा कि Didit ने व्यक्ति के आगे बढ़ने पर निर्धारित किया: `no_route` (कोई भी बैंक साइन-इन या खाता जाँच उनके देश में सेवा नहीं देती है), `institution_unsupported` (उनके द्वारा चुने गए बैंक का उपयोग इस चरण पर नहीं किया जा सकता है), `attempts_exhausted` (प्रत्येक प्रयास पहले ही समाप्त हो चुका था और कोई भी जारी नहीं था), या `person_choice` (सत्यापन का एक तरीका उपलब्ध था और उन्होंने आगे बढ़ना चुना, तब भी जब उनके बैंक से अभी संपर्क नहीं हो सका)। `no_route` और `institution_unsupported` `bank_unsupported_action` का पालन करते हैं, `attempts_exhausted` `bank_attempts_exhausted_action` का पालन करता है, और `person_choice` `bank_skipped_action` का पालन करता है, जब तक कि किसी मूल्यांकित प्रयास ने पहले ही चरण का निर्णय न ले लिया हो।"
              },
              "country": {
                "type": "string",
                "nullable": true,
                "description": "वह देश जहाँ व्यक्ति सत्यापन कर रहा था, ISO 3166-1 alpha-3। `null` यदि वे किसी देश को चुने बिना आगे बढ़ गए।"
              },
              "offered": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "statement",
                    "microdeposits"
                  ]
                },
                "nullable": true,
                "description": "व्यक्ति द्वारा आगे बढ़ने पर उस देश को सत्यापित करने के अन्य तरीके जो पेश किए गए थे, जिस क्रम में वे पेश किए गए थे: `statement` (एक स्टेटमेंट अपलोड), फिर `microdeposits`। कुछ भी पेश न किए जाने पर खाली।"
              },
              "institution_id": {
                "type": "string",
                "nullable": true,
                "description": "`institution_unsupported` के लिए, उस बैंक की ID जिसका उपयोग व्यक्ति नहीं कर सका: वह बैंक जिसे उन्होंने चुना था, या वह बैंक जिस पर उनका अंतिम प्रयास समाप्त हुआ था। Didit इसे बैंकों की अपनी सूची से लेता है, व्यक्ति के डिवाइस से कभी नहीं, इसलिए जो बैंक उस सूची में नहीं है वह `null` होता है। अन्य सभी कारणों के लिए `null`।"
              },
              "institution_name": {
                "type": "string",
                "nullable": true,
                "description": "`institution_unsupported` के लिए, उस बैंक का नाम, `institution_id` जैसी ही सूची से। `null` जब उस सूची में बैंक नहीं होता है, और अन्य सभी कारणों के लिए भी।"
              },
              "continued_at": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "व्यक्ति कब आगे बढ़ा।"
              }
            }
          },
          "evidence_purged_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब बैंक साक्ष्य को `bank_evidence_retention_days` के तहत हटा दिया गया था। अन्यथा `null`।"
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "सूचनात्मक कोड, उदाहरण के लिए `holder_declared`। एक चेतावनी कभी भी अपने दम पर स्थिति नहीं बदलती है।"
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "निर्णय वैसा क्यों आया जैसा आया, उदाहरण के लिए `OWNER_NAME_PARTIAL`। कई लागू हो सकते हैं। `NOT_COVERED`: व्यक्ति बिना बैंक के आगे बढ़ा क्योंकि कोई भी विधि उनके देश या बैंक को सत्यापित नहीं कर सकी। `SKIPPED`: व्यक्ति ने बिना बैंक के आगे बढ़ने का विकल्प चुना जबकि सत्यापित करने का एक तरीका उपलब्ध था। जब किसी मूल्यांकित प्रयास ने पहले ही चरण का निर्णय ले लिया हो, तो इनमें से कोई भी नहीं जोड़ा जाता है।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BankAccountCheckPersonHolder": {
        "type": "object",
        "description": "वह व्यक्ति जिसके पास खाता होना चाहिए।",
        "required": [
          "full_name"
        ],
        "properties": {
          "full_name": {
            "type": "string",
            "maxLength": 255,
            "description": "उस व्यक्ति का पूरा नाम जिसके पास खाता होना चाहिए।",
            "example": "Maria Oliveira"
          }
        }
      },
      "BankAccountCheckBusinessHolder": {
        "type": "object",
        "description": "वह कंपनी जिसके पास खाता होना चाहिए। किसी व्यवसाय खाते की जाँच करता है।",
        "required": [
          "business_name"
        ],
        "properties": {
          "business_name": {
            "type": "string",
            "maxLength": 255,
            "description": "उस कंपनी का नाम जिसके पास खाता होना चाहिए। किसी व्यावसायिक खाते की जांच करता है।"
          }
        }
      },
      "BankVerificationPricing": {
        "type": "object",
        "description": "सार्वजनिक Bank Verification सूची की कीमतें: स्टेटमेंट अपलोड, अपने प्रदाता की कुंजी का शुल्क और प्रत्येक देश की विधियाँ।",
        "required": [
          "currency",
          "statement_upload",
          "own_provider_fee_usd",
          "countries"
        ],
        "properties": {
          "currency": {
            "type": "string",
            "enum": [
              "USD"
            ],
            "description": "रिस्पॉन्स में प्रत्येक कीमत की मुद्रा।",
            "example": "USD"
          },
          "statement_upload": {
            "$ref": "#/components/schemas/BankStatementUploadPricing"
          },
          "own_provider_fee_usd": {
            "type": "string",
            "description": "ऐसे रूट पर प्रत्येक बिल करने योग्य स्वामित्व जांच के लिए शुल्क जो Didit के बजाय आपके अपने प्रदाता अनुबंध का उपयोग करता है, परिणाम चाहे जो भी हो, शुल्क लिया जाता है। रद्द किए गए, समय समाप्त हुए या छोड़े गए कनेक्शन का बिल नहीं दिया जाता है। USD में 4 दशमलव स्थानों वाली दशमलव स्ट्रिंग।",
            "example": "0.0200"
          },
          "countries": {
            "type": "object",
            "description": "प्रत्येक देश, ISO 3166-1 alpha-3 कोड द्वारा कुंजीबद्ध।",
            "additionalProperties": {
              "$ref": "#/components/schemas/BankVerificationPricingCountry"
            }
          }
        }
      },
      "BankStatementUploadPricing": {
        "type": "object",
        "description": "बैंक विवरण अपलोड की कीमत कैसे निर्धारित की जाती है।",
        "required": [
          "price_usd",
          "included_after_charged_bank_attempt",
          "standalone_available"
        ],
        "properties": {
          "price_usd": {
            "type": "string",
            "description": "चार्ज किए गए बैंक प्रयास के बाद स्टेटमेंट अपलोड की कीमत। USD में 4 दशमलव स्थानों वाली दशमलव स्ट्रिंग।",
            "example": "0.0000"
          },
          "included_after_charged_bank_attempt": {
            "type": "boolean",
            "description": "`true` जब उसी सत्र में सशुल्क बैंक प्रयास के बाद अपलोड बिना किसी अतिरिक्त शुल्क के शामिल किया गया हो।",
            "example": true
          },
          "standalone_available": {
            "type": "boolean",
            "description": "`true` जब स्टेटमेंट अपलोड बिना किसी पूर्व बैंक प्रयास के अपने आप चल सकता है। प्रोडक्शन में `false`; सैंडबॉक्स सत्र बिलिंग के बिना इसका परीक्षण कर सकते हैं।",
            "example": false
          }
        }
      },
      "BankVerificationPricingCountry": {
        "type": "object",
        "description": "एक देश की बैंक सत्यापन विधियाँ और उनकी सूची कीमतें।",
        "required": [
          "name",
          "methods"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "अंग्रेज़ी में देश का नाम।",
            "example": "United Kingdom"
          },
          "methods": {
            "$ref": "#/components/schemas/BankVerificationPricingMethods"
          }
        }
      },
      "BankVerificationPricingMethods": {
        "type": "object",
        "description": "किसी देश में दो बैंक सत्यापन विधियाँ।",
        "required": [
          "open_banking",
          "account_lookup"
        ],
        "properties": {
          "open_banking": {
            "$ref": "#/components/schemas/BankSignInPricing"
          },
          "account_lookup": {
            "$ref": "#/components/schemas/BankAccountCheckPricing"
          }
        }
      },
      "BankSignInPricing": {
        "type": "object",
        "description": "बैंक साइन-इन: व्यक्ति अपने बैंक में साइन इन करता है। बाज़ार के अनुसार कीमत, उस बाज़ार के प्रत्येक बैंक के लिए समान।",
        "required": [
          "available",
          "market",
          "price_usd",
          "add_ons"
        ],
        "properties": {
          "available": {
            "type": "boolean",
            "description": "`true` केवल वहीं जहाँ Didit प्रोडक्शन में इस देश में बैंक साइन-इन प्रदान करता है।",
            "example": true
          },
          "market": {
            "type": "string",
            "nullable": true,
            "description": "जिस मार्केट की कीमत लागू होती है। उपलब्ध न होने पर `null`।",
            "example": "UK and EEA"
          },
          "price_usd": {
            "type": "string",
            "nullable": true,
            "description": "एक बैंक साइन-इन की सूची कीमत। उपलब्ध न होने पर `null`। USD में 4 दशमलव स्थानों वाली दशमलव स्ट्रिंग।",
            "example": "0.7900"
          },
          "add_ons": {
            "type": "object",
            "description": "इस देश में कीमत वाले ऐड-ऑन, प्रत्येक USD में 4 दशमलव स्थानों वाली एक दशमलव स्ट्रिंग, जिसे बैंक साइन-इन की कीमत में जोड़ा जाता है। केवल वे ऐड-ऑन सूचीबद्ध हैं जो देश प्रदान करता है; जब बैंक साइन-इन उपलब्ध नहीं होता है तो यह खाली होता है।",
            "properties": {
              "balance": {
                "type": "string",
                "description": "खाता बैलेंस ऐड-ऑन।",
                "example": "0.3500"
              },
              "transactions": {
                "type": "string",
                "description": "लेन-देन ऐड-ऑन।",
                "example": "1.3000"
              }
            }
          }
        }
      },
      "BankAccountCheckPricing": {
        "type": "object",
        "description": "खाता जांच: व्यक्ति अपना खाता नंबर टाइप करता है और Didit बैंक के साथ इसकी जांच करता है। देश के अनुसार कीमत निर्धारित की जाती है।",
        "required": [
          "available",
          "price_usd"
        ],
        "properties": {
          "available": {
            "type": "boolean",
            "description": "`true` केवल वहीं जहाँ Didit प्रोडक्शन में इस देश में खाता जांच प्रदान करता है।",
            "example": true
          },
          "price_usd": {
            "type": "string",
            "nullable": true,
            "description": "बैंक द्वारा उत्तर दिए जाने वाले एक खाता सत्यापन की सूची कीमत। उपलब्ध न होने पर `null`। USD में 4 दशमलव स्थानों वाली दशमलव स्ट्रिंग।",
            "example": "0.4000"
          }
        }
      },
      "ImportProvider": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "enum": [
              "sumsub",
              "jumio",
              "veriff",
              "onfido",
              "persona",
              "metamap",
              "socure",
              "idnow",
              "shufti",
              "idenfy",
              "ondato",
              "trulioo",
              "au10tix",
              "complycube",
              "other"
            ]
          },
          "name": {
            "type": "string"
          },
          "mode": {
            "type": "string",
            "enum": [
              "api_list",
              "api_ids",
              "export_file"
            ],
            "description": "`api_list`: Didit कुंजी के साथ रिकॉर्ड सूचीबद्ध करता है। `api_ids`: किसी एक्सपोर्ट से रिकॉर्ड ID अपलोड करें। `export_file`: Didit के प्रारूप में एक एक्सपोर्ट अपलोड करें।"
          },
          "record_noun": {
            "type": "string"
          },
          "credential_fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "secret": {
                  "type": "boolean"
                }
              }
            }
          },
          "regions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "required_permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "docs_url": {
            "type": "string",
            "nullable": true
          },
          "status_mapping": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "Approved",
                "Declined",
                "In Review",
                "Expired",
                "Not Finished",
                "Abandoned"
              ]
            }
          }
        }
      },
      "ImportJobSummary": {
        "type": "object",
        "description": "किसी भी प्रकार का एक इंपोर्ट जॉब, उस आकार में जिसे कंसोल का इंपोर्ट जॉब्स ड्रॉअर पढ़ता है।",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "sessions",
              "businesses",
              "users",
              "status_rules",
              "transactions"
            ]
          },
          "source": {
            "type": "string",
            "enum": [
              "file",
              "api",
              "provider"
            ]
          },
          "provider": {
            "type": "string",
            "nullable": true
          },
          "provider_name": {
            "type": "string",
            "nullable": true
          },
          "filename": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "enum": [
              "ready",
              "queued",
              "running",
              "paused",
              "completed",
              "errors",
              "failed",
              "cancelled"
            ],
            "description": "कार्य की स्थिति जैसा कि कंसोल दिखाता है; `errors` अस्वीकृत पंक्तियों वाला एक पूर्ण कार्य है।"
          },
          "status": {
            "type": "string"
          },
          "is_dry_run": {
            "type": "boolean"
          },
          "credential_hint": {
            "type": "string",
            "nullable": true
          },
          "resumes_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_error": {
            "type": "string",
            "nullable": true
          },
          "started_by": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "nullable": true
              },
              "email": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "progress": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "format": "int64"
              },
              "processed": {
                "type": "integer",
                "format": "int64"
              },
              "imported": {
                "type": "integer",
                "format": "int64"
              },
              "updated": {
                "type": "integer",
                "format": "int64"
              },
              "already_in_didit": {
                "type": "integer",
                "format": "int64"
              },
              "failed": {
                "type": "integer",
                "format": "int64"
              },
              "not_finished": {
                "type": "integer",
                "format": "int64"
              },
              "same_person": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "face_templates": {
            "type": "object",
            "nullable": true,
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "built": {
                "type": "integer",
                "format": "int64"
              },
              "duplicates": {
                "type": "integer",
                "format": "int64"
              },
              "blocklisted": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "eta_seconds": {
            "type": "integer",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "FiledRegulatoryReport": {
        "type": "object",
        "description": "एक फ़ाइनलाइज़ की गई नियामक रिपोर्ट जो अनुरोधित विलोपन को रोकती है।",
        "required": [
          "uuid",
          "report_number",
          "report_type",
          "case_uuid"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "रिपोर्ट UUID।"
          },
          "report_number": {
            "type": "string",
            "description": "कंसोल में दिखाई गई रिपोर्ट संख्या (उदाहरण के लिए, SAR-0001)।"
          },
          "report_type": {
            "type": "string",
            "enum": [
              "SAR",
              "STR",
              "CTR",
              "TTR",
              "UTR",
              "IFT",
              "CBR",
              "TFR"
            ],
            "description": "नियामक रिपोर्ट प्रकार।"
          },
          "case_uuid": {
            "type": "string",
            "format": "uuid",
            "description": "वह केस जिससे यह रिपोर्ट संबंधित है।"
          }
        }
      },
      "FiledReportTransaction": {
        "type": "object",
        "description": "एक लेन-देन जिसे हटाया नहीं जा सकता क्योंकि एक अंतिम रूप दी गई नियामक रिपोर्ट में इसे सूचीबद्ध किया गया है।",
        "required": [
          "uuid",
          "transaction_id",
          "reports"
        ],
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "description": "Didit लेन-देन UUID।"
          },
          "transaction_id": {
            "type": "string",
            "description": "लेन-देन बनाते समय प्रदान किया गया लेन-देन पहचानकर्ता।"
          },
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FiledRegulatoryReport"
            },
            "description": "अंतिम रूप दी गई रिपोर्टें जो इस लेन-देन को सूचीबद्ध करती हैं।"
          }
        }
      },
      "InFiledReportError": {
        "type": "object",
        "description": "हटाने से इनकार कर दिया गया है क्योंकि चयनित डेटा एक अंतिम विनियामक रिपोर्ट में है। कुछ भी हटाया नहीं गया है। रिपोर्ट हटाएं, फिर अनुरोध दोहराएं।",
        "required": [
          "detail",
          "code"
        ],
        "properties": {
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "enum": [
              "in_filed_report"
            ],
            "description": "अंतिम रूप दी गई नियामक रिपोर्ट द्वारा अवरुद्ध विलोपन के लिए स्थिर त्रुटि कोड।"
          },
          "reports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FiledRegulatoryReport"
            },
            "description": "ऐसी रिपोर्ट जो किसी व्यक्ति, कंपनी, केस या सत्र के विलोपन को ब्लॉक करती हैं।"
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FiledReportTransaction"
            },
            "description": "लेन-देन जो किसी लेन-देन विलोपन को ब्लॉक करते हैं, प्रत्येक उन रिपोर्टों के साथ जो इसे सूचीबद्ध करती हैं।"
          }
        }
      },
      "SubjectDeletionInProgressError": {
        "type": "object",
        "description": "एक अन्य अनुरोध अभी भी इस व्यक्ति या कंपनी को हटा रहा है। इस अनुरोध ने कुछ भी नहीं हटाया और उस विलोपन के समाप्त होने के बाद इसे दोहराया जा सकता है; फिर से दोहराने पर वह सब कुछ हट जाता है जो अभी भी चयनित है।",
        "required": [
          "detail",
          "code"
        ],
        "properties": {
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "enum": [
              "subject_deletion_in_progress"
            ],
            "description": "किसी ऐसे व्यक्ति या कंपनी के लिए स्थिर त्रुटि कोड जिसे कोई अन्य अनुरोध अभी भी हटा रहा है।"
          }
        }
      },
      "TravelRuleNetworkParticipantSummary": {
        "type": "object",
        "nullable": true,
        "description": "नेटवर्क पर इस एप्लिकेशन का अपना प्रतिभागी, या जब कोई न हो तो null।",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "platform",
              "own"
            ],
            "description": "platform: Didit की सदस्यता द्वारा संचालित; own: एप्लिकेशन की अपनी सदस्यता के तहत ऑनबोर्ड किया गया।"
          },
          "status": {
            "type": "string",
            "enum": [
              "not_requested",
              "questionnaire_pending",
              "submitted_to_network",
              "active",
              "suspended",
              "rejected"
            ],
            "description": "not_requested: कभी अनुरोध नहीं किया गया, या नेटवर्क ने पहले अनुरोध को अस्वीकार कर दिया (last_error देखें); questionnaire_pending: ड्यू डिलिजेंस प्रश्नावली के स्वीकृत होने की प्रतीक्षा की जा रही है; submitted_to_network: नेटवर्क की ऑनबोर्डिंग को सौंप दिया गया; active: नेटवर्क ने इस एप्लिकेशन को अपना स्वयं का प्रतिभागी कोड दिया; suspended / rejected: Didit ने इसे निलंबित या अस्वीकार कर दिया।"
          },
          "participant_code": {
            "type": "string",
            "description": "नेटवर्क द्वारा इस एप्लिकेशन को दिया गया कोड (GTR के लिए, इसका VASP कोड)। आउटबाउंड संदेशों में यह कोड शामिल होता है, Didit का अपना कोड कभी नहीं।"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "activated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_error": {
            "type": "string",
            "description": "नेटवर्क का उत्तर जब उसने पंजीकरण अस्वीकार कर दिया; अन्यथा खाली।"
          }
        }
      },
      "TravelRuleNetworkState": {
        "type": "object",
        "description": "इस एप्लिकेशन के लिए एक नेटवर्क पर Travel Rule संदेश कैसे भेजे जाएंगे, और वे क्यों नहीं भेजे जा सकते हैं। कॉन्फ़िगरेशन स्थिति, न कि लाइव स्थिति या डिलीवरी जांच।",
        "properties": {
          "rail": {
            "type": "string",
            "enum": [
              "GTR",
              "TRUST",
              "VERIFYVASP",
              "SYGNA"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "own",
              "didit",
              "off",
              "unavailable"
            ],
            "description": "own: एप्लिकेशन की कनेक्टेड सदस्यता का उपयोग किया जाता है; didit: Didit की सदस्यता एप्लिकेशन को अपने सक्रिय प्रतिभागी के रूप में ले जाती है; off: बिना किसी स्वयं की सदस्यता के disabled_networks में प्लेटफ़ॉर्म रूटिंग अक्षम है; unavailable: अभी तक इस नेटवर्क पर कुछ भी नहीं भेजा जा सकता है (state और reason देखें)।"
          },
          "state": {
            "type": "string",
            "enum": [
              "own_membership",
              "live_through_didit",
              "off",
              "didit_onboarding",
              "questionnaire_needed",
              "questionnaire_in_review",
              "request_access",
              "request_sent",
              "unavailable",
              "error"
            ],
            "description": "own_membership: आपकी कनेक्टेड सदस्यता भेजती है; live_through_didit: Didit की सदस्यता पर आपका अपना प्रतिभागी भेजता है; off: आपने प्लेटफ़ॉर्म रूटिंग बंद कर दी है; didit_onboarding: इस नेटवर्क की Didit की अपनी सदस्यता अभी लाइव नहीं है, इसलिए यह किसी को नहीं ले जा सकती; questionnaire_needed / questionnaire_in_review: ड्यू डिलिजेंस प्रश्नावली सबमिट की जानी चाहिए या Didit के पास समीक्षाधीन है; request_access: प्रश्नावली स्वीकृत हो गई है, नेटवर्क से अनुरोध करें; request_sent: आपके प्रतिभागी को ऑनबोर्ड किया जा रहा है; unavailable: reason देखें; error: reason देखें।"
          },
          "reason": {
            "type": "string",
            "enum": [
              "own_membership_connected",
              "platform_network_switched_off",
              "own_membership_only",
              "sandbox_application",
              "didit_membership_not_live",
              "participant_suspended",
              "participant_rejected",
              "questionnaire_not_submitted",
              "questionnaire_submitted",
              "questionnaire_changes_requested",
              "questionnaire_rejected",
              "participant_not_requested",
              "participant_active",
              "participant_key_missing",
              "participant_key_unresolved",
              "provisioning_failed",
              "questionnaire_pending",
              "submitted_to_network"
            ],
            "description": "स्थिति का मशीन-पठनीय विवरण। own_membership_only: Didit इस नेटवर्क (TRUST) पर एप्लिकेशन नहीं ले जाता है, अपनी स्वयं की सदस्यता कनेक्ट करें; sandbox_application: सैंडबॉक्स ट्रांसफर कभी किसी नेटवर्क तक नहीं पहुंचते हैं; provisioning_failed: नेटवर्क ने पंजीकरण अस्वीकार कर दिया, प्रतिभागी का last_error कारण बताता है और नेटवर्क का फिर से अनुरोध करने पर पुनः प्रयास किया जाता है।"
          },
          "platform_available": {
            "type": "boolean",
            "description": "क्या इस नेटवर्क की Didit की अपनी सदस्यता कॉन्फ़िगर की गई है; यह लाइव स्थिति जांच नहीं है।"
          },
          "connected": {
            "type": "boolean",
            "description": "क्या कोई कनेक्टेड ग्राहक सदस्यता मौजूद है। क्रेडेंशियल स्थानीय रूप से मान्य किए जाते हैं; नेटवर्क सत्यापन एक लाइव एक्सचेंज पर होता है।"
          },
          "participant": {
            "$ref": "#/components/schemas/TravelRuleNetworkParticipantSummary"
          },
          "vasps_reachable": {
            "type": "integer",
            "description": "इस नेटवर्क पर पहुंच योग्य डायरेक्टरी VASPs।"
          },
          "routed_30d": {
            "type": "integer",
            "description": "पिछले 30 दिनों में इस नेटवर्क पर किए गए इस एप्लिकेशन के ट्रांसफर।"
          }
        }
      },
      "TravelRuleNetworkQuestionnaireAnswers": {
        "type": "object",
        "description": "Didit की नेटवर्क ड्यू-डिलिजेंस प्रश्नावली। सेव आंशिक हैं: एक सेव उन सभी उत्तरों को बनाए रखता है जिन्हें उसमें निर्दिष्ट नहीं किया गया है। सबमिट करने के लिए lei और data_protection_contact_email को छोड़कर प्रत्येक फ़ील्ड की आवश्यकता होती है, और तीनों अटेस्टेशन true होने चाहिए।",
        "properties": {
          "legal_name": {
            "type": "string",
            "maxLength": 255
          },
          "registration_number": {
            "type": "string",
            "maxLength": 255
          },
          "incorporation_country": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "ISO 3166-1 alpha-2 देश कोड।"
          },
          "registered_address": {
            "type": "string",
            "maxLength": 1000
          },
          "website": {
            "type": "string",
            "format": "uri",
            "maxLength": 500
          },
          "lei": {
            "type": "string",
            "maxLength": 20,
            "description": "वैकल्पिक। दिए जाने पर एक मान्य ISO 17442 LEI।"
          },
          "licences": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "object",
              "required": [
                "regulator",
                "jurisdiction",
                "licence_type",
                "licence_number"
              ],
              "properties": {
                "regulator": {
                  "type": "string",
                  "maxLength": 255
                },
                "jurisdiction": {
                  "type": "string",
                  "minLength": 2,
                  "maxLength": 2,
                  "description": "ISO 3166-1 alpha-2 देश कोड।"
                },
                "licence_type": {
                  "type": "string",
                  "maxLength": 255
                },
                "licence_number": {
                  "type": "string",
                  "maxLength": 255
                }
              }
            },
            "description": "प्रत्येक लाइसेंस या पंजीकरण जो VASP के पास है।"
          },
          "operating_jurisdictions": {
            "type": "array",
            "minItems": 1,
            "maxItems": 250,
            "items": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "ISO 3166-1 alpha-2 देश कोड।"
            }
          },
          "compliance_officer_name": {
            "type": "string",
            "maxLength": 255
          },
          "compliance_officer_email": {
            "type": "string",
            "format": "email"
          },
          "aml_ctf_policy_attested": {
            "type": "boolean",
            "description": "सबमिट करने के लिए true होना चाहिए।"
          },
          "sanctions_screening_attested": {
            "type": "boolean",
            "description": "सबमिट करने के लिए true होना चाहिए।"
          },
          "data_protection_attested": {
            "type": "boolean",
            "description": "सबमिट करने के लिए true होना चाहिए।"
          },
          "data_protection_contact_email": {
            "type": "string",
            "format": "email",
            "description": "वैकल्पिक।"
          },
          "expected_monthly_transfers": {
            "type": "integer",
            "minimum": 0
          },
          "expected_monthly_volume_usd": {
            "type": "string",
            "format": "decimal",
            "description": "USD में अपेक्षित मासिक वॉल्यूम, दशमलव के 2 स्थानों तक। स्ट्रिंग के रूप में लौटाया गया।"
          },
          "assets": {
            "type": "array",
            "minItems": 1,
            "maxItems": 200,
            "items": {
              "type": "string",
              "maxLength": 32
            },
            "description": "एसेट टिकर, बड़े अक्षरों में संग्रहीत, सॉर्ट किए गए और डुप्लिकेट हटाए गए।"
          }
        }
      },
      "TravelRuleNetworkQuestionnaire": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "draft",
              "submitted",
              "changes_requested",
              "approved",
              "rejected"
            ],
            "description": "उत्तर तब सहेजे जा सकते हैं जब वे draft या changes_requested स्थिति में हों; submitted, approved और rejected की स्थिति बदलना Didit के अधिकार में है।"
          },
          "answers": {
            "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaireAnswers"
          },
          "submitted_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reviewed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "review_note": {
            "type": "string",
            "description": "अपने पिछले निर्णय पर Didit का नोट, उदाहरण के लिए क्या बदलना है।"
          },
          "history": {
            "type": "array",
            "readOnly": true,
            "description": "प्रत्येक स्थिति परिवर्तन, सबसे पुराना पहले।",
            "items": {
              "type": "object",
              "properties": {
                "at": {
                  "type": "string",
                  "format": "date-time"
                },
                "from": {
                  "type": "string"
                },
                "to": {
                  "type": "string"
                },
                "note": {
                  "type": "string",
                  "description": "समीक्षा नोट या नेटवर्क का उत्तर, जब कोई उपलब्ध हो।"
                }
              }
            }
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        }
      },
      "TravelRuleNetworkParticipant": {
        "type": "object",
        "description": "एक नेटवर्क पर इस एप्लिकेशन का अपना प्रतिभागी।",
        "properties": {
          "network": {
            "type": "string",
            "enum": [
              "gtr",
              "trust",
              "verifyvasp",
              "sygna"
            ]
          },
          "rail": {
            "type": "string",
            "enum": [
              "GTR",
              "TRUST",
              "VERIFYVASP",
              "SYGNA"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "platform",
              "own"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "not_requested",
              "questionnaire_pending",
              "submitted_to_network",
              "active",
              "suspended",
              "rejected"
            ],
            "description": "not_requested: कभी अनुरोध नहीं किया गया, या नेटवर्क ने पहले अनुरोध को अस्वीकार कर दिया (last_error देखें); questionnaire_pending: ड्यू डिलिजेंस प्रश्नावली के स्वीकृत होने की प्रतीक्षा की जा रही है; submitted_to_network: नेटवर्क की ऑनबोर्डिंग को सौंप दिया गया; active: नेटवर्क ने इस एप्लिकेशन को अपना स्वयं का प्रतिभागी कोड दिया; suspended / rejected: Didit ने इसे निलंबित या अस्वीकार कर दिया।"
          },
          "participant_code": {
            "type": "string"
          },
          "requested_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "submitted_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "activated_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "suspended_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_error": {
            "type": "string",
            "description": "नेटवर्क का उत्तर जब उसने पंजीकरण अस्वीकार कर दिया; अन्यथा खाली।"
          },
          "history": {
            "type": "array",
            "readOnly": true,
            "description": "प्रत्येक स्थिति परिवर्तन, सबसे पुराना पहले।",
            "items": {
              "type": "object",
              "properties": {
                "at": {
                  "type": "string",
                  "format": "date-time"
                },
                "from": {
                  "type": "string"
                },
                "to": {
                  "type": "string"
                },
                "note": {
                  "type": "string",
                  "description": "समीक्षा नोट या नेटवर्क का उत्तर, जब कोई उपलब्ध हो।"
                }
              }
            }
          }
        }
      },
      "TravelRuleNetworksOverview": {
        "type": "object",
        "properties": {
          "platform_networks_enabled": {
            "type": "boolean",
            "description": "क्या Didit की सदस्यता के माध्यम से नेटवर्क एक्सेस खुला है। जब तक यह false है, प्रश्नावली सहेजना, सबमिशन और नेटवर्क अनुरोध 403 का उत्तर देते हैं।"
          },
          "questionnaire": {
            "$ref": "#/components/schemas/TravelRuleNetworkQuestionnaire"
          },
          "participants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TravelRuleNetworkParticipant"
            }
          },
          "networks": {
            "type": "object",
            "readOnly": true,
            "description": "प्रति नेटवर्क, यह एप्लिकेशन कैसे भेजेगा और यह क्यों नहीं भेज सकता। GTR सहित कोई भी नेटवर्क डिफ़ॉल्ट रूप से शामिल नहीं है: नेटवर्क आपकी अपनी कनेक्टेड सदस्यता के माध्यम से या Didit की सदस्यता के माध्यम से पहुंचा जा सकता है, एक बार उस नेटवर्क की Didit की सदस्यता लाइव हो जाने और उस पर आपका अपना प्रतिभागी सक्रिय हो जाने पर। यह लाइव स्थिति या डिलीवरी की जांच नहीं है।",
            "properties": {
              "gtr": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "trust": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "verifyvasp": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              },
              "sygna": {
                "$ref": "#/components/schemas/TravelRuleNetworkState"
              }
            }
          }
        }
      },
      "AddressValidationResult": {
        "type": "object",
        "description": "एक Address Validation का परिणाम: क्या पता मौजूद है, और इसका सामान्यीकृत रूप। यह केवल पते की पुष्टि करता है; यह कभी भी पते को किसी व्यक्ति से नहीं जोड़ता है।",
        "required": [
          "status",
          "verification_level",
          "address",
          "formatted_address",
          "latitude",
          "longitude"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "verified",
              "partially_verified",
              "not_verified",
              "unavailable"
            ],
            "description": "`verified`: पते की पुष्टि भवन (या फ्लैट अथवा PO बॉक्स) स्तर तक की गई थी। `partially_verified`: इसकी पुष्टि केवल सड़क स्तर तक की गई थी, या उस स्थान के लिए डाक संदर्भ डेटा के सबसे सटीक स्तर तक की गई थी। `not_verified`: केवल क्षेत्र या शहर का मिलान हुआ, या कुछ भी मेल नहीं खाया। `unavailable`: सत्यापन नहीं चल सका (उदाहरण के लिए संदर्भ सेवा ने उत्तर नहीं दिया); इसका कोई शुल्क नहीं लिया जाता है और यह कभी भी सत्यापन को प्रभावित नहीं करता है।"
          },
          "verification_level": {
            "type": "string",
            "nullable": true,
            "enum": [
              "administrative_area",
              "locality",
              "thoroughfare",
              "premise",
              "delivery_point",
              null
            ],
            "description": "सबसे सटीक स्तर जिस पर पते का मिलान किया गया था। कुछ भी मेल न खाने पर या `status` के `unavailable` होने पर `null`।"
          },
          "address": {
            "type": "object",
            "nullable": true,
            "description": "सामान्यीकृत पता। `status` के `unavailable` होने पर `null`।",
            "properties": {
              "address_line_1": {
                "type": "string",
                "nullable": true,
                "description": "पहली डिलीवरी लाइन, जिस तरह से देश इसे लिखता है उसी तरह लिखी गई।",
                "example": "1600 Amphitheatre Pkwy"
              },
              "address_line_2": {
                "type": "string",
                "nullable": true,
                "description": "दूसरी डिलीवरी पंक्ति (फ़्लैट, भवन या इलाका), यदि पते में उपलब्ध हो।"
              },
              "city": {
                "type": "string",
                "nullable": true,
                "example": "Mountain View"
              },
              "region": {
                "type": "string",
                "nullable": true,
                "description": "राज्य, प्रांत या क्षेत्र।",
                "example": "CA"
              },
              "postal_code": {
                "type": "string",
                "nullable": true,
                "example": "94043-1351"
              },
              "country": {
                "type": "string",
                "nullable": true,
                "description": "ISO 3166-1 alpha-2 देश कोड।",
                "example": "US"
              }
            }
          },
          "formatted_address": {
            "type": "string",
            "nullable": true,
            "description": "एक पंक्ति में सामान्यीकृत पता।",
            "example": "1600 Amphitheatre Pkwy, Mountain View CA 94043-1351"
          },
          "latitude": {
            "type": "number",
            "nullable": true,
            "example": 37.422022
          },
          "longitude": {
            "type": "number",
            "nullable": true,
            "example": -122.08429
          }
        }
      },
      "AddressValidationRequest": {
        "type": "object",
        "required": [
          "country"
        ],
        "description": "एक पता: एक पंक्ति में (`address`) या कम से कम `address_line_1` के साथ संरचित फ़ील्ड के रूप में, दोनों कभी नहीं।",
        "properties": {
          "address": {
            "type": "string",
            "maxLength": 500,
            "description": "पूरा पता एक पंक्ति में।",
            "example": "Paseo de la Castellana 259, 28046 Madrid"
          },
          "address_line_1": {
            "type": "string",
            "maxLength": 255,
            "description": "सड़क और संख्या।",
            "example": "1600 Amphitheatre Pkwy"
          },
          "address_line_2": {
            "type": "string",
            "maxLength": 255,
            "description": "अपार्टमेंट, सुइट, फ़्लोर या भवन।"
          },
          "city": {
            "type": "string",
            "maxLength": 128,
            "description": "शहर या इलाका।",
            "example": "Mountain View"
          },
          "region": {
            "type": "string",
            "maxLength": 128,
            "description": "राज्य, प्रांत या क्षेत्र।",
            "example": "CA"
          },
          "postal_code": {
            "type": "string",
            "maxLength": 32,
            "example": "94043"
          },
          "country": {
            "type": "string",
            "maxLength": 3,
            "description": "पते के देश का ISO 3166-1 alpha-2 या alpha-3 कोड।",
            "example": "US"
          }
        }
      },
      "AddressValidationResponse": {
        "type": "object",
        "required": [
          "request_id",
          "address_validation",
          "created_at"
        ],
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid",
            "description": "इस अनुरोध का पहचानकर्ता; सहायता टीम को इसका संदर्भ दें। कोई सत्र नहीं बनाया गया है।"
          },
          "address_validation": {
            "$ref": "#/components/schemas/AddressValidationResult"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleWalletProofFailureReason": {
        "type": "string",
        "enum": [
          "",
          "SIGNATURE_INVALID",
          "SIGNATURE_UNSUPPORTED_SCHEME",
          "DEPOSIT_NOT_FOUND",
          "DEPOSIT_UNCONFIRMED",
          "DEPOSIT_LOOKUP_FAILED",
          "DEPOSIT_MISMATCH",
          "DEPOSIT_STALE",
          "TXID_REUSED",
          "CHAIN_UNSUPPORTED",
          "WINDOW_EXPIRED",
          "OWNERSHIP_CHANGED",
          "METHOD_SWITCHED",
          "REVIEW_REJECTED",
          "ABANDONED"
        ],
        "description": "वॉलेट-स्वामित्व प्रमाण, या उसका अंतिम प्रयास, VERIFIED से कम क्यों रह गया। कुछ भी विफल न होने पर खाली। PENDING प्रमाण में यह हो सकता है: अंतिम प्रयास विफल रहा और अंतिम उपयोगकर्ता पुनः प्रयास कर सकता है। DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED और REVIEW_REJECTED प्रमाण को REJECTED के रूप में बंद कर देते हैं। SIGNATURE_INVALID: हस्ताक्षर वॉलेट और चैलेंज से मेल नहीं खाता है। SIGNATURE_UNSUPPORTED_SCHEME: वॉलेट ने ऐसे प्रारूप में हस्ताक्षर किए हैं जिसे Didit सत्यापित नहीं करता है। DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED: परीक्षण डिपॉज़िट पठनीय नहीं है या अभी तक कन्फ़र्म नहीं हुआ है; टेस्ट विंडो बंद होने तक Didit इसकी जाँच करता रहता है। DEPOSIT_MISMATCH: लेन-देन वॉलेट से डिपॉज़िट पते पर अपेक्षित राशि नहीं भेजता है। DEPOSIT_STALE: लेन-देन चैलेंज से पहले का है। TXID_REUSED: लेन-देन ने पहले ही किसी अन्य वॉलेट को साबित कर दिया है। CHAIN_UNSUPPORTED: यह विधि इस चेन पर उपलब्ध नहीं है। WINDOW_EXPIRED: टेस्ट विंडो बंद हो गई। OWNERSHIP_CHANGED: विजेट सत्र मिंट होने के बाद वॉलेट धारक बदल गया, या वॉलेट आपकी पता पुस्तिका से हटा दिया गया। METHOD_SWITCHED: अंतिम उपयोगकर्ता ने इसे पूरा करने से पहले कोई अन्य विधि चुनी। REVIEW_REJECTED: आपके समीक्षक ने स्क्रीनशॉट को अस्वीकार कर दिया। ABANDONED: अंतिम उपयोगकर्ता के समाप्त करने से पहले विजेट सत्र समाप्त हो गया।"
      },
      "TravelRuleWidgetProofError": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "description": "अंग्रेज़ी में मानव-पठनीय संदेश।"
          },
          "code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleWalletProofFailureReason"
              }
            ],
            "description": "मशीन-पठनीय कारण, ताकि क्लाइंट अपना स्वयं का अनुवादित संदेश दिखा सके।"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ],
            "description": "प्रमाण बंद होने पर मौजूद: अभी सबमिट किए गए जमा द्वारा REJECTED (400), या पहले से बंद प्रमाण के लिए साक्ष्य भेजे जाने पर REJECTED या EXPIRED (409)।"
          },
          "proof_id": {
            "type": "string",
            "format": "uuid",
            "description": "स्थिति के साथ मौजूद: बंद प्रमाण।"
          },
          "method": {
            "type": "string",
            "enum": [
              "MESSAGE_SIGNING",
              "SATOSHI_TEST",
              "SCREENSHOT",
              "SELF_DECLARATION"
            ],
            "description": "स्थिति के साथ मौजूद: बंद प्रमाण की विधि।"
          },
          "max_attempts": {
            "type": "integer",
            "description": "स्थिति के साथ मौजूद: अस्वीकृत वॉलेट प्रमाण जिन्हें यह सत्र अनुमति देता है।"
          },
          "attempts_used": {
            "type": "integer",
            "description": "स्थिति के साथ मौजूद: अब तक अस्वीकृत प्रमाण।"
          },
          "attempts_remaining": {
            "type": "integer",
            "description": "स्थिति के साथ मौजूद: 0 होने पर, दूसरा प्रमाण शुरू करने पर 409 का उत्तर मिलता है और आप एक नया विजेट सत्र बनाते हैं।"
          }
        }
      },
      "TravelRuleWidgetProofCreate": {
        "type": "object",
        "required": [
          "method"
        ],
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "MESSAGE_SIGNING",
              "SATOSHI_TEST",
              "SCREENSHOT",
              "SELF_DECLARATION"
            ],
            "description": "अंतिम उपयोगकर्ता द्वारा चुनी गई प्रमाण विधि। यह संदर्भ के allowed_methods में से एक होनी चाहिए।"
          },
          "wallet_address": {
            "type": "string",
            "maxLength": 128,
            "description": "सत्र के wallet_address पर डिफ़ॉल्ट होता है। सत्र के ट्रांसफ़र से लिंक होने पर ट्रांसफ़र के वॉलेट से मेल खाना चाहिए।"
          },
          "chain": {
            "type": "string",
            "maxLength": 32,
            "description": "सत्र की चेन पर डिफ़ॉल्ट होता है।"
          }
        }
      },
      "TravelRuleWidgetProofVerifyResult": {
        "type": "object",
        "properties": {
          "proof_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string",
            "enum": [
              "MESSAGE_SIGNING",
              "SATOSHI_TEST",
              "SCREENSHOT",
              "SELF_DECLARATION"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "is_ownership_verified": {
            "type": "boolean",
            "description": "तब मौजूद होता है जब प्रमाण VERIFIED होता है: पता पुस्तिका प्रविष्टि अब स्वामित्व-सत्यापित है।"
          },
          "transfer_status": {
            "type": "string",
            "nullable": true,
            "description": "प्रमाण VERIFIED होने पर मौजूद: लिंक किए गए ट्रांसफ़र की स्थिति; ऐसा ट्रांसफ़र न होने पर null।"
          },
          "detail": {
            "type": "string",
            "description": "प्रमाण के PENDING रहने के दौरान मौजूद: समीक्षा की प्रतीक्षा में सबमिट किया गया स्क्रीनशॉट, या एक परीक्षण जमा जिसकी अभी पुष्टि नहीं हुई है।"
          },
          "code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleWalletProofFailureReason"
              }
            ],
            "description": "लंबित परीक्षण जमा पर मौजूद: यह अभी तक पुष्टि क्यों नहीं हुआ है।"
          }
        }
      },
      "TravelRuleWalletProofReview": {
        "type": "object",
        "properties": {
          "proof_id": {
            "type": "string",
            "format": "uuid"
          },
          "method": {
            "type": "string",
            "enum": [
              "SCREENSHOT"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "VERIFIED",
              "REJECTED",
              "EXPIRED"
            ]
          },
          "wallet_address": {
            "type": "string"
          },
          "chain": {
            "type": "string",
            "description": "कैनोनिकल चेन पहचानकर्ता, उदा. ETH, BTC, SOL, TRX।"
          },
          "holder_name": {
            "type": "string"
          },
          "is_ownership_verified": {
            "type": "boolean",
            "description": "क्या पता पुस्तिका प्रविष्टि इस प्रमाण या किसी अन्य प्रमाण द्वारा स्वामित्व-सत्यापित है।"
          },
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "description": "वह लेन-देन जिसके Travel Rule ट्रांसफर के लिए विजेट सत्र बनाया गया था। transaction_id के बिना बनाए गए सत्र के लिए Null।"
          },
          "file_name": {
            "type": "string",
            "nullable": true
          },
          "content_type": {
            "type": "string",
            "nullable": true
          },
          "screenshot_url": {
            "type": "string",
            "nullable": true,
            "description": "अपलोड किए गए स्क्रीनशॉट का समय-सीमित लिंक। नए लिंक के लिए कतार की सूची फिर से प्राप्त करें।"
          },
          "attempts": {
            "type": "integer",
            "description": "इस प्रमाण के लिए अंतिम उपयोगकर्ता ने कितनी फ़ाइलें अपलोड कीं।"
          },
          "failure_reason": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TravelRuleWalletProofFailureReason"
              }
            ],
            "description": "अस्वीकृति के बाद REVIEW_REJECTED, निर्णय से पहले वॉलेट का धारक बदल गया हो या वॉलेट हटा दिया गया हो, तो OWNERSHIP_CHANGED। अन्यथा खाली।"
          },
          "method_chosen_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब अंतिम उपयोगकर्ता ने स्क्रीनशॉट विधि चुनी।"
          },
          "decided_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "decided_by": {
            "type": "string",
            "description": "प्रमाण किसने बंद किया: कंसोल समीक्षक के लिए review:<user identifier>, API-कुंजी निर्णय के लिए review, Didit द्वारा स्वचालित रूप से बंद किए जाने पर widget या sweeper। PENDING रहने के दौरान खाली।"
          },
          "review_note": {
            "type": "string",
            "description": "निर्णय के साथ भेजा गया नोट। कोई न होने पर खाली।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "TravelRuleWalletProofDecision": {
        "type": "object",
        "required": [
          "decision"
        ],
        "properties": {
          "decision": {
            "type": "string",
            "enum": [
              "approve",
              "reject"
            ]
          },
          "note": {
            "type": "string",
            "maxLength": 512,
            "description": "वैकल्पिक। प्रमाण के साथ रखा जाता है और review_note के रूप में लौटाया जाता है।"
          }
        }
      },
      "DigitalIdWalletApiWalletDigitalCredentialsRequest": {
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "description": "openid4vp-v1-signed."
          },
          "request": {
            "type": "object",
            "additionalProperties": {},
            "description": "यथावत पास करें: ब्राउज़र में navigator.credentials.get({digital: request}), या Android पर GetDigitalCredentialOption के requestJson के रूप में JSON.stringify(request)। आपके एप्लिकेशन के लिए Didit द्वारा हस्ताक्षरित।"
          }
        },
        "required": [
          "protocol",
          "request"
        ]
      },
      "DigitalIdWalletApiGoogleWalletWalletVerificationStartRequest": {
        "type": "object",
        "description": "Google Wallet सत्यापन (USA, GBR, BRA, SGP, TWN) शुरू करें।",
        "properties": {
          "vendor_data": {
            "type": "string",
            "nullable": true,
            "description": "इस सत्यापन के लिए आपका अपना संदर्भ (उदा. आपका उपयोगकर्ता id)। परिणामों और webhooks में वापस किया जाता है।"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "description": "सत्यापन के साथ संग्रहीत और परिणामों तथा webhook में लौटाया गया वैकल्पिक JSON ऑब्जेक्ट।"
          },
          "sandbox_scenario": {
            "type": "string",
            "minLength": 1,
            "description": "केवल सैंडबॉक्स एप्लिकेशन्स: सिम्युलेटेड परिणाम - 'wallet_cancelled', 'wallet_timeout' या 'wallet_provider_error'; कोई अन्य परिदृश्य (या कोई नहीं) सत्यापित करता है। लाइव एप्लिकेशन्स पर अस्वीकृत। पूरा कैटलॉग GET /v1/sandbox/scenarios/ पर उपलब्ध है।"
          },
          "country": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DigitalIdWalletApiGoogleWalletWalletVerificationStartCountryEnum"
              }
            ],
            "description": "Google Wallet पहचान का ISO 3166-1 alpha-3 देश।\n\n* `USA` - USA\n* `GBR` - GBR\n* `BRA` - BRA\n* `SGP` - SGP\n* `TWN` - TWN"
          },
          "origin": {
            "type": "string",
            "minLength": 1,
            "description": "जहाँ आपका पेज या ऐप वॉलेट से पूछेगा: आपके पेज का https ऑरिजिन (इसका होस्ट एप्लिकेशन के allowed_return_hosts में होना चाहिए, या इसका व्हाइट लेबल डोमेन होना चाहिए), उदाहरण के लिए https://app.example.com, या android:apk-key-hash:<आपके ऐप के साइनिंग प्रमाणपत्र का बिना पैडिंग वाला base64 SHA-256>। वॉलेट किसी अन्य स्थान पर अनुरोध को अस्वीकार कर देता है।",
            "maxLength": 256
          }
        },
        "required": [
          "country",
          "origin"
        ]
      },
      "DigitalIdWalletApiGoogleWalletWalletVerificationStartCountryEnum": {
        "enum": [
          "USA",
          "GBR",
          "BRA",
          "SGP",
          "TWN"
        ],
        "type": "string",
        "description": "* `USA` - USA\n* `GBR` - GBR\n* `BRA` - BRA\n* `SGP` - SGP\n* `TWN` - TWN"
      },
      "DigitalIdWalletApiWalletDigitalCredentialResponseRequest": {
        "type": "object",
        "description": "`request_digital_credential` सत्यापन के लिए, वॉलेट ने आपके पेज या ऐप को क्या उत्तर दिया।",
        "properties": {
          "response": {
            "type": "object",
            "additionalProperties": {},
            "description": "वॉलेट द्वारा ठीक वही लौटाया गया: navigator.credentials.get से DigitalCredential का {protocol, data}, या Android के DigitalCredential का पार्स किया गया credentialJson। Didit के लिए एन्क्रिप्ट किया गया; इसे न बदलें।"
          }
        },
        "required": [
          "response"
        ]
      },
      "SessionFilesExport": {
        "type": "object",
        "description": "मूल गुणवत्ता में, एक सत्र की प्रत्येक फ़ाइल के साथ एक ZIP।",
        "required": [
          "export_id",
          "session_id",
          "status",
          "file_count",
          "size_bytes",
          "download_url",
          "expires_at",
          "error",
          "created_at",
          "completed_at"
        ],
        "properties": {
          "export_id": {
            "type": "string",
            "format": "uuid",
            "description": "एक्सपोर्ट की ID। इसे `GET /v3/session/{sessionId}/files-export/{exportId}/` में पास करें।"
          },
          "session_id": {
            "type": "string",
            "format": "uuid",
            "description": "वह सत्र जिससे फ़ाइलें संबंधित हैं।"
          },
          "status": {
            "type": "string",
            "enum": [
              "PENDING",
              "PROCESSING",
              "READY",
              "FAILED",
              "EXPIRED"
            ],
            "description": "ZIP तैयार होने के दौरान `PENDING` और `PROCESSING`, डाउनलोड के लिए तैयार होने पर `READY`, तैयार न हो पाने पर `FAILED` (एक नए एक्सपोर्ट का अनुरोध करें), ZIP हटा दिए जाने पर `EXPIRED`।"
          },
          "file_count": {
            "type": "integer",
            "nullable": true,
            "description": "ZIP में मौजूद फ़ाइलें। केवल तभी सेट होती हैं जब `status` `READY` हो।"
          },
          "size_bytes": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "description": "बाइट्स में ZIP का आकार। केवल तब सेट होता है जब `status` का मान `READY` हो।"
          },
          "download_url": {
            "type": "string",
            "format": "uri",
            "nullable": true,
            "description": "ZIP का हस्ताक्षरित URL, जो कम समय के लिए मान्य होता है। केवल तब सेट होता है जब `status` का मान `READY` हो; नया URL पाने के लिए एक्सपोर्ट को फिर से पढ़ें।"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब ZIP को हटा दिया जाता है, इसके तैयार होने के 24 घंटे बाद। केवल तब सेट होता है जब `status` `READY` हो।"
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "एक्सपोर्ट क्यों विफल हुआ, जब `status` `FAILED` हो।"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "जब एक्सपोर्ट का अनुरोध किया गया था।"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "जब ZIP तैयार हुआ था या एक्सपोर्ट विफल रहा था।"
          }
        }
      },
      "TransactionRuleSuggestionsCreatedEvent": {
        "description": "लेन-देन नियम सुझाव रन ने आपके एप्लिकेशन के लिए नए नियम परिवर्तनों का प्रस्ताव रखा। तब भेजा जाता है जब नियम-सुझाव सेटिंग्स में webhook सूचनाएं चालू हों। इसमें कोई शीर्ष-स्तरीय `status` नहीं होता है।",
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookEventEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "webhook_type": {
                "type": "string",
                "enum": [
                  "transaction_rule_suggestions.created"
                ],
                "description": "हमेशा `transaction_rule_suggestions.created`।"
              },
              "run_id": {
                "type": "string",
                "format": "uuid",
                "description": "सुझाव रन जिसने नए सुझाव तैयार किए।"
              },
              "open_count": {
                "type": "integer",
                "description": "इस रन के बाद अभी भी खुले सुझावों की संख्या, नए सुझाव शामिल हैं।"
              },
              "suggestions": {
                "type": "array",
                "description": "वे सुझाव जो इस रन द्वारा बनाए गए हैं।",
                "items": {
                  "type": "object",
                  "required": [
                    "suggestion_id",
                    "kind",
                    "title",
                    "rule_id",
                    "expected_impact"
                  ],
                  "properties": {
                    "suggestion_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "ADD",
                        "TWEAK",
                        "DISABLE"
                      ],
                      "description": "`ADD` एक नए नियम का प्रस्ताव करता है, `TWEAK` किसी मौजूदा नियम को बदलता है, `DISABLE` किसी नियम को बंद करता है।"
                    },
                    "title": {
                      "type": "string"
                    },
                    "rule_id": {
                      "type": "string",
                      "format": "uuid",
                      "nullable": true,
                      "description": "वह नियम जिस पर `TWEAK` या `DISABLE` सुझाव लागू होता है; `ADD` के लिए `null`।"
                    },
                    "expected_impact": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "बदलाव क्या करेगा, जैसा कि Console में सुझाव दिखाता है।"
                    }
                  }
                }
              }
            },
            "required": [
              "webhook_type",
              "run_id",
              "open_count",
              "suggestions"
            ]
          }
        ]
      },
      "GeolocationCheck": {
        "type": "object",
        "description": "एक स्थान सत्यापन परिणाम, एक वर्कफ़्लो नोड का स्वीकृत प्रयास। मापन, अनिश्चितता और प्रामाणिकता अलग-अलग कुंजियाँ हैं, इसलिए एक सटीक अप्रमाणित फ़िक्स एक अपरिशुद्ध प्रमाणित फ़िक्स से अलग पढ़ा जाता है।",
        "properties": {
          "node_id": {
            "type": "string",
            "nullable": true,
            "description": "वर्कफ़्लो नोड जिसने यह परिणाम तैयार किया, ताकि दो स्थान सत्यापन चरणों वाला वर्कफ़्लो पढ़ने योग्य बना रहे।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Resub Requested"
            ],
            "description": "इस स्थान सत्यापन चरण की सुविधा-स्तरीय स्थिति, जो इसकी चेतावनियों के आधार पर निर्धारित की जाती है। सत्र `status` से स्वतंत्र।"
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "इस प्रयास में क्या हुआ।",
            "enum": [
              "verified",
              "low_accuracy",
              "accuracy_undetermined",
              "stale",
              "approximate",
              "denied",
              "restricted",
              "unavailable",
              "timeout",
              "mock_detected",
              "outside_geofence",
              "in_blocked_area",
              "anonymizer_detected",
              "skipped",
              "replay_rejected",
              "unsupported_client",
              null
            ]
          },
          "permission": {
            "type": "string",
            "nullable": true,
            "description": "ऑपरेटिंग सिस्टम या ब्राउज़र ने क्या अनुमति दी। `not_requested` का अर्थ है कि चरण केवल कनेक्शन के IP स्थान का उपयोग करता है, इसलिए व्यक्ति से कभी भी अनुमति नहीं माँगी जाती है।",
            "enum": [
              "granted_precise",
              "granted_approximate",
              "denied",
              "restricted",
              "unavailable",
              "timeout",
              "dismissed",
              "not_requested",
              null
            ]
          },
          "latitude": {
            "type": "number",
            "nullable": true,
            "description": "फ़िक्स का WGS84 अक्षांश। कोई फ़िक्स न होने पर `null`।",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "nullable": true,
            "description": "फ़िक्स का WGS84 देशांतर। कोई फ़िक्स न होने पर `null`।",
            "format": "double"
          },
          "accuracy_m": {
            "type": "number",
            "nullable": true,
            "description": "`accuracy_confidence` में विश्वास स्तर पर, मीटर में अनिश्चितता का दायरा।",
            "format": "double"
          },
          "accuracy_confidence": {
            "type": "string",
            "nullable": true,
            "description": "विश्वास स्तर जो प्लेटफ़ॉर्म `accuracy_m` से जोड़ता है: `p95` (ब्राउज़र), `p68` (Android) या `unspecified` (iOS)।",
            "enum": [
              "p95",
              "p68",
              "unspecified",
              null
            ]
          },
          "measured_at": {
            "type": "string",
            "nullable": true,
            "description": "जब डिवाइस ने अपनी घड़ी के अनुसार फ़िक्स प्राप्त किया।",
            "format": "date-time"
          },
          "age_seconds": {
            "type": "integer",
            "nullable": true,
            "description": "डिवाइस द्वारा स्थिति प्राप्त करने और Didit द्वारा इसे प्राप्त करने के बीच के सेकंड।"
          },
          "source": {
            "type": "string",
            "nullable": true,
            "description": "फ़िक्स कहाँ से आया, जब प्लेटफ़ॉर्म बताता है। `ip` का अर्थ है कि स्थिति कनेक्शन का IP स्थान है।",
            "enum": [
              "gps",
              "fused",
              "network",
              "wifi",
              "cell",
              "browser",
              "unknown",
              "ip",
              null
            ]
          },
          "platform": {
            "type": "string",
            "nullable": true,
            "description": "वह क्लाइंट जिसने सुधार किया।",
            "enum": [
              "web",
              "ios",
              "android",
              "react_native",
              "flutter",
              null
            ]
          },
          "sdk_version": {
            "type": "string",
            "nullable": true,
            "description": "फिक्स तैयार करने वाले SDK का संस्करण।"
          },
          "is_mock": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब डिवाइस रिपोर्ट करता है कि स्थान फिक्स किसी मॉक लोकेशन प्रदाता या सिमुलेशन सॉफ़्टवेयर से आया है। `null` जब प्लेटफ़ॉर्म इसकी रिपोर्ट नहीं करता है (ब्राउज़र इसका पता नहीं लगा सकते); `null` का अर्थ `false` नहीं है।"
          },
          "produced_by_accessory": {
            "type": "boolean",
            "nullable": true,
            "description": "केवल iOS: `true` जब फ़िक्स किसी बाहरी एक्सेसरी से आया हो। अन्यत्र `null`।"
          },
          "integrity": {
            "type": "string",
            "enum": [
              "attested",
              "not_attested",
              "failed",
              "unsupported",
              "not_determined"
            ],
            "description": "क्या डिवाइस अटेस्टेशन इस समाधान का समर्थन करता है। `unsupported` वही है जो ब्राउज़र रिपोर्ट करते हैं, क्योंकि वेब में कोई अटेस्टेशन तंत्र नहीं है; यह कोई विफलता नहीं है।"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "ISO 3166-1 alpha-2 देश जिसमें फ़िक्स स्थित है।"
          },
          "region_code": {
            "type": "string",
            "nullable": true,
            "description": "ISO 3166-2 सबडिवीज़न जिसमें फ़िक्स है।"
          },
          "city": {
            "type": "string",
            "nullable": true,
            "description": "निकटतम आबादी वाला स्थान, समीक्षकों के लिए एक लेबल।"
          },
          "geofence": {
            "type": "object",
            "description": "चरण के देश और क्षेत्र नियमों का परिणाम।",
            "properties": {
              "enabled": {
                "type": "boolean",
                "description": "क्या चरण कोई देश या क्षेत्र नियम लागू करता है।"
              },
              "result": {
                "type": "string",
                "nullable": true,
                "description": "नियमों के सापेक्ष स्थिति कहाँ बैठती है। `undetermined` का अर्थ है कि सटीकता वृत्त सीमा के दोनों ओर होता है या स्थिति का समाधान किसी भी देश में नहीं हुआ; यह बाहर होने का प्रमाण नहीं है।",
                "enum": [
                  "inside",
                  "outside",
                  "undetermined",
                  null
                ]
              }
            }
          },
          "inside_geofence": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब `geofence.result` `inside` हो, `false` जब `outside` हो, अन्यथा `null`।"
          },
          "geofence_basis": {
            "type": "string",
            "nullable": true,
            "description": "क्षेत्र परिणाम का निर्णय किस स्थिति से किया गया था: `device` फ़िक्स, या कनेक्शन का `ip` स्थान।",
            "enum": [
              "device",
              "ip",
              null
            ]
          },
          "inside_areas": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "कॉन्फ़िगर किए गए उन अनुमत क्षेत्रों के Ids जिनके अंदर स्थान स्थित है।"
          },
          "blocked_areas": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "कॉन्फ़िगर किए गए उन अवरुद्ध क्षेत्रों के IDs जिनमें स्थान स्थित है।"
          },
          "position_source": {
            "type": "string",
            "nullable": true,
            "description": "जैसा कि कॉन्फ़िगर किया गया है, चरण स्थान कहाँ से लेता है: IP स्थान के विरुद्ध जाँचा गया डिवाइस, केवल डिवाइस, या केवल IP स्थान।",
            "enum": [
              "device_and_ip",
              "device_only",
              "ip_only",
              null
            ]
          },
          "anonymizers": {
            "type": "object",
            "nullable": true,
            "description": "कनेक्शन और डिवाइस कैसे दिखते हैं, प्रत्येक `true`, `false` या `null` जब स्रोत नहीं बता सकता।",
            "properties": {
              "vpn": {
                "type": "boolean",
                "nullable": true
              },
              "proxy": {
                "type": "boolean",
                "nullable": true
              },
              "tor": {
                "type": "boolean",
                "nullable": true
              },
              "spoofing": {
                "type": "boolean",
                "nullable": true
              },
              "emulator": {
                "type": "boolean",
                "nullable": true
              }
            }
          },
          "ip_distance_km": {
            "type": "number",
            "nullable": true,
            "description": "सत्र के IP स्थान की दूरी दोनों अनिश्चितता त्रिज्या घटाने के बाद; जब वे ओवरलैप होते हैं तो `0`।",
            "format": "double"
          },
          "ip_distance_uncertainty_km": {
            "type": "number",
            "nullable": true,
            "description": "घटाया गया संयुक्त दायरा: IP स्थान का दायरा और इस फिक्स की सटीकता।",
            "format": "double"
          },
          "ip_consistent": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या `ip_distance_km` चरण पर कॉन्फ़िगर की गई दूरी के भीतर है। दोनों में से किसी एक के अज्ञात होने पर `null`।"
          },
          "document_distance_km": {
            "type": "number",
            "nullable": true,
            "description": "पहचान दस्तावेज़ या पते के प्रमाण पर जियोकोडेड पते की दूरी। फ़ाइल में कोई पता न होने पर `null`।",
            "format": "double"
          },
          "travel_excused": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या चरण के ट्रैवल टॉलरेंस ने पते से दूरी को छूट दी। टॉलरेंस बंद होने पर `null`।"
          },
          "consecutive_mismatches": {
            "type": "integer",
            "nullable": true,
            "description": "अंतिम प्रयास पर: यह जांच और उसी व्यक्ति के लगातार पिछले बेमेल।"
          },
          "attempts": {
            "type": "integer",
            "description": "नोड के भीतर इस प्रयास की संख्या, जो 1 से शुरू होती है।"
          },
          "consent": {
            "type": "object",
            "nullable": true,
            "description": "सिस्टम प्रॉम्प्ट से पहले व्यक्ति द्वारा दी गई सहमति, उनके द्वारा देखे गए शब्दांकन संस्करण और भाषा के साथ दर्ज की गई।",
            "properties": {
              "accepted_at": {
                "type": "string",
                "format": "date-time"
              },
              "version": {
                "type": "string",
                "nullable": true
              },
              "locale": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "feature": {
                  "type": "string",
                  "enum": [
                    "ID_VERIFICATION",
                    "NFC",
                    "LIVENESS",
                    "FACEMATCH",
                    "PROOF_OF_ADDRESS",
                    "PHONE",
                    "EMAIL",
                    "AML",
                    "LOCATION",
                    "DATABASE_VALIDATION",
                    "QUESTIONNAIRE",
                    "DOCUMENT_AI",
                    "KYB_REGISTRY",
                    "KYB_DOCUMENTS",
                    "KYB_KEY_PEOPLE",
                    "GEOLOCATION",
                    "SIGNATURE"
                  ],
                  "description": "वह सुविधा जिसने यह चेतावनी उत्पन्न की। यह मान उस सुविधा ब्लॉक की पहचान करता है जिससे चेतावनी संबंधित है। प्रत्येक मॉड्यूल का चेतावनी ऐरे आमतौर पर अपने मॉड्यूल से मेल खाने वाले मान का उपयोग करता है (उदाहरण के लिए, `phone_verifications[].warnings` के अंदर `PHONE`), लेकिन ऊपर दिया गया enum निर्णय payload पर सभी सुविधा चेतावनियों में आधिकारिक है।"
                },
                "risk": {
                  "type": "string"
                },
                "additional_data": {
                  "type": "object",
                  "nullable": true
                },
                "log_type": {
                  "type": "string"
                },
                "short_description": {
                  "type": "string"
                },
                "long_description": {
                  "type": "string"
                },
                "node_id": {
                  "type": "string",
                  "description": "वर्कफ़्लो ग्राफ़ नोड ID जिसने यह चेतावनी उत्पन्न की"
                }
              }
            },
            "description": "इस स्थान सत्यापन चरण द्वारा उठाई गई चेतावनियाँ, जिसमें `feature` को `GEOLOCATION` पर सेट किया गया है। चेतावनी कोड `LOCATION_` से शुरू होते हैं।"
          }
        }
      },
      "GeolocationAttempt": {
        "type": "object",
        "description": "स्थान सत्यापन चरण का एक प्रयास: `warnings` को छोड़कर `geolocation_checks[]` जैसी ही कुंजियाँ, साथ ही Didit को यह कब प्राप्त हुआ।",
        "properties": {
          "node_id": {
            "type": "string",
            "nullable": true,
            "description": "वर्कफ़्लो नोड जिसने यह परिणाम तैयार किया, ताकि दो स्थान सत्यापन चरणों वाला वर्कफ़्लो पढ़ने योग्य बना रहे।"
          },
          "status": {
            "type": "string",
            "enum": [
              "Not Finished",
              "Approved",
              "Declined",
              "In Review",
              "Resub Requested"
            ],
            "description": "इस स्थान सत्यापन चरण की सुविधा-स्तरीय स्थिति, जो इसकी चेतावनियों के आधार पर निर्धारित की जाती है। सत्र `status` से स्वतंत्र।"
          },
          "outcome": {
            "type": "string",
            "nullable": true,
            "description": "इस प्रयास में क्या हुआ।",
            "enum": [
              "verified",
              "low_accuracy",
              "accuracy_undetermined",
              "stale",
              "approximate",
              "denied",
              "restricted",
              "unavailable",
              "timeout",
              "mock_detected",
              "outside_geofence",
              "in_blocked_area",
              "anonymizer_detected",
              "skipped",
              "replay_rejected",
              "unsupported_client",
              null
            ]
          },
          "permission": {
            "type": "string",
            "nullable": true,
            "description": "ऑपरेटिंग सिस्टम या ब्राउज़र ने क्या अनुमति दी। `not_requested` का अर्थ है कि चरण केवल कनेक्शन के IP स्थान का उपयोग करता है, इसलिए व्यक्ति से कभी भी अनुमति नहीं माँगी जाती है।",
            "enum": [
              "granted_precise",
              "granted_approximate",
              "denied",
              "restricted",
              "unavailable",
              "timeout",
              "dismissed",
              "not_requested",
              null
            ]
          },
          "latitude": {
            "type": "number",
            "nullable": true,
            "description": "फ़िक्स का WGS84 अक्षांश। कोई फ़िक्स न होने पर `null`।",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "nullable": true,
            "description": "फ़िक्स का WGS84 देशांतर। कोई फ़िक्स न होने पर `null`।",
            "format": "double"
          },
          "accuracy_m": {
            "type": "number",
            "nullable": true,
            "description": "`accuracy_confidence` में विश्वास स्तर पर, मीटर में अनिश्चितता का दायरा।",
            "format": "double"
          },
          "accuracy_confidence": {
            "type": "string",
            "nullable": true,
            "description": "विश्वास स्तर जो प्लेटफ़ॉर्म `accuracy_m` से जोड़ता है: `p95` (ब्राउज़र), `p68` (Android) या `unspecified` (iOS)।",
            "enum": [
              "p95",
              "p68",
              "unspecified",
              null
            ]
          },
          "measured_at": {
            "type": "string",
            "nullable": true,
            "description": "जब डिवाइस ने अपनी घड़ी के अनुसार फ़िक्स प्राप्त किया।",
            "format": "date-time"
          },
          "age_seconds": {
            "type": "integer",
            "nullable": true,
            "description": "डिवाइस द्वारा स्थिति प्राप्त करने और Didit द्वारा इसे प्राप्त करने के बीच के सेकंड।"
          },
          "source": {
            "type": "string",
            "nullable": true,
            "description": "फ़िक्स कहाँ से आया, जब प्लेटफ़ॉर्म बताता है। `ip` का अर्थ है कि स्थिति कनेक्शन का IP स्थान है।",
            "enum": [
              "gps",
              "fused",
              "network",
              "wifi",
              "cell",
              "browser",
              "unknown",
              "ip",
              null
            ]
          },
          "platform": {
            "type": "string",
            "nullable": true,
            "description": "वह क्लाइंट जिसने सुधार किया।",
            "enum": [
              "web",
              "ios",
              "android",
              "react_native",
              "flutter",
              null
            ]
          },
          "sdk_version": {
            "type": "string",
            "nullable": true,
            "description": "फिक्स तैयार करने वाले SDK का संस्करण।"
          },
          "is_mock": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब डिवाइस रिपोर्ट करता है कि स्थान फिक्स किसी मॉक लोकेशन प्रदाता या सिमुलेशन सॉफ़्टवेयर से आया है। `null` जब प्लेटफ़ॉर्म इसकी रिपोर्ट नहीं करता है (ब्राउज़र इसका पता नहीं लगा सकते); `null` का अर्थ `false` नहीं है।"
          },
          "produced_by_accessory": {
            "type": "boolean",
            "nullable": true,
            "description": "केवल iOS: `true` जब फ़िक्स किसी बाहरी एक्सेसरी से आया हो। अन्यत्र `null`।"
          },
          "integrity": {
            "type": "string",
            "enum": [
              "attested",
              "not_attested",
              "failed",
              "unsupported",
              "not_determined"
            ],
            "description": "क्या डिवाइस अटेस्टेशन इस समाधान का समर्थन करता है। `unsupported` वही है जो ब्राउज़र रिपोर्ट करते हैं, क्योंकि वेब में कोई अटेस्टेशन तंत्र नहीं है; यह कोई विफलता नहीं है।"
          },
          "country_code": {
            "type": "string",
            "nullable": true,
            "description": "ISO 3166-1 alpha-2 देश जिसमें फ़िक्स स्थित है।"
          },
          "region_code": {
            "type": "string",
            "nullable": true,
            "description": "ISO 3166-2 सबडिवीज़न जिसमें फ़िक्स है।"
          },
          "city": {
            "type": "string",
            "nullable": true,
            "description": "निकटतम आबादी वाला स्थान, समीक्षकों के लिए एक लेबल।"
          },
          "geofence": {
            "type": "object",
            "description": "चरण के देश और क्षेत्र नियमों का परिणाम।",
            "properties": {
              "enabled": {
                "type": "boolean",
                "description": "क्या चरण कोई देश या क्षेत्र नियम लागू करता है।"
              },
              "result": {
                "type": "string",
                "nullable": true,
                "description": "नियमों के सापेक्ष स्थिति कहाँ बैठती है। `undetermined` का अर्थ है कि सटीकता वृत्त सीमा के दोनों ओर होता है या स्थिति का समाधान किसी भी देश में नहीं हुआ; यह बाहर होने का प्रमाण नहीं है।",
                "enum": [
                  "inside",
                  "outside",
                  "undetermined",
                  null
                ]
              }
            }
          },
          "inside_geofence": {
            "type": "boolean",
            "nullable": true,
            "description": "`true` जब `geofence.result` `inside` हो, `false` जब `outside` हो, अन्यथा `null`।"
          },
          "geofence_basis": {
            "type": "string",
            "nullable": true,
            "description": "क्षेत्र परिणाम का निर्णय किस स्थिति से किया गया था: `device` फ़िक्स, या कनेक्शन का `ip` स्थान।",
            "enum": [
              "device",
              "ip",
              null
            ]
          },
          "inside_areas": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "कॉन्फ़िगर किए गए उन अनुमत क्षेत्रों के Ids जिनके अंदर स्थान स्थित है।"
          },
          "blocked_areas": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "कॉन्फ़िगर किए गए उन अवरुद्ध क्षेत्रों के IDs जिनमें स्थान स्थित है।"
          },
          "position_source": {
            "type": "string",
            "nullable": true,
            "description": "जैसा कि कॉन्फ़िगर किया गया है, चरण स्थान कहाँ से लेता है: IP स्थान के विरुद्ध जाँचा गया डिवाइस, केवल डिवाइस, या केवल IP स्थान।",
            "enum": [
              "device_and_ip",
              "device_only",
              "ip_only",
              null
            ]
          },
          "anonymizers": {
            "type": "object",
            "nullable": true,
            "description": "कनेक्शन और डिवाइस कैसे दिखते हैं, प्रत्येक `true`, `false` या `null` जब स्रोत नहीं बता सकता।",
            "properties": {
              "vpn": {
                "type": "boolean",
                "nullable": true
              },
              "proxy": {
                "type": "boolean",
                "nullable": true
              },
              "tor": {
                "type": "boolean",
                "nullable": true
              },
              "spoofing": {
                "type": "boolean",
                "nullable": true
              },
              "emulator": {
                "type": "boolean",
                "nullable": true
              }
            }
          },
          "ip_distance_km": {
            "type": "number",
            "nullable": true,
            "description": "सत्र के IP स्थान की दूरी दोनों अनिश्चितता त्रिज्या घटाने के बाद; जब वे ओवरलैप होते हैं तो `0`।",
            "format": "double"
          },
          "ip_distance_uncertainty_km": {
            "type": "number",
            "nullable": true,
            "description": "घटाया गया संयुक्त दायरा: IP स्थान का दायरा और इस फिक्स की सटीकता।",
            "format": "double"
          },
          "ip_consistent": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या `ip_distance_km` चरण पर कॉन्फ़िगर की गई दूरी के भीतर है। दोनों में से किसी एक के अज्ञात होने पर `null`।"
          },
          "document_distance_km": {
            "type": "number",
            "nullable": true,
            "description": "पहचान दस्तावेज़ या पते के प्रमाण पर जियोकोडेड पते की दूरी। फ़ाइल में कोई पता न होने पर `null`।",
            "format": "double"
          },
          "travel_excused": {
            "type": "boolean",
            "nullable": true,
            "description": "क्या चरण के ट्रैवल टॉलरेंस ने पते से दूरी को छूट दी। टॉलरेंस बंद होने पर `null`।"
          },
          "consecutive_mismatches": {
            "type": "integer",
            "nullable": true,
            "description": "अंतिम प्रयास पर: यह जांच और उसी व्यक्ति के लगातार पिछले बेमेल।"
          },
          "attempts": {
            "type": "integer",
            "description": "नोड के भीतर इस प्रयास की संख्या, जो 1 से शुरू होती है।"
          },
          "consent": {
            "type": "object",
            "nullable": true,
            "description": "सिस्टम प्रॉम्प्ट से पहले व्यक्ति द्वारा दी गई सहमति, उनके द्वारा देखे गए शब्दांकन संस्करण और भाषा के साथ दर्ज की गई।",
            "properties": {
              "accepted_at": {
                "type": "string",
                "format": "date-time"
              },
              "version": {
                "type": "string",
                "nullable": true
              },
              "locale": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "received_at": {
            "type": "string",
            "nullable": true,
            "description": "Didit को यह प्रयास कब प्राप्त हुआ।",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "BiometricRetention": {
        "type": "object",
        "description": "इस सत्र का लाइव बायोमेट्रिक डेटा कब हटाया जाता है।",
        "required": [
          "jurisdictions",
          "deletes_at"
        ],
        "properties": {
          "jurisdictions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "उन US राज्यों के कोड जिनके बायोमेट्रिक नियम इस व्यक्ति के लिए विलोपन सीमा निर्धारित करते हैं (राज्य अज्ञात होने पर `US`)। कोई लागू न होने पर खाली।"
          },
          "deletes_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "वह तिथि जब इस सत्र का लाइव बायोमेट्रिक डेटा (चेहरे की छवियाँ और टेम्पलेट) हटा दिया जाता है, जो आपके एप्लिकेशन की डेटा प्रतिधारण सेटिंग और, जहाँ लागू हो, व्यक्ति के अधिकार क्षेत्र की कानूनी सीमा से निर्धारित होती है। जब अभी तक कोई तिथि लागू नहीं होती है तो `null`।"
          }
        }
      },
      "TravelRuleManualMatchRequest": {
        "type": "object",
        "required": [
          "transaction_id"
        ],
        "properties": {
          "transaction_id": {
            "type": "string",
            "format": "uuid",
            "description": "प्राप्त Travel Rule संदेश (पंक्ति जिसमें `kind: message` है) का `transaction_id`।"
          }
        }
      },
      "TravelRuleManualMatchResponse": {
        "type": "object",
        "required": [
          "deposit",
          "message"
        ],
        "properties": {
          "deposit": {
            "$ref": "#/components/schemas/TravelRuleTransferRow"
          },
          "message": {
            "$ref": "#/components/schemas/TravelRuleTransferRow"
          }
        }
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key",
        "description": "आपकी एप्लिकेशन की API कुंजी, Business Console में Developers -> API keys से। प्राथमिक कुंजी के पास पूर्ण एक्सेस होता है। एक नामित कुंजी को स्कोप किया जा सकता है: प्रति संसाधन none, read या write, कुछ वर्कफ़्लो या स्वीकृत सत्रों तक सीमित, IP पतों की सूची तक सीमित, और समाप्ति तिथि तक सीमित। 401 का अर्थ है कि कुंजी गलत है, निरस्त कर दी गई है या उसकी समय-सीमा समाप्त हो गई है; 403 का अर्थ है कि कोई कुंजी नहीं भेजी गई थी, कुंजी के पास इस संसाधन या कार्रवाई का एक्सेस नहीं है, या अनुरोध उसकी IP सूची से बाहर के पते से आया था; सत्र रूट पर 404 का अर्थ है कि सत्र कुंजी के वर्कफ़्लो या स्थितियों से बाहर है। मीडिया एक्सेस के बिना एक कुंजी को छवि, वीडियो और PDF URL null के रूप में प्राप्त होते हैं, और सत्र write के बिना एक कुंजी को सत्र लिंक और token null के रूप में प्राप्त होते हैं। देखें https://docs.didit.me/console/api-keys।"
      },
      "TransactionTokenAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Transaction-Token",
        "description": "आपके बैकएंड द्वारा POST /v3/transactions/sdk-token/ के माध्यम से मिंट किया गया अल्पकालिक स्कोप्ड token। डिवाइस-फ़ेसिंग /v1/transactions/ endpoint पर Didit SDKs द्वारा उपयोग किया जाता है।"
      },
      "SessionTokenAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Session-Token",
        "description": "POST /v3/session/ के `session_token` फ़ील्ड में लौटाया गया अल्पकालिक token। आपकी सर्वर-साइड API कुंजी के बिना, सत्यापित करने वाले उपयोगकर्ता की ओर से सत्र-स्कोप्ड endpoint को कॉल करने के लिए होस्ट किए गए सत्यापन प्रवाह (और कस्टम सैंडबॉक्स UI) द्वारा उपयोग किया जाता है।"
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "एप्लिकेशन का क्लाइंट-क्रेडेंशियल एक्सेस टोकन।"
      },
      "CaseRequestToken": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Case-Request-Token",
        "description": "सुरक्षित लिंक से अनुरोध-विशिष्ट क्रेडेंशियल। केवल इसी अनुरोध तक पहुँच प्रदान करता है।"
      }
    },
    "responses": {
      "Unauthorized": {
        "description": "अनधिकृत",
        "content": {
          "application/json": {
            "examples": {
              "Invalid API Key": {
                "summary": "अमान्य API कुंजी",
                "value": {
                  "detail": "Invalid API Key."
                }
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "निषिद्ध",
        "content": {
          "application/json": {
            "examples": {
              "No Permission": {
                "summary": "कोई अनुमति नहीं",
                "value": {
                  "detail": "You do not have permission to perform this action."
                }
              },
              "Not Enough Credits": {
                "summary": "पर्याप्त क्रेडिट नहीं हैं",
                "value": {
                  "error": "You don't have enough credits to perform this request. Please top up at https://business.didit.me"
                }
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "नहीं मिला",
        "content": {
          "application/json": {
            "examples": {
              "Not Found": {
                "summary": "नहीं मिला",
                "value": {
                  "detail": "Resource not found."
                }
              }
            }
          }
        }
      },
      "PhoneRiskValidationError": {
        "description": "अनुरोध सत्यापन विफल रहा।",
        "content": {
          "application/json": {
            "examples": {
              "Missing phone number": {
                "summary": "फ़ोन नंबर मौजूद नहीं है",
                "value": {
                  "phone_number": [
                    "This field is required."
                  ]
                }
              },
              "Invalid phone number": {
                "summary": "अमान्य फ़ोन नंबर",
                "value": {
                  "phone_number": [
                    "Invalid phone number provided."
                  ]
                }
              },
              "Invalid signal IP": {
                "summary": "अमान्य सिग्नल IP",
                "value": {
                  "signals": {
                    "ip": [
                      "Enter a valid IPv4 or IPv6 address."
                    ]
                  }
                }
              }
            }
          }
        }
      },
      "EmailRiskValidationError": {
        "description": "अनुरोध सत्यापन विफल रहा।",
        "content": {
          "application/json": {
            "examples": {
              "Missing email": {
                "summary": "ईमेल मौजूद नहीं है",
                "value": {
                  "email": [
                    "This field is required."
                  ]
                }
              },
              "Invalid email": {
                "summary": "अमान्य ईमेल",
                "value": {
                  "email": [
                    "Enter a valid email address."
                  ]
                }
              },
              "Invalid country hint": {
                "summary": "अमान्य देश संकेत",
                "value": {
                  "country_code": [
                    "Ensure this field has no more than 3 characters."
                  ]
                }
              }
            }
          }
        }
      },
      "IPRiskValidationError": {
        "description": "अनुरोध सत्यापन विफल रहा।",
        "content": {
          "application/json": {
            "examples": {
              "Missing IP address": {
                "summary": "IP पता मौजूद नहीं है",
                "value": {
                  "ip_address": [
                    "This field is required."
                  ]
                }
              },
              "Invalid IP address": {
                "summary": "अमान्य IP पता",
                "value": {
                  "ip_address": [
                    "Enter a valid IPv4 or IPv6 address."
                  ]
                }
              },
              "Country hint too long": {
                "summary": "देश संकेत बहुत लंबा है",
                "value": {
                  "claimed_country": [
                    "Ensure this field has no more than 3 characters."
                  ]
                }
              }
            }
          }
        }
      },
      "RiskPermissionDenied": {
        "description": "API कुंजी अनुपलब्ध या अमान्य है, या संगठन लाइव लुकअप को कवर नहीं कर सकता है। यह API कभी भी `401` नहीं लौटाता है।",
        "content": {
          "application/json": {
            "examples": {
              "Missing or invalid API key": {
                "summary": "कोई `x-api-key` हेडर नहीं, या कुंजी अमान्य या निरस्त है",
                "value": {
                  "detail": "You do not have permission to perform this action."
                }
              },
              "Not enough credits": {
                "summary": "संगठन का बैलेंस लुकअप की कीमत को कवर नहीं कर सकता",
                "value": {
                  "error": "You don't have enough credits to perform this request."
                }
              }
            }
          }
        }
      },
      "RateLimitedWrite": {
        "description": "प्रति API कुंजी प्रति मिनट 300 अनुरोधों की साझा लिखने की सीमा पार हो गई। पुनः प्रयास करने से पहले `Retry-After` का पालन करें।",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "detail"
              ],
              "properties": {
                "detail": {
                  "type": "string"
                }
              }
            },
            "example": {
              "detail": "Write request rate limit exceeded. You can make up to 300 requests per minute."
            }
          }
        }
      },
      "AddressValidationValidationError": {
        "description": "अनुरोध बॉडी अमान्य है: एक अनुपलब्ध या अज्ञात `country`, कोई पता नहीं, या `address` और संरचित फ़ील्ड दोनों।",
        "content": {
          "application/json": {
            "examples": {
              "Unknown country": {
                "value": {
                  "country": [
                    "Use an ISO 3166-1 alpha-2 or alpha-3 country code, e.g. 'US' or 'USA'."
                  ]
                }
              },
              "No address": {
                "value": {
                  "address": [
                    "Send the address: 'address' on one line, or the structured fields with 'address_line_1'."
                  ]
                }
              },
              "Both shapes": {
                "value": {
                  "address": [
                    "Send either 'address' or the structured fields (address_line_1, ...), not both."
                  ]
                }
              }
            }
          }
        }
      },
      "AddressValidationPermissionDenied": {
        "description": "API कुंजी अनुपलब्ध या अमान्य है, स्कोप्ड कुंजी में `sessions` राइट एक्सेस नहीं है, या संगठन सत्यापन को कवर नहीं कर सकता है। यह API कभी भी `401` नहीं लौटाता है।",
        "content": {
          "application/json": {
            "examples": {
              "Missing or invalid API key": {
                "value": {
                  "detail": "You do not have permission to perform this action."
                }
              },
              "Not enough credits": {
                "value": {
                  "detail": "You don't have enough credits to perform this request. Please top up at https://business.didit.me",
                  "code": "insufficient_credits"
                }
              }
            }
          }
        }
      },
      "DocumentProcessingBusy": {
        "description": "वर्तमान में बहुत सारे दस्तावेज़ प्रोसेस किए जा रहे हैं, इसलिए यह अपलोड प्रोसेस नहीं हुआ: कुछ भी संग्रहीत नहीं किया गया और किसी भी प्रयास का उपयोग नहीं किया गया। `Retry-After` में दिए गए सेकंड की संख्या के बाद वही फ़ाइल दोबारा भेजें। `code` के आधार पर शाखा चुनें, संदेश टेक्स्ट के आधार पर नहीं।",
        "headers": {
          "Retry-After": {
            "description": "समान अनुरोध दोबारा भेजने से पहले प्रतीक्षा करने की अवधि (सेकंड में)।",
            "schema": {
              "type": "integer",
              "example": 10
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "required": [
                "detail",
                "code"
              ],
              "properties": {
                "detail": {
                  "type": "string"
                },
                "code": {
                  "type": "string",
                  "enum": [
                    "document_processing_busy"
                  ]
                }
              }
            },
            "example": {
              "detail": "We are busy processing documents. Please try again in a moment.",
              "code": "document_processing_busy"
            }
          }
        }
      }
    },
    "parameters": {
      "WebhookSignature": {
        "name": "X-Signature",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "सटीक रॉ अनुरोध बॉडी का लोअरकेस हेक्स HMAC-SHA256, जो गंतव्य के सीक्रेट से कुंजीबद्ध है।"
      },
      "WebhookSignatureV2": {
        "name": "X-Signature-V2",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "बॉडी के कैनोनिकल JSON का लोअरकेस हेक्स HMAC-SHA256 (गंतव्य के सीक्रेट से कुंजीबद्ध, कुंजियाँ क्रमबद्ध, कोई व्हाइटस्पेस नहीं, गैर-ASCII वर्ण अनएस्केप्ड)। अनुशंसित, क्योंकि यह बॉडी को पुनः एनकोड करने वाले मिडलवेयर के बाद भी मान्य रहता है।"
      },
      "WebhookSignatureSimple": {
        "name": "X-Signature-Simple",
        "in": "header",
        "required": true,
        "deprecated": true,
        "schema": {
          "type": "string"
        },
        "description": "`{timestamp}:{session_id}:{status}:{webhook_type}` का लोअरकेस हेक्स HMAC-SHA256 (गंतव्य के सीक्रेट से कुंजीबद्ध, अनुपस्थित फ़ील्ड खाली स्ट्रिंग के रूप में)। केवल एनवेलप को कवर करता है, payload को कभी नहीं।"
      },
      "WebhookTimestamp": {
        "name": "X-Timestamp",
        "in": "header",
        "required": true,
        "schema": {
          "type": "string"
        },
        "description": "Unix समय सेकंड में, जो बॉडी के `timestamp` के बराबर है। कुछ मिनटों से अधिक पुरानी डिलीवरी अस्वीकार करें।"
      }
    }
  },
  "x-webhooks": {
    "status.updated": {
      "post": {
        "summary": "सत्र की स्थिति बदल गई",
        "description": "एक सत्यापन सत्र की स्थिति बदल गई। `decision` केवल `Approved`, `Declined`, `In Review` और `Abandoned` के लिए भेजा जाता है; इसमें webhook संस्करण 3 (डिफ़ॉल्ट) पर गंतव्यों के लिए `GET /v3/session/{sessionId}/decision/` का प्रारूप होता है, और संस्करण 1 या 2 गंतव्यों के लिए पुराना संक्षिप्त प्रारूप होता है। व्यावसायिक सत्रों को हमेशा संस्करण 3 का व्यावसायिक निर्णय प्राप्त होता है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionStatusUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "data.updated": {
      "post": {
        "summary": "सत्र डेटा बदला गया",
        "description": "किसी सत्यापन सत्र का डेटा बिना स्थिति बदले बदल गया, उदाहरण के लिए मैन्युअल समीक्षा संपादन, चरण ओवरराइड या सतत निगरानी रीस्क्रीन के बाद। `decision` केवल `Approved`, `Declined`, `In Review` और `Abandoned` के लिए भेजा जाता है; इसमें webhook संस्करण 3 (डिफ़ॉल्ट) पर गंतव्यों के लिए `GET /v3/session/{sessionId}/decision/` का आकार होता है, और संस्करण 1 या 2 गंतव्यों के लिए पुराना संक्षिप्त रूप होता है। व्यावसायिक सत्रों को हमेशा संस्करण 3 का व्यावसायिक निर्णय प्राप्त होता है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionDataUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "user.status.updated": {
      "post": {
        "summary": "उपयोगकर्ता स्थिति बदली गई",
        "description": "किसी उपयोगकर्ता की स्थिति बदल गई। उपयोगकर्ता बनाए जाने पर नहीं भेजा जाता है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserStatusUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "user.data.updated": {
      "post": {
        "summary": "उपयोगकर्ता डेटा बदला गया",
        "description": "उपयोगकर्ता के फ़ील्ड बदले गए। उपयोगकर्ता बनाए जाने पर नहीं भेजा जाता है। एक ही बार सेव करने पर स्थिति और डेटा दोनों इवेंट उत्पन्न हो सकते हैं।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserDataUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "business.status.updated": {
      "post": {
        "summary": "व्यवसाय की स्थिति बदल गई",
        "description": "एक व्यवसाय की स्थिति बदल गई। व्यवसाय बनाए जाने पर नहीं भेजा जाता।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BusinessStatusUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "business.data.updated": {
      "post": {
        "summary": "व्यवसाय डेटा बदल गया",
        "description": "व्यवसाय के फ़ील्ड बदले गए। व्यवसाय बनने पर नहीं भेजा जाता है। एक ही बार सेव करने पर स्थिति और डेटा दोनों इवेंट उत्पन्न हो सकते हैं।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BusinessDataUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "transaction.created": {
      "post": {
        "summary": "लेन-देन बनाया गया",
        "description": "एक लेन-देन बनाया गया और स्क्रीन किया गया। केवल लाइव एप्लिकेशन के लिए भेजा गया।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionCreatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "transaction.status.updated": {
      "post": {
        "summary": "लेन-देन की स्थिति बदल गई",
        "description": "किसी नियम, समीक्षा या अंतिम उपयोगकर्ता की कार्रवाई से किसी लेन-देन की स्थिति बदल गई। केवल लाइव एप्लिकेशन के लिए भेजा गया।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionStatusUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "travel_rule.status.updated": {
      "post": {
        "summary": "Travel Rule की स्थिति बदल गई",
        "description": "एक Travel Rule एक्सचेंज की स्थिति बदल गई। `FINISHED`, `CANCELLED` या `EXPIRED` तक और इसमें शामिल प्रत्येक ट्रांज़िशन पर भेजा जाता है, इसके बाद कभी नहीं। लाइव एप्लिकेशनों के लिए और Travel Rule एक्सचेंजों के लिए सैंडबॉक्स एप्लिकेशनों (`environment: sandbox`) के लिए भी भेजा जाता है। कोई शीर्ष-स्तरीय `status` नहीं है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TravelRuleStatusUpdatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "workflow.compliance_changed": {
      "post": {
        "summary": "वर्कफ़्लो अनुपालन बदला गया",
        "description": "पुनर्मूल्यांकन के बाद किसी प्रकाशित वर्कफ़्लो की अनुपालन स्थिति बदल गई। प्रति वर्कफ़्लो एक इवेंट। कोई शीर्ष-स्तरीय `status` नहीं है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkflowComplianceChangedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "kyb.registry_search.resolved": {
      "post": {
        "summary": "कंपनी खोज पूरी हुई (अहस्ताक्षरित कॉलबैक)",
        "description": "रजिस्ट्री खोज पूर्ण होने के बाद `POST /v3/kyb/search/` के `webhook_url` पर भेजे गए कॉलबैक का मुख्य भाग (body)। यह हस्ताक्षरित नहीं होता है: अनुरोध में `X-Didit-Unsigned-Callback: true` होता है और कोई भी हस्ताक्षर हेडर शामिल नहीं होता है, इसलिए अपने द्वारा शुरू की गई खोज से `request_id` का मिलान करके इसकी पुष्टि करें। इसमें `webhook_type` के बजाय `event_type` का उपयोग होता है।",
        "tags": [
          "Webhook"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/KYBRegistrySearchResolvedCallback"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    },
    "transaction_rule_suggestions.created": {
      "post": {
        "summary": "लेन-देन नियम सुझाव बनाए गए",
        "description": "लेन-देन नियम सुझाव रन ने आपके एप्लिकेशन के लिए नए नियम परिवर्तनों का प्रस्ताव रखा। तब भेजा जाता है जब नियम-सुझाव सेटिंग्स में webhook सूचनाएं चालू हों। इसमें कोई शीर्ष-स्तरीय `status` नहीं होता है।",
        "tags": [
          "Webhook"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignature"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureV2"
          },
          {
            "$ref": "#/components/parameters/WebhookSignatureSimple"
          },
          {
            "$ref": "#/components/parameters/WebhookTimestamp"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TransactionRuleSuggestionsCreatedEvent"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "कोई भी 2xx रिस्पॉन्स डिलीवरी की पुष्टि करता है। अन्य रिस्पॉन्स और टाइमआउट पर पुनः प्रयास किया जाता है; https://docs.didit.me/integration/webhooks देखें।"
          }
        }
      }
    }
  }
}
