Première version publique de la plateforme d’intégration Le Commis. Un établissement peut désormais diffuser ses informations vers des sites externes (site vitrine, build statique, application) via trois canaux complémentaires.
API publique v1 (lecture seule)
Quatre endpoints JSON, tous authentifiés par le headerX-Api-Key et scopés sur le slug de l’établissement :Établissement
GET /api/v1/establishments/{slug} — identité, contact, localisation, logo.Horaires
GET /api/v1/establishments/{slug}/hours — horaires réguliers et exceptionnels.Liste des menus
GET /api/v1/establishments/{slug}/menus — menus web et fichiers du menu (champ assets) associés.Détail d'un menu
GET /api/v1/establishments/{slug}/menus/{menu_type_slug} — sections et items.- Authentification : header
X-Api-Key, clé serveur-à-serveur propre à chaque établissement. L’API doit être activée (public_api_enabled) dans les réglages de l’établissement. - Quota de requêtes : 120 requêtes/heure par clé et 500 requêtes/heure par IP. Un dépassement renvoie
429 Rate limit exceeded. - Détection de changement : chaque réponse expose un champ
content_revision(entier monotone par établissement) pour invalider un cache ou déclencher un re-fetch.
Le champ
content_revision est le moyen recommandé pour savoir si vous devez re-lire l’API : conservez la dernière valeur connue et ne rechargez que lorsqu’elle augmente.Redirections de fichiers
Des URLs plug-and-play en302 à coller directement dans une balise <img>, <iframe> ou un lien :GET /r/master_menu?establishment={slug}— PDF de la Carte unifiée combinée (toujours servi).GET /r/menus?establishment={slug}&menu_type={menu_type_slug}&locale={fr|en}— fichier web du menu courant (nécessiteredirect_enabled).
Webhooks sortants
Un événement disponible :establishment.content_updated. Le webhook est un signal (pas un transport de contenu) — le payload indique quelles ressources ont changé et la nouvelle content_revision, à charge pour le récepteur de re-lire l’API.- Signature HMAC-SHA256 via le header
X-LeCommis-Signature, vérifiable à temps constant. - 5 tentatives avec backoff croissant ; debounce de 30 s qui fusionne les changements rapprochés.
- HTTPS obligatoire côté récepteur.
Le webhook ne transporte jamais le contenu lui-même : à réception, vérifiez la signature puis re-lisez les endpoints concernés pour récupérer les données à jour.
i18n
Contenu de menu disponible en français (défaut) et anglais via le query param?locale=fr|en sur les endpoints menus. Fallback automatique en → fr sur le contenu manquant.