> ## 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.

# Renvoie le menu courant d'un type de menu



## OpenAPI

````yaml /api-reference/openapi.yaml get /api/v1/establishments/{establishment_slug}/menus/{menu_type_slug}
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/{menu_type_slug}:
    get:
      tags:
        - Menus
      summary: Renvoie le menu courant d'un type de menu
      parameters:
        - name: establishment_slug
          in: path
          required: true
          schema:
            type: string
          description: Slug de l'établissement
        - name: menu_type_slug
          in: path
          required: true
          schema:
            type: string
          description: Slug du type de menu
        - name: locale
          in: query
          required: false
          schema:
            type: string
            enum:
              - fr
              - en
          description: >-
            Langue des sections et des items et filtre des fichiers. Absent,
            renvoie le contenu fr et tous les fichiers.
      responses:
        '200':
          description: Menu trouvé
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuDetail'
        '401':
          description: Clé API invalide
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '404':
          description: Type de menu 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:
    MenuDetail:
      type: object
      additionalProperties: false
      required:
        - content_revision
        - menu_type
        - reference_date
        - assets
        - sections
      properties:
        content_revision:
          type: integer
          format: int64
          example: 67
        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'
        sections:
          type: array
          description: >-
            Sections du menu, ordonnées, avec leurs items. Vide (`[]`) lorsque
            `menu_type.source` vaut `uploaded` (menu image/PDF) : le contenu est
            alors uniquement dans `assets`.
          items:
            $ref: '#/components/schemas/MenuSection'
    ApiError:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: string
        details:
          type: array
          items:
            type: string
    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).
    MenuSection:
      type: object
      additionalProperties: false
      required:
        - name
        - position
        - items
      properties:
        name:
          type: string
          example: Entrées
        position:
          type: integer
          example: 1
        items:
          type: array
          items:
            $ref: '#/components/schemas/MenuItem'
    MenuItem:
      type: object
      additionalProperties: false
      required:
        - id
        - name
        - description
        - price
        - a_la_carte
        - gluten_free
        - vegetarian
        - vegan
        - chef_recommendation
      properties:
        id:
          type: integer
          example: 42
        name:
          type: string
          example: Salade César
        description:
          type: string
          nullable: true
          example: Romaine, parmesan, croûtons, sauce César
        price:
          type: string
          nullable: true
          example: '12.50'
          description: >-
            Montant décimal sérialisé en chaîne de caractères, null hors des
            items à la carte.
        a_la_carte:
          type: boolean
          example: true
        gluten_free:
          type: boolean
          example: false
        vegetarian:
          type: boolean
          example: true
        vegan:
          type: boolean
          example: false
        chef_recommendation:
          type: boolean
          example: false
  securitySchemes:
    api_key:
      type: apiKey
      name: X-Api-Key
      in: header
      description: Clé API de l'établissement. Elle doit rester côté serveur.

````