Menu


Un menú de una Branch: agrupa categorías (MenuCategory) que a su vez contienen productos (MenuItem). day_time_blocks define las franjas de día/hora en las que el menú está disponible (vacío = siempre disponible). Se crea deshabilitado (is_enabled = false).

Estructura de Datos

Atributo Tipo Descripción
id int
branch_id int {@link Branch} dueña del menú
name string Nombre del menú
is_enabled bool Si el menú está activo
day_time_blocks array Franjas de día/hora en las que el menú está disponible (vacío = siempre)
created_at datetime\|null
updated_at datetime\|null
branch Branch {@link Branch} dueña del menú
categories MenuCategory> Categorías del menú, ordenadas por in_order
{
    "id": 1,
    "branch_id": 304,
    "name": "Menú",
    "is_enabled": false,
    "day_time_blocks": [],
    "created_at": "2026-04-13T17:36:24.000000Z",
    "updated_at": "2026-04-13T17:36:24.000000Z"
}

Endpoints

Acciones de Menu

Listar menús de una sucursal

Devuelve los Menu de la Branch con sus categorías. Para clientes se filtran los menús cuyas franjas day_time_blocks no aplican a la hora local de la sucursal.

Método URI Cabeceras
GET /companies/{companyId}/branches/{branch}/menus N/A

Mostrar menú

Devuelve el Menu por su id con sus categorías, ítems y el BranchGood de cada ítem.

Método URI Cabeceras
GET /companies/{companyId}/menus/{menu} N/A

Crear menú

Crea un Menu para la Branch. Nace deshabilitado (is_enabled = false); day_time_blocks vacío significa disponible siempre.

Método URI Cabeceras
POST /companies/{companyId}/branches/{branch}/menus Authorization
{
    "name": "required|string|max:255",
    "is_enabled": "boolean",
    "day_time_blocks": [
        {
            "day_sunday": "nullable|boolean",
            "day_monday": "nullable|boolean",
            "day_tuesday": "nullable|boolean",
            "day_wednesday": "nullable|boolean",
            "day_thursday": "nullable|boolean",
            "day_friday": "nullable|boolean",
            "day_saturday": "nullable|boolean",
            "hour_beg": {
                "nullable": true,
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "hour_end": {
                "nullable": true,
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            }
        }
    ]
}

Actualizar menú

Modifica name, is_enabled y day_time_blocks del Menu.

Método URI Cabeceras
PATCH /companies/{companyId}/menus/{menu} Authorization
{
    "name": "string|max:255",
    "is_enabled": "boolean",
    "day_time_blocks": [
        {
            "day_sunday": "nullable|boolean",
            "day_monday": "nullable|boolean",
            "day_tuesday": "nullable|boolean",
            "day_wednesday": "nullable|boolean",
            "day_thursday": "nullable|boolean",
            "day_friday": "nullable|boolean",
            "day_saturday": "nullable|boolean",
            "hour_beg": {
                "nullable": true,
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            },
            "hour_end": {
                "nullable": true,
                "string": true,
                "regex": "/^([0-1][0-9]|2[0-3]):[0-5][0-9]$/"
            }
        }
    ]
}

Eliminar menú

Borra el Menu y, en cascada, sus categorías e ítems.

Método URI Cabeceras
DELETE /companies/{companyId}/menus/{menu} Authorization

Relaciones