Storefront booking routes (add-on)
The unauthenticated routes a booking page and a customer's own booking link call.
These answer without a session. A browser identifies itself with a visitor id it made up, and a customer identifies a booking with the token that was emailed to them. Neither is a login, and neither reads anything that was not already theirs. Writes check the request's origin against the store's own, plus anything listed under Other sites that may book.
None of them is an MCP tool. Each works off a browser's visitor id or a customer's own token, which an assistant has no business holding, and each has an admin route beside it that does the same job with a permission behind it. See Developers.
List what the shop books
/api/v1/kahunacart/bookings/public/services
What the shop books, what each one costs, and how the shop writes a time of day (time_format)
Read the times on offer
/api/v1/kahunacart/bookings/public/availability
The times on offer for a product over a range of days, with the blocked ones and their reasons when asked for
Hold a time
/api/v1/kahunacart/bookings/public/holds
Stand on a time while the customer decides
Let a hold go
/api/v1/kahunacart/bookings/public/holds/{id}
Let it go
Book something with nothing to pay
/api/v1/kahunacart/bookings/public/book
Book something there is nothing to pay for. Answers 409 with add_to_cart: true when there is
Read the signed-in customer for the booking form
/api/v1/kahunacart/bookings/public/me
The name, email and phone a signed-in customer's booking form starts with, or customer: null for a guest. It answers only for the session cookie that asked, carries no ids, and is never cached.
Read a customers own booking
/api/v1/kahunacart/bookings/public/manage/{token}
What a customer can see of their own booking, and — where it is a place on a waiting list — where they stand in the queue and what is being held for them
Cancel a customers own booking
/api/v1/kahunacart/bookings/public/manage/{token}/cancel
Call it off
Move a customers own booking
/api/v1/kahunacart/bookings/public/manage/{token}/reschedule
Move it
List the classes
/api/v1/kahunacart/bookings/public/sessions
Every class the shop runs, with the dates coming up and the places left on each
Claim a place held from the waiting list
/api/v1/kahunacart/bookings/public/manage/{token}/claim-offer
Take up the place that was held for somebody on a waiting list, and get the cart line that buys it
availability takes a number of seats and answers for that many, so a date with two places left comes back full to a party of three. book answers 409 with add_to_cart: true when there is money due, so the page can put the line in the basket instead of showing an error nobody can act on. Tokens are 32 hex characters and the route pattern says so, so a booking id in the URL is a 404 rather than somebody else's appointment.