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

# वॉलेट प्रमाण स्वीकृत या अस्वीकार करें: स्क्रीनशॉट API

> Didit के Management API से समीक्षा कतार के स्क्रीनशॉट वॉलेट प्रमाण स्वीकृत या अस्वीकार करें। स्वीकृति पर वॉलेट सत्यापित होता है और लेन-देन से जुड़ता है।

वॉलेट प्रमाण तय करें: API प्रॉम्प्ट
प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें

<pre>
  \`Approve or reject a screenshot wallet-ownership proof from my review queue.

  Endpoint:
  POST [https://verification.didit.me/v3/travel-rule/wallet-proofs/\{proof\_uuid}/decision/](https://verification.didit.me/v3/travel-rule/wallet-proofs/\{proof_uuid}/decision/)

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

  Body:

  * decision - "approve" or "reject".
  * note - optional, up to 512 characters, kept with the proof and returned as review\_note.

  Behavior:

  * approve verifies the proof and the wallet address book entry, and applies the ownership to the transfer the widget session was minted for, exactly as a verified signature does.
  * A screenshot never confirms a transfer another Didit customer sent over the INTERNAL rail: that needs a signed message or a test deposit.
  * reject closes the proof as REJECTED with failure\_reason REVIEW\_REJECTED. It uses one of the widget session's attempts; the end user can start a new proof from the widget while attempts remain. Your note is never shown to the end user.
  * Returns the decided proof, in the same shape as the review queue.

  Failure modes:

  * 404 - no submitted screenshot proof with this id in my application.
  * 409 - already decided (the body carries its status), or code OWNERSHIP\_CHANGED when the wallet's holder changed or the wallet was deleted after the widget session was minted; ask the current holder for a new proof.
  * 400 - invalid decision or a note that is too long.
  * 401 - missing or malformed x-api-key.

  Full guide: /transaction-monitoring/wallet-ownership-widget#what-it-proves.\`
</pre>

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


## OpenAPI

````yaml hi/openapi-25.json POST /v3/travel-rule/wallet-proofs/{proof_uuid}/decision/
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/wallet-proofs/{proof_uuid}/decision/:
    post:
      tags:
        - Travel Rule
      summary: स्क्रीनशॉट वॉलेट प्रमाण स्वीकृत या अस्वीकृत करें
      description: >-
        अपनी समीक्षा कतार से स्क्रीनशॉट प्रमाण पर निर्णय लें। approve प्रमाण और
        एड्रेस बुक प्रविष्टि को सत्यापित करता है और उस ट्रांसफ़र पर स्वामित्व
        लागू करता है जिसके लिए विजेट सत्र बनाया गया था, ठीक वैसे ही जैसे एक
        सत्यापित हस्ताक्षर करता है। एक स्क्रीनशॉट कभी भी उस ट्रांसफ़र की पुष्टि
        नहीं करता जिसे किसी अन्य Didit ग्राहक ने INTERNAL रेल पर भेजा था: इसके
        लिए एक हस्ताक्षरित संदेश या टेस्ट डिपॉज़िट की आवश्यकता होती है। reject
        प्रमाण को failure_reason REVIEW_REJECTED के साथ REJECTED के रूप में बंद
        कर देता है; अंतिम उपयोगकर्ता विजेट से एक नया प्रमाण शुरू कर सकता है। नोट
        को प्रमाण के साथ रखा जाता है।
      operationId: decideTravelRuleWalletProof
      parameters:
        - name: proof_uuid
          in: path
          required: true
          description: समीक्षा कतार से proof_id।
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleWalletProofDecision'
            example:
              decision: approve
              note: Address matches the wallet app.
      responses:
        '200':
          description: निर्णीत प्रमाण।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWalletProofReview'
        '400':
          description: अमान्य निर्णय, या 512 वर्णों से अधिक लंबा नोट।
        '401':
          description: अनुपलब्ध या अमान्य x-api-key।
        '403':
          description: कॉलर के पास लेन-देन अनुमति का अभाव है।
        '404':
          description: >-
            आपके एप्लिकेशन में इस id वाला कोई सबमिट किया गया स्क्रीनशॉट प्रमाण
            नहीं है।
        '409':
          description: >-
            प्रमाण पहले ही तय हो चुका है (बॉडी में इसकी स्थिति दी गई है), या कोड
            OWNERSHIP_CHANGED: विजेट सत्र बनाए जाने के बाद वॉलेट का धारक बदल गया
            या वॉलेट हटा दिया गया, इसलिए प्रमाण बंद हो गया है और वर्तमान धारक को
            एक नए प्रमाण की आवश्यकता है।
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelRuleWidgetProofError'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            https://verification.didit.me/v3/travel-rule/wallet-proofs/{proof_uuid}/decision/
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"decision": "approve", "note": "Address matches the wallet app."}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.travel_rule.wallet_proofs.decide(
                "11111111-2222-3333-4444-555555555555",
                decision="approve",
                note="Address matches the wallet app.",
            )
            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.walletProofs.decide("11111111-2222-3333-4444-555555555555",
            {
              decision: "approve",
              note: "Address matches the wallet app.",
            });

            console.log(result);
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.TravelRuleWalletProofDecision;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.travelRule().walletProofs().decide("11111111-2222-3333-4444-555555555555",
            TravelRuleWalletProofDecision.builder()
                    .decision(TravelRuleWalletProofDecision.Decision.of("approve"))
                    .note("Address matches the wallet app.")
                    .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->walletProofs->decide('11111111-2222-3333-4444-555555555555',
            [
                'decision' => 'approve',
                'note' => 'Address matches the wallet app.',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.travel_rule.wallet_proofs.decide(
              "11111111-2222-3333-4444-555555555555",
              decision: "approve",
              note: "Address matches the wallet app."
            )
            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.TravelRule.WalletProofs.DecideAsync("11111111-2222-3333-4444-555555555555",
            new TravelRuleWalletProofDecision

            {
                Decision = "approve",
                Note = "Address matches the wallet app.",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    TravelRuleWalletProofDecision:
      type: object
      required:
        - decision
      properties:
        decision:
          type: string
          enum:
            - approve
            - reject
        note:
          type: string
          maxLength: 512
          description: >-
            वैकल्पिक। प्रमाण के साथ रखा जाता है और review_note के रूप में लौटाया
            जाता है।
    TravelRuleWalletProofReview:
      type: object
      properties:
        proof_id:
          type: string
          format: uuid
        method:
          type: string
          enum:
            - SCREENSHOT
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
        wallet_address:
          type: string
        chain:
          type: string
          description: कैनोनिकल चेन पहचानकर्ता, उदा. ETH, BTC, SOL, TRX।
        holder_name:
          type: string
        is_ownership_verified:
          type: boolean
          description: >-
            क्या पता पुस्तिका प्रविष्टि इस प्रमाण या किसी अन्य प्रमाण द्वारा
            स्वामित्व-सत्यापित है।
        transaction_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            वह लेन-देन जिसके Travel Rule ट्रांसफर के लिए विजेट सत्र बनाया गया
            था। transaction_id के बिना बनाए गए सत्र के लिए Null।
        file_name:
          type: string
          nullable: true
        content_type:
          type: string
          nullable: true
        screenshot_url:
          type: string
          nullable: true
          description: >-
            अपलोड किए गए स्क्रीनशॉट का समय-सीमित लिंक। नए लिंक के लिए कतार की
            सूची फिर से प्राप्त करें।
        attempts:
          type: integer
          description: इस प्रमाण के लिए अंतिम उपयोगकर्ता ने कितनी फ़ाइलें अपलोड कीं।
        failure_reason:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: >-
            अस्वीकृति के बाद REVIEW_REJECTED, निर्णय से पहले वॉलेट का धारक बदल
            गया हो या वॉलेट हटा दिया गया हो, तो OWNERSHIP_CHANGED। अन्यथा खाली।
        method_chosen_at:
          type: string
          format: date-time
          nullable: true
          description: जब अंतिम उपयोगकर्ता ने स्क्रीनशॉट विधि चुनी।
        decided_at:
          type: string
          format: date-time
          nullable: true
        decided_by:
          type: string
          description: >-
            प्रमाण किसने बंद किया: कंसोल समीक्षक के लिए review:<user
            identifier>, API-कुंजी निर्णय के लिए review, Didit द्वारा स्वचालित
            रूप से बंद किए जाने पर widget या sweeper। PENDING रहने के दौरान
            खाली।
        review_note:
          type: string
          description: निर्णय के साथ भेजा गया नोट। कोई न होने पर खाली।
        created_at:
          type: string
          format: date-time
    TravelRuleWidgetProofError:
      type: object
      properties:
        detail:
          type: string
          description: अंग्रेज़ी में मानव-पठनीय संदेश।
        code:
          allOf:
            - $ref: '#/components/schemas/TravelRuleWalletProofFailureReason'
          description: मशीन-पठनीय कारण, ताकि क्लाइंट अपना स्वयं का अनुवादित संदेश दिखा सके।
        status:
          type: string
          enum:
            - PENDING
            - VERIFIED
            - REJECTED
            - EXPIRED
          description: >-
            प्रमाण बंद होने पर मौजूद: अभी सबमिट किए गए जमा द्वारा REJECTED
            (400), या पहले से बंद प्रमाण के लिए साक्ष्य भेजे जाने पर REJECTED या
            EXPIRED (409)।
        proof_id:
          type: string
          format: uuid
          description: 'स्थिति के साथ मौजूद: बंद प्रमाण।'
        method:
          type: string
          enum:
            - MESSAGE_SIGNING
            - SATOSHI_TEST
            - SCREENSHOT
            - SELF_DECLARATION
          description: 'स्थिति के साथ मौजूद: बंद प्रमाण की विधि।'
        max_attempts:
          type: integer
          description: >-
            स्थिति के साथ मौजूद: अस्वीकृत वॉलेट प्रमाण जिन्हें यह सत्र अनुमति
            देता है।
        attempts_used:
          type: integer
          description: 'स्थिति के साथ मौजूद: अब तक अस्वीकृत प्रमाण।'
        attempts_remaining:
          type: integer
          description: >-
            स्थिति के साथ मौजूद: 0 होने पर, दूसरा प्रमाण शुरू करने पर 409 का
            उत्तर मिलता है और आप एक नया विजेट सत्र बनाते हैं।
    TravelRuleWalletProofFailureReason:
      type: string
      enum:
        - ''
        - SIGNATURE_INVALID
        - SIGNATURE_UNSUPPORTED_SCHEME
        - DEPOSIT_NOT_FOUND
        - DEPOSIT_UNCONFIRMED
        - DEPOSIT_LOOKUP_FAILED
        - DEPOSIT_MISMATCH
        - DEPOSIT_STALE
        - TXID_REUSED
        - CHAIN_UNSUPPORTED
        - WINDOW_EXPIRED
        - OWNERSHIP_CHANGED
        - METHOD_SWITCHED
        - REVIEW_REJECTED
        - ABANDONED
      description: >-
        वॉलेट-स्वामित्व प्रमाण, या उसका अंतिम प्रयास, VERIFIED से कम क्यों रह
        गया। कुछ भी विफल न होने पर खाली। PENDING प्रमाण में यह हो सकता है: अंतिम
        प्रयास विफल रहा और अंतिम उपयोगकर्ता पुनः प्रयास कर सकता है।
        DEPOSIT_MISMATCH, DEPOSIT_STALE, TXID_REUSED और REVIEW_REJECTED प्रमाण
        को REJECTED के रूप में बंद कर देते हैं। SIGNATURE_INVALID: हस्ताक्षर
        वॉलेट और चैलेंज से मेल नहीं खाता है। SIGNATURE_UNSUPPORTED_SCHEME: वॉलेट
        ने ऐसे प्रारूप में हस्ताक्षर किए हैं जिसे Didit सत्यापित नहीं करता है।
        DEPOSIT_NOT_FOUND, DEPOSIT_UNCONFIRMED, DEPOSIT_LOOKUP_FAILED: परीक्षण
        डिपॉज़िट पठनीय नहीं है या अभी तक कन्फ़र्म नहीं हुआ है; टेस्ट विंडो बंद
        होने तक Didit इसकी जाँच करता रहता है। DEPOSIT_MISMATCH: लेन-देन वॉलेट से
        डिपॉज़िट पते पर अपेक्षित राशि नहीं भेजता है। DEPOSIT_STALE: लेन-देन
        चैलेंज से पहले का है। TXID_REUSED: लेन-देन ने पहले ही किसी अन्य वॉलेट को
        साबित कर दिया है। CHAIN_UNSUPPORTED: यह विधि इस चेन पर उपलब्ध नहीं है।
        WINDOW_EXPIRED: टेस्ट विंडो बंद हो गई। OWNERSHIP_CHANGED: विजेट सत्र
        मिंट होने के बाद वॉलेट धारक बदल गया, या वॉलेट आपकी पता पुस्तिका से हटा
        दिया गया। METHOD_SWITCHED: अंतिम उपयोगकर्ता ने इसे पूरा करने से पहले कोई
        अन्य विधि चुनी। REVIEW_REJECTED: आपके समीक्षक ने स्क्रीनशॉट को अस्वीकार
        कर दिया। ABANDONED: अंतिम उपयोगकर्ता के समाप्त करने से पहले विजेट सत्र
        समाप्त हो गया।
  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.