Webhooks sortants

Envoyez les événements FreeMaint vers vos systèmes externes en temps réel

5 min de lecture
Imprimer cette section

Les webhooks permettent à FreeMaint d'envoyer un POST vers une URL que vous contrôlez dès qu'un événement se produit, pour qu'un autre système (ERP, facturation, stock, comptabilité, canal de discussion) reste à jour sans ressaisie. Configuration dans /company-settings/webhooks. Starter est plafonné à 100 livraisons/jour ; Business et au-delà sont illimités. Pour la référence complète des charges utiles, voir API & GraphQL > Webhooks.

Événements disponibles

  • work_order.created — un ordre de travail a été créé
  • work_order.completed — un ordre de travail est passé à Terminé
  • work_order.status_changed — un ordre de travail a changé de statut, quel qu'il soit ; work_order.completed se déclenche toujours en plus
  • request.created — une demande de maintenance a été soumise
  • request.status_changed — une demande a été approuvée, refusée ou annulée
  • part.low_stock — une pièce est descendue à son point de commande ou en dessous
  • part.out_of_stock — une pièce est tombée à zéro
  • part.low_stock_summary — une fois par jour, les pièces à leur point de commande ou en dessous, y compris celles qui n'ont jamais bougé
  • part.out_of_stock_summary — une fois par jour, les pièces à zéro
  • part.consumed — consommée sur un ordre de travail, ou rendue
  • compliance.chain_divergence — la chaîne de hachage d'audit est rompue (Enterprise)
  • asset.downtime_started — un arrêt machine a été ouvert
  • asset.downtime_ended — un arrêt machine a été clos
  • report.daily_summary — les travaux terminés de la journée, une fois par jour à l'heure que vous choisissez
  • purchase_order.created — un bon de commande a été créé
  • purchase_order.status_changed — un bon de commande a changé de statut (approuvé, commandé, annulé…)
  • purchase_order.received — une livraison a été réceptionnée sur un bon de commande, y compris partielle

Sémantique de livraison

  • POST avec un corps JSON : { event, timestamp, data }
  • En-tête X-FreeMaint-Signature — t=<secondes unix>,v1=<hex>, où v1 est le HMAC-SHA256 de « <t>.<corps brut> » avec votre secret de webhook comme clé. Vérifiez-le à chaque requête, sur le corps brut
  • X-FreeMaint-Event et X-FreeMaint-Delivery-Id sont envoyés en complément
  • Les erreurs réseau et les 5xx sont réessayés jusqu'à 3 fois avec back-off exponentiel (environ 2 s, 4 s, 8 s) ; un 4xx est un refus définitif et n'est pas réessayé
  • Chaque tentative est journalisée sous le webhook avec son statut, son code de réponse et son nombre de tentatives — et toute livraison terminée peut y être rejouée
  • Photos facultatives : avec « Inclure les photos », les événements "work_order" et "request" portent jusqu'à 4 liens d'images dans un champ "photos", valables 7 jours pour toute personne qui les possède — à activer uniquement pour un point de terminaison que vous contrôlez

Configuration

  1. Ouvrir /company-settings/webhooks — Nécessite la permission de paramétrage de l'entreprise, ou la permission « Gérer les intégrations ».
  2. Cliquer sur « Ajouter un webhook » — Donnez-lui un nom, une URL https:// et cochez les événements voulus.
  3. Copier le secret de signature — Il n'est affiché qu'UNE fois à la création. Vous pourrez en générer un nouveau via « Régénérer le secret », ce qui invalide l'ancien.
  4. Surveiller les livraisons — Ouvrez l'historique de livraison du webhook pour confirmer l'arrivée des événements et rejouer ce qui a échoué.

Plafonds par offre

  • Starter — 100 livraisons/jour et par entreprise (compteur remis à zéro à 00:00 UTC)
  • Business — illimité
  • Enterprise — illimité
  • Le compteur porte sur les TENTATIVES : trois webhooks sur le même événement consomment trois unités

Astuce

Vérifiez toujours X-FreeMaint-Signature côté serveur, sur le corps brut de la requête — sans cela, impossible de distinguer un vrai événement FreeMaint d'un appel usurpé, et un part.consumed falsifié pourrait mouvementer le stock de votre ERP.

Cette page vous a-t-elle été utile ?