API · booking-series
Operaciones de booking-series del contrato OpenAPI que aceptan una clave de API.
Actualizado:
Turnos fijos (F3-620): reservas que se repiten cada 1-4 semanas. Cada fecha es una tarea normal.
GET /booking-series
Listar turnos fijos
Turnos fijos (F3-620): reservas que se repiten. Owner y manager (permiso tasks:series); API key con bookings:read. Sin dates (están en el detalle).
- Autenticación: Clave de API o sesión del panel
- Scopes:
bookings:read
Parámetros
| Nombre | En | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
customer_id | query | No | string (uuid) | |
status | query | No | string active, cancelled | |
limit | query | No | integer default 25 | |
cursor | query | No | string |
Respuestas
| Estado | Descripción |
|---|---|
200 | OK (object) |
default | Error (RFC 9457) (Problem) |
POST /booking-series
Crear un turno fijo (y sus próximas fechas)
Crea la serie y materializa como tareas normales las fechas de las próximas 8 semanas (el resto lo suma un proceso periódico). Cada fecha pasa por las mismas reglas que una reserva: disponibilidad, capacidad, feriados, excepciones y cierres; el precio lo fija el servidor al crear cada fecha y se cobra el día de esa tarea (no se pide seña por adelantado). Si alguna fecha no entra responde 409 series_conflicts con conflicts: [{date, start, reasons}], salvo que esté en skip_dates o se pida skip_conflicts: quedan registradas como salteadas. La confirmación al cliente sale solo con la primera fecha. Owner y manager; API key con bookings:write.
- Autenticación: Clave de API o sesión del panel
- Scopes:
bookings:write
Parámetros
| Nombre | En | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
Idempotency-Key | header | Sí | string | UUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. |
Cuerpo de la solicitud (obligatorio)
application/json: BookingSeriesInput
Respuestas
| Estado | Descripción |
|---|---|
201 | Creado (BookingSeries) |
409 | Error (RFC 9457) (Problem) |
422 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
GET /booking-series/{id}
Leer un turno fijo y sus fechas
- Autenticación: Clave de API o sesión del panel
- Scopes: Ninguno
Parámetros
| Nombre | En | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
id | path | Sí | string |
Respuestas
| Estado | Descripción |
|---|---|
200 | OK (BookingSeries) |
default | Error (RFC 9457) (Problem) |
PATCH /booking-series/{id}
Editar toda la serie o «esta y las siguientes» (con from_date)
Sin from_date: toda la serie. Con from_date posterior al inicio: «esta y las siguientes», que parte la serie (la original termina el día anterior y la respuesta es la serie nueva, con split_from_id). Las fechas futuras que todavía se pueden mover (no iniciadas, sin cobro, sin falta) se cancelan sin aviso y se vuelven a crear con la regla nueva; lo pasado, iniciado, cobrado o con falta no se toca. Cambiar solo la nota o el fin no mueve las fechas existentes. Mismos choques que el alta (409 series_conflicts, skip_dates, skip_conflicts); expected_version da 409 version_conflict si la serie cambió. «Solo esta» es reprogramar o cancelar esa tarea (/bookings/{id}/…).
- Autenticación: Clave de API o sesión del panel
- Scopes: Ninguno
Parámetros
| Nombre | En | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
id | path | Sí | string |
Cuerpo de la solicitud (obligatorio)
application/json: BookingSeriesPatch
Respuestas
| Estado | Descripción |
|---|---|
200 | OK (BookingSeries) |
409 | Error (RFC 9457) (Problem) |
default | Error (RFC 9457) (Problem) |
POST /booking-series/{id}/cancel
Cancelar el turno fijo (todo o desde una fecha)
Sin from_date (o desde el inicio) cancela la serie; con from_date la serie termina el día anterior. Las fechas futuras que se pueden mover se cancelan sin aviso al cliente; lo pasado, iniciado, cobrado o con falta queda como está. Cancelar algo ya cancelado devuelve lo mismo.
- Autenticación: Clave de API o sesión del panel
- Scopes: Ninguno
Parámetros
| Nombre | En | Obligatorio | Tipo | Descripción |
|---|---|---|---|---|
id | path | Sí | string |
Cuerpo de la solicitud (opcional)
application/json: object
Respuestas
| Estado | Descripción |
|---|---|
200 | OK (BookingSeries) |
default | Error (RFC 9457) (Problem) |
POST /booking-series/preview
Vista previa de las fechas y sus choques (no guarda)
Las fechas de las próximas 8 semanas con status ok, conflict (con reasons) o skipped (pedidas en skip_dates). Usa exactamente las reglas del alta y no guarda nada.
- Autenticación: Clave de API o sesión del panel
- Scopes: Ninguno
Cuerpo de la solicitud (obligatorio)
application/json: BookingSeriesInput
Respuestas
| Estado | Descripción |
|---|---|
200 | OK (BookingSeriesPreview) |
default | Error (RFC 9457) (Problem) |