# Événements des webhooks

Chaque message contient `type`, `timestamp` (ISO 8601) et `data`. `data.workspace` est l’identifiant court de l’espace. Les montants sont en centimes de CHF, les dates au format ISO 8601.

| Événement             | Quand                                                     | Champs de `data`                                                                                                              |
| --------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `invoice.issued`      | Une facture est émise                                     | `invoice_id`, `number`, `total`, `currency`, `project_id`, `project_name`                                                     |
| `invoice.paid`        | Une facture est marquée payée, ou payée en ligne          | `invoice_id`, `number`, `total`, `currency`, `online`                                                                         |
| `signature.completed` | Un client signe ou refuse un document                     | `request_id`, `status` (`signed`, `declined`), `document_title`, `document_sha256`, `qualified`, `project_id`, `project_name` |
| `request.created`     | Un client fait une demande                                | `request_id`, `title`, `project_id`, `project_name`                                                                           |
| `action.submitted`    | Un client rend une action                                 | `action_id`, `title`, `project_id`, `project_name`                                                                            |
| `meeting.scheduled`   | Une réunion est planifiée                                 | `meeting_id`, `title`, `starts_at`, `duration_minutes`, `project_id`, `project_name`                                          |
| `prospect.created`    | Un prospect est ajouté à la main, ou reçu d’un formulaire | à la main : `prospect_id`, `company`, `contact_name`, `email`, `source` ; formulaire : `count`, `source`                      |
| `project.created`     | Un projet est créé                                        | `project_id`, `name`, `client_id`, `client_name`                                                                              |

`qualified` vaut `true` pour une signature qualifiée chez Skribble.

## En-têtes

| En-tête             | Contenu                                                                   |
| ------------------- | ------------------------------------------------------------------------- |
| `webhook-id`        | `msg_…`, le même à chaque essai et au renvoi                              |
| `webhook-timestamp` | Secondes depuis 1970, renouvelé à chaque essai                            |
| `webhook-signature` | `v1,<base64>` : HMAC-SHA256 de `<webhook-id>.<webhook-timestamp>.<corps>` |
| `content-type`      | `application/json`                                                        |

## Limites

|                     |                                                 |
| ------------------- | ----------------------------------------------- |
| Webhooks par espace | 20                                              |
| Délai de réponse    | 10 secondes                                     |
| Essais              | 8, sur environ 28 heures                        |
| Journal             | 30 jours                                        |
| Adresse             | https, port 443, nom public, pas de redirection |
