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

# Menú multi horario

> Un producto y una categoría en dos menús daypart con horarios distintos.

Este ejemplo muestra cómo publicar **dos menús compuestos** en un solo upsert cuando la misma tienda, canal y fulfillment necesitan ventanas activas distintas — sin grupos de modificadores ni duplicar masters del catálogo.

## Qué incluye este ejemplo

| Entidad | Cantidad | Propósito |
| - | - | - |
| Productos | 1 | Sopa del día |
| Categorías | 1 | Sección de especiales diarios |
| Grupos de modificadores | 0 | Sin personalización |
| Menús | 2 | Dayparts de desayuno y almuerzo |

```mermaid theme={null}
flowchart LR
    PROD["soup-daily"]
    CAT["daily-specials"]
    PROD --> CAT
    CAT --> M1["breakfast-delivery\n06:00–11:00"]
    CAT --> M2["lunch-delivery\n11:00–15:00"]
```

Cada entrada de menú comparte los mismos `category_ids` pero lleva su propio `id`, `name` y `schedules`. Fire spark devuelve en `data` todos los menús cuyo horario coincide con la hora del pedido del cliente. Fuera de esas ventanas, devuelve el o los menús más próximos a estar disponibles.

## Request

Envía ambos menús en una llamada a [Upsert menus](https://firespark.cloud/docs/es/integrations-api/menus/put.md). Las entidades del catálogo (`products`, `categories`) son compartidas; cada objeto en `menus` define un menú compuesto separado para su horario.

```bash theme={null}
curl --request PUT \
  --url 'https://firespark.cloud/api/integrations/v1/menus?fulfillment_id=delivery&store_id=downtown&channel_id=app&brand_id=0001' \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d @multi-schedule-menu.json
```

```json multi-schedule-menu.json theme={null}
{
  "style": "DEFAULT",
  "products": [
    {
      "id": "soup-daily",
      "name": { "es_ec": "Sopa del día" },
      "description": { "es_ec": "Selección diaria del chef." },
      "image_url": null,
      "status": "ACTIVE",
      "bundled_items": [],
      "pricing": {
        "minimum_quantity": 1,
        "maximum_quantity": 5,
        "is_tax_inclusive": true,
        "tax_rate": 0.15,
        "price": 6.99,
        "anchor_price": 6.99,
        "anchor_price_percentage": 0,
        "modifiers": [],
        "modifier_group_ids": []
      },
      "availability": {
        "status": "AVAILABLE",
        "schedules": null,
        "out_of_stock_until": null
      },
      "metadata": {}
    }
  ],
  "categories": [
    {
      "id": "daily-specials",
      "name": { "es_ec": "Especiales del día" },
      "description": { "es_ec": "Selecciones rotativas del chef" },
      "status": "ACTIVE",
      "items": [{ "type": "PRODUCT", "id": "soup-daily" }],
      "availability": {
        "status": "AVAILABLE",
        "schedules": null,
        "out_of_stock_until": null
      },
      "metadata": {}
    }
  ],
  "modifier_groups": [],
  "menus": [
    {
      "id": "breakfast-delivery",
      "name": { "es_ec": "Delivery desayuno" },
      "description": { "es_ec": "Daypart matutino" },
      "schedules": [
        { "day_of_week": "monday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "tuesday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "wednesday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "thursday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "friday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "saturday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] },
        { "day_of_week": "sunday", "periods": [{ "start_time": "06:00:00", "end_time": "11:00:00" }] }
      ],
      "metadata": {},
      "category_ids": ["daily-specials"],
      "status": "ACTIVE"
    },
    {
      "id": "lunch-delivery",
      "name": { "es_ec": "Delivery almuerzo" },
      "description": { "es_ec": "Daypart mediodía" },
      "schedules": [
        { "day_of_week": "monday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "tuesday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "wednesday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "thursday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "friday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "saturday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] },
        { "day_of_week": "sunday", "periods": [{ "start_time": "11:00:00", "end_time": "15:00:00" }] }
      ],
      "metadata": {},
      "category_ids": ["daily-specials"],
      "status": "ACTIVE"
    }
  ]
}
```

## Puntos clave

* **Un upsert, dos menús.** Puedes enviar hasta 10 definiciones de menú por request. Cada una necesita un `id` externo único.
* **Los horarios controlan la envoltura del menú.** Cuando un cliente pide a las 09:00, Fire spark compone `breakfast-delivery`. A las 12:30, compone `lunch-delivery`.
* **Catálogo compartido, dayparts distintos.** Ambos menús referencian la misma categoría. Para mostrar productos distintos por daypart, asigna `category_ids` distintos a cada menú o agrega más categorías al payload.
* **Sin grupos de modificadores.** Los productos sin personalización envían `"modifier_groups": []`.

> [!TIP]
>
> Cuando desayuno y almuerzo necesitan surtidos completamente distintos, agrega
> categorías separadas (por ejemplo `breakfast-mains` y `lunch-mains`) y apunta
> cada menú a las categorías que pertenecen a ese daypart.

## Relacionado

> [card] [Sync de menús — horarios](https://firespark.cloud/docs/es/integrations-api/guides/menu-sync.md)
>
> Patrones de horarios y menús daypart

> [card] [Upsert menus](https://firespark.cloud/docs/es/integrations-api/menus/put.md)
>
> Referencia del endpoint


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.