Scopes
Event types
Event types are calendar labels/categories used by event templates for filtering and display. Public API consumers can manage these directly when an integration needs to keep appointment categories in sync.event_types:read for reads, event_types:write for writes.
Event type DTO fields:
Validation:
Event templates
Event templates are the public calendar template resource. They define what can be scheduled or booked: name, duration, default location, capacity, booking rules, visibility, pricing, credits, and the optionaleventType label.
event_templates:read for reads, event_templates:write for
writes.
List response fields:
Event template DTO fields:
Validation:
Omitted: raw media arrays, image/video storage URLs, change history, coach-only
notes, product details, provider metadata, and internal recurrence/event
documents.
List calendar events
calendar_events:read
Validation:
Range limit: maximum 92 days.
Response fields:
Get calendar event
calendar_events:read
Response fields:
Recurring bookings
Recurring booking endpoints expose operational metadata and guarded chain-level updates. They do not expose raw recurrence internals, external sync state, notification payloads, billing snapshots, or audit history.List recurring bookings
recurring_bookings:read
Response fields:
Detail response fields:
Update recurring booking
recurring_bookings:write
Request body:
Unknown fields are rejected with
PUBLIC_API_UNKNOWN_FIELDS.
Response fields:
Cancel recurring booking
recurring_bookings:write
Request body:
The endpoint marks the recurring chain as
Cancelled. It does not hard delete
the chain and does not retroactively delete existing booking records.
Response fields:
Calendar tasks
calendar_tasks:read
Response fields:
GET /public/v1/calendar-tasks/{taskId} returns these fields under
data.task.*:
Create calendar task
calendar_tasks:write
Request body:
Unknown fields are rejected with
PUBLIC_API_UNKNOWN_FIELDS.
Response fields:
Update calendar task
calendar_tasks:write
Allowed fields: title, startAt, endAt, durationMinutes, notes, and
assignedCoachIds. Unknown fields are rejected. Empty updates return
NOTHING_TO_UPDATE.
Response fields:
Cancel calendar task
calendar_tasks:write
This uses the existing calendar task cancellation helper. External callers
should treat it as a cancel operation, not as a generic hard-delete API.
Response fields:
Booking requests
booking_requests:read
Response fields:
Not exposed: client email, client image, location address, lesson descriptions,
credit/payment internals, accept/reject mutation internals, or notification
payloads.
Approve booking request
booking_requests:write
Request body:
The request must be pending, company-owned, and linked to a client visible to the
authenticated Public API client.
Response fields:
Reject booking request
booking_requests:write
Request body:
Response fields:
Coach availability
Coach availability endpoints manage the working-time template for one coach. Use these endpoints for the same kind of availability management shown in the coach calendar settings UI. They do not return client-bookable slots.coach_availability:read
Response fields:
Replace coach availability
coach_availability:write
Request body:
Unknown top-level fields are rejected. Send the coach ID in the path, not in the
body.
Location availability
Location availability endpoints manage the availability template for one location. This is separate from public location opening hours and separate from the final bookable availability feed.location_availability:read
Response fields:
Replace location availability
location_availability:write
Request body:
Unknown top-level fields are rejected. Send the location ID in the path, not in
the body.
Closure days and absence
These endpoints mirror the company calendar settings panel for availability closures. They manage holiday presets and custom closure or absence dates that block bookable availability for coaches, locations, or both. This is the Public API surface for calendar closure days, not location opening hours.availability_rules:read
Response fields:
Replace closure days and absence
availability_rules:write
Request body:
Unknown top-level fields are rejected. Because this is a full replace endpoint,
callers should first read the current closure document, apply their intended
change locally, and send the complete desired
presets and customClosures
payload.
The update response returns data.availabilityClosures.presets[],
data.availabilityClosures.customClosures[],
data.availabilityClosures.availablePresets[], and
data.availabilityClosures.updatedAt.
Not exposed in Public API v1: raw RRULE objects, external calendar sync state,
manual waitlist promotion controls, notification payloads, or internal
availability derivation metadata.
List bookable availability
availability:read
Bookable availability is the endpoint for external client booking flows. It
combines calendar events, coach availability templates, location availability
templates, closure days, booking rules, capacity, and optional client context.
It returns only currently bookable or waitlist-available slots and includes a
short-lived availabilityToken. The token is signed, company-scoped, expires
after 10 minutes, and is not a reservation. POST /public/v1/bookings always
revalidates capacity and booking eligibility live.
Validation:
Range limit: maximum 31 days.
Response fields:
List bookings
bookings:read
Validation:
Response fields:
Get booking
bookings:read
Response fields:
Create booking
bookings:write
Request body:
Availability-token booking validation:
Response fields:
Update booking attendance
bookings:write
Request body:
Response fields:
Get booking cancellation context
bookings:read
Optional query: clientId, instanceDate.
Response fields:
Cancel booking
bookings:write
Request body:
Response fields: