Saltar al contenido principal

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ámetroTipoDescripción
activebooleanFiltrar por estado activo (true) o inactivo (false)
archivedbooleanIncluir 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)

CampoTipoObligatorioDescripción
namestringNombre interno del evento (mín. 2 caracteres)
titlestringTítulo público del evento
descriptionstringDescripción del evento
colorstringColor en formato hex (#RRGGBB)
min_guestsnumberMínimo de comensales
max_guestsnumberMáximo de comensales
block_modestringcapacity_only o block_tables
enable_preorderingbooleanHabilitar pre-pedido
enable_paymentbooleanHabilitar pago anticipado
payment_amount_minornumberImporte en céntimos (requerido si enable_payment es true)
show_on_online_bookingbooleanMostrar en reservas online
is_activebooleanEstado 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)

CampoTipoObligatorioDescripción
session_datestringFecha de la sesión (YYYY-MM-DD, debe ser futura)
start_timestringHora de inicio (HH:MM)
end_timestringHora de fin (HH:MM)
max_guestsnumberMáximo de invitados para esta sesión
table_booking_modestringnone, optional o required
planta_idsnumber[]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

ScopeDescripción
events:readLeer eventos y sesiones
events:writeCrear, actualizar y eliminar eventos y sesiones

Errores comunes

CódigoDescripción
401API key inválida o sin el scope requerido
404Evento no encontrado o no pertenece a tu tenant
422Datos de entrada inválidos
400Error de negocio (ej: no se puede eliminar un evento con reservas activas)