Skip to content

Webhooks ​

La plateforme notifie les organisations émettrices de l'avancement de leurs transmissions batch par des webhooks HTTP signés, livrés par la passerelle de webhooks intégrée (Svix). Chaque organisation enregistre un ou plusieurs endpoints (URLs de réception) ; la plateforme y pousse les événements avec ré-essais automatiques et signature HMAC.

Deux écrans couvrent le sujet côté administrateur :

ÉcranURLVocation
Suivi des évènements webhook/notificationsRecherche cross-organisation des notifications émises par la plateforme. Menu Suivi des activités ▸ Webhook events.
Onglet Webhooks de la fiche organisation/organizations/{code}/webhooksGestion des endpoints de réception d'une organisation (URL, filtres, secret de signature).

La synchronisation du catalogue d'événements se pilote depuis le Catalogue de services.

Fonctionnement ​

  • Qui émet : le module mi-transmission (flux batch asynchrones). Les modules synchrones (mi-consultation-droits, mi-adjudication) n'émettent pas de webhook — l'appelant a déjà la réponse dans la foulée.
  • Qui reçoit : l'organisation émettrice du batch, sur ses endpoints enregistrés. Une organisation qui émet ses batches par SFTP ne reçoit pas de webhook : elle reçoit un fichier de retour déposé dans son dossier outbox SFTP.
  • Catalogue : chaque module déclare son catalogue d'événements à son enregistrement sur la plateforme ; ce catalogue alimente le sélecteur de filtres des endpoints et est miroité vers la passerelle.
  • Fiabilité : émission garantie at-least-once (outbox côté module). Chaque événement porte un Event ID stable : une re-livraison du même événement porte le même identifiant, ce qui permet au partenaire de dédupliquer.
  • Ré-essais : tant que l'endpoint ne répond pas en 2xx, la passerelle ré-essaie automatiquement avec des délais croissants (de quelques secondes à plusieurs heures). Chaque tentative est visible dans le volet de détail.

Événements du catalogue ​

Six événements, tous émis par mi-transmission :

ÉvénementCatégorieÉmis quand
batch.acceptedingestionBatch REST validé et découpé — le fan-out vers les destinations démarre.
batch.child.delivereddeliveryUn lot a été livré à une destination (réponse 2xx REST, ou dépôt de fichier SFTP).
batch.child.rejecteddeliveryLa destination a refusé le lot (erreur 4xx applicative).
batch.child.faileddeliveryÉchec définitif de livraison après épuisement des ré-essais.
batch.completeddeliveryTous les lots du batch ont un état terminal — résumé final avec compteurs.
batch.unroutableoperationalConfiguration de la destination introuvable au moment du dispatch.

Pas de batch.rejected

Un rejet de validation à l'ingestion REST est connu synchroniquement (réponse 4xx immédiate, ou 202 avec childCount: 0) : il n'est pas dupliqué en webhook. Les webhooks ne notifient que des issues asynchrones.

Contenu du payload ​

ChampPrésenceDescription
eventTypetoujoursCode de l'événement (repris dans le corps pour faciliter le traitement).
correlationIdtoujoursIdentifiant de la transmission — la même clé que sur la page Transmissions.
batchId / childIdselon l'événementIdentifiants du batch et du lot destination.
destinationHandleévénements batch.child.* et batch.unroutableCode de l'organisation destination concernée.
resourceCodeévénements enfantCode de ressource du flux (POPULATION…).
status / errorévénements enfantÉtat du lot et détail d'erreur le cas échéant (ex. HTTP 422).
transportselon l'événementCanal concerné (REST / SFTP).
recordCount / destinationCountbatch.acceptedVolumétrie du batch et nombre de destinations.
delivered / rejected / failed / totalbatch.completedCompteurs finaux du batch.

Écran « Suivi des évènements webhook » (/notifications) ​

URL : /notifications • Menu : Suivi des activités ▸ Webhook events • Permission requise : notification_read_all (administrateur plateforme uniquement)

Suivi des évènements webhook — groupe de corrélation déplié

Filtres ​

  • Organisation — obligatoire : la liste affiche les notifications émises vers une organisation à la fois. À l'ouverture, la page pré-sélectionne l'organisation dont l'activité webhook est la plus récente (bandeau « Vous consultez les webhooks émis vers … »).
  • Période — Dernier jour, 7 / 30 / 60 / 90 derniers jours.
  • Recherche — filtre les lignes déjà chargées (correlationId, type d'événement, Message ID, Event ID).

Colonnes ​

ColonneVisible par défautSignification
Correlation ID✔ (épinglée)Badge copiable — même clé que la page Transmissions.
Type d'événement✔Code du catalogue (batch.child.delivered…). La ligne-tête d'un groupe porte une pastille +N.
Module / MI source✔Module déclencheur, résolu via le catalogue (batch.* → mi-transmission).
Destinataire✔Organisation réceptrice des webhooks (l'émettrice du flux).
Message ID / Event ID✘Identifiants techniques de la passerelle (sélecteur de colonnes).
Horodatage✔Date et heure d'émission.
Actions✔👁️ Voir les détails.

Groupement par corrélation ​

Les événements d'une même transmission sont regroupés par correlationId : une ligne-tête (l'événement le plus récent) avec un bouton + qui déplie les autres événements du groupe. Le groupement s'applique aux lignes chargées — le bouton Afficher plus de résultats en pied de tableau complète les groupes (pagination par curseur, pas de total : le compteur indique « N affichées »).

Volet de détail ​

Volet de détail d'une notification webhook

Double-clic sur une ligne ou 👁️ : volet avec le type d'événement, les identifiants, le Payload (JSON, bouton Copier) et la section Tentatives de livraison :

  • une carte par tentative : badge de statut (Succès 🟢, En attente, En cours, Échec 🔴, Annulé), code HTTP, latence, horodatage, URL de l'endpoint visé, bloc dépliable Voir la réponse ;
  • Prochaine tentative affichée quand un ré-essai est planifié ;
  • bouton Rafraîchir pour recharger les tentatives.

En pied de volet, Replayer manuellement (permission webhook_replay) ré-émet la notification vers tous les endpoints actifs de l'organisation, après confirmation.

Onglet « Webhooks » de la fiche organisation ​

URL : /organizations/{code}/webhooks • Permission requise : webhook_read (+ webhook_create, webhook_update, webhook_delete pour agir)

Onglet Webhooks d'une organisation

Gestion des endpoints de réception de l'organisation. Fonctionnellement identique à la page Webhooks du guide organisation — s'y référer pour le détail des colonnes, du formulaire et de la gestion du secret. À retenir côté administrateur :

  • Le bouton Nouveau endpoint ouvre le formulaire : URL du webhook (HTTPS, joignable par la passerelle), Description, Filtre d'eventTypes (sélection dans le catalogue — vide = tous les événements sont livrés), bascule Désactiver cet endpoint.
  • À la création, le secret de signature HMAC est révélé une seule fois — à transmettre au partenaire.
  • Rotater le secret : l'ancien secret reste valide 24 h pour laisser le partenaire basculer.
  • Si l'organisation est inactive ou en provisioning, l'onglet passe en lecture seule (l'affichage du secret reste possible).

Voir aussi ​

Documentation ASACI Santé Connect