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

# Produits du menu

> Lisez les produits de restaurant publiés avec des filtres, une pagination, des modificateurs et des données CMS.

Utilisez les produits de menu API pour afficher les listes de produits en dehors de Plato.

```text theme={null}
GET /api/public/menu/products
```

Ce point de terminaison attend actuellement la clé API dans la chaîne de requête.

## Exemple

```bash theme={null}
curl "https://api.plato.ae/api/public/menu/products?apiKey=$PLATO_API_KEY&limit=20&page=1"
```

## Paramètres de requête

| Paramètre        | Taper             | Défaut      | Remarques                                                                           |
| ---------------- | ----------------- | ----------- | ----------------------------------------------------------------------------------- |
| `apiKey`         | chaîne            | requis      | Clé Plato API.                                                                      |
| `search`         | chaîne            | aucune      | Recherchez des noms de produits.                                                    |
| `q`              | chaîne            | aucune      | Paramètre de recherche alternatif.                                                  |
| `categoryId`     | chaîne            | aucune      | Filtrer par identifiant de catégorie.                                               |
| `categorySlug`   | chaîne            | aucune      | Filtrer par slug d’une catégorie.                                                   |
| `categorySlugs`  | liste de virgules | aucune      | Filtrer par plusieurs catégories de slugs.                                          |
| `published`      | booléenne         | `true`      | Utilisez `false` pour récupérer des produits non publiés lorsque cela est autorisé. |
| `soldout`        | booléenne         | aucune      | Filtre épuisé.                                                                      |
| `minPrice`       | nombre            | aucune      | Filtrer par options de prix.                                                        |
| `maxPrice`       | nombre            | aucune      | Filtrer par options de prix.                                                        |
| `slug`           | chaîne            | aucune      | Récupérer par slug de produit exact.                                                |
| `ids`            | liste de virgules | aucune      | Récupérez des identifiants de produits spécifiques.                                 |
| `sortBy`         | chaîne            | `createdAt` | `name`, `createdAt`, `updatedAt` ou `slug`.                                         |
| `sortOrder`      | chaîne            | `desc`      | `asc` ou `desc`.                                                                    |
| `page`           | nombre            | `1`         | Numéro de page.                                                                     |
| `limit`          | nombre            | `20`        | `1` minimum, `100` maximum.                                                         |
| `includeCmsData` | booléenne         | `true`      | Inclut les entrées CMS liées aux produits.                                          |

## Réponse

```json theme={null}
{
  "data": [
    {
      "id": "product_123",
      "slug": "classic-burger",
      "barcode": null,
      "name": {
        "en": "Classic Burger"
      },
      "intro": null,
      "description": null,
      "priceOptions": [
        {
          "id": "regular",
          "price": 38
        }
      ],
      "thumbnail": null,
      "images": [],
      "published": true,
      "soldout": false,
      "preparationTime": null,
      "nutritionFacts": null,
      "suggestions": [],
      "category": {
        "id": "category_123",
        "slug": "burgers",
        "name": {
          "en": "Burgers"
        }
      },
      "optionSets": [],
      "cmsData": {},
      "createdAt": "2026-06-17T08:20:00.000Z",
      "updatedAt": "2026-06-17T09:15:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 42,
    "totalPages": 3,
    "hasMore": true
  }
}
```

## Données CMS

Lorsque `includeCmsData=true`, Plato recherche les entrées CMS liées à `MenuProduct`.

L'objet `cmsData` est regroupé par identifiant de base de données CMS :

```json theme={null}
{
  "cmsData": {
    "product_badges": [
      {
        "id": "entry_123",
        "label": {
          "en": "Popular"
        }
      }
    ]
  }
}
```

Définissez `includeCmsData=false` lorsque vous n’avez besoin que des champs de produits principaux.

## Remarques

* Les produits sont par défaut `published=true`.
* Le filtrage des prix est appliqué aux options de prix des produits.
* Utilisez `slug` pour les pages de détails du produit.
* Utilisez `ids` lorsqu'un autre système connaît déjà les identifiants de produit.
