> ## 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.

# webhook गंतव्य अपडेट करने का API

> Didit के webhook गंतव्य को संपादित करें: लेबल, URL, सक्रिय स्थिति, वर्शन और सदस्यता वाले इवेंट। प्रति कॉल भुगतान, कोई अनुबंध नहीं।



webhook गंतव्य अपडेट करने के लिए API प्रॉम्प्ट
        प्रॉम्प्ट को क्लिपबोर्ड पर कॉपी करें



      
      

\<pre>

\`Update a Didit webhook destination through the Management API.

Endpoint:
PATCH https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/

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

Goal:
\- Change a destination's label, url, enabled state, webhook_version, or subscribed_events. Send only the fields you want to change.

Path parameter:
\- destination_uuid — the destination UUID from GET /v3/webhook/destinations/.

Request body (application/json) — all fields optional:
\{
"label": "Updated label",
"url": "https://yourapp.com/webhooks/v2",
"enabled": false,
"webhook_version": "v3",
"subscribed_events": ["status.updated", "data.updated", "transaction.created"]
}

Critical semantics:
\- subscribed_events is replaced wholesale, NOT merged. To add an event, GET the current destination, append to the list, and send the full array back. Sending [] returns 400.
\- url must remain unique among the application's destinations.
\- A uuid in the body is ignored: the path names the destination.
\- webhook_version applies to future deliveries only. Already-queued deliveries use the version that was active when they were enqueued.
\- The signing secret (secret_shared_key) is NOT rotated by PATCH. Console offers a manual rotation flow. For 24 hours after a rotation, every delivery also carries X-Signature-Previous, X-Signature-V2-Previous and X-Signature-Simple-Previous, made with the replaced secret, and previous_secret_expires_at says when that ends.
\- Changing url does not move automatic retries of deliveries already made: they go to the URL the first attempt used. A manual resend goes to the destination's current URL.

Example call (replace subscription list):
curl -X PATCH "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"subscribed_events": ["status.updated", "data.updated", "transaction.created"]}'

\# Pause a destination without losing config:
curl -X PATCH "https://verification.didit.me/v3/webhook/destinations/{destination_uuid}/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"enabled": false}'

Failure modes:
\- 400 — empty subscribed_events, unknown event name, duplicate url among destinations, or invalid webhook_version.
\- 401 — missing or malformed x-api-key.
\- 403 — canonical { "detail": "You do not have permission to perform this action." } envelope.
\- 404 — destination not found in this application.

Side effects:
\- Subsequent webhook deliveries respect the new url, enabled flag, and subscribed_events list.

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

\</pre>



      
      

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

इस endpoint का उपयोग करके आप बदल सकते हैं कि webhook गंतव्य webhooks कहाँ भेजे और उसे कौन-से इवेंट मिलते हैं।## `subscribed_events` को अपडेट करनाजब आप `subscribed_events` भेजते हैं, तो अपडेट के बाद सदस्यता में बने रहने वाले इवेंट की पूरी सूची दें। ऐरे पिछले सदस्यता सेट की जगह ले लेता है।```json theme={null}
{
  "subscribed_events": [
    "status.updated",
    "data.updated",
    "transaction.created",
    "transaction.status.updated"
  ]
}
```समर्थित मान ये हैं:| इवेंट | यह क्या दर्शाता है |
| - | - |
| `status.updated` | उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र की स्थिति बदली है। |
| `data.updated` | निर्माण के बाद सत्र का सत्यापन डेटा बदला है। |
| `user.status.updated` | उपयोगकर्ता इकाई की स्थिति बदली है। |
| `user.data.updated` | उपयोगकर्ता इकाई का डेटा बदला है। |
| `business.status.updated` | व्यवसाय इकाई की स्थिति बदली है। |
| `business.data.updated` | व्यवसाय इकाई का डेटा बदला है। |
| `activity.created` | स्वीकार किया जाता है, लेकिन आज लाइव ट्रैफ़िक के लिए डिलीवर नहीं किया जाता। |
| `transaction.created` | लेन-देन बना और प्रारंभिक रूप से मूल्यांकित किया गया। |
| `transaction.status.updated` | लेन-देन की स्थिति बदली है। |
| `travel_rule.status.updated` | Travel Rule के आदान-प्रदान की स्थिति बदली है। |
| `workflow.compliance_changed` | प्रकाशित वर्कफ़्लो की अनुपालन स्थिति बदली है। |
| `transaction_rule_suggestions.created` | नियम सुझाव रन ने नियमों में नए बदलाव प्रस्तावित किए। |इन्वेस्टिगेटर (`investigator.*`) और प्रमाणीकरण (`auth.*`) इवेंट समूह भी स्वीकार किए जाते हैं। पूरी सूची के लिए [Webhooks](https://docs.didit.me/hi/integration/webhooks.md#इवेंट-प्रकार) देखें।इवेंट के विस्तृत विवरण और सामान्य सदस्यता सेट के लिए [गंतव्य बनाने की गाइड](https://docs.didit.me/hi/management-api/webhook/create-destination.md) देखें।


## OpenAPI

````yaml hi/openapi-25.json PATCH /v3/webhook/destinations/{destination_uuid}/
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/webhook/destinations/{destination_uuid}/:
    patch:
      tags:
        - Webhook
      summary: webhook गंतव्य अपडेट करें
      description: >-
        एक webhook गंतव्य अपडेट करें। **`subscribed_events` को पूरी तरह बदल दिया
        जाता है, मर्ज नहीं किया जाता**: पहले प्राप्त करें, जोड़ें, फिर से भेजें।
        सीक्रेट को रोटेट नहीं किया जाता है। बॉडी में `uuid` को अनदेखा किया जाता
        है: पाथ गंतव्य का नाम बताता है।
      operationId: update_webhook_destination
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: अपडेट किए जाने वाले गंतव्य का UUID।
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
                  description: नया मानव-पठनीय नाम।
                url:
                  type: string
                  format: uri
                  description: नया लक्ष्य URL। एप्लिकेशन के भीतर अद्वितीय होना चाहिए।
                enabled:
                  type: boolean
                  description: >-
                    इस गंतव्य को हटाए बिना इस पर डिलीवरी रोकने के लिए `false` पर
                    सेट करें।
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: भविष्य की डिलीवरी के लिए नया payload स्कीमा संस्करण।
                subscribed_events:
                  $ref: '#/components/schemas/WebhookSubscribedEvents'
            examples:
              Pause destination:
                value:
                  enabled: false
              Add transaction events:
                value:
                  subscribed_events:
                    - status.updated
                    - data.updated
                    - transaction.created
                    - transaction.status.updated
              Move target URL:
                value:
                  label: Production session webhooks v2
                  url: https://api.yourapp.com/webhooks/didit/v2
      responses:
        '200':
          description: >-
            अपडेट किया गया webhook गंतव्य। बॉडी का स्वरूप `GET
            /v3/webhook/destinations/{destination_uuid}/` के समान है।
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                  label:
                    type: string
                  url:
                    type: string
                    format: uri
                  enabled:
                    type: boolean
                  webhook_version:
                    type: string
                    enum:
                      - v1
                      - v2
                      - v3
                  secret_shared_key:
                    type: string
                  secret_last4:
                    type: string
                    description: >-
                      गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि
                      आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के
                      लिए पर्याप्त नहीं है।
                  previous_secret_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Business Console में गंतव्य के साइनिंग सीक्रेट को रोटेट
                      किए जाने के बाद 24 घंटों के लिए सेट होता है। इस समय तक,
                      गंतव्य पर प्रत्येक डिलीवरी में बदले गए सीक्रेट के साथ बनाए
                      गए `X-Signature-Previous`, `X-Signature-V2-Previous` और
                      `X-Signature-Simple-Previous` भी शामिल होते हैं
                      ([हस्ताक्षर
                      सत्यापन](/hi/integration/webhooks#हस्ताक्षर-सत्यापन)
                      देखें)। पिछले 24 घंटों में कोई रोटेशन न होने पर `null`।
                  subscribed_events:
                    $ref: '#/components/schemas/WebhookSubscribedEvents'
                  created_by_email:
                    type: string
                    nullable: true
                    description: >-
                      उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API
                      कुंजी से बनाए गए गंतव्य के लिए `null`।
                  created_by_name:
                    type: string
                    nullable: true
                    description: >-
                      Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया।
                      API कुंजी से बनाए गए गंतव्य के लिए `null`।
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  health_status:
                    type: string
                    enum:
                      - healthy
                      - degraded
                      - failing
                    description: >-
                      डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार
                      सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार
                      इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें
                      `failing_streak`)। `degraded`: failing नहीं है, लेकिन
                      पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के
                      किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे
                      डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर
                      देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से
                      स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400
                      या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया
                      हो।
                  failing_streak:
                    type: integer
                    description: >-
                      पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार
                      सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने
                      पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना
                      नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी
                      सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के
                      बाद से किसी भी इवेंट के विफल न होने पर `0`।
                  failing_since:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया
                      था। `null` जब `failing_streak` `0` हो।
                  last_success_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP
                      स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null`
                      यदि उसने उस अवधि में उत्तर नहीं दिया है।
                  environment:
                    type: string
                    enum:
                      - live
                      - sandbox
                    description: >-
                      उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व
                      है।
                  summary:
                    type: object
                    description: >-
                      पिछले `metrics_window_days` (30) दिनों के लिए डिलीवरी
                      मेट्रिक्स। `last_delivery_at` सबसे हालिया प्रयास है, चाहे
                      वह कभी भी किया गया हो।
                    properties:
                      total_deliveries:
                        type: integer
                      failed_deliveries:
                        type: integer
                      error_rate_percentage:
                        type: integer
                      min_response_time_ms:
                        type: integer
                        nullable: true
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                      max_response_time_ms:
                        type: integer
                        nullable: true
                      last_delivery_at:
                        type: string
                        format: date-time
                        nullable: true
                      metrics_window_days:
                        type: integer
                        description: >-
                          दिनों में उस विंडो की अवधि जिसे अन्य सारांश मेट्रिक्स
                          कवर करते हैं। हमेशा `30`।
              examples:
                Paused:
                  value:
                    uuid: 11111111-2222-3333-4444-555555555555
                    label: Production session webhooks
                    url: https://yourapp.com/webhooks/didit
                    enabled: false
                    webhook_version: v3
                    secret_shared_key: tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ
                    secret_last4: 0xnQ
                    previous_secret_expires_at: null
                    subscribed_events:
                      - status.updated
                      - data.updated
                    created_by_email: null
                    created_by_name: null
                    created_at: '2026-01-04T08:00:00Z'
                    updated_at: '2026-05-17T11:02:55Z'
                    health_status: healthy
                    failing_streak: 0
                    failing_since: null
                    last_success_at: '2026-05-17T09:21:18Z'
                    environment: live
                    summary:
                      total_deliveries: 12453
                      failed_deliveries: 14
                      error_rate_percentage: 0
                      min_response_time_ms: 41
                      avg_response_time_ms: 187
                      max_response_time_ms: 2103
                      last_delivery_at: '2026-05-17T09:21:18Z'
                      metrics_window_days: 30
        '400':
          description: सत्यापन विफल (डुप्लिकेट URL, खाली/अज्ञात इवेंट्स सूची, विकृत बॉडी)।
          content:
            application/json:
              examples:
                Duplicate URL:
                  value:
                    url:
                      - >-
                        This webhook destination already exists for the
                        application.
                Empty events:
                  value:
                    subscribed_events:
                      - At least one subscribed event is required.
        '403':
          description: >-
            API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न
            एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है;
            गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            इस UUID वाला गंतव्य मौजूद नहीं है (या हटा दिया गया है, या किसी अन्य
            एप्लिकेशन से संबंधित है)।
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X PATCH
            'https://verification.didit.me/v3/webhook/destinations/11111111-2222-3333-4444-555555555555/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "subscribed_events": [
                  "status.updated",
                  "data.updated",
                  "transaction.created"
                ]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.webhooks.destinations.update(
                "11111111-2222-3333-4444-555555555555",
                enabled=False,
            )
            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.webhooks.destinations.update("11111111-2222-3333-4444-555555555555",
            {
              enabled: false,
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Webhooks.Destinations.Update(ctx, \"11111111-2222-3333-4444-555555555555\", didit.WebhooksDestinationsUpdateParams{\n\tEnabled: didit.Bool(false),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.WebhooksDestinationsUpdateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.webhooks().destinations().update("11111111-2222-3333-4444-555555555555",
            WebhooksDestinationsUpdateParams.builder()
                    .enabled(false)
                    .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->webhooks->destinations->update('11111111-2222-3333-4444-555555555555',
            [
                'enabled' => false,
            ]);

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

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

            result = didit.webhooks.destinations.update(
              "11111111-2222-3333-4444-555555555555",
              enabled: false
            )
            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.Webhooks.Destinations.UpdateAsync("11111111-2222-3333-4444-555555555555",
            new WebhooksDestinationsUpdateParams

            {
                Enabled = false,
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WebhookSubscribedEvents:
      type: array
      description: >-
        इस webhook गंतव्य के लिए इवेंट फ़िल्टर। Didit केवल उन webhook को डिलीवर
        करता है जिनका इवेंट प्रकार इनमें से किसी एक मान से सटीक रूप से मेल खाता
        है — कोई वाइल्डकार्ड सब्सक्रिप्शन नहीं है। भेजे जाने पर, सूची में कम से
        कम एक मान्य इवेंट होना चाहिए (एक स्पष्ट `[]` को 400 के साथ अस्वीकार कर
        दिया जाता है); ऐसा गंतव्य जिसकी सूची खाली है (निर्माण के समय फ़ील्ड छोड़
        दिया गया) कुछ भी प्राप्त नहीं करता है। अपडेट करने पर सूची पूरी तरह से
        बदल दी जाती है, कभी मर्ज नहीं की जाती।
      minItems: 1
      uniqueItems: true
      items:
        $ref: '#/components/schemas/WebhookEvent'
      example:
        - status.updated
        - data.updated
    WebhookEvent:
      type: string
      description: >-
        समर्थित webhook इवेंट का नाम। `subscribed_events` में इन सटीक स्ट्रिंग्स
        का उपयोग करें; असमर्थित मान अस्वीकृत कर दिए जाते हैं।
      enum:
        - status.updated
        - data.updated
        - user.status.updated
        - user.data.updated
        - business.status.updated
        - business.data.updated
        - activity.created
        - transaction.created
        - transaction.status.updated
        - travel_rule.status.updated
        - workflow.compliance_changed
        - transaction_rule_suggestions.created
        - auth.signup
        - auth.login
        - auth.login_failed
        - auth.password_reset_requested
        - auth.password_reset_completed
        - auth.mfa_changed
        - auth.new_device
        - auth.account_locked
        - investigator.report.ready
        - investigator.decision.automated
        - investigator.decision.overridden
        - investigator.decision.contested
        - investigator.question.raised
        - investigator.automation.paused
        - investigator.rfi.answered
        - investigator.rfi.overdue
        - investigator.drift.detected
        - investigator.sla.breached
        - investigator.qa.failed
        - investigator.external.report.ready
  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.