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

# लेन-देन बनाने का API: KYT सबमिशन

> Didit KYT में लेन-देन सबमिट करें: जोखिम स्कोरिंग, स्क्रीनिंग और Travel Rule। हर महीने 1,000 शामिल, फिर $0.001 प्रति लेन-देन।



लेन-देन बनाने के लिए API प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Submit a transaction for Didit monitoring through the Management API.

Endpoint:
POST https://verification.didit.me/v3/transactions/

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Submit a transaction for KYT (transaction monitoring). Didit runs the configured rules engine, blockchain analytics, and AML screening synchronously and returns the verdict in the response. The full detail (parties, rule runs, provider results, remediation links) is also returned.
\- A Travel Rule transfer is stored in the same call, but Didit contacts the counterparty after the response: travel_rule.status comes back AWAITING_COUNTERPARTY (or NOT_APPLICABLE, UNCONFIRMED_OWNERSHIP, or COMPLETED for your own verified wallet) with travel_rule.protocol null, and every later status change, including COUNTERPARTY_VASP_NOT_FOUND, arrives as a travel_rule.status.updated webhook. Your rules run again when the rail or the status changes.

When to call:
\- At payment authorization, before fanning out funds, to decide allow / hold / decline based on status, score, severity.
\- On post-trade events (gambling bets, audit-trail events, KYC events) for long-running monitoring without a per-transaction decision.
\- On crypto deposits / withdrawals — set transaction_details.currency_kind = "crypto" and provide the relevant wallet address in payment_method.account_id.
\- For Travel Rule, set transaction_category = "travel_rule" and include travel_rule_details (alias travelRule).
travel_rule_details.status is required (400 if missing); when Travel Rule is enabled, Didit runs the exchange and ignores the status you send, and otherwise Didit records the transfer passively with that status.
When the subject is a user with an approved Didit KYC verification and Travel Rule is on, Didit replaces the originator_data fields the verification holds with the verified values (metadata.originator_provenance says which); otherwise it sends originator_data as you provide it, so build it from the identity you verified.
beneficiary_data carries the beneficiary (name, wallet_address, chain) and any routing hints (travel_address, counterparty_vasp_lei, counterparty_vasp_name, counterparty_vasp_email).
If beneficiary_data.chain is empty, Didit takes transaction_details.crypto_params.crypto_chain, else custom_properties.crypto_chain, else the currency, uppercases it, and sets it only when it is a chain Didit recognises (for example ETH or BTC).
\- Chain shapes: on XRP, XLM, EOS, ATOM and HBAR send the destination tag or memo as payment_method.memo (or beneficiary_data.memo); on BTC, LTC, BCH and DOGE send the transaction's inputs and outputs as travel_rule_details.utxo; on bitcoin or Lightning, payment_method.account_id may be a Lightning payment request or Lightning Address. What Didit resolved is on travel_rule.chain_details (see /transaction-monitoring/travel-rule#chain-shapes).

Identifiers:
\- transaction_id (alias txnId) is YOUR identifier (max 128 chars), unique per application.
It becomes txn_id on subsequent calls.
Reusing a transaction_id that already exists returns 400 {"transaction_id": ["A transaction with this transaction_id already exists."]}, and when two identical requests race each other the loser gets 409.
Neither response returns the existing transaction, so to retry safely, treat a 400 or 409 for a duplicate id as already created and look the transaction up instead of resubmitting: GET /v3/transactions/{uuid}/ with the Didit uuid from the first response, or with the transaction_id (the Didit uuid) that the transaction.created webhook carries next to your txn_id.
GET does not accept your txn_id. Sandbox applications do not receive transaction.created or transaction.status.updated, so save the Didit uuid from the create response. Sandbox Travel Rule exchanges do emit travel_rule.status.updated with environment: sandbox.
\- The returned uuid is Didit's stable identifier — use it in GET /v3/transactions/{transaction_id}/.

Linking to entities:
\- subject.vendor_data (and optionally counterparty.vendor_data) are your internal user/business identifiers. They link the transaction to the long-lived User / Business entity assembled from prior verification sessions. Use the SAME vendor_data you supplied when creating the KYC session.

Minimum request body (application/json):
\{
"transaction_id": "your-txn-2026-05-17-001",
"transaction_category": "finance",   // finance | kyc | travel_rule | user_event | audit_trail_event | gambling_bet | gambling_limit_change | gambling_bonus_change
"transaction_details": {
"direction": "outbound",            // "inbound" | "outbound"
"amount": 1500,                     // number or decimal string, up to 18 decimal places (string for exact precision); never negative, because direction carries the sign
"currency": "EUR",                  // any ISO 4217 code (EUR, USD, NGN, ...) or a crypto symbol
"currency_kind": "fiat",            // "fiat" | "crypto" (optional)
"action_type": "withdrawal"         // optional, e.g. deposit/withdrawal/transfer
},
"subject": {                          // APPLICANT party
"entity_type": "individual",        // "individual" | "company"
"vendor_data": "user-12345",        // required
"full_name": "Maria Garcia",        // required
"address": { "country": "ESP" }     // optional
},
"counterparty": { ... },              // optional COUNTERPARTY party (same shape as subject)
"transaction_at": "2026-05-17T08:42:00Z",  // optional, defaults to now
"travel_rule_details": { "status": "AWAITING_COUNTERPARTY", ... }   // optional, for crypto Travel Rule; status is required inside it
}

Currency codes:
\- currency has no enum. Any ISO 4217 alphabetic code (EUR, USD, NGN, ...) and any crypto asset symbol (BTC, ETH, ...) are accepted and stored exactly as you send them, up to 10 characters.
\- Prefer a currently-circulating code. Not every accepted code has an exchange rate: withdrawn currencies and accounting units such as XDR are often still quoted, but when Didit has no rate for the code you send (for example the ISO accounting unit XSU, or a crypto symbol Didit does not price), automatic conversion to your base currency fails and preferred_currency_amount comes back null. A pre-converted amount_in_default_currency is always used as sent when present, so supply it for any code you are not sure has a rate.
\- Set currency_kind = "crypto" for on-chain amounts. The kind gates the transaction's own crypto AML screening: without currency_kind = "crypto" that regular screening step is skipped and no screening fee is estimated or charged for it, even with monitoring enabled or include_crypto_screening = true. Travel Rule attribution is a separate path: on a production application with Travel Rule and VASP attribution enabled, an outbound transaction_category = "travel_rule" request whose beneficiary wallet and chain cannot be reached over any rail triggers a VASP attribution wallet screening, and that screening is billed at the wallet screening price whatever currency_kind is or is not set. The kind does not change the stored decimal scale: up to 18 decimal places are kept either way, but only when amount arrives as a decimal string ("0.123456789012345678"). A JSON number is parsed as a binary float first, so anything beyond about 15 significant digits is rounded before it is stored (0.123456789012345678 is stored as 0.12345678901234568). The kind also decides how the amount is rendered in the transaction PDF. Crypto amounts render with up to 8 decimal places, fiat amounts with their ISO 4217 minor unit (2 for most currencies). Without the kind, RON, MNT and GEL are rendered as fiat because each is both a token and an ISO 4217 currency, so a small token amount can show as 0 in the report.
The VASP attribution screening is skipped when the transaction's own crypto screening already screened that wallet: Didit reuses that result and charges nothing extra.

Example call:
curl -X POST "https://verification.didit.me/v3/transactions/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{
"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"}
}'

What to read from the response:
\- uuid — Didit transaction id, use for GET /v3/transactions/{transaction_id}/.
\- status - APPROVED | IN_REVIEW | DECLINED | AWAITING_USER (live verdict; at creation, AWAITING_USER comes from a rule action).
\- score (0–100, higher = riskier) and severity (LOW | MEDIUM | HIGH | CRITICAL).
\- decision_reason_code / decision_reason_label — machine + human verdict reason.
\- parties (role APPLICANT for the subject, COUNTERPARTY for the counterparty; kind USER, BUSINESS or EXTERNAL), cost_breakdown, rule_runs, provider_results (crypto screening results) and network_snapshot.
\- travel_rule - the Travel Rule transfer (status, protocol, required, originator_data, beneficiary_data, direction, rail, counterparty_vasp, delivery, discovery, reason, next_actions), or null; action_required - a pending wallet-ownership or verification step, or null.
reason and next_actions say why a COUNTERPARTY_VASP_NOT_FOUND or COUNTERPARTY_VASP_NOT_REACHABLE transfer is stuck and what moves it on (for example email_undeliverable: update_compliance_email, then resend); they are "" and [] for any other status.

Webhooks:
\- transaction.created fires after this call succeeds.
\- For a travel_rule transaction, travel_rule.status.updated fires for each Travel Rule transition, after transaction.created. Each webhook is delivered and retried on its own, so key on transaction_id rather than on arrival order.
\- transaction.status.updated fires whenever the verdict changes (manual review, async screening, rule re-runs). Subscribe a destination via POST /v3/webhook/destinations/.

Failure modes:
\- 400 - duplicate transaction_id, missing required field (including travel_rule_details.status), an unknown travel_rule_details.status ("Invalid travel rule status: ..."), invalid direction/category enum, or malformed party object.
\- 409 - a concurrent request with the same transaction_id was created first.
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401), or a key without permission for this action; the body is a { "detail": "..." } envelope.
\- 403 - the organization's balance cannot cover the fees this request would charge: { "detail": "...", "code": "insufficient_credits" }, and nothing is created.
\- 429 - more than 600 ingestion requests per minute for this API key (transaction and event ingestion share this budget, apart from the 300 of every other write); wait Retry-After seconds and retry.

Side effects:
\- Creates the transaction record and runs the synchronous rules + screening pipeline.
\- Links the transaction to the User / Business entity that shares the subject.vendor_data.
\- An outbound travel_rule transaction is billed once, at creation, on one line. It pays the Travel Rule fee ($0.02) when Travel Rule is on and Didit starts an exchange for it (amount at or above threshold_amount, including a transfer to a self-hosted wallet or to the user's own verified wallet). Otherwise it is billed as transaction monitoring (included in the plan's monthly transaction allowance, $0.001 each beyond it): below threshold_amount, a Lightning payment the Travel Rule does not apply to, or data recorded while Travel Rule is disabled. A resend never charges again.
\- An inbound travel_rule transaction pays no base fee, an application that joined Travel Rule free pays none on outbound transactions until it turns outbound billing on, and sandbox applications are never charged.
\- Crypto screening, when it runs, adds the Wallet Verification & Screening charge.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

यहाँ पेस्ट करें



## OpenAPI

````yaml hi/openapi-25.json POST /v3/transactions/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: पहचान सत्यापन API। x-api-key हेडर के साथ प्रमाणीकृत करें।
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/:
    post:
      tags:
        - Transactions
      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
      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-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST 'https://verification.didit.me/v3/transactions/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "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"
                }
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.transactions.create(
                transaction_id="your-txn-2026-05-17-001",
                transaction_category="finance",
                transaction_details={
                    "direction": "outbound",
                    "amount": 1500.0,
                    "currency": "EUR",
                    "action_type": "withdrawal",
                },
                subject={
                    "entity_type": "individual",
                    "vendor_data": "user-12345",
                    "full_name": "Maria Garcia",
                },
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

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

            const result = await didit.transactions.create({
              transaction_id: "your-txn-2026-05-17-001",
              transaction_category: "finance",
              transaction_details: {
                direction: "outbound",
                amount: 1500.0,
                currency: "EUR",
                action_type: "withdrawal",
              },
              subject: {
                entity_type: "individual",
                vendor_data: "user-12345",
                full_name: "Maria Garcia",
              },
            });
            console.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;

            import me.didit.types.TransactionsCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.transactions().create(TransactionsCreateParams.builder()
                    .transactionId("your-txn-2026-05-17-001")
                    .transactionCategory(TransactionsCreateParams.TransactionCategory.of("finance"))
                    .transactionDetails(TransactionsCreateParams.TransactionDetails.builder()
                            .direction(TransactionsCreateParams.TransactionDetails.Direction.of("outbound"))
                            .amount(1500.0)
                            .currency("EUR")
                            .actionType("withdrawal")
                            .build())
                    .subject(TransactionsCreateParams.Subject.builder()
                            .entityType("individual")
                            .vendorData("user-12345")
                            .fullName("Maria Garcia")
                            .build())
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

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

            $result = $didit->transactions->create([
                'transaction_id' => 'your-txn-2026-05-17-001',
                'transaction_category' => 'finance',
                'transaction_details' => [
                    'direction' => 'outbound',
                    'amount' => 1500.0,
                    'currency' => 'EUR',
                    'action_type' => 'withdrawal',
                ],
                'subject' => [
                    'entity_type' => 'individual',
                    'vendor_data' => 'user-12345',
                    'full_name' => 'Maria Garcia',
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.transactions.create(
              transaction_id: "your-txn-2026-05-17-001",
              transaction_category: "finance",
              transaction_details: {
                direction: "outbound",
                amount: 1500.0,
                currency: "EUR",
                action_type: "withdrawal",
              },
              subject: {
                entity_type: "individual",
                vendor_data: "user-12345",
                full_name: "Maria Garcia",
              }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.Transactions.CreateAsync(new
            TransactionsCreateParams

            {
                TransactionId = "your-txn-2026-05-17-001",
                TransactionCategory = "finance",
                TransactionDetails = new()
                {
                    Direction = "outbound",
                    Amount = 1500.0,
                    Currency = "EUR",
                    ActionType = "withdrawal",
                },
                Subject = new()
                {
                    EntityType = "individual",
                    VendorData = "user-12345",
                    FullName = "Maria Garcia",
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    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'
    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` के
            साथ। उसी लेन-देन की दोबारा स्क्रीनिंग एक नया आइटम होती है।
    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: वैकल्पिक। वह आउटपुट इंडेक्स जिसे कोई इनपुट खर्च करता है।
    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'
    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
    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 कुंजी का लेबल।
            स्वचालित निर्णय के लिए रिक्त।
    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` पर
            रहता है।

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

````

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