Dashboard
How it Works Documentation Quick Start PAPI — Pages & Assets MAPI — Dynamic Data Integrations SAPI — Sessions & Forms MCP Server OpenClaw Skill Tools Deploy Dashboard

Calendar & Booking

⚡ Built-in — Platform Built-in

Interne kalender met resources en bookings. Basis voor afspraken (#245), restaurant/hotel (#1188), externe sync (#1187) en MCP-boekingen (#1189). Alle datetimes in UTC.

⚡ Built-in — No Setup Required This integration is built into the WebsitePublisher platform. All endpoints are available immediately — no API key needed.

Endpoints (15)

POST upsert-calendar

Maak of wijzig een kalender. Zonder calendar_id = aanmaken (name verplicht), met calendar_id = bijwerken.

Field Type Required Description
calendar_id integer No ID van bestaande kalender (weglaten bij aanmaken).
name string No Kalendernaam. Verplicht bij aanmaken.
slug string No URL-slug. Wordt afgeleid van name als leeg; uniek per project.
timezone string No IANA timezone voor rendering (default Europe/Amsterdam). Opslag blijft UTC.
color string No Hex-kleur voor UI, bijv. #1B4332.
source_of_truth boolean No Bij sync-conflicten wint deze kalender (sync-engine #1187).
GET list-calendars

Alle kalenders van dit project.

No input parameters required.

POST delete-calendar

Verwijder een kalender inclusief events. Weigert als er nog resources aan hangen.

Field Type Required Description
calendar_id integer ✓ Yes ID van de te verwijderen kalender.
POST upsert-event

Maak of wijzig een event. Zonder event_id = aanmaken (calendar_id, title, start_at, end_at verplicht). Datetimes zonder offset worden als UTC gelezen.

Field Type Required Description
event_id integer No ID van bestaand event (weglaten bij aanmaken).
calendar_id integer No Doelkalender. Verplicht bij aanmaken.
title string No Titel. Verplicht bij aanmaken.
description string No Omschrijving.
location string No Locatie.
start_at string No Start (UTC), bijv. 2026-09-01 18:00:00. Verplicht bij aanmaken.
end_at string No Einde (UTC), moet na start_at liggen. Verplicht bij aanmaken.
all_day boolean No Hele-dag event.
status string No confirmed | tentative | cancelled (default confirmed).
POST delete-event

Verwijder een event.

Field Type Required Description
event_id integer ✓ Yes ID van het te verwijderen event.
GET list-events

Events die het venster [from, to) raken (overlap), optioneel per kalender.

Field Type Required Description
from string ✓ Yes Vensterbegin (UTC).
to string ✓ Yes Venstereinde (UTC), na from.
calendar_id integer No Beperk tot één kalender.
POST upsert-resource

Maak of wijzig een boekbare resource (stoel/tafel/kamer). Zonder resource_id = aanmaken (calendar_id, type, name verplicht).

Field Type Required Description
resource_id integer No ID van bestaande resource (weglaten bij aanmaken).
calendar_id integer No Kalender waar claims als events op landen. Verplicht bij aanmaken.
type string No Resource-type: chair | table | room (vrij uitbreidbaar, lowercase a-z/_). Verplicht bij aanmaken.
name string No Naam, bijv. "Tafel 4" of "Kamer 12". Verplicht bij aanmaken.
capacity integer No Capaciteit (personen), default 1.
config array No Type-specifieke config. table: {min_party, max_party, seating_minutes, shifts}. room: {room_type, min_stay_nights, checkin_time, checkout_time}. chair: {service_ids}.
active boolean No Inactieve resources zijn niet boekbaar.
GET list-resources

Alle resources van dit project, optioneel gefilterd.

Field Type Required Description
type string No Filter op type (chair/table/room/...).
active_only boolean No Alleen actieve resources.
POST set-availability

Beschikbaarheidsregels per resource (generalisatie van #245).

Field Type Required Description
resource_id integer ✓ Yes Resource waarvoor de regels gelden.
rules array ✓ Yes Regels-object: {weekdays: {mon:[{from:"09:00",to:"17:00"}], ...}, slot_minutes: 30, exceptions: [{date:"2026-12-25", closed:true}], vacations: [{from:"2026-08-01", to:"2026-08-14"}]}. Tijden in de kalender-timezone.
GET list-bookings

Bookings van dit project met filters en paginering.

Field Type Required Description
status string No pending | confirmed | completed | cancelled | no_show.
resource_id integer No Filter op resource.
from string No Alleen bookings die eindigen na dit moment (UTC).
to string No Alleen bookings die starten vóór dit moment (UTC).
page integer No Pagina (default 1).
per_page integer No Per pagina (default 25, max 100).
POST update-booking-status

Wijzig de status van een booking (bijv. confirmed → completed of no_show).

Field Type Required Description
booking_id integer ✓ Yes ID van de booking.
status string ✓ Yes pending | confirmed | completed | cancelled | no_show.
POST delete-resource

Verwijder een resource inclusief availability. Weigert bij toekomstige pending/confirmed bookings; historische bookings blijven bewaard.

Field Type Required Description
resource_id integer ✓ Yes ID van de te verwijderen resource.
GET get-slots

Beschikbare slots (of nachten voor rooms) per resource. Geef resource_id of type, plus date of from/to (max 31 dagen). Slots komen terug in UTC én lokale kalendertijd.

Field Type Required Description
resource_id integer No Eén specifieke resource.
type string No Alle actieve resources van dit type (chair/table/room/...).
date string No Eén dag, YYYY-MM-DD (kalender-timezone).
from string No Begin van datumrange, YYYY-MM-DD.
to string No Einde van datumrange, YYYY-MM-DD (max 31 dagen).
party_size integer No Filter resources op capaciteit en min/max party.
POST book

Boek een resource. Tafels/stoelen: start_at + end_at (UTC). Kamers: checkin + checkout (YYYY-MM-DD, nacht-granulariteit). Claim is transactioneel — dubbelboeking onmogelijk. Response bevat cancel_token.

Field Type Required Description
resource_id integer ✓ Yes Te boeken resource.
start_at string No Start (UTC) — verplicht voor slot-resources (chair/table).
end_at string No Einde (UTC) — verplicht voor slot-resources.
checkin string No Check-in datum YYYY-MM-DD — verplicht voor rooms.
checkout string No Check-out datum YYYY-MM-DD — verplicht voor rooms, na checkin.
party_size integer No Aantal personen; gevalideerd tegen capaciteit en min/max party.
service_id integer No Optionele dienst (#245 afspraken-vertical).
visitor_name string ✓ Yes Naam van de boeker.
visitor_email string No E-mail van de boeker (voor bevestiging).
visitor_phone string No Telefoonnummer.
notes string No Opmerkingen (allergieën, voorkeuren, ...).
source string No web | mcp | admin | voice (default mcp).
ignore_availability boolean No Admin-optie: boek buiten de availability-windows om (claim-check blijft altijd actief).
POST cancel-booking

Annuleer een booking via cancel_token (bezoeker) of booking_id (beheer). Idempotent; completed/no_show is niet annuleerbaar. Het gekoppelde event gaat mee naar cancelled.

Field Type Required Description
cancel_token string No Token uit de book-response/bevestiging.
booking_id integer No Alternatief voor beheer: direct op ID.

MCP Tool Names

When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:

EndpointMCP Tool Name
upsert-calendar calendar_upsert_calendar
list-calendars calendar_list_calendars
delete-calendar calendar_delete_calendar
upsert-event calendar_upsert_event
delete-event calendar_delete_event
list-events calendar_list_events
upsert-resource calendar_upsert_resource
list-resources calendar_list_resources
set-availability calendar_set_availability
list-bookings calendar_list_bookings
update-booking-status calendar_update_booking_status
delete-resource calendar_delete_resource
get-slots calendar_get_slots
book calendar_book
cancel-booking calendar_cancel_booking
← Back to all integrations