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

# Mise à jour de la configuration webhook API

> Modifiez le webhook de l'application Didit, faites tourner son secret, réglez la rétention des données et ajoutez les hôtes de retour.



Mise à jour de la configuration du webhook : prompt de l'API
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`Update my Didit application's webhook configuration through the Management API.

Endpoint:
PATCH https://verification.didit.me/v3/webhook/

Authentication:
Use the x-api-key header with my Didit API key. A scoped API key needs webhooks: write.

Goal:
\- Change application-level settings: the legacy webhook URL and version, the application secret, the data-retention and biometric-template retention policy, the Digital ID wallet return hosts, or the allowed origins of the hosted flow.

Behavior:
\- Partial update: send only the fields to change. The response is the full configuration, the same shape as GET /v3/webhook/.
\- webhook_url and webhook_version change the application-level (legacy) webhook only. Didit uses it only while the application has no enabled destination, and only for status.updated and data.updated. It does not create a destination, and the next create, update or delete of a destination replaces webhook_url. To receive webhooks, create a destination with POST /v3/webhook/destinations/ instead.
\- rotate_secret_key: true replaces the application-level secret_shared_key immediately. Destination secrets are not changed. Each call generates a new secret, so it is not idempotent.
\- data_retention_months (1 to 120, or null for no automatic deletion): user verification sessions older than this many 30-day months are deleted automatically. Business verification sessions are not affected.
\- face_retention_policy (delete_with_session or retain_until_user_deleted) and face_retention_days (1 to 3650). retain_until_user_deleted needs face_retention_days in the same request or already set.
\- allowed_return_hosts replaces the registered list: up to 20 bare hostnames such as app.example.com (no scheme, port, path or wildcard). Send [] to clear it.
\- allowed_domains replaces the list of web origins (for example https://app.example.com; http only for localhost) that the hosted verification flow may be embedded in and may send the user back to with a session callback: up to 50 entries of at most 300 characters. Send [] to remove the restriction. Server-to-server calls are not affected. An invalid entry returns 400 on allowed_domains.
\- Manage destinations with the /v3/webhook/destinations/ endpoints, not here. Never send an endpoints field to this call: it is not part of this contract.

Example call:
curl -X PATCH "https://verification.didit.me/v3/webhook/" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"face_retention_policy": "retain_until_user_deleted", "face_retention_days": 365}'

What to read from the response:
\- The updated fields, and secret_shared_key when you rotated it: store the new value before you discard the response.

Failure modes:
\- 400: field errors, each field mapped to a list of messages, for example { "face_retention_days": ["A finite retention duration is required when face retention is enabled."] }. Nothing is changed.
\- 401: { "detail": "This API key has expired." }
\- 403: { "detail": "You do not have permission to perform this action." } or { "detail": "This API key has no write access to webhooks." }
\- 429: more than 300 write requests per minute with this key; wait for Retry-After.

Side effects:
\- Rotating the secret changes how deliveries to the legacy webhook_url are signed from then on, retries included.
\- A data_retention_months change applies to existing sessions too: every session older than the new window is deleted automatically, and that deletion is irreversible.
\- A face_retention_policy change applies to session deletions from then on; it creates or purges no existing biometric template.

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

\</pre>



      
      

Coller dans

> [!NOTE]
>
> `rotate_secret_key` ne fait pivoter que le secret au niveau de l'application, qui signe les envois vers l'ancien `webhook_url`. Chaque [destination de webhook](https://docs.didit.me/fr/management-api/webhook/list-destinations.md) signe avec son propre `secret_shared_key`, que cet appel ne modifie pas.Les champs de conservation suivent la même politique que celle que vous définissez dans **Business Console → App Settings → Data retention**. Lisez [Conservation des données](https://docs.didit.me/fr/console/data-retention.md) avant de les modifier, en particulier [conservation des gabarits biométriques](https://docs.didit.me/fr/console/data-retention.md#conservation-des-gabarits-biométriques). `allowed_return_hosts` est décrit dans [Enregistrer votre destination de retour](https://docs.didit.me/fr/standalone-apis/digital-id-wallets.md#enregistrer-votre-destination-de-retour).`biometric_consent_mode` (`auto`, `always` ou `never`) définit le moment où le flux de vérification demande un consentement biométrique explicite avant une capture faciale. Consultez [Consentement biométrique](https://docs.didit.me/fr/getting-started/biometric-consent.md).Pour lire d'abord les valeurs actuelles, appelez [Obtenir la configuration du webhook](https://docs.didit.me/fr/management-api/webhook/get-config.md).


## OpenAPI

````yaml fr/openapi-25.json PATCH /v3/webhook/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/webhook/:
    patch:
      tags:
        - Webhook
      summary: Mettre à jour la configuration du webhook
      description: "Mettre à jour partiellement les paramètres au niveau de l'application\_: l'URL, la version et le secret de l'ancien webhook, la politique de conservation des données et des gabarits biométriques, ainsi que les hôtes de retour du portefeuille Digital ID. Envoyez uniquement les champs à modifier\_; la réponse est la configuration complète, sous la même forme que `GET /v3/webhook/`. Les destinations ne sont pas gérées ici\_: créez-les, mettez-les à jour et supprimez-les avec les endpoints `/v3/webhook/destinations/`, et n'envoyez pas de champ `endpoints` à cet endpoint. Une modification de `data_retention_months` s'applique également aux sessions existantes, et les sessions qu'elle supprime ne peuvent pas être restaurées\_; lisez d'abord [Conservation des données](https://docs.didit.me/fr/console/data-retention). Une clé API avec restriction de portée nécessite `webhooks: write`."
      operationId: update_webhook_config
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Envoyez uniquement les champs à modifier. Les destinations ne
                sont pas gérées ici.
              properties:
                webhook_url:
                  type: string
                  format: uri
                  nullable: true
                  maxLength: 2000
                  description: >-
                    URL de webhook au niveau de l'application obsolète. Didit
                    l'utilise uniquement tant que l'application n'a aucune
                    destination activée, et seulement pour `status.updated` et
                    `data.updated`. Cela ne crée pas de destination, et la
                    prochaine création, mise à jour ou suppression d'une
                    destination la remplace. Pour recevoir des webhooks, créez
                    plutôt une destination avec `POST
                    /v3/webhook/destinations/`.
                webhook_version:
                  type: string
                  enum:
                    - v1
                    - v2
                    - v3
                  description: Version du payload de l'ancien `webhook_url`.
                rotate_secret_key:
                  type: boolean
                  default: false
                  description: >-
                    `true` remplace immédiatement la valeur `secret_shared_key`
                    au niveau de l'application par une nouvelle valeur aléatoire
                    ; la nouvelle valeur figure dans la réponse. Les secrets des
                    destinations ne sont pas modifiés. Chaque appel avec `true`
                    génère un nouveau secret, il n'est donc pas idempotent.
                capture_method:
                  type: string
                  enum:
                    - MOBILE
                    - MOBILE_AND_DESKTOP
                  description: >-
                    Paramètre d'application obsolète. Le workflow de
                    vérification ne le lit pas.
                data_retention_months:
                  type: integer
                  nullable: true
                  minimum: 1
                  maximum: 120
                  description: >-
                    Fenêtre de suppression automatique en mois (un mois compte
                    pour 30 jours), ou `null` pour aucune suppression
                    automatique. Une modification s'applique également aux
                    sessions existantes : chaque session de vérification d'un
                    utilisateur plus ancienne que la nouvelle période est
                    supprimée automatiquement, et cette suppression est
                    irréversible.
                face_retention_policy:
                  type: string
                  enum:
                    - delete_with_session
                    - retain_until_user_deleted
                  description: >-
                    Ce qui advient de l'embedding facial d'une session lorsque
                    la session est supprimée. `retain_until_user_deleted`
                    nécessite `face_retention_days` dans la même requête ou déjà
                    défini. Une modification s'applique aux suppressions de
                    session à partir de ce moment ; elle ne crée ni ne purge
                    aucun gabarit biométrique existant.
                face_retention_days:
                  type: integer
                  nullable: true
                  minimum: 1
                  maximum: 3650
                  description: >-
                    Durée de conservation, en jours, des gabarits biométriques
                    sous `retain_until_user_deleted`.
                biometric_consent_mode:
                  type: string
                  enum:
                    - auto
                    - always
                    - never
                  description: >-
                    Moment où le flux hébergé et les SDK natifs demandent à la
                    personne son consentement biométrique explicite avant une
                    capture faciale. `auto` (par défaut) ne le demande que
                    lorsqu'un déclencheur s'applique : un État déclaré, l'IP de
                    la personne ou l'émetteur du document d'identité se trouve
                    dans l'Illinois, au Texas ou au Colorado, ou la personne
                    semble être aux États-Unis sans État connu. `always` le
                    demande à chaque personne dont le workflow capture un
                    visage. `never` n'affiche jamais l'étape, et vous recueillez
                    vous-même le consentement avant le selfie. Chaque
                    modification est enregistrée dans le journal d'audit. Voir
                    [Consentement
                    biométrique](https://docs.didit.me/fr/getting-started/biometric-consent).
                allowed_return_hosts:
                  type: array
                  maxItems: 20
                  description: >-
                    Remplace l'ensemble de la liste des hôtes de redirection
                    pour le portefeuille Digital ID. Noms d'hôte simples
                    uniquement, par exemple `shop.example.com` : pas de
                    protocole, port, chemin ni caractère générique. Les valeurs
                    sont converties en minuscules et les doublons sont
                    supprimés. Envoyez `[]` pour vider la liste.
                  items:
                    type: string
                    maxLength: 253
                allowed_domains:
                  type: array
                  maxItems: 50
                  items:
                    type: string
                    maxLength: 300
                  description: >-
                    Remplace l'ensemble de la liste des origines autorisées.
                    Origines (par exemple `https://app.example.com` ; `http`
                    uniquement pour `localhost`) au sein desquelles le flux de
                    vérification hébergé peut être intégré et vers lesquelles il
                    peut rediriger l'utilisateur avec un rappel de session. Les
                    appels de serveur à serveur ne sont pas affectés. Une liste
                    vide signifie qu'aucune restriction n'est appliquée. Didit
                    enregistre chaque origine en minuscules sans port par
                    défaut. Une entrée non valide échoue avec une erreur `400`
                    sur `allowed_domains`. Envoyez `[]` pour supprimer la
                    restriction.
                  example:
                    - https://app.example.com
            examples:
              Enable biometric template retention:
                value:
                  face_retention_policy: retain_until_user_deleted
                  face_retention_days: 365
                  biometric_consent_mode: auto
              Rotate the legacy secret:
                value:
                  rotate_secret_key: true
              Set data retention:
                value:
                  data_retention_months: 24
              Register return hosts:
                value:
                  allowed_return_hosts:
                    - shop.example.com
                    - app.example.com
      responses:
        '200':
          description: >-
            La configuration complète après la mise à jour, sous la même forme
            que `GET /v3/webhook/`. Si vous avez renouvelé le secret,
            enregistrez la nouvelle `secret_shared_key` avant d'écarter la
            réponse.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookConfig'
              examples:
                Retention enabled:
                  value:
                    webhook_url: https://yourapp.com/webhooks/didit
                    webhook_version: v3
                    secret_shared_key: dGhpcy1pcy10aGUtYXBwLWxldmVsLXNlY3JldC0wMDA
                    capture_method: MOBILE
                    data_retention_months: 24
                    face_retention_policy: retain_until_user_deleted
                    face_retention_days: 365
                    biometric_consent_mode: auto
                    available_events:
                      - value: status.updated
                        label: Session status updated
                      - value: data.updated
                        label: Session data updated
                      - value: user.status.updated
                        label: User status updated
                      - value: user.data.updated
                        label: User data updated
                      - value: business.status.updated
                        label: Business status updated
                      - value: business.data.updated
                        label: Business data updated
                      - value: activity.created
                        label: Activity created
                      - value: transaction.created
                        label: Transaction created
                      - value: transaction.status.updated
                        label: Transaction status updated
                      - value: travel_rule.status.updated
                        label: Travel Rule Status Updated
                      - value: workflow.compliance_changed
                        label: Workflow Compliance Changed
                    allowed_return_hosts:
                      - shop.example.com
                    endpoints:
                      - uuid: 11111111-2222-3333-4444-555555555555
                        label: Production session webhooks
                        url: https://yourapp.com/webhooks/didit
                        enabled: true
                        webhook_version: v3
                        secret_shared_key: dGhpcy1pcy1hbi1leGFtcGxlLXNlY3JldC0wMDAwMDA
                        subscribed_events:
                          - status.updated
                          - data.updated
                        created_at: '2026-01-04T08:00:00.000000Z'
                        updated_at: '2026-04-22T14:09:11.523671Z'
        '400':
          description: >-
            Échec de la validation : chaque champ non valide est associé à une
            liste de messages, et rien n'est modifié. Un corps qui n'est pas un
            JSON valide renvoie `{"detail": "JSON parse error - ..."}`.
          content:
            application/json:
              schema:
                type: object
                description: Chaque champ invalide associé à une liste de messages.
                additionalProperties:
                  type: array
                  items:
                    type: string
              examples:
                Retention days missing:
                  value:
                    face_retention_days:
                      - >-
                        A finite retention duration is required when face
                        retention is enabled.
                    biometric_consent_mode: auto
                Retention window out of range:
                  value:
                    data_retention_months:
                      - Ensure this value is less than or equal to 120.
                Invalid return host:
                  value:
                    allowed_return_hosts:
                      - >-
                        'https://shop.example.com' is not a hostname. Register
                        the bare host (e.g. shop.example.com): no scheme, port,
                        path or wildcard.
                Invalid choice:
                  value:
                    face_retention_policy:
                      - '"forever" is not a valid choice.'
        '401':
          description: >-
            La clé API a expiré : elle a été créée avec une date d'expiration
            qui est dépassée. Une clé incorrecte ou révoquée reçoit également un
            code `401` ; une clé manquante reçoit un code `403`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            La requête n'est pas autorisée. Un en-tête `x-api-key` manquant,
            invalide ou révoqué renvoie `You do not have permission to perform
            this action.` Une clé avec restriction de portée sans l'accès requis
            par cet endpoint renvoie un message indiquant l'accès manquant, et
            une clé utilisée en dehors de sa liste d'autorisation d'adresses IP
            renvoie `This API key can't be used from this IP address.`
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without webhooks write:
                  value:
                    detail: This API key has no write access to webhooks.
                Outside the IP allowlist:
                  value:
                    detail: This API key can't be used from this IP address.
        '429':
          description: >-
            Limite de débit dépassée : plus de 300 requêtes d'écriture (POST,
            PATCH, PUT, DELETE) dans la fenêtre actuelle d'une minute pour cette
            clé API. Attendez `Retry-After` secondes avant de réessayer.
          headers:
            Retry-After:
              description: Secondes à attendre avant de réessayer.
              schema:
                type: integer
                minimum: 1
                example: 30
            X-RateLimit-Limit:
              description: Requêtes autorisées dans la fenêtre d'une minute (300).
              schema:
                type: integer
                example: 300
            X-RateLimit-Remaining:
              description: Requêtes restantes dans la fenêtre actuelle.
              schema:
                type: integer
                example: 0
            X-RateLimit-Reset:
              description: >-
                Temps Unix (en secondes) auquel la fenêtre actuelle se
                réinitialise.
              schema:
                type: integer
                example: 1792056120
            X-RateLimit-Scope:
              description: Nom du budget qui a été dépassé.
              schema:
                type: string
                example: generic-write
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    description: Message d'erreur lisible par l'humain.
              examples:
                Throttled:
                  value:
                    detail: >-
                      Write request rate limit exceeded. You can make up to 300
                      requests per minute.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X PATCH 'https://verification.didit.me/v3/webhook/' \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"face_retention_policy": "retain_until_user_deleted", "face_retention_days": 365}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.webhooks.update_config(
                face_retention_policy="retain_until_user_deleted",
                face_retention_days=365,
                biometric_consent_mode="auto",
            )
            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.updateConfig({
              face_retention_policy: "retain_until_user_deleted",
              face_retention_days: 365,
              biometric_consent_mode: "auto",
            });
            console.log(result);
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.WebhooksUpdateConfigParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.webhooks().updateConfig(WebhooksUpdateConfigParams.builder()
                    .faceRetentionPolicy(WebhooksUpdateConfigParams.FaceRetentionPolicy.of("retain_until_user_deleted"))
                    .faceRetentionDays(365L)
                    .biometricConsentMode(WebhooksUpdateConfigParams.BiometricConsentMode.of("auto"))
                    .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->updateConfig([
                'face_retention_policy' => 'retain_until_user_deleted',
                'face_retention_days' => 365,
                'biometric_consent_mode' => 'auto',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.webhooks.update_config(
              face_retention_policy: "retain_until_user_deleted",
              face_retention_days: 365,
              biometric_consent_mode: "auto"
            )
            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.UpdateConfigAsync(new
            WebhooksUpdateConfigParams

            {
                FaceRetentionPolicy = new WebhooksUpdateConfigParamsFaceRetentionPolicy("retain_until_user_deleted"),
                FaceRetentionDays = 365,
                BiometricConsentMode = new WebhooksUpdateConfigParamsBiometricConsentMode("auto"),
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WebhookConfig:
      type: object
      description: >-
        Configuration des webhooks au niveau de l'application, politique de
        conservation et hôtes de retour de portefeuille Digital ID, avec chaque
        destination de webhook.
      required:
        - webhook_url
        - webhook_version
        - secret_shared_key
        - capture_method
        - data_retention_months
        - face_retention_policy
        - face_retention_days
        - available_events
        - allowed_return_hosts
        - endpoints
      properties:
        webhook_url:
          type: string
          format: uri
          nullable: true
          description: >-
            URL de webhook (héritée) au niveau de l'application. Didit n'envoie
            vers celle-ci que lorsque l'application ne dispose d'aucune
            destination activée, et uniquement `status.updated` et
            `data.updated`. Chaque création, mise à jour ou suppression d'une
            destination la définit sur l'URL de la destination activée la plus
            ancienne, ou sur `null` lorsqu'aucune n'est activée.
        webhook_version:
          type: string
          enum:
            - v1
            - v2
            - v3
          description: >-
            Version du payload de l'ancien `webhook_url`. Chaque destination
            possède sa propre `webhook_version`.
        secret_shared_key:
          type: string
          description: >-
            Secret de signature au niveau de l'application (token de 43
            caractères compatible URL). Il signe uniquement les livraisons vers
            la `webhook_url` héritée ; chaque destination signe avec son propre
            `secret_shared_key`. Les appelants utilisant une clé API le
            reçoivent toujours dans son intégralité ; les utilisateurs de la
            console sans `read:webhooks` reçoivent une chaîne vide.
        capture_method:
          type: string
          enum:
            - MOBILE
            - MOBILE_AND_DESKTOP
          description: >-
            Paramètre d'application obsolète. Le workflow de vérification ne le
            lit pas : les options de capture sont configurées par workflow.
        data_retention_months:
          type: integer
          nullable: true
          minimum: 1
          maximum: 120
          description: >-
            Délai de suppression automatique. Les sessions de vérification des
            utilisateurs créées il y a plus de ce nombre de mois (un mois
            correspond à 30 jours) sont supprimées automatiquement, et cette
            suppression est irréversible. `null` signifie que les sessions ne
            sont jamais supprimées automatiquement. Voir [Conservation des
            données](https://docs.didit.me/fr/console/data-retention).
        face_retention_policy:
          type: string
          enum:
            - delete_with_session
            - retain_until_user_deleted
          description: >-
            Ce qui advient de l'embedding facial d'une session lorsque la
            session est supprimée. `delete_with_session` (par défaut) le
            supprime avec la session. `retain_until_user_deleted` correspond à
            l'option de [conservation des gabarits
            biométriques](https://docs.didit.me/fr/console/data-retention#conservation-des-gabarits-biométriques)
            : un gabarit biométrique sans image lié à l'User est géré séparément
            jusqu'à ce que sa période de conservation prenne fin, que l'User
            soit supprimé ou que vous le purgiez.
        face_retention_days:
          type: integer
          nullable: true
          minimum: 1
          maximum: 3650
          description: >-
            Durée de conservation, en jours, des gabarits biométriques sous
            `retain_until_user_deleted`. Requis lorsque cette politique est
            définie.
        biometric_consent_mode:
          type: string
          enum:
            - auto
            - always
            - never
          description: >-
            Moment où le flux hébergé et les SDK natifs demandent à la personne
            son consentement biométrique explicite avant une capture faciale.
            `auto` (par défaut) ne le demande que lorsqu'un déclencheur
            s'applique : un État déclaré, l'IP de la personne ou l'émetteur du
            document d'identité se trouve dans l'Illinois, au Texas ou au
            Colorado, ou la personne semble être aux États-Unis sans État connu.
            `always` le demande à chaque personne dont le workflow capture un
            visage. `never` n'affiche jamais l'étape, et vous recueillez
            vous-même le consentement avant le selfie. Chaque modification est
            enregistrée dans le journal d'audit. Voir [Consentement
            biométrique](https://docs.didit.me/fr/getting-started/biometric-consent).
        available_events:
          type: array
          description: >-
            Chaque type d'événement auquel une destination peut s'abonner, avec
            un libellé d'affichage.
          items:
            type: object
            required:
              - value
              - label
            properties:
              value:
                $ref: '#/components/schemas/WebhookEvent'
              label:
                type: string
                description: Libellé d'affichage, par exemple `Session status updated`.
        allowed_return_hosts:
          type: array
          maxItems: 20
          description: >-
            Noms d'hôte (correspondance exacte, HTTPS uniquement) vers lesquels
            une vérification de portefeuille Digital ID autonome peut renvoyer
            l'utilisateur avec son `return_url`. Votre domaine en marque blanche
            est également toujours autorisé. Voir [Enregistrer votre destination
            de
            retour](https://docs.didit.me/fr/standalone-apis/digital-id-wallets#enregistrer-votre-destination-de-retour).
          items:
            type: string
            maxLength: 253
        endpoints:
          type: array
          description: >-
            Chaque destination de webhook de l'application, de la plus ancienne
            à la plus récente, chacune avec son secret de signature. En lecture
            seule ici : gérez les destinations avec les endpoints
            `/v3/webhook/destinations/`.
          items:
            $ref: '#/components/schemas/WebhookConfigDestination'
        allowed_domains:
          type: array
          maxItems: 50
          items:
            type: string
            maxLength: 300
          description: >-
            Origines (par exemple `https://app.example.com` ; `http` uniquement
            pour `localhost`) dans lesquelles le flux de vérification hébergé
            peut être intégré et vers lesquelles il peut rediriger l'utilisateur
            avec un rappel de session. Les appels de serveur à serveur ne sont
            pas affectés. Une liste vide signifie qu'il n'y a aucune
            restriction. Didit enregistre chaque origine en minuscules sans port
            par défaut. Une entrée non valide échoue avec une erreur `400` sur
            `allowed_domains`.
          example:
            - https://app.example.com
    WebhookEvent:
      type: string
      description: >-
        Nom d'événement webhook pris en charge. Utilisez ces chaînes exactes
        dans `subscribed_events` ; les valeurs non prises en charge sont
        rejetées.
      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
    WebhookConfigDestination:
      type: object
      description: >-
        Une destination de webhook telle que répertoriée dans la configuration
        des webhooks, sans métriques de livraison. `GET
        /v3/webhook/destinations/{destination_uuid}/` ajoute son récapitulatif
        de livraison.
      required:
        - uuid
        - label
        - url
        - enabled
        - webhook_version
        - secret_shared_key
        - subscribed_events
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          format: uuid
          description: ID de destination.
        label:
          type: string
          maxLength: 255
          description: Nom lisible par l'utilisateur.
        url:
          type: string
          format: uri
          maxLength: 2000
          description: Endpoint HTTPS auquel Didit envoie les événements.
        enabled:
          type: boolean
          description: '`false` suspend les livraisons vers cette destination.'
        webhook_version:
          type: string
          enum:
            - v1
            - v2
            - v3
          description: Version du payload envoyée à cette destination.
        secret_shared_key:
          type: string
          description: "Le secret de signature de cette destination (token de 43 caractères compatible avec les URL). Vérifiez chaque webhook avec le secret de la destination à laquelle il a été envoyé. Les appelants par clé API le reçoivent toujours dans son intégralité\_; les utilisateurs de la console sans `read:webhooks` reçoivent une chaîne vide."
        subscribed_events:
          type: array
          uniqueItems: true
          description: >-
            Types d'événements livrés à cette destination. Vide lorsque la
            destination a été créée sans événements, auquel cas elle ne reçoit
            rien.
          items:
            $ref: '#/components/schemas/WebhookEvent'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        La clé API de votre application, issue de Développeurs -> Clés API dans
        la Business Console. La clé principale dispose d'un accès complet. Une
        clé nommée peut être restreinte : aucun, lecture ou écriture par
        ressource, limitée à certains workflows ou aux sessions approuvées, à
        une liste d'adresses IP et à une date d'expiration. 401 signifie que la
        clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a
        été envoyée, que la clé n'a pas accès à cette ressource ou action, ou
        que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur
        une route de session signifie que la session est hors des workflows ou
        des statuts de la clé. Une clé sans accès aux médias reçoit les URL
        d'images, de vidéos et de PDF à null, et une clé sans accès en écriture
        aux sessions reçoit les liens et tokens de session à null. Voir
        https://docs.didit.me/console/api-keys.

````

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