Plateforme

API et webhooks

Tout ce que fait le tableau de bord passe par la même API REST que vous pouvez appeler. Les événements sortent sous forme de webhooks signés, réessayés jusqu’à ce qu’ils arrivent.

Authentification

  • Le cookie de session émis par le flux de code à usage unique, ou le même jeton signé dans un en-tête bearer.
  • Un jeton d’API personnel dans un en-tête bearer. Il agit comme son titulaire, de sorte que chaque contrôle de rôle et de périmètre s’applique sans changement ; les jetons à portée lecture sont refusés pour les modifications.
  • Chaque route déclare son rôle minimal : tout utilisateur authentifié, manager et plus, administrateur, ou superadministrateur. Les routes de données limitent ensuite à l’arborescence de l’appelant.
curl -H "Authorization: Bearer <token>" https://inroots.example.com/api/export/hours.csv?from=2026-08-01&to=2026-08-31

La découvrir

Le schéma OpenAPI est généré à partir des routes et servi, réservé aux administrateurs, avec un explorateur interactif dans le produit. Les résumés et descriptions proviennent des définitions de routes, de sorte qu’ils ne peuvent pas diverger du code.

GET /api/openapi.json
GET /api/docs
Efficacité, Objectifs, Santé au travail, Chronologiescores, cibles, références, objectifs, signaux sur les personnes, risque de surmenage, preuves d’une journée
Congés, Astreinte, Équipes, Jours fériésrègles et demandes de congé, rotations et couverture, paramètres d’équipe, calendriers
DM, Contact, Consentementenvois et planifications, coordonnées, accords et signatures
Fournisseurs d’IA, Rapports, Alerteschangement de fournisseur et ordre de bascule, exports PDF, transport e-mail
Intégrations, Exportjetons, webhooks, CSV
MLpredict, feedback, decisions, metrics, models, promote, train

Webhooks sortants

  • Créés avec une URL cible et un secret qui n’est jamais renvoyé ensuite ; la liste n’indique que si un secret existe.
  • Chaque livraison porte un en-tête de signature avec un HMAC SHA-256 sur le corps exact, un en-tête d’événement et un identifiant de livraison pour la déduplication.
  • L’émission s’inscrit dans la transaction de l’appelant, de sorte qu’un événement n’est jamais livré pour une décision annulée, et qu’un point de terminaison récepteur hors service ne bloque jamais une approbation.
  • Une tâche de vidage publie chaque minute et réessaie à 1, 5, 15, 60 et 360 minutes avant d’abandonner avec la raison enregistrée. Vingt échecs consécutifs ouvrent le circuit du point de terminaison jusqu’à ce qu’un administrateur le réactive.
  • Le bouton Tester met en file un ping signé par le chemin réel. Événements actuellement émis : pto.approved et pto.declined.
expected = hmac.new(secret, body, sha256).hexdigest()
compare(header, "sha256=" + expected)

Entrant

  • Événements et actions interactives Slack ; activités Teams ; le webhook WhatsApp.
  • Tickets de support de systèmes externes, dédupliqués sur une référence externe pour que les suites mettent à jour un seul ticket.
  • Tout webhook peut déclencher un flux n8n qui rappelle l’API avec un jeton.

Flux en direct

Un flux d’événements envoyés par le serveur transporte les événements de présence et les notifications personnelles vers le tableau de bord et vers tout client que vous écrivez. Les événements personnels n’atteignent que la personne concernée.

GET /api/events