Menú: Categorías
Gestiona las categorías de tu carta digital.
Listar categorías
GET /developer/api/menu/categories
Scope: menu:read
Devuelve todas las categorías con sus platos incluidos.
Ejemplo
curl "https://mi-restaurante.siteat.app/developer/api/menu/categories" \
-H "Authorization: Bearer sk_live_..."
Respuesta (200)
{
"success": true,
"data": [
{
"id": 1,
"tenant_id": 42,
"name": "Entrantes",
"description": "Para compartir",
"sort_order": 0,
"items": [
{
"id": 10,
"name": "Croquetas caseras",
"description": "Croquetas de jamón ibérico",
"price": 8.50,
"type": "simple",
"is_available": true,
"image_url": "https://..."
}
]
},
{
"id": 2,
"name": "Principales",
"description": null,
"sort_order": 1,
"items": []
}
]
}
Crear categoría
POST /developer/api/menu/categories
Scope: menu:write
Cuerpo de la petición (JSON)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | ✅ | Nombre de la categoría |
description | string | — | Descripción |
sort_order | number | — | Orden de aparición (por defecto: 0) |
Ejemplo
curl -X POST "https://mi-restaurante.siteat.app/developer/api/menu/categories" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Postres",
"description": "Dulces tentaciones",
"sort_order": 3
}'
Respuesta (201)
{
"success": true,
"data": {
"id": 5,
"tenant_id": 42,
"name": "Postres",
"description": "Dulces tentaciones",
"sort_order": 3,
"created_at": "2026-04-15T15:00:00Z"
}
}
Obtener una categoría
GET /developer/api/menu/categories/{id}
Scope: menu:read
Devuelve la categoría con sus platos incluidos, con la misma estructura que en el listado.
Editar una categoría
PUT /developer/api/menu/categories/{id}
Scope: menu:write
| Campo | Tipo | Descripción |
|---|---|---|
name | string | Nombre de la categoría |
description | string | Descripción |
sort_order | number | Orden |
Eliminar una categoría
DELETE /developer/api/menu/categories/{id}
Scope: menu:write
Cuidado
Eliminar una categoría también eliminará todos los platos que contenga.
Respuesta (200)
{
"success": true,
"data": null,
"message": "Categoría eliminada correctamente"
}