> ## 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: Travel Rule

> Didit के साथ उन क्रिप्टो डिपॉज़िट का Travel Rule डेटा पंजीकृत करें जो किसी एक्सचेंज से पहले ही ऑन-चेन सेटल हो चुके हैं। यह डिपॉज़िट के बाद का सनराइज़ फ़्लो है।



Sunrise Transfer के लिए इनबाउंड ट्रांसफ़र रजिस्टर करने का API प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Register Travel Rule data for a crypto deposit that settled on-chain BEFORE any exchange took place - because the sending VASP was unreachable at the time (the sunrise problem), or when backfilling historical deposits.

Endpoint:
POST https://verification.didit.me/v3/travel-rule/inbound/

Authentication:
Use the x-api-key header with my Didit API key. You are the beneficiary VASP.

Request body (application/json):
\{
"chain": "ETH",                        // required; stored lowercased and matched case-insensitively against your address-book entries' chain
"txid": "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060",   // dedupe key: same txid + wallet_address returns the existing transfer
"wallet_address": "0x8ba1f109551bD432803012645Ac136ddd64DBA72",   // an XRP X-address is split into its classic address and tag
"memo": "",                              // optional destination tag or memo: on a shared deposit address it names your customer
"amount": "500.00",
"currency": "USDC",
"originator_data": { "name": "Origin CASP SL" },      // flat originator details from the sender, if known (name or full_name, first_name, last_name, vendor_data)
"beneficiary_data": { "name": "Ana Diaz" },           // flat beneficiary details (your customer); name is matched against the entry's holder_name
"originating_vasp": { "name": "Origin CASP SL", "lei": "984500ABCDEF12345634", "travel_address": "taHg7hkTmJ4mTpdQxn61H9cyx6RreB2jrDHeB3pkioRRBgKQaSAGUzp73FVsmEXXJVxdAuCCWiBEFMkcB4MCtcyjnpbyEbTeSHwym394NMS7ev" },  // optional sender identity
"utxo": { "inputs": [ { "address": "bc1q...", "amount": "0.5" } ], "outputs": [ { "address": "bc1q...", "amount": "0.25" } ] }  // optional, BTC/LTC/BCH/DOGE only
}

Behavior:
\- Creates an inbound travelRule transaction (or reuses an unclaimed recorded deposit) and resolves it against your wallet address book, by the address and its memo (an entry with exactly that memo first, else one for the whole address; a deposit without a memo never reaches an entry that has one):
\- no matching entry -> ON_HOLD
\- entry exists, ownership unproven -> UNCONFIRMED_OWNERSHIP
\- name does not match the entry's holder_name -> COUNTERPARTY_MISMATCHED_DATA
\- verified entry + name match -> COMPLETED then immediately FINISHED (the deposit already settled).
\- The address-book match is chain-scoped: an entry matches when its chain equals the request chain (case-insensitive) or the entry's chain is blank, and "ethereum" does not match "ETH".
\- Resolve ON_HOLD (and UNCONFIRMED_OWNERSHIP) with POST /v3/transactions/{transaction_id}/travel-rule/ownership/.
\{"confirmed": true} registers or verifies the wallet entry and runs the name match; {"confirmed": false} declines the transfer.
ON_HOLD does not change the transaction status by itself; only a rule that acts on the Travel Rule status changes it (for example the opt-in library preset travel-rule-pending-action sets AWAITING_USER).
\- Naming originating_vasp keeps the sender's identity on this transfer (metadata.originating_vasp, and the transfer's originator VASP in GET /v3/travel-rule/transfers/); it never creates or changes a shared VASP directory entry.
originating_vasp.lei must be a valid 20-character LEI (ISO 17442) or blank, and originating_vasp.travel_address must be a valid travel address or blank.
An inbound TRP inquiry does not create or change its sender's directory entry either.
\- Webhooks: when a new transaction was created, transaction.created is sent first and travel_rule.status.updated follows for each status transition.
Each webhook is delivered and retried on its own, so do not rely on arrival order; key on transaction_id.
\- Billing: there is no base fee.
A newly created deposit is screened and charged the Wallet Verification & Screening rate only when crypto monitoring is enabled and chain is one Didit can screen (btc, eth, sol, trx, matic, bnb, ltc, xrp, bch, doge, or their full names such as bitcoin or ethereum).
Sandbox applications are never charged.
\- utxo: the sender's wallet is originator_data.wallet_address when you declare it, else the input address that contributed the most. The result is on travel_rule.chain_details.

What to read from the response:
\- transaction_id - the Didit transaction uuid, used in /v3/transactions/{transaction_id}/ calls.
\- txn_id - tr-in-{first 80 characters of txid}-{12 hex characters} for a new transaction, or the existing txn_id of a reused recorded deposit.
\- created - true (201) when this call registered the deposit, false (200) when the same txid + wallet_address was already registered.
\- travel_rule - the full transfer object: uuid, status, direction, rail, protocol, ivms_version, required, ownership_confirmed, deadline_at, timeline, counterparty_vasp, originator_data, beneficiary_data, delivery, discovery, reason, next_actions, created_at.
beneficiary_data includes the wallet_address and the lowercased chain.
originator_data and beneficiary_data stay masked in the response (data_masked: true) until wallet ownership is confirmed.
\- travel_rule.status - the resolved state (see above).

Failure modes:
\- 400 - a missing required field (chain, txid, wallet_address, amount, currency), an invalid originating_vasp.lei, or an invalid travel address ("Invalid travel address.").
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401).

Full guide: /transaction-monitoring/travel-rule#after-deposit-sunrise-registration.`

\</pre>



      
      

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



## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/inbound/
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/travel-rule/inbound/:
    post:
      tags:
        - Travel Rule
      summary: डिपॉज़िट के बाद (sunrise) इनबाउंड ट्रांसफ़र पंजीकृत करें
      description: >-
        किसी क्रिप्टो डिपॉज़िट के लिए Travel Rule डेटा पंजीकृत करें जो किसी भी
        एक्सचेंज से पहले ऑन-चेन सेटल हो चुका है। एक इनबाउंड travelRule लेन-देन
        बनाता है (या किसी अनक्लेम्ड डिपॉज़िट का पुनः उपयोग करता है) और आपकी
        वॉलेट पता पुस्तिका के विरुद्ध ट्रांसफ़र को हल करता है। नए बनाए गए
        लेन-देन के लिए, Didit पहले transaction.created और उसके बाद
        travel_rule.status.updated webhook भेजता है।
      operationId: registerTravelRuleInbound
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleInboundRequest'
            example:
              chain: ETH
              txid: 0xdeposit-hash
              wallet_address: 0xYourDepositWallet
              amount: '500.00'
              currency: USDC
              originator_data:
                name: Origin CASP SL
              beneficiary_data:
                name: Ana Diaz
              originating_vasp:
                name: Origin CASP SL
                lei: ''
                travel_address: >-
                  ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC
      responses:
        '200':
          description: >-
            इस txid और wallet_address के लिए एक ट्रांसफर पहले ही पंजीकृत किया जा
            चुका था; मौजूदा ट्रांसफर बिना किसी बदलाव के लौटाया जाता है (created
            का मान false है)।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleInboundResponse'
        '201':
          description: >-
            एक नए इनबाउंड लेन-देन पर या किसी मौजूदा अनक्लेम्ड डिपॉज़िट पर एक नया
            Travel Rule ट्रांसफर पंजीकृत किया गया (created true है)।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleInboundResponse'
        '400':
          description: >-
            एक आवश्यक फ़ील्ड (`chain`, `txid`, `wallet_address`, `amount`,
            `currency`) मौजूद नहीं है, `originating_vasp.lei` एक मान्य LEI नहीं
            है, `originating_vasp.travel_address` एक मान्य Travel Address नहीं
            है, एक ऐसा memo, X-address या `utxo` है जिसे चेन संभाल नहीं सकती, या
            `originator_data` / `beneficiary_data` जो कोई ऑब्जेक्ट नहीं है।
          content:
            application/json:
              examples:
                Missing field:
                  value:
                    txid:
                      - This field is required.
                Invalid LEI:
                  value:
                    originating_vasp:
                      lei:
                        - >-
                          Invalid LEI: expected 20 alphanumeric characters (ISO
                          17442).
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X POST https://verification.didit.me/v3/travel-rule/inbound/ \
              -H 'x-api-key: YOUR_API_KEY' -H 'Content-Type: application/json' \
              -d '{"chain":"ETH","txid":"0xdeposit-hash","wallet_address":"0xYourDepositWallet","amount":"500.00","currency":"USDC"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.register_inbound(
                chain="ETH",
                txid="0xdeposit-hash",
                wallet_address="0xYourDepositWallet",
                amount="500.00",
                currency="USDC",
                originator_data={"name": "Origin CASP SL"},
                beneficiary_data={"name": "Ana Diaz"},
                originating_vasp={
                    "name": "Origin CASP SL",
                    "lei": "",
                    "travel_address": "ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC",
                },
            )
            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.travelRule.registerInbound({
              chain: "ETH",
              txid: "0xdeposit-hash",
              wallet_address: "0xYourDepositWallet",
              amount: "500.00",
              currency: "USDC",
              originator_data: { name: "Origin CASP SL" },
              beneficiary_data: { name: "Ana Diaz" },
              originating_vasp: {
                name: "Origin CASP SL",
                lei: "",
                travel_address: "ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC",
              },
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.TravelRule.RegisterInbound(ctx, didit.TravelRuleInboundRequest{\n\tChain:           \"ETH\",\n\tTxid:            \"0xdeposit-hash\",\n\tWalletAddress:   \"0xYourDepositWallet\",\n\tAmount:          \"500.00\",\n\tCurrency:        \"USDC\",\n\tOriginatorData:  didit.Some(map[string]any{\"name\": \"Origin CASP SL\"}),\n\tBeneficiaryData: didit.Some(map[string]any{\"name\": \"Ana Diaz\"}),\n\tOriginatingVASP: didit.Some(didit.TravelRuleInboundRequestOriginatingVASP{\n\t\tName:          didit.String(\"Origin CASP SL\"),\n\t\tLei:           didit.String(\"\"),\n\t\tTravelAddress: didit.String(\"ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC\"),\n\t}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.Map;

            import me.didit.Didit;

            import me.didit.types.TravelRuleInboundRequest;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().registerInbound(TravelRuleInboundRequest.builder()
                    .chain("ETH")
                    .txid("0xdeposit-hash")
                    .walletAddress("0xYourDepositWallet")
                    .amount("500.00")
                    .currency("USDC")
                    .originatorData(Map.of("name", "Origin CASP SL"))
                    .beneficiaryData(Map.of("name", "Ana Diaz"))
                    .originatingVasp(TravelRuleInboundRequest.OriginatingVasp.builder()
                            .name("Origin CASP SL")
                            .lei("")
                            .travelAddress("ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC")
                            .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->travelRule->registerInbound([
                'chain' => 'ETH',
                'txid' => '0xdeposit-hash',
                'wallet_address' => '0xYourDepositWallet',
                'amount' => '500.00',
                'currency' => 'USDC',
                'originator_data' => ['name' => 'Origin CASP SL'],
                'beneficiary_data' => ['name' => 'Ana Diaz'],
                'originating_vasp' => [
                    'name' => 'Origin CASP SL',
                    'lei' => '',
                    'travel_address' => 'ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC',
                ],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.travel_rule.register_inbound(
              chain: "ETH",
              txid: "0xdeposit-hash",
              wallet_address: "0xYourDepositWallet",
              amount: "500.00",
              currency: "USDC",
              originator_data: { name: "Origin CASP SL" },
              beneficiary_data: { name: "Ana Diaz" },
              originating_vasp: {
                name: "Origin CASP SL",
                lei: "",
                travel_address: "ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC",
              }
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Collections.Generic;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.TravelRule.RegisterInboundAsync(new
            TravelRuleInboundRequest

            {
                Chain = "ETH",
                Txid = "0xdeposit-hash",
                WalletAddress = "0xYourDepositWallet",
                Amount = "500.00",
                Currency = "USDC",
                OriginatorData = new Dictionary<string, object> { ["name"] = "Origin CASP SL" },
                BeneficiaryData = new Dictionary<string, object> { ["name"] = "Ana Diaz" },
                OriginatingVasp = new TravelRuleInboundRequestOriginatingVasp
                {
                    Name = "Origin CASP SL",
                    Lei = "",
                    TravelAddress = "ta9JbXbsBSuS5ozArJRFVgvBHMVnDGUnrPPChSZYQsuZTn3kPrJXUQ7RSLUEJ5KjyPvr8C9sAxmPtZfGsQVKCi4n8ShxP9BkbDdbtjtA9aumNybAZ1BxC",
                },
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleInboundRequest:
      type: object
      required:
        - chain
        - txid
        - wallet_address
        - amount
        - currency
      properties:
        chain:
          type: string
          description: >-
            वह चेन जिस पर डिपॉज़िट सेटल हुआ, उदाहरण के लिए `ETH`। इसे लोअरकेस
            में संग्रहीत किया जाता है और आपकी वॉलेट पता पुस्तिका की प्रविष्टियों
            के साथ केस-इनसेंसिटिव रूप से तुलना की जाती है, इसलिए वहाँ उसी चेन
            token का उपयोग करें।
          maxLength: 32
        txid:
          type: string
          description: ऑन-चेन लेन-देन हैश। wallet_address के साथ डिडुप किया गया।
          maxLength: 128
        wallet_address:
          type: string
          description: >-
            गंतव्य वॉलेट जिस पर आपको डिपॉज़िट प्राप्त हुआ। एक XRP X-address को
            उसके क्लासिक पते और टैग में विभाजित किया जाता है।
          maxLength: 128
        amount:
          type: string
          description: >-
            दशमलव स्ट्रिंग के रूप में डिपॉज़िट राशि, शून्य या उससे अधिक, अधिकतम
            18 दशमलव स्थानों तक।
        currency:
          type: string
          description: डिपॉज़िट एसेट, उदाहरण के लिए "USDC"।
          maxLength: 16
        originator_data:
          type: object
          description: >-
            भेजने वाले VASP से प्रेषक का विवरण, यदि ज्ञात हो, एक फ़्लैट ऑब्जेक्ट
            के रूप में जैसे `{"name": "..."}`। Didit इससे name (या full_name),
            first_name, last_name और vendor_data पढ़ता है।
          additionalProperties: true
        beneficiary_data:
          type: object
          description: >-
            लाभार्थी विवरण (आपका ग्राहक), एक फ़्लैट ऑब्जेक्ट के रूप में जैसे कि
            `{"name": "..."}`। Didit मिलान की गई एड्रेस बुक प्रविष्टि के
            holder_name से नाम का मिलान करता है, और अनुरोध से wallet_address और
            chain सेट करता है।
          additionalProperties: true
        originating_vasp:
          type: object
          description: >-
            भेजने वाले VASP का वैकल्पिक विवरण। यह केवल इसी ट्रांसफ़र पर रहता है
            (`metadata.originating_vasp`, और GET /v3/travel-rule/transfers/ में
            ट्रांसफ़र का प्रेषक VASP); यह कभी भी किसी साझा VASP डायरेक्टरी
            प्रविष्टि को बनाता, संपादित या लिंक नहीं करता है।
          properties:
            name:
              type: string
              maxLength: 255
            lei:
              type: string
              maxLength: 20
              description: वैकल्पिक। एक मान्य 20-वर्ण वाला ISO 17442 LEI, या रिक्त।
            travel_address:
              type: string
              description: प्रेषक का Travel Address, इस स्थानांतरण पर दर्ज किया गया।
              maxLength: 512
        memo:
          type: string
          maxLength: 256
          description: >-
            वैकल्पिक। मेमो नेटवर्क पर डिपॉज़िट का डेस्टिनेशन टैग या मेमो: साझा
            डिपॉज़िट पते पर यह आपके ग्राहकों को अलग पहचानता है, और उस मेमो के
            लिए एड्रेस-बुक प्रविष्टि का मिलान किया जाता है। XRP: एक डेस्टिनेशन
            टैग, 0 से 4294967295 तक की एक पूर्ण संख्या (JSON संख्या स्वीकृत है)।
            XLM: 28 बाइट्स तक का एक टेक्स्ट मेमो, हेक्स में 64-बिट id या 32-बाइट
            हैश। EOS: 256 बाइट्स तक। ATOM: 256 वर्णों तक। HBAR: 100 बाइट्स तक।
            Bitcoin, EVM, Solana, Tron, Litecoin, Bitcoin Cash, Dogecoin और
            Lightning वॉलेट कोई मेमो नहीं लेते हैं: वहां मेमो होने पर `400`
            मिलता है। उपनाम: `destinationTag` या `destination_tag`।
        utxo:
          allOf:
            - $ref: '#/components/schemas/TravelRuleUtxo'
          description: >-
            वैकल्पिक, केवल UTXO चेन्स। डिपॉज़िट लेन-देन के इनपुट और आउटपुट:
            प्रेषक का वॉलेट घोषित `originator_data.wallet_address` होता है,
            अन्यथा सबसे बड़ा इनपुट होता है।
    TravelRuleInboundResponse:
      type: object
      properties:
        transaction_id:
          type: string
          format: uuid
          description: इनबाउंड डिपॉज़िट के लिए Didit लेन-देन UUID।
        txn_id:
          type: string
          description: >-
            इनबाउंड लेन-देन का txn_id: Didit द्वारा उत्पन्न जब Didit ने लेन-देन
            बनाया, या आपका अपना जब किसी लावारिस डिपॉज़िट का पुनः उपयोग किया गया।
        created:
          type: boolean
          description: >-
            true जब इस कॉल ने ट्रांसफर पंजीकृत किया (HTTP 201); false जब उसी
            txid और wallet_address के लिए ट्रांसफर पहले से मौजूद था (HTTP 200)।
        travel_rule:
          $ref: '#/components/schemas/TravelRuleTransferDetail'
    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'
    TravelRuleTransferDetail:
      type: object
      description: >-
        स्वामित्व-पुष्टि और समाप्त/रद्द endpoints द्वारा लौटाया गया पूर्ण
        स्थानांतरण ऑब्जेक्ट। जब तक किसी इनबाउंड स्थानांतरण के वॉलेट स्वामित्व की
        पुष्टि नहीं हो जाती, तब तक प्रतिपक्ष का `originator_data` और
        `beneficiary_data` मास्क होकर वापस आते हैं (प्रत्येक शब्द का पहला अक्षर
        रखा जाता है; वॉलेट, चेन और VASP रूटिंग पठनीय रहते हैं) और `data_masked`
        true होता है।
      properties:
        uuid:
          type: string
          format: uuid
        status:
          type: string
          enum:
            - AWAITING_COUNTERPARTY
            - ON_HOLD
            - COMPLETED
            - FINISHED
            - CANCELLED
            - EXPIRED
            - COUNTERPARTY_MISMATCHED_DATA
            - COUNTERPARTY_VASP_NOT_FOUND
            - COUNTERPARTY_VASP_NOT_REACHABLE
            - UNCONFIRMED_OWNERSHIP
            - COUNTERPARTY_VASP_GENERAL_DECLINE
            - NOT_ENOUGH_COUNTERPARTY_DATA
            - NOT_APPLICABLE
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
        rail:
          type: string
          nullable: true
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - TEST_VASP
            - null
          description: >-
            वह रेल जिसके माध्यम से ट्रांसफर रूट किया गया था, या null जब कोई रेल
            नहीं चुना गया था (उदाहरण के लिए थ्रेशोल्ड से नीचे, एक स्व-होस्टेड
            प्रतिपक्ष वॉलेट, जमा के बाद का पंजीकरण, या कोई पहुँच योग्य प्रतिपक्ष
            न होने पर)। INTERNAL का अर्थ है दोनों पक्ष Didit एप्लिकेशन हैं;
            EMAIL का अर्थ है कि प्रतिपक्ष तक ईमेल किए गए पिकअप लिंक द्वारा
            पहुँचा गया था। TEST_VASP का अर्थ है कि Didit Test VASP ने सैंडबॉक्स
            ट्रांसफर का उत्तर दिया। GTR, VERIFYVASP और SYGNA पर, Didit नेटवर्क
            के रिस्पॉन्स से या हर 5 मिनट में इसे पोल करके प्रतिपक्ष का उत्तर
            पढ़ता है। TRUST केवल भेजता है, इसलिए TRUST ट्रांसफर तब तक
            AWAITING_COUNTERPARTY बना रहता है जब तक कि इसकी समय-सीमा समाप्त न हो
            जाए। नेटवर्क रेल का उपयोग केवल तभी किया जाता है जब आपने उस नेटवर्क
            के लिए अपनी सदस्यता कनेक्ट की हो। इसे लेन-देन बनाने का अनुरोध
            रिस्पॉन्स लौटाने के बाद चुना जाता है, इसलिए यह उस रिस्पॉन्स में null
            होता है।
        protocol:
          type: string
          nullable: true
        ivms_version:
          type: string
          example: ivms101.2023
        required:
          type: boolean
        ownership_confirmed:
          type: boolean
          nullable: true
        deadline_at:
          type: string
          format: date-time
          nullable: true
        timeline:
          type: array
          items:
            type: object
            properties:
              status:
                type: string
              at:
                type: string
                format: date-time
              detail:
                type: string
              name_match:
                allOf:
                  - $ref: '#/components/schemas/TravelRuleNameMatch'
                nullable: true
                description: >-
                  नाम तुलना जो इस प्रविष्टि ने तय की, `detail` के बगल में। उन
                  प्रविष्टियों पर अनुपस्थित जिन्होंने किसी नाम की तुलना नहीं की।
              reason:
                type: string
                description: >-
                  केवल उस संक्रमण की प्रविष्टि पर मौजूद जो विफल डिलीवरी के कारण
                  हुआ था: `email_undeliverable` या `delivery_failed`, वह मान जो
                  ट्रांसफ़र का `reason` रिपोर्ट करता है।
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: >-
                0 से 100 तक ड्यू-डिलिजेंस स्कोर, जहाँ अधिक स्कोर बेहतर होता है।
                VASP डायरेक्टरी के समान पैमाना।
            dd_score_breakdown:
              type: object
              description: >-
                dd_score में प्रति-घटक योगदान, VASP डायरेक्टरी (jurisdiction,
                verification, protocol, lei, history, essentials,
                responsiveness) के अनुसार प्रति घटक एक ऑब्जेक्ट, प्रत्येक
                {points, max, reason, detail}। प्रतिपक्ष का मूल्यांकन होने तक
                {}।
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: इस घटक के लिए दिए गए अंक।
                  max:
                    type: integer
                    description: अधिकतम अंक जो यह घटक दे सकता है।
                  reason:
                    type: string
                    description: घटक के निर्णय का मशीन-पठनीय कोड।
                  detail:
                    type: string
                    description: प्रदान किए गए अंकों का मानव-पठनीय कारण।
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                जब उचित जाँच-पड़ताल मूल्यांकन अंतिम बार चला था। जब तक प्रतिपक्ष
                का मूल्यांकन न किया गया हो तब तक Null।
        originator_data:
          type: object
          description: >-
            प्रेषक पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक
            प्रतिपक्ष के मान छिपाए जाते हैं।
        beneficiary_data:
          type: object
          description: >-
            लाभार्थी पक्ष। इनबाउंड ट्रांसफ़र के लिए स्वामित्व की पुष्टि होने तक
            प्रतिपक्ष के मान छिपे रहते हैं।
        name_match:
          allOf:
            - $ref: '#/components/schemas/TravelRuleNameMatch'
          nullable: true
          description: >-
            नाम तुलना जिसने ट्रांसफर तय किया, या एक बार चलने तक null। जब तक पक्ष
            मास्क किए गए हों, और INTERNAL एक्सचेंज की अन्य ग्राहक की प्रति पर,
            `transfer_name`, `compared_name`, `matched_names` और
            `mismatched_names` छिपे होते हैं। `score` और `matched` असहमत हो सकते
            हैं: `matched` सख्ती का पालन करता है, `score` दोनों पूरे नामों की
            समानता है।
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: >-
            `data_match.mismatched_fields` के लिए शॉर्टकट। कुछ भी भिन्न न होने
            पर खाली।
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: >-
            सही जब इस रिस्पॉन्स में प्रतिपक्ष का व्यक्तिगत डेटा मास्क किया गया
            हो।
        created_at:
          type: string
          format: date-time
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            इस स्थानांतरण द्वारा दूसरे पक्ष को भेजे जाने वाले नवीनतम संदेश की
            स्थिति। Null जब स्थानांतरण को कभी कोई संदेश भेजने की आवश्यकता नहीं
            थी (उदाहरण के लिए `threshold_amount` से कम, घोषित स्व-होस्टेड वॉलेट,
            या सनराइज़ पंजीकरण)।
        discovery:
          type: array
          description: >-
            Didit ने प्रतिपक्ष की खोज कैसे की, निष्पादित प्रत्येक चरण के लिए एक
            प्रविष्टि। जब कोई खोज नहीं चली, उदाहरण के लिए इनबाउंड ट्रांसफ़र पर,
            तो रिक्त।
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            एक `COUNTERPARTY_VASP_NOT_FOUND` या
            `COUNTERPARTY_VASP_NOT_REACHABLE` ट्रांसफर क्यों अटका हुआ है; किसी
            अन्य स्थिति के लिए `""`। एक विफल डिलीवरी इसे पहले तय करती है, केवल
            `COUNTERPARTY_VASP_NOT_REACHABLE` पर: `email_undeliverable` (मेल
            प्रदाता ने अनुपालन ईमेल को अस्वीकार कर दिया और आज़माने के लिए कोई
            पता नहीं बचा: जब इसे भेजा गया था, रिमाइंडर पर, या बाद में रिपोर्ट
            किए गए स्थायी बाउंस के रूप में) या `delivery_failed` (जो रेल डिलीवर
            कर रही थी वह स्थायी रूप से विफल हो गई: एक नेटवर्क रेल ने संदेश को
            अस्वीकार कर दिया या उसके पुनः प्रयास समाप्त हो गए, एक `TRP` पहचान
            होस्ट ने उत्तर नहीं दिया, या प्रतिपक्ष के `TRP` होस्ट ने पूछताछ
            स्वीकार नहीं की)। अन्यथा `discovery` ट्रेस इसे तय करता है:
            `awaiting_end_user` (किसी भी चरण ने ऐसे प्रतिपक्ष का नाम नहीं दिया
            जिस तक Didit पहुँच सके), `directory_match_no_route` (एक चरण ने एक
            निर्देशिका VASP का नाम दिया जिसका कोई रूट नहीं है),
            `picked_member_without_proven_wallet` (अंतिम उपयोगकर्ता ने ऐसे Didit
            ग्राहक को चुना जिसने वॉलेट पर नियंत्रण साबित नहीं किया है), या
            `no_directory_match` जब ट्रेस कोई अन्य कारण नहीं देता है। पुनः भेजना
            ट्रांसफर को आगे बढ़ाता है, इसलिए कारण साफ़ हो जाता है। देखें
            [ट्रांसफर क्यों अटका हुआ
            है](/hi/transaction-monitoring/travel-rule#ट्रांसफ़र-क्यों-अटका-है)।
        next_actions:
          type: array
          description: >-
            ट्रांसफ़र को क्या आगे बढ़ाता है; `COUNTERPARTY_VASP_NOT_FOUND` या
            `COUNTERPARTY_VASP_NOT_REACHABLE` को छोड़कर किसी भी स्थिति के लिए
            `[]`। `email_undeliverable` `update_compliance_email`, फिर `resend`
            प्रदान करता है। `delivery_failed` `resend` प्रदान करता है। डिस्कवरी
            कारण `select_counterparty_vasp`, `declare_self_hosted`,
            `add_vasp_hint` और `resend` प्रदान करता है।
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    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: वैकल्पिक। वह आउटपुट इंडेक्स जिसे कोई इनपुट खर्च करता है।
    TravelRuleNameMatch:
      type: object
      nullable: true
      description: >-
        नाम तुलना जिसने ट्रांसफर तय किया, या एक बार चलने तक null। जब तक पक्ष
        मास्क किए गए हों, और INTERNAL एक्सचेंज की अन्य ग्राहक की प्रति पर,
        `transfer_name`, `compared_name`, `matched_names` और `mismatched_names`
        छिपे होते हैं। `score` और `matched` असहमत हो सकते हैं: `matched` सख्ती
        का पालन करता है, `score` दोनों पूरे नामों की समानता है।
      properties:
        score:
          type: integer
          minimum: 0
          maximum: 100
          description: >-
            दोनों पूरे नामों की समानता, 0 से 100। दोनों में से कोई भी नाम खाली
            होने पर 0।
        matched:
          type: boolean
          description: >-
            क्या नाम `strictness` को संतुष्ट करते हैं। ट्रांसफ़र का परिणाम
            `data_match` का पालन करता है, जो प्रत्येक फ़ील्ड की तुलना करता है,
            इसलिए इसके true होने पर भी कोई ट्रांसफ़र
            COUNTERPARTY_MISMATCHED_DATA हो सकता है।
        method:
          type: string
          enum:
            - none
            - exact_token
            - token_subset
            - token_containment
            - sequence_ratio
          description: >-
            `matched` कैसे तय किया गया था: none (`NONE`), exact_token
            (`STRICT`), token_subset (`DEFAULT`), token_containment (`CONTAINS`)
            या sequence_ratio (`FUZZY`)।
        strictness:
          type: string
          enum:
            - NONE
            - STRICT
            - CONTAINS
            - DEFAULT
            - FUZZY
        compared_with:
          type: string
          enum:
            - wallet_holder
            - counterparty_vasp
          description: >-
            wallet_holder: वॉलेट के लिए रिकॉर्ड किया गया धारक।
            counterparty_vasp: वह नाम जिससे प्रतिपक्ष ने ईमेल रिस्पॉन्स पेज पर
            उत्तर दिया, या सैंडबॉक्स में Didit Test VASP का उत्तर।
        transfer_name:
          type: string
          description: ट्रांसफर पर नाम।
        compared_name:
          type: string
          description: वह नाम जिसके साथ इसकी तुलना की गई थी।
        matched_names:
          type: array
          items:
            type: string
          description: '`compared_name` में पाए गए `transfer_name` के शब्द।'
        mismatched_names:
          type: array
          items:
            type: string
          description: >-
            `compared_name` में अनुपस्थित `transfer_name` के शब्द, फिर
            `transfer_name` में अनुपस्थित `compared_name` के शब्द।
    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.