> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lecommis.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Liste les menus actuellement publiés sur le web



## OpenAPI

````yaml /api-reference/openapi.yaml get /api/v1/establishments/{establishment_slug}/menus
openapi: 3.0.1
info:
  title: Le Commis API
  version: v1
  description: >-
    API permettant aux sites externes de lire les informations à jour d'un
    établissement.
servers:
  - url: https://app.lecommis.fr
    description: Production
security: []
paths:
  /api/v1/establishments/{establishment_slug}/menus:
    get:
      tags:
        - Menus
      summary: Liste les menus actuellement publiés sur le web
      parameters:
        - name: establishment_slug
          in: path
          required: true
          schema:
            type: string
          description: Slug de l'établissement
        - name: locale
          in: query
          required: false
          schema:
            type: string
            enum:
              - fr
              - en
          description: >-
            Langue du contenu et filtre des fichiers. Absent, renvoie tous les
            fichiers.
      responses:
        '200':
          description: Liste des menus courants
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenusIndex'
        '401':
          description: Clé API invalide
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Établissement introuvable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Quota de requêtes dépassé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - api_key: []
components:
  schemas:
    MenusIndex:
      type: object
      additionalProperties: false
      required:
        - content_revision
        - menus
      properties:
        content_revision:
          type: integer
          format: int64
          example: 67
          description: Révision monotone du contenu public de l'établissement.
        master_menu_url:
          type: string
          nullable: true
          example: https://app.lecommis.fr/files/au-bistrot/carte-unifiee.pdf
          description: URL de la Carte unifiée (PDF combiné), null si absente.
        menus:
          type: array
          items:
            $ref: '#/components/schemas/Menu'
    ApiError:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: string
    Menu:
      type: object
      additionalProperties: false
      required:
        - menu_type
        - reference_date
        - assets
      properties:
        menu_type:
          $ref: '#/components/schemas/MenuType'
        reference_date:
          type: string
          format: date
          nullable: true
          example: '2026-06-13'
        assets:
          type: array
          items:
            $ref: '#/components/schemas/MenuAsset'
    MenuType:
      type: object
      additionalProperties: false
      required:
        - slug
        - name
        - kind
        - source
      properties:
        slug:
          type: string
          example: menu-du-midi
        name:
          type: string
          example: Menu du midi
        kind:
          type: string
          enum:
            - menu
            - card
          example: menu
        source:
          type: string
          enum:
            - generated
            - uploaded
          example: generated
          description: >-
            Origine du contenu. `generated` : menu structuré (sections et items
            disponibles). `uploaded` : menu importé en image ou PDF, `sections`
            est alors vide et le contenu se trouve uniquement dans `assets`.
    MenuAsset:
      type: object
      additionalProperties: false
      required:
        - language_scope
        - urls
      properties:
        language_scope:
          type: string
          enum:
            - fr
            - en
            - fr_en
          example: fr
        urls:
          type: array
          items:
            type: string
            example: https://app.lecommis.fr/menus/au-bistrot/menu-du-midi/web_fr.png
          description: URLs des fichiers du menu (un menu peut comporter plusieurs pages).
  securitySchemes:
    api_key:
      type: apiKey
      name: X-Api-Key
      in: header
      description: Clé API de l'établissement. Elle doit rester côté serveur.

````