Skip to main content
L’API menus expose deux endpoints : la liste des menus web et le détail d’un menu (avec ses sections et items). Les deux acceptent ?locale=fr|en. La liste expose également l’URL de la Carte unifiée (champ master_menu_url) : un fichier (PDF ou image) téléversé par l’établissement.
Le menu_type_slug est stable par établissement (ex. menu-du-midi). Vous pouvez le coder en dur dans votre intégration. Si le menu n’existe pas (ou n’a pas de version courante), l’API renvoie 404 {"error":"Not found"}.

Origine du menu

Un menu a l’une de deux origines, signalée par le champ menu_type.source : generated (menu structuré dans Le Commis — sections et items renseignés) ou uploaded (menu importé en image ou PDF — sections vide, contenu uniquement dans assets). L’API n’expose que le menu courant de chaque type de menu, et uniquement les types de menu diffusés sur le web. Menu courant. Un type de menu (ex. « Menu du midi ») peut avoir plusieurs versions datées. Le menu courant est la version en vigueur aujourd’hui :
  • Pour un menu sans rotation dans le temps, c’est simplement sa dernière version.
  • Pour un menu daté (rotation quotidienne, hebdomadaire ou mensuelle), c’est la version applicable à la date du jour ; à défaut, la dernière version passée est servie.
Méthode de diffusion. Un type de menu peut être diffusé sur plusieurs canaux (web, impression, réseaux sociaux). Seuls les menus dotés d’une méthode de diffusion web sont actifs et renvoyés par l’API (et par les redirections) : un menu sans diffusion web n’apparaît pas dans la réponse.

Langue (?locale)

Ajoutez ?locale=fr ou ?locale=en pour choisir la langue de la réponse. Deux valeurs seulement sont acceptées : fr et en.
  • Valeur absente ou non reconnue → l’API répond en français.
  • Le paramètre agit sur deux choses : il traduit le texte (noms et descriptions des items, noms des sections) et il filtre les fichiers du menu selon la langue (voir Fichiers du menu).
  • Si une traduction anglaise manque, le texte concerné retombe en français (en → fr). Ce repli ne s’applique pas aux fichiers.
Voir Sélection de la langue.

Exemple

Réponse 200

Champs de la réponse

string | null
URL du fichier de la Carte unifiée de l’établissement (PDF ou image), ou null s’il n’y en a pas.
array
Liste des menus web courants.
integer
Numéro de révision du contenu (commun à toutes les ressources). Voir content_revision.

Fichiers du menu (champ assets)

Chaque menu porte un tableau assets. Une entrée du champ assets décrit un ou plusieurs fichiers du menu (un menu peut s’étaler sur plusieurs pages).
string
Langues couvertes par le fichier : fr, en, ou fr_en (un fichier fr_en couvre les deux langues).
array
Tableau d’URLs des fichiers. Plusieurs entrées = plusieurs pages.
Formats et taille. Chaque fichier est une image (PNG, JPEG, WebP) ou un PDF, d’une taille maximale de 10 Mo. Un même menu peut comporter plusieurs fichiers (une entrée du tableau urls par page).
Sans ?locale, tous les language_scope sont renvoyés. Avec ?locale, seuls les fichiers correspondant à la langue demandée (y compris fr_en) sont retournés.
Il n’y a aucun repli de langue sur les fichiers du menu. Un fichier peut exister en fr et être absent en en. Contrôlez toujours language_scope avant d’afficher un fichier, et prévoyez le cas où aucun fichier ne correspond à la langue demandée. Voir Comportement de repli.
Pour servir un fichier du menu directement via une URL plug-and-play (<img>, <iframe>…) sans appeler l’API, voyez les redirections de fichiers du menu. En mode redirection, seule la première page du menu est servie ; pour récupérer toutes les pages, utilisez le champ urls de l’API.