> ## 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 गंतव्य पंजीकृत करें: संस्करण, सब्सक्राइब इवेंट और गंतव्य-विशिष्ट साइनिंग सीक्रेट। प्रोग्रामेटिक, प्रति कॉल भुगतान।



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



      
      

\<pre>

\`Register a new webhook destination for my Didit application through the Management API.

Endpoint:
POST https://verification.didit.me/v3/webhook/destinations/

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

Goal:
\- Create a destination where Didit pushes the events I subscribe to. Each destination is an independent (URL, signing secret, payload version, event subscription) tuple.

Request body (application/json):
\{
"label": "Production session webhooks",        // required, human-readable
"url": "https://yourapp.com/webhooks/didit",   // required, HTTPS URL; must be unique among the application's destinations
"enabled": true,                                 // optional, default true
"webhook_version": "v3",                        // optional, "v1" | "v2" | "v3" — v3 is current/recommended
"subscribed_events": ["status.updated", "data.updated"]  // required, at least one supported event
}

Supported subscribed_events values (no wildcard):
\- status.updated, data.updated — KYC/KYB session lifecycle.
\- user.status.updated, user.data.updated — User entity changes.
\- business.status.updated, business.data.updated — Business entity changes.
\- activity.created — accepted and covered by Try Webhook, but not delivered for live traffic today.
\- transaction.created, transaction.status.updated — Transaction monitoring events.
\- travel_rule.status.updated — a Travel Rule exchange changed status.
\- workflow.compliance_changed — a published workflow's compliance status changed.
\- transaction_rule_suggestions.created — a rule suggestion run proposed new rule changes.
\- The full list, including the Investigator and Authentication families, is at /integration/webhooks#event-types.

Critical: capture secret_shared_key from the response and store it securely.
\- The response includes secret_shared_key — this is the HMAC signing secret used to compute X-Signature, X-Signature-V2, and X-Signature-Simple headers on every webhook delivered to this URL. Verify with X-Signature-V2; X-Signature-Simple is deprecated and authenticates the envelope only.
\- Store the secret from the create response. GET /v3/webhook/destinations/{destination_uuid}/ also returns it in full to your API key, but storing it on create avoids leaking it through follow-up reads.
\- The secret is unique per-destination.
\- The rest of the 201 body has the same shape as GET /v3/webhook/destinations/{destination_uuid}/: secret_last4, health_status "healthy", a summary with zero counts and null times, and created_by_email and created_by_name set to null for a destination created with an API key.

Example call:
curl -X POST "https://verification.didit.me/v3/webhook/destinations/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{
"label": "Production session webhooks",
"url": "https://yourapp.com/webhooks/didit",
"webhook_version": "v3",
"subscribed_events": ["status.updated", "data.updated"]
}'

Signature verification quick-start (HMAC-SHA256 over the raw request body):
import hmac, hashlib
def verify(body: bytes, signature: str, secret: str) -> bool:
expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, signature)

Always verify against the raw request body, not the parsed JSON. See /integration/webhooks for the full v3 signature scheme.

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

Side effects:
\- A new destination is created and will start receiving deliveries for subscribed_events immediately (assuming enabled: true).
\- Not idempotent — repeated POSTs with different metadata create separate destinations.

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

\</pre>



      
      

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

Webhook गंतव्य आपको अलग-अलग Didit इवेंट अलग-अलग URL पर भेजने देते हैं। हर गंतव्य का अपना `secret_shared_key`, `webhook_version` और `subscribed_events` सूची होती है।## `subscribed_events` कैसे काम करता है`subscribed_events` सटीक इवेंट नामों की एक आवश्यक सरणी है। Didit इस गंतव्य पर webhook तभी भेजता है जब payload का `webhook_type` सरणी के किसी मान से मेल खाता हो।- कम से कम एक इवेंट शामिल करें।
- नीचे दिए गए समर्थित इवेंट नामों का ही उपयोग करें।
- जो भी इवेंट आप भेजना चाहते हैं, सब जोड़ें; `*` या `all` जैसा कोई वाइल्डकार्ड मान नहीं है।
- अलग-अलग उत्पाद क्षेत्रों को अलग-अलग सिस्टम तक रूट करने के लिए, अलग-अलग `subscribed_events` सूचियों वाले कई गंतव्य बनाएँ।## इवेंट कैटलॉग| इवेंट | जब आपको सदस्यता लेनी हो |
| - | - |
| `status.updated` | उपयोगकर्ता सत्यापन (KYC) या व्यवसाय सत्यापन (KYB) सत्र की स्थिति बदलती है। KYB payload में `session_kind: "business"` और `business_session_id` शामिल होते हैं। |
| `data.updated` | सत्र का सत्यापन डेटा बनने के बाद सुधारा या अपडेट किया जाता है, जैसे KYC, पते के प्रमाण या KYB डेटा में समीक्षक द्वारा किए गए संपादन। |
| `user.status.updated` | कोई User इकाई अपनी स्थिति बदलती है, उदाहरण के लिए `ACTIVE`, `FLAGGED` या `BLOCKED`। |
| `user.data.updated` | किसी User इकाई की प्रोफ़ाइल, काउंटर, मेटाडेटा, दस्तावेज़ या समुच्चय सत्यापन फ़ील्ड बदलते हैं। |
| `business.status.updated` | कोई Business इकाई अपनी स्थिति बदलती है, उदाहरण के लिए मैन्युअल समीक्षा, KYB परिणामों या ब्लॉकलिस्ट कार्रवाई के बाद। |
| `business.data.updated` | किसी Business इकाई की प्रोफ़ाइल, काउंटर, मेटाडेटा, पंजीकरण फ़ील्ड या समुच्चय सत्यापन फ़ील्ड बदलते हैं। |
| `activity.created` | `subscribed_events` में स्वीकार किया जाता है और **Try Webhook** में शामिल है, लेकिन Didit इसे अभी लाइव ट्रैफ़िक के लिए नहीं भेजता। |
| `transaction.created` | लेन-देन निगरानी का कोई लेन-देन बनता है और उसका प्रारंभिक नियम मूल्यांकन पूरा हो जाता है। |
| `transaction.status.updated` | नियमों, विश्लेषक समीक्षा, सुधारात्मक कार्रवाई, प्रदाता अपडेट या API/कंसोल क्रियाओं के बाद लेन-देन की स्थिति बदलती है; पृष्ठभूमि में पुनः प्रयास की गई क्रिप्टो स्क्रीनिंग के पूरी होने पर भी यह एक बार भेजा जाता है। |
| `travel_rule.status.updated` | किसी [Travel Rule](https://docs.didit.me/hi/transaction-monitoring/travel-rule.md) एक्सचेंज की स्थिति बदलती है। |
| `workflow.compliance_changed` | पुनः मूल्यांकन के बाद प्रकाशित वर्कफ़्लो की अनुपालन स्थिति बदलती है। |
| `transaction_rule_suggestions.created` | नियम-सुझाव रन नियमों में नए बदलाव प्रस्तावित करता है। |Investigator (`investigator.*`) और प्रमाणीकरण (`auth.*`) इवेंट परिवार भी स्वीकार किए जाते हैं। हर इवेंट और उसका payload [Webhooks](https://docs.didit.me/hi/integration/webhooks.md#इवेंट-प्रकार) में सूचीबद्ध है।सामान्य सदस्यता सेट:```json theme={null}
{
  "subscribed_events": ["status.updated", "data.updated"]
}
``````json theme={null}
{
  "subscribed_events": ["transaction.created", "transaction.status.updated"]
}
``````json theme={null}
{
  "subscribed_events": [
    "user.status.updated",
    "user.data.updated",
    "business.status.updated",
    "business.data.updated",
    "activity.created"
  ]
}
```payload के उदाहरण और हस्ताक्षर कोड के लिए, [webhook मार्गदर्शिका](https://docs.didit.me/hi/integration/webhooks.md) देखें।


## OpenAPI

````yaml hi/openapi-25.json POST /v3/webhook/destinations/
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/:
    post:
      tags:
        - Webhook
      summary: webhook गंतव्य बनाएं
      description: >-
        एक webhook गंतव्य बनाएँ। रिस्पॉन्स में स्वतः जनरेट किया गया
        `secret_shared_key` HMAC साइनिंग सीक्रेट शामिल होता है (बाद में `GET
        /v3/webhook/destinations/{destination_uuid}/` के माध्यम से भी पढ़ने
        योग्य)। हमेशा कम से कम एक इवेंट के साथ `subscribed_events` भेजें (कोई
        वाइल्डकार्ड नहीं): एक स्पष्ट खाली सूची 400 के साथ अस्वीकृत कर दी जाती
        है, और फ़ील्ड को छोड़ने से ऐसा गंतव्य बनता है जो किसी भी इवेंट के लिए
        सब्सक्राइब नहीं होता और जिसे कभी कोई webhook प्राप्त नहीं होता।
        `(application, url)` जोड़ी एप्लिकेशन के गंतव्यों के बीच अद्वितीय होनी
        चाहिए।
      operationId: create_webhook_destination
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - label
                - url
              properties:
                label:
                  type: string
                  maxLength: 255
                  description: >-
                    Console → Webhooks में प्रदर्शित मानव-पठनीय नाम। आपके पास कई
                    गंतव्य होने पर उन्हें अलग करने में मदद करता है (उदा. "Prod",
                    "Staging mirror")।
                url:
                  type: string
                  format: uri
                  description: >-
                    HTTPS URL जो `POST` अनुरोध प्राप्त करेगा। एप्लिकेशन के
                    गंतव्यों के बीच अद्वितीय होना चाहिए। एक स्थिर, सुरक्षित
                    endpoint का उपयोग करें: Didit बैकऑफ़ शेड्यूल पर विफल डिलीवरी
                    का पुनः प्रयास करता है।
                  maxLength: 2000
                enabled:
                  type: boolean
                  default: true
                  description: >-
                    `false` होने पर, गंतव्य सहेजा जाता है लेकिन Didit इस पर कोई
                    webhook पुश नहीं करेगा। उन स्टेजिंग कॉन्फ़िगरेशन के लिए
                    उपयोगी जिन्हें आप रोक कर रखना चाहते हैं।
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: >-
                    Payload स्कीमा संस्करण जो Didit भेजेगा। `v3`
                    वर्तमान/अनुशंसित फ़ॉर्मेट है; पुराने संस्करण लेगसी
                    इंटीग्रेशन के साथ बैकवर्ड कम्पैटिबिलिटी के लिए रखे गए हैं।
                subscribed_events:
                  allOf:
                    - $ref: '#/components/schemas/WebhookSubscribedEvents'
                  description: >-
                    डिलीवर करने के लिए इवेंट्स। प्रभावी रूप से आवश्यक: एक स्पष्ट
                    `[]` को 400 के साथ अस्वीकार कर दिया जाता है, और फ़ील्ड को
                    छोड़ने पर बिना किसी सब्सक्रिप्शन वाला गंतव्य बनता है जिसे
                    कुछ भी प्राप्त नहीं होता है।
            examples:
              session_updates:
                summary: सत्र स्थिति और डेटा अपडेट
                value:
                  label: Production session webhooks
                  url: https://yourapp.com/webhooks/didit
                  webhook_version: v3
                  subscribed_events:
                    - status.updated
                    - data.updated
              transaction_updates:
                summary: लेन-देन निगरानी अपडेट
                value:
                  label: Transaction monitoring webhooks
                  url: https://yourapp.com/webhooks/didit-transactions
                  webhook_version: v3
                  subscribed_events:
                    - transaction.created
                    - transaction.status.updated
              entity_updates:
                summary: उपयोगकर्ता और व्यवसाय इकाई अपडेट
                value:
                  label: Entity lifecycle webhooks
                  url: https://yourapp.com/webhooks/didit-entities
                  webhook_version: v3
                  subscribed_events:
                    - user.status.updated
                    - user.data.updated
                    - business.status.updated
                    - business.data.updated
                    - activity.created
      responses:
        '201':
          description: >-
            गंतव्य बनाया गया। `secret_shared_key` HMAC हस्ताक्षर सीक्रेट है —
            इसे अभी सहेजें।
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: >-
                      स्थिर गंतव्य पहचानकर्ता। बाद के कॉलों में
                      `{destination_uuid}` के रूप में उपयोग करें।
                  label:
                    type: string
                  url:
                    type: string
                    format: uri
                  enabled:
                    type: boolean
                  webhook_version:
                    type: string
                    enum:
                      - v1
                      - v2
                      - v3
                  secret_shared_key:
                    type: string
                    description: >-
                      इस गंतव्य से संबद्ध स्वतः-जेनरेट किया गया HMAC साइनिंग
                      सीक्रेट (43-वर्ण का URL-सुरक्षित token)। इनकमिंग webhooks
                      पर हस्ताक्षर हेडर सत्यापित करने के लिए इसका उपयोग करें।
                      API कुंजी कॉलर्स को हमेशा पूरा लौटाया जाता है; कंसोल
                      उपयोगकर्ताओं को `read:webhooks` अनुमति की आवश्यकता होती
                      है, अन्यथा वे एक खाली स्ट्रिंग देखते हैं।
                  secret_last4:
                    type: string
                    description: >-
                      गंतव्य के वर्तमान साइनिंग सीक्रेट के अंतिम चार वर्ण, ताकि
                      आप सीक्रेट में अंतर कर सकें। हस्ताक्षर सत्यापित करने के
                      लिए पर्याप्त नहीं है।
                  previous_secret_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Business Console में गंतव्य के साइनिंग सीक्रेट को रोटेट
                      किए जाने के बाद 24 घंटों के लिए सेट होता है। इस समय तक,
                      गंतव्य पर प्रत्येक डिलीवरी में बदले गए सीक्रेट के साथ बनाए
                      गए `X-Signature-Previous`, `X-Signature-V2-Previous` और
                      `X-Signature-Simple-Previous` भी शामिल होते हैं
                      ([हस्ताक्षर
                      सत्यापन](/hi/integration/webhooks#हस्ताक्षर-सत्यापन)
                      देखें)। पिछले 24 घंटों में कोई रोटेशन न होने पर `null`।
                  subscribed_events:
                    $ref: '#/components/schemas/WebhookSubscribedEvents'
                  created_by_email:
                    type: string
                    nullable: true
                    description: >-
                      उस Business Console सदस्य का ईमेल जिसने गंतव्य बनाया। API
                      कुंजी से बनाए गए गंतव्य के लिए `null`।
                  created_by_name:
                    type: string
                    nullable: true
                    description: >-
                      Business Console के उस सदस्य का नाम जिसने गंतव्य बनाया।
                      API कुंजी से बनाए गए गंतव्य के लिए `null`।
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  health_status:
                    type: string
                    enum:
                      - healthy
                      - degraded
                      - failing
                    description: >-
                      डिलीवरी स्थिति। `failing`: गंतव्य द्वारा पिछली बार
                      सफलतापूर्वक उत्तर दिए जाने के बाद से 3 या अधिक लगातार
                      इवेंट अपने पहले डिलीवरी प्रयास में विफल रहे (देखें
                      `failing_streak`)। `degraded`: failing नहीं है, लेकिन
                      पिछले 24 घंटों में एक डिलीवरी प्रयास विफल रहा और बाद के
                      किसी भी प्रयास ने उस इवेंट को डिलीवर नहीं किया है; इसे
                      डिलीवर करने वाला पुनः प्रयास या पुनः भेजना इसे साफ़ कर
                      देता है। `healthy`: दोनों में से कोई नहीं। `enabled` से
                      स्वतंत्र। एक विफल प्रयास वह होता है जिसका उत्तर HTTP 400
                      या उससे ऊपर के साथ दिया गया हो, या कोई उत्तर न दिया गया
                      हो।
                  failing_streak:
                    type: integer
                    description: >-
                      पिछले 30 दिनों के भीतर, गंतव्य द्वारा पिछली बार
                      सफलतापूर्वक उत्तर देने के बाद से कितने लगातार इवेंट अपने
                      पहले डिलीवरी प्रयास में विफल रहे। पुनः प्रयासों की गणना
                      नहीं की जाती है, और पुनः प्रयास या पुनः भेजने सहित कोई भी
                      सफल प्रयास इस सिलसिले को समाप्त कर देता है। पिछली सफलता के
                      बाद से किसी भी इवेंट के विफल न होने पर `0`।
                  failing_since:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      जब वर्तमान `failing_streak` का पहला विफल प्रयास किया गया
                      था। `null` जब `failing_streak` `0` हो।
                  last_success_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      जब गंतव्य ने पिछले 30 दिनों के भीतर, 400 से कम के HTTP
                      स्थिति कोड के साथ डिलीवरी का अंतिम बार उत्तर दिया। `null`
                      यदि उसने उस अवधि में उत्तर नहीं दिया है।
                  environment:
                    type: string
                    enum:
                      - live
                      - sandbox
                    description: >-
                      उस एप्लिकेशन का एनवायरनमेंट जिसके पास गंतव्य का स्वामित्व
                      है।
                  summary:
                    type: object
                    description: >-
                      पिछले `metrics_window_days` (30) दिनों के लिए डिलीवरी
                      मेट्रिक्स। `last_delivery_at` सबसे हालिया प्रयास है, चाहे
                      वह कभी भी किया गया हो।
                    properties:
                      total_deliveries:
                        type: integer
                      failed_deliveries:
                        type: integer
                      error_rate_percentage:
                        type: integer
                      min_response_time_ms:
                        type: integer
                        nullable: true
                      avg_response_time_ms:
                        type: integer
                        nullable: true
                      max_response_time_ms:
                        type: integer
                        nullable: true
                      last_delivery_at:
                        type: string
                        format: date-time
                        nullable: true
                      metrics_window_days:
                        type: integer
                        description: >-
                          दिनों में उस विंडो की अवधि जिसे अन्य सारांश मेट्रिक्स
                          कवर करते हैं। हमेशा `30`।
              examples:
                Created:
                  value:
                    uuid: 11111111-2222-3333-4444-555555555555
                    label: Production session webhooks
                    url: https://yourapp.com/webhooks/didit
                    enabled: true
                    webhook_version: v3
                    secret_shared_key: tno2NTeRC1ZK3sBOYlBJDyEzBVENl3pQ1AcZyAW0xnQ
                    secret_last4: 0xnQ
                    previous_secret_expires_at: null
                    subscribed_events:
                      - status.updated
                      - data.updated
                    created_by_email: null
                    created_by_name: null
                    created_at: '2026-05-17T10:00:00Z'
                    updated_at: '2026-05-17T10:00:00Z'
                    health_status: healthy
                    failing_streak: 0
                    failing_since: null
                    last_success_at: null
                    environment: live
                    summary:
                      total_deliveries: 0
                      failed_deliveries: 0
                      error_rate_percentage: 0
                      min_response_time_ms: null
                      avg_response_time_ms: null
                      max_response_time_ms: null
                      last_delivery_at: null
                      metrics_window_days: 30
        '400':
          description: >-
            सत्यापन विफल रहा — आमतौर पर एक डुप्लिकेट URL, अनुपलब्ध/अमान्य
            `subscribed_events`, या अज्ञात इवेंट नाम।
          content:
            application/json:
              examples:
                Duplicate URL:
                  value:
                    url:
                      - >-
                        This webhook destination already exists for the
                        application.
                Empty events list:
                  value:
                    subscribed_events:
                      - At least one subscribed event is required.
                Unknown event:
                  value:
                    subscribed_events:
                      - 'Unsupported webhook events: foo.bar'
        '403':
          description: >-
            API कुंजी अनुपलब्ध, विकृत, समाप्त हो चुकी है, या किसी भिन्न
            एप्लिकेशन के लिए स्कोप की गई है। अनुपलब्ध कुंजी `403` लौटाती है;
            गलत, निरस्त या समाप्त हो चुकी कुंजी `401` लौटाती है।
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: रेट लिमिट पार हो गई; थोड़ा रुकें और पुनः प्रयास करें।
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/webhook/destinations/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "label": "Production session webhooks",
                "url": "https://yourapp.com/webhooks/didit",
                "webhook_version": "v3",
                "subscribed_events": ["status.updated", "data.updated"]
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.webhooks.destinations.create(
                label="Production session webhooks",
                url="https://yourapp.com/webhooks/didit",
                webhook_version="v3",
                subscribed_events=["status.updated", "data.updated"],
            )
            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.create({
              label: "Production session webhooks",
              url: "https://yourapp.com/webhooks/didit",
              webhook_version: "v3",
              subscribed_events: ["status.updated", "data.updated"],
            });
            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.Create(ctx, didit.WebhooksDestinationsCreateParams{\n\tLabel:            \"Production session webhooks\",\n\tURL:              \"https://yourapp.com/webhooks/didit\",\n\tWebhookVersion:   didit.Some(didit.WebhooksDestinationsCreateParamsWebhookVersion(\"v3\")),\n\tSubscribedEvents: didit.Some([]didit.WebhookEvent{didit.WebhookEvent(\"status.updated\"), didit.WebhookEvent(\"data.updated\")}),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import java.util.List;

            import me.didit.Didit;

            import me.didit.types.WebhookEvent;

            import me.didit.types.WebhooksDestinationsCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.webhooks().destinations().create(WebhooksDestinationsCreateParams.builder()
                    .label("Production session webhooks")
                    .url("https://yourapp.com/webhooks/didit")
                    .webhookVersion(WebhooksDestinationsCreateParams.WebhookVersion.of("v3"))
                    .subscribedEvents(List.of(WebhookEvent.of("status.updated"), WebhookEvent.of("data.updated")))
                    .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->create([
                'label' => 'Production session webhooks',
                'url' => 'https://yourapp.com/webhooks/didit',
                'webhook_version' => 'v3',
                'subscribed_events' => ['status.updated', 'data.updated'],
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.webhooks.destinations.create(
              label: "Production session webhooks",
              url: "https://yourapp.com/webhooks/didit",
              webhook_version: "v3",
              subscribed_events: ["status.updated", "data.updated"]
            )
            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.CreateAsync(new
            WebhooksDestinationsCreateParams

            {
                Label = "Production session webhooks",
                Url = "https://yourapp.com/webhooks/didit",
                WebhookVersion = new WebhooksDestinationsCreateParamsWebhookVersion("v3"),
                SubscribedEvents = new WebhookEvent[] { "status.updated", "data.updated" },
            });

            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.