Type de commerce, catégorie publique et établissements en brouillon
Nouveaux champs sur GET /api/v1/establishments/{slug}
Deux champs viennent préciser la nature de l’établissement :business_type— type structurel de commerce, valeur d’une liste fermée :restaurant,wine_shop,bar,cafe,bakery,caterer,retail_store. Toujours renvoyé et jamaisnull. Les établissements existants ont été initialisés àrestaurant.public_category— libellé libre affiché publiquement (ex. « Néo bistrot & Cave à vin »),nulls’il n’est pas renseigné. C’est le champ à afficher côté site.
Réponse 200 (extrait)
business_type étant issu d’une liste fermée, traitez toute valeur inconnue comme un cas de repli plutôt que de l’afficher telle quelle : de nouveaux types pourront être ajoutés sans changement de version.Établissements en brouillon masqués
Un établissement qui n’a pas encore été activé (statut brouillon) n’est plus exposé publiquement, même si son API est activée et que la clé est valide :- les quatre endpoints de l’API répondent
404Not found; - les redirections
/r/master_menuet/r/menusrépondent404.
Renommage du réglage de redirection des fichiers de menu
Le réglage qui autorise la redirection
/r/menus s’appelle désormais menu_redirect_enabled (auparavant redirect_enabled), pour le distinguer des autres redirections.Il s’agit d’un renommage interne du réglage : l’URL, les paramètres et le comportement de l’endpoint sont inchangés. Rien à modifier côté intégration — l’option reste opt-in et activable par l’administrateur de l’établissement.Lancement de l'API v1
Première version publique de la plateforme d’intégration Le Commis. Un établissement peut désormais diffuser ses informations vers des sites externes via trois canaux complémentaires.
API 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}— fichier de la Carte unifié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.