Skip to content

Availability

Availability is built from four resources under /api/my-venues/:venueId/…, all operator (client role, venue-scoped). Send an Authorization: Bearer token from the Authentication flow.

  • Time periods - named windows (e.g. “Dinner”) you can reference from shifts.
  • Shifts - recurring service blocks that set which days/times take bookings.
  • Access rules - the bookable offers guests see; each rule can override venue defaults for party size, seating, pricing, duration and more.
  • Blackouts - date ranges that close bookings.

Each resource only stores what you explicitly set. Where a section is left off, the venue-level default applies at booking time. On a shift, time_type: "default"-style fallbacks and duration_type: "default" mean “use the venue default”; on an access rule every feature has an *_enabled toggle (party_size_enabled, duration_enabled, booking_window_enabled, …) and the paired value only takes effect when its toggle is true - otherwise the venue default is used. Creating at least one access rule flags the venue as bookable on discovery surfaces.

Method Path Purpose Auth
GET /api/my-venues/:venueId/time-periods List time periods operator
POST /api/my-venues/:venueId/time-periods Create a time period operator
PUT /api/my-venues/:venueId/time-periods/:id Update a time period operator
DELETE /api/my-venues/:venueId/time-periods/:id Delete a time period operator
GET /api/my-venues/:venueId/shifts List shifts operator
POST /api/my-venues/:venueId/shifts Create a shift operator
PUT /api/my-venues/:venueId/shifts/:id Update a shift operator
DELETE /api/my-venues/:venueId/shifts/:id Delete a shift operator
GET /api/my-venues/:venueId/access-rules List access rules operator
POST /api/my-venues/:venueId/access-rules Create an access rule operator
PUT /api/my-venues/:venueId/access-rules/:id Update an access rule operator
DELETE /api/my-venues/:venueId/access-rules/:id Delete an access rule operator
POST /api/my-venues/:venueId/access-rules/:id/image Upload a rule image operator
GET /api/my-venues/:venueId/blackouts List blackouts operator
POST /api/my-venues/:venueId/blackouts Create a blackout operator
PUT /api/my-venues/:venueId/blackouts/:id Update a blackout operator
DELETE /api/my-venues/:venueId/blackouts/:id Delete a blackout operator

GET /api/my-venues/:venueId/time-periods lists them. A period takes name, time_from and time_to.

Terminal window
curl -X POST "https://thesidedoor.co/api/my-venues/VENUE_ID/time-periods" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Dinner","time_from":"18:00","time_to":"23:00"}'
{ "success": true, "id": "tp_9f2a" }

Shifts define recurring service. name and a non-empty days_of_week array are required; everything else falls back to a default. Use time_period_id to point at a named period, or time_from/time_to for a custom window.

Terminal window
curl -X POST "https://thesidedoor.co/api/my-venues/VENUE_ID/shifts" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Friday Dinner","days_of_week":["fri","sat"],"time_type":"custom","time_from":"18:00","time_to":"23:00","party_size_min":2,"party_size_max":8,"duration_type":"default"}'
{ "success": true, "id": "shf_123" }

Other accepted fields: schedule_start, schedule_end, time_period_id, seating_area_ids (array), table_ids (array), duration_minutes and payment_policy_id.

PUT /api/my-venues/:venueId/shifts/:id re-sends the same field set; name stays required.

Terminal window
curl -X PUT "https://thesidedoor.co/api/my-venues/VENUE_ID/shifts/shf_123" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Friday Dinner","days_of_week":["fri"],"time_from":"19:00","time_to":"23:30","duration_type":"custom","duration_minutes":150}'
{ "success": true }
Terminal window
curl -X DELETE "https://thesidedoor.co/api/my-venues/VENUE_ID/shifts/shf_123" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{ "success": true }

An access rule is the bookable offer a guest picks. Only name is required; the rule is a large object where each feature has an *_enabled toggle plus its values. Set rule_type to "table" for table bookings or "guestlist" for the door list. Any feature you leave disabled falls back to the venue default.

Terminal window
curl -X POST "https://thesidedoor.co/api/my-venues/VENUE_ID/access-rules" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"VIP Booth","rule_type":"table","days_of_week":["fri","sat"],"time_from":"21:00","time_to":"03:00","party_size_enabled":true,"party_size_min":2,"party_size_max":12,"table_assignment_mode":"guest_pick","duration_enabled":true,"duration_minutes":180,"display_enabled":true,"display_title":"VIP Booth","display_description":"Bottle service included"}'
{ "success": true, "id": "acr_77" }

Further optional sections (each gated by its *_enabled flag): seating_enabled

  • seating_area_ids/table_ids, bundles_enabled + bundle_ids, booking_window_enabled + booking_cutoff_value/booking_cutoff_unit + booking_start_value/booking_start_unit, max_covers_enabled + max_covers, venue_access_enabled/free_guest_list_enabled/paid_guest_list_enabled/ queue_skip_price_enabled/surge_threshold_enabled/surge_price_enabled with their _value fields, reservation_tags, pricelist_id, payment_policy_id, list_profile_id, table_profile_id and app_opt_out.

PUT /api/my-venues/:venueId/access-rules/:id accepts the same body.

Terminal window
curl -X PUT "https://thesidedoor.co/api/my-venues/VENUE_ID/access-rules/acr_77" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"VIP Booth","rule_type":"table","party_size_enabled":true,"party_size_min":4,"party_size_max":12}'
{ "success": true }
Terminal window
curl -X DELETE "https://thesidedoor.co/api/my-venues/VENUE_ID/access-rules/acr_77" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{ "success": true }

POST /api/my-venues/:venueId/access-rules/:id/image sets the rule’s display image. Send the image as a base64 data URL in a data field (max 2 MB); the response returns the stored URL and writes it to the rule’s display_image_url.

Terminal window
curl -X POST "https://thesidedoor.co/api/my-venues/VENUE_ID/access-rules/acr_77/image" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA..."}'
{ "success": true, "url": "/assets/access-rules/VENUE_ID/acr_77.jpg" }

A blackout closes bookings over a date range. date_from and date_to are required; description and the affects_guestlist/affects_events/ affects_reservations toggles are optional.

Terminal window
curl -X POST "https://thesidedoor.co/api/my-venues/VENUE_ID/blackouts" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"date_from":"2026-12-24","date_to":"2026-12-26","description":"Holiday closure","affects_guestlist":true,"affects_events":true,"affects_reservations":true}'
{ "success": true, "id": "blk_5a" }

Update with PUT /api/my-venues/:venueId/blackouts/:id (same fields; 404 if the id does not match) and remove with DELETE /api/my-venues/:venueId/blackouts/:id, each returning { "success": true }.