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

# Événements

> Les notifications émises par la plateforme et leurs payloads.

Tous les événements partagent la même enveloppe :

| Champ            | Type           | Description                                    |
| ---------------- | -------------- | ---------------------------------------------- |
| `eventId`        | string         | Identifiant unique de déduplication (`evt_…`). |
| `event`          | string         | Type d'événement.                              |
| `occurredAt`     | date ISO       | Date d'émission.                               |
| `consultationId` | string         | Résultat concerné.                             |
| `workflowId`     | string         | Workflow concerné.                             |
| `externalRef`    | string \| null | Votre référence de dossier.                    |
| `verdict`        | string         | Constat technique — immuable.                  |
| `decision`       | string \| null | Décision du workflow selon vos règles.         |

## verification.completed

Émis à la fin de chaque parcours — y compris quand le document n'a pas pu
être lu (`verdict: "analyse_impossible"`, le dossier passe alors en revue
humaine côté plateforme).

```json theme={null}
{
  "eventId": "evt_9f6f0f0a-4c1e-4b7a-9c2d-1a2b3c4d5e6f",
  "event": "verification.completed",
  "occurredAt": "2026-07-17T10:00:00.000Z",
  "consultationId": "CSL-20260717-3F2A91",
  "workflowId": "WFL-20260706-BEF798",
  "externalRef": "DOSSIER-88412",
  "verdict": "conforme",
  "decision": "conforme"
}
```

## verification.reviewed

Émis quand un document passé en revue humaine (résultat « à vérifier »,
workflow en révision systématique, ou document non lu) est tranché par
l'équipe conformité. Le verdict d'analyse, lui, ne change jamais.

```json theme={null}
{
  "eventId": "evt_1b2c3d4e-5f6a-4b7c-8d9e-0a1b2c3d4e5f",
  "event": "verification.reviewed",
  "occurredAt": "2026-07-18T09:30:00.000Z",
  "consultationId": "CSL-20260717-3F2A91",
  "workflowId": "WFL-20260706-BEF798",
  "externalRef": "DOSSIER-88412",
  "verdict": "non_conforme",
  "decision": "a_verifier",
  "review": { "status": "accepted", "reviewedAt": "2026-07-18T09:30:00.000Z" }
}
```

| Champ               | Valeurs                | Description                         |
| ------------------- | ---------------------- | ----------------------------------- |
| `review.status`     | `accepted`, `rejected` | Décision de traitement de l'équipe. |
| `review.reviewedAt` | date ISO               | Date de la décision.                |

### Et les images ?

Les webhooks ne transportent **jamais** d'images ni de données du document.
Si votre organisation opère sa propre cellule de revue, récupérez-les par
l'API après notification — voir « Télécharger une image » dans la
[Référence API](/api-reference). En rapatriant une copie, votre entreprise
en devient responsable de traitement ; chaque téléchargement est journalisé.

## batch.completed

Émis à la fin d'un [lot d'analyses](/analyses/lots), si le lot porte une
`webhookUrl`. Signé et livré comme les autres événements ; relisez ensuite
le détail sur `GET /api/v1/batches/{id}`.

```json theme={null}
{
  "eventId": "evt_7c8d9e0f-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
  "event": "batch.completed",
  "occurredAt": "2026-07-19T04:12:00.000Z",
  "batchId": "BAT-1CBEA150-E475",
  "externalRef": "CAMPAGNE-2026-T3",
  "counts": {
    "total": 200,
    "pending": 0,
    "succeeded": 197,
    "errored": 3,
    "canceled": 0,
    "expired": 0
  }
}
```

## verification.test

Même enveloppe que `verification.completed`, avec des identifiants factices
et `externalRef: "TEST"`. Déclenché par le bouton de test de l'onglet
Diffusion — idéal pour valider votre branchement de bout en bout.
