> ## 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 per actualitzar la destinació de webhook

> Edita la destinació del webhook de Didit: etiqueta, URL, estat, versió i esdeveniments subscrits. Pagament per crida, sense contractes.



Prompt de l'API per actualitzar la destinació del webhook
        Copia el prompt al porta-retalls



      
      

\<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>



      
      

Enganxa a

Fes servir aquest endpoint per canviar on una destinació envia els webhooks i quins esdeveniments rep.## Actualització de `subscribed_events`Quan envies `subscribed_events`, proporciona la llista completa d'esdeveniments que han de continuar subscrits després de l'actualització. La llista substitueix el conjunt de subscripcions anterior.```json theme={null}
{
  "subscribed_events": [
    "status.updated",
    "data.updated",
    "transaction.created",
    "transaction.status.updated"
  ]
}
```Els valors admesos són:| Esdeveniment | Què representa |
| - | - |
| `status.updated` | Ha canviat l'estat de la sessió de verificació d'usuaris (KYC) o de verificació d'empreses (KYB). |
| `data.updated` | Han canviat les dades de verificació de la sessió després de la creació. |
| `user.status.updated` | Ha canviat l'estat de l'entitat d'usuari. |
| `user.data.updated` | Han canviat les dades de l'entitat d'usuari. |
| `business.status.updated` | Ha canviat l'estat de l'entitat d'empresa. |
| `business.data.updated` | Han canviat les dades de l'entitat d'empresa. |
| `activity.created` | Acceptat, però avui no es lliura per al trànsit en producció. |
| `transaction.created` | Transacció creada i avaluada inicialment. |
| `transaction.status.updated` | Ha canviat l'estat de la transacció. |
| `travel_rule.status.updated` | Ha canviat l'estat d'un intercanvi de Travel Rule. |
| `workflow.compliance_changed` | Ha canviat l'estat de compliment d'un flux de treball publicat. |
| `transaction_rule_suggestions.created` | Una execució de suggeriments de regles ha proposat nous canvis en les regles. |Les famílies d'esdeveniments de l'investigador (`investigator.*`) i d'autenticació (`auth.*`) també són admeses; consulta [webhooks](https://docs.didit.me/ca/integration/webhooks.md#tipus-d’esdeveniments) per a la llista completa.Fes servir la [guia de creació de destinacions](https://docs.didit.me/ca/management-api/webhook/create-destination.md) per a descripcions detallades dels esdeveniments i conjunts habituals de subscripcions.


## OpenAPI

````yaml ca/openapi-25.json PATCH /v3/webhook/destinations/{destination_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de verificació d'identitat. Autentica't amb la capçalera x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/destinations/{destination_uuid}/:
    patch:
      tags:
        - Webhook
      summary: Actualitza la destinació del webhook
      description: >-
        Actualitza una destinació del webhook. **`subscribed_events` es
        REEMPLAÇA completament, no es fusiona**: consulta primer, afegeix i
        torna a enviar. El secret no es rota. Si hi ha un `uuid` al cos,
        s'ignora: el camí indica la destinació.
      operationId: update_webhook_destination
      parameters:
        - name: destination_uuid
          in: path
          required: true
          description: UUID de la destinació que cal actualitzar.
          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: Nou nom llegible per a les persones.
                url:
                  type: string
                  format: uri
                  description: Nova URL de destinació. Ha de ser única dins de l'aplicació.
                enabled:
                  type: boolean
                  description: >-
                    Estableix-ho a `false` per pausar els lliuraments a aquesta
                    destinació sense eliminar-la.
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: >-
                    Nova versió de l'esquema de payload per a lliuraments
                    futurs.
                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: >-
            Destinació del webhook actualitzada. El cos té la mateixa estructura
            que `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: >-
                      Últims quatre caràcters del secret de signatura actual de
                      la destinació, perquè puguis distingir els secrets. No són
                      suficients per verificar una signatura.
                  previous_secret_expires_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Establert durant 24 hores després que el secret de
                      signatura de la destinació es roti a la Business Console.
                      Fins aquest moment, cada lliurament a la destinació també
                      inclou `X-Signature-Previous`, `X-Signature-V2-Previous` i
                      `X-Signature-Simple-Previous`, generats amb el secret
                      substituït (consulta [Verificació de la
                      signatura](/ca/integration/webhooks#verificació-de-la-signatura)).
                      `null` quan no s'ha produït cap rotació en les darreres 24
                      hores.
                  subscribed_events:
                    $ref: '#/components/schemas/WebhookSubscribedEvents'
                  created_by_email:
                    type: string
                    nullable: true
                    description: >-
                      Correu electrònic del membre de la Business Console que ha
                      creat la destinació. `null` per a una destinació creada
                      amb una clau d'API.
                  created_by_name:
                    type: string
                    nullable: true
                    description: >-
                      Nom del membre de la Business Console que ha creat la
                      destinació. `null` per a una destinació creada amb una
                      clau d'API.
                  created_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  health_status:
                    type: string
                    enum:
                      - healthy
                      - degraded
                      - failing
                    description: >-
                      Estat del lliurament. `failing`: 3 o més esdeveniments
                      consecutius han fallat en el seu primer intent de
                      lliurament des que la destinació va respondre
                      satisfactòriament per darrera vegada (consulta
                      `failing_streak`). `degraded`: no és failing, però un
                      intent de lliurament ha fallat en les darreres 24 hores i
                      cap intent posterior ha lliurat aquest esdeveniment; un
                      reintent o reenviament que el lliuri neteja aquest estat.
                      `healthy`: cap dels dos. Independent d'`enabled`. Un
                      intent fallit és un que ha rebut una resposta HTTP 400 o
                      superior, o que no ha rebut cap resposta.
                  failing_streak:
                    type: integer
                    description: >-
                      Quants esdeveniments consecutius han fallat en el seu
                      primer intent de lliurament des que la destinació va
                      respondre satisfactòriament per última vegada, durant els
                      darrers 30 dies. Els reintents no es comptabilitzen, i
                      qualsevol intent satisfactori, inclòs un reintent o un
                      reenviament, posa fi a la ratxa. `0` quan cap esdeveniment
                      ha fallat des de l'últim èxit.
                  failing_since:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Quan es va fer el primer intent fallit de la
                      `failing_streak` actual. `null` quan `failing_streak` és
                      `0`.
                  last_success_at:
                    type: string
                    format: date-time
                    nullable: true
                    description: >-
                      Quan la destinació va respondre per darrera vegada a un
                      lliurament amb un estat HTTP inferior a 400, en els
                      darrers 30 dies. `null` si no ho ha fet en aquest
                      interval.
                  environment:
                    type: string
                    enum:
                      - live
                      - sandbox
                    description: Entorn de l'aplicació propietària de la destinació.
                  summary:
                    type: object
                    description: >-
                      Mètriques de lliurament dels darrers `metrics_window_days`
                      (30) dies. `last_delivery_at` és l'intent més recent,
                      independentment de quan es va fer.
                    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: >-
                          Durada en dies de la finestra que cobreixen les altres
                          mètriques de resum. Sempre és `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: >-
            La validació ha fallat (URL duplicada, llista d'esdeveniments buida
            o amb esdeveniments desconeguts, cos amb format incorrecte).
          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: >-
            Falta la clau d'API, està mal formada, ha caducat o està assignada a
            una aplicació diferent. Si falta la clau es retorna `403`; una clau
            incorrecta, revocada o caducada retorna `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            La destinació amb aquest UUID no existeix (o s'ha suprimit, o
            pertany a una altra aplicació).
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Webhook destination not found.
        '429':
          description: >-
            S'ha superat el límit de freqüència; redueix el ritme de les
            sol·licituds i reintenta-ho.
          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: >-
        Filtre d'esdeveniments per a aquesta destinació del webhook. Didit només
        lliura webhooks el tipus d'esdeveniment dels quals coincideix exactament
        amb un d'aquests valors; no hi ha subscripció amb caràcters comodí. Quan
        s'envia, la llista ha de contenir almenys un esdeveniment vàlid (un `[]`
        explícit es rebutja amb 400); una destinació amb la llista buida (camp
        omès en crear-se) no rep res. En actualitzar, la llista es reemplaça
        completament, mai es fusiona.
      minItems: 1
      uniqueItems: true
      items:
        $ref: '#/components/schemas/WebhookEvent'
      example:
        - status.updated
        - data.updated
    WebhookEvent:
      type: string
      description: >-
        Nom d'esdeveniment de webhook admès. Utilitza aquestes cadenes exactes a
        `subscribed_events`; els valors no admesos es rebutgen.
      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: >-
        La clau d'API de la teva aplicació, des de Developers -> API keys a la
        Business Console. La clau primària té accés complet. Una clau amb nom
        pot tenir l'abast limitat: cap, lectura o escriptura per recurs,
        limitada a determinats fluxos de treball o a sessions aprovades, a una
        llista d'adreces IP i a una data de caducitat. 401 significa que la clau
        és incorrecta, revocada o caducada; 403 significa que no s'ha enviat cap
        clau, que la clau no té accés a aquest recurs o acció, o que la
        sol·licitud prové d'una adreça fora de la seva llista d'IP; 404 en una
        ruta de sessió significa que la sessió està fora dels fluxos de treball
        o estats de la clau. Una clau sense accés a fitxers multimèdia rep els
        URL d'imatge, vídeo i PDF com a null, i una clau sense permís
        d'escriptura de sessions rep els enllaços de sessió i els tokens com a
        null. Consulta https://docs.didit.me/console/api-keys.

````

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