Eventos
Gestiona los eventos y sus sesiones en tu restaurante.
Listar eventos
GET /developer/api/events
Scope: events:read
Parámetros de query (opcionales)
| Parámetro | Tipo | Descripción |
|---|---|---|
active | boolean | Filtrar por estado activo (true) o inactivo (false) |
archived | boolean | Incluir eventos archivados (true) |
Ejemplo de petición
curl "https://mi-restaurante.siteat.app/developer/api/events?active=true" \
-H "Authorization: Bearer sk_live_..."
Respuesta (200)
{
"success": true,
"data": [
{
"id": 1,
"name": "Noche de Jazz",
"title": "Jazz en vivo con cena",
"color": "#6366f1",
"is_active": true,
"is_archived": false,
"block_mode": "capacity_only",
"next_session": "2025-05-10"
}
]
}
Crear evento
POST /developer/api/events
Scope: events:write
Cuerpo de la petición (JSON)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | ✅ | Nombre interno del evento (mín. 2 caracteres) |
title | string | — | Título público del evento |
description | string | — | Descripción del evento |
color | string | — | Color en formato hex (#RRGGBB) |
min_guests | number | — | Mínimo de comensales |
max_guests | number | — | Máximo de comensales |
block_mode | string | — | capacity_only o block_tables |
enable_preordering | boolean | — | Habilitar pre-pedido |
enable_payment | boolean | — | Habilitar pago anticipado |
payment_amount_minor | number | — | Importe en céntimos (requerido si enable_payment es true) |
show_on_online_booking | boolean | — | Mostrar en reservas online |
is_active | boolean | — | Estado activo del evento |
Ejemplo de petición
curl -X POST "https://mi-restaurante.siteat.app/developer/api/events" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Noche de Jazz",
"title": "Jazz en vivo con cena",
"color": "#6366f1",
"max_guests": 50,
"block_mode": "capacity_only",
"show_on_online_booking": true,
"is_active": true
}'
Respuesta (201)
{
"success": true,
"data": {
"id": 2,
"name": "Noche de Jazz",
"title": "Jazz en vivo con cena",
"color": "#6366f1",
"is_active": true,
"is_archived": false,
"block_mode": "capacity_only"
}
}
Obtener evento
GET /developer/api/events/{id}
Scope: events:read
Devuelve el evento junto con sus sesiones y plantas asociadas.
Respuesta (200)
{
"success": true,
"data": {
"id": 1,
"name": "Noche de Jazz",
"title": "Jazz en vivo con cena",
"color": "#6366f1",
"is_active": true,
"sessions": [...],
"plantas": [...]
}
}
Error (404)
{
"success": false,
"error": "Evento no encontrado",
"code": "NOT_FOUND"
}
Actualizar evento
PUT /developer/api/events/{id}
Scope: events:write
Solo envía los campos que quieras modificar. Acepta los mismos campos que el endpoint de creación.
Ejemplo
curl -X PUT "https://mi-restaurante.siteat.app/developer/api/events/1" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Gran Noche de Jazz",
"is_active": false
}'
Respuesta (200)
{
"success": true,
"data": {
"id": 1,
"name": "Noche de Jazz",
"title": "Gran Noche de Jazz",
"is_active": false
}
}
Eliminar evento
DELETE /developer/api/events/{id}
Scope: events:write
aviso
No se puede eliminar un evento que tenga reservas activas asociadas.
Respuesta (200)
{
"success": true
}
Error (400)
{
"success": false,
"error": "No se puede eliminar un evento con reservas activas",
"code": "BUSINESS_ERROR"
}
Listar sesiones de un evento
GET /developer/api/events/{id}/sessions
Scope: events:read
Ejemplo de petición
curl "https://mi-restaurante.siteat.app/developer/api/events/1/sessions" \
-H "Authorization: Bearer sk_live_..."
Respuesta (200)
{
"success": true,
"data": [
{
"id": 1,
"event_id": 1,
"session_date": "2025-05-10",
"start_time": "20:00",
"end_time": "23:00",
"max_guests": 50,
"current_guests": 12,
"status": "open",
"table_booking_mode": "optional"
}
]
}
Crear sesión
POST /developer/api/events/{id}/sessions
Scope: events:write
Cuerpo de la petición (JSON)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
session_date | string | ✅ | Fecha de la sesión (YYYY-MM-DD, debe ser futura) |
start_time | string | ✅ | Hora de inicio (HH:MM) |
end_time | string | ✅ | Hora de fin (HH:MM) |
max_guests | number | — | Máximo de invitados para esta sesión |
table_booking_mode | string | — | none, optional o required |
planta_ids | number[] | — | IDs de plantas a asociar a la sesión |
Ejemplo de petición
curl -X POST "https://mi-restaurante.siteat.app/developer/api/events/1/sessions" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"session_date": "2025-06-15",
"start_time": "20:00",
"end_time": "23:00",
"max_guests": 60,
"table_booking_mode": "optional",
"planta_ids": [1, 2]
}'
Respuesta (201)
{
"success": true,
"data": {
"id": 5,
"event_id": 1,
"session_date": "2025-06-15",
"start_time": "20:00",
"end_time": "23:00",
"max_guests": 60,
"current_guests": 0,
"status": "open",
"table_booking_mode": "optional"
}
}
Scopes necesarios
| Scope | Descripción |
|---|---|
events:read | Leer eventos y sesiones |
events:write | Crear, actualizar y eliminar eventos y sesiones |
Errores comunes
| Código | Descripción |
|---|---|
401 | API key inválida o sin el scope requerido |
404 | Evento no encontrado o no pertenece a tu tenant |
422 | Datos de entrada inválidos |
400 | Error de negocio (ej: no se puede eliminar un evento con reservas activas) |