API · booking-series
booking-series operations in the OpenAPI contract that accept an API key.
Updated:
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).
- Authentication: API key or dashboard session
- Scopes:
bookings:read
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
customer_id | query | No | string (uuid) | |
status | query | No | string active, cancelled | |
limit | query | No | integer default 25 | |
cursor | query | No | string |
Responses
| Status | Description |
|---|---|
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.
- Authentication: API key or dashboard session
- Scopes:
bookings:write
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
Idempotency-Key | header | Yes | string | UUID único por operación; reintentos con la misma key devuelven el mismo resultado durante 24 h. |
Request body (required)
application/json: BookingSeriesInput
Responses
| Status | Description |
|---|---|
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
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Responses
| Status | Description |
|---|---|
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}/…).
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Request body (required)
application/json: BookingSeriesPatch
Responses
| Status | Description |
|---|---|
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.
- Authentication: API key or dashboard session
- Scopes: None
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
id | path | Yes | string |
Request body (optional)
application/json: object
Responses
| Status | Description |
|---|---|
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.
- Authentication: API key or dashboard session
- Scopes: None
Request body (required)
application/json: BookingSeriesInput
Responses
| Status | Description |
|---|---|
200 | OK (BookingSeriesPreview) |
default | Error (RFC 9457) (Problem) |