Ga naar hoofdinhoud

Boekingen

Base path: /api/bookings

GET /bookings

Alle afspraken ophalen. Medewerkers zien alleen eigen afspraken als staff_personal_agenda_enabled actief is; admins zien altijd alles. Geannuleerde afspraken worden uitgesloten.

Auth: Ingelogd

Query parameters:

ParameterTypeBeschrijving
pageintegerPaginanummer (activeert paginering)
limitintegerItems per pagina (default 50)

Response: Array van Booking objecten met client_name, of gepagineerd object. Gesorteerd op start_at aflopend.


GET /bookings/:id

Enkele afspraak ophalen.

Auth: Ingelogd

Response: Booking object met client_name.

Fouten: 404 — Afspraak niet gevonden


POST /bookings

Nieuwe afspraak aanmaken.

Auth: Ingelogd

Request body:

VeldTypeVerplichtBeschrijving
client_idintegerJaKlant ID
staff_idintegerJaMedewerker ID
service_idintegerJaDienst ID
start_atdatetimeJaStarttijd
end_atdatetimeJaEindtijd
notesstringNeeNotities (zichtbaar voor klant)
internal_notesstringNeeInterne notities
provisionalbooleanNeeAls true, status=provisional; klant ontvangt bevestig/afwijs e-mail
waitlist_idintegerNeeKoppeling aan wachtlijstvermelding
base_urlstringNeeBase URL voor accepteer/weiger-links
notitie

Boekingen op feestdagen worden geweigerd met een 400 fout.

Response (200): Booking object


PUT /bookings/:id

Afspraak bijwerken.

Auth: Ingelogd

Neveneffecten:

  • Wanneer start_at of end_at verandert: een booking.updated e-mail job wordt in de wachtrij gezet met 30 minuten vertraging.
  • Wanneer status verandert naar completed: review aanvraag en follow-up sequenties worden gestart.
  • Wanneer status verandert naar no-show: bij noshow_enabled wordt een Stripe betaallink aangemaakt.

Response (200): Bijgewerkt Booking object


DELETE /bookings/:id

Afspraak annuleren (zet status naar cancelled). Zet een booking.cancelled job in de wachtrij. Als er een wachtlijstvermelding bestaat voor dezelfde dienst en datum, wordt de eerste wachtende genotificeerd.

Auth: Ingelogd


Booking statussen

StatusBeschrijving
scheduledBevestigde afspraak
provisionalWacht op goedkeuring door klant
completedAfgeronde afspraak
cancelledGeannuleerde afspraak
no-showKlant niet verschenen

Booking object

{
"id": 1,
"client_id": 5,
"staff_id": 2,
"service_id": 3,
"start_at": "2026-03-24 10:00:00",
"end_at": "2026-03-24 10:30:00",
"status": "scheduled",
"notes": "",
"internal_notes": "",
"provisional_token": null,
"feedback_token": null,
"waitlist_id": null,
"client_name": "Jan de Vries"
}