Skip to main content
POST
Create a booking policy

Authorizations

Authorization
string
header
required

Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.

Headers

Idempotency-Key
string

Retry-safe key; a repeat of the same request replays the first response

Maximum string length: 255

Body

application/json

Fields accepted when creating a booking policy. clubIds must be present: an empty list applies the policy at every club, where it takes over from the policy that governed there, so it has to be asked for. Everything else takes the policy default when omitted. Unknown fields are rejected.

name
string
required

Internal name, shown to staff in the admin portal.

Required string length: 1 - 255
clubIds
integer[]
required

Clubs the policy applies at. Empty means every club. Required on create.

Maximum array length: 500
kind
enum<string>

booking (the default) governs bookings of courts, coaches and classes. event decides only what event tickets refund on cancellation, and takes no validFor or audience.

Available options:
booking,
event
validFor
object | null

What the policy governs. No scopes means every booking. Each scope listed (classes, areas, instructors) takes in bookings of that kind, all of them unless its type list (classTypes, areaTypes, instructorTypes) narrows it; a type list must not be empty and must belong to a listed scope. null on a write is the same as {}.

eventIds
integer[]

Event policies only: the events it covers. Empty means every event.

Maximum array length: 500
audience
object | null

Who the policy governs. Every list set must match: a contact of one of memberTypes, carrying one of tags, holding one of membershipPlanIds (or a plan in membershipPlanCategoryIds), and so on. null means everyone. A policy with an audience never applies to an anonymous booking.

cancellationRules
object[]

The refund ladder. The first band whose notice the member met decides the refund; meeting none refunds nothing. hoursInAdvance must be distinct and refunds may not grow as the booking approaches. Empty is free cancellation at any time; every band at 0% is non-refundable (canonically one band, 0 hours at 0%).

Maximum array length: 20
forcePayment
enum<string>

at_booking sends members to an online card checkout before the booking is confirmed, and needs an online card payment provider at the policy clubs. at_checkin takes payment on arrival.

Available options:
none,
at_booking,
at_checkin
chargeAdvanceDays
integer | null

Days before each occurrence of a recurring booking that its charge is written. null uses the platform default of 3. Not used while payment is taken at booking.

Required range: 0 <= x <= 365
minBookingSlotMinutes
integer | null

Shortest booking allowed. A whole number of steps, and at most maxBookingSlotMinutes.

Required range: x >= 0
maxBookingSlotMinutes
integer | null

Longest booking allowed.

Required range: x >= 0
bookingDurationStepMinutes
enum<integer> | null

The step a booking length grows by.

Available options:
30,
60,
null
maxBookInAdvanceDays
integer | null

How many days ahead members may book. null is no limit.

Required range: x >= 0
minBookingNoticeHours
integer | null

How late before the start members may still book. null is no limit.

Required range: x >= 0
waiveNoticeWhenBooked
boolean

Lift minBookingNoticeHours for a class someone has already booked, since it is confirmed to run.

checkInRequired
boolean

A booking not checked in by the end of the day is marked a no-show.

autoCheckIn
boolean

Check the booking in automatically when it starts.

allowAnonymousBookings
boolean

Staff may book without naming a contact.

allowGuestBookings
boolean

Logged-out visitors may book without an account or password, giving their details at checkout.

allowWalkInCheckins
boolean

Staff may check in a contact who has no booking.

allowAnonymousCheckins
boolean

Staff may check in a visitor with no contact record.

allowedProductCategoryIds
integer[]

Product categories offered with the booking confirmation. Empty offers none.

Maximum array length: 500
waitlistClaimWindowMinutes
integer | null

Minutes the first person on a waitlist has to claim a place that opens shortly before a class. null uses the default of 15.

Required range: x >= 0
upsellAvailablePlans
boolean

Offer plans at booking.

upsellPlanIds
integer[]

The plans offered at booking.

Maximum array length: 500

Response

Booking policy created

The rules a booking is held to: cancellation terms, payment timing, booking window, slot grid and check-in rules. Scoped on WHAT it governs (validFor) and WHO (audience), narrowed to clubIds; when several apply, the most specific wins. An event policy instead decides what event tickets refund.

policyId
integer
name
string

Internal name, shown to staff in the admin portal.

Required string length: 1 - 255
kind
enum<string>

booking (the default) governs bookings of courts, coaches and classes. event decides only what event tickets refund on cancellation, and takes no validFor or audience.

Available options:
booking,
event
clubIds
integer[]

Clubs the policy applies at. Empty means every club. Required on create.

Maximum array length: 500
validFor
object

What the policy governs. {} means every booking. Always {} on an event policy.

eventIds
integer[]

Event policies only: the events it covers. Empty means every event.

Maximum array length: 500
audience
object | null

Who the policy governs. null means everyone. Always null on an event policy.

cancellationRules
object[]

The refund ladder. The first band whose notice the member met decides the refund; meeting none refunds nothing. hoursInAdvance must be distinct and refunds may not grow as the booking approaches. Empty is free cancellation at any time; every band at 0% is non-refundable (canonically one band, 0 hours at 0%).

Maximum array length: 20
forcePayment
enum<string>

at_booking sends members to an online card checkout before the booking is confirmed, and needs an online card payment provider at the policy clubs. at_checkin takes payment on arrival.

Available options:
none,
at_booking,
at_checkin
chargeAdvanceDays
integer | null

Days before each occurrence of a recurring booking that its charge is written. null uses the platform default of 3. Not used while payment is taken at booking.

Required range: 0 <= x <= 365
minBookingSlotMinutes
integer | null

Shortest booking allowed. A whole number of steps, and at most maxBookingSlotMinutes.

Required range: x >= 0
maxBookingSlotMinutes
integer | null

Longest booking allowed.

Required range: x >= 0
bookingDurationStepMinutes
enum<integer> | null

The step a booking length grows by.

Available options:
30,
60,
null
maxBookInAdvanceDays
integer | null

How many days ahead members may book. null is no limit.

Required range: x >= 0
minBookingNoticeHours
integer | null

How late before the start members may still book. null is no limit.

Required range: x >= 0
waiveNoticeWhenBooked
boolean

Lift minBookingNoticeHours for a class someone has already booked, since it is confirmed to run.

checkInRequired
boolean

A booking not checked in by the end of the day is marked a no-show.

autoCheckIn
boolean

Check the booking in automatically when it starts.

allowAnonymousBookings
boolean

Staff may book without naming a contact.

allowGuestBookings
boolean

Logged-out visitors may book without an account or password, giving their details at checkout.

allowWalkInCheckins
boolean

Staff may check in a contact who has no booking.

allowAnonymousCheckins
boolean

Staff may check in a visitor with no contact record.

allowedProductCategoryIds
integer[]

Product categories offered with the booking confirmation. Empty offers none.

Maximum array length: 500
waitlistClaimWindowMinutes
integer | null

Minutes the first person on a waitlist has to claim a place that opens shortly before a class. null uses the default of 15.

Required range: x >= 0
upsellAvailablePlans
boolean

Offer plans at booking.

upsellPlanIds
integer[]

The plans offered at booking.

Maximum array length: 500
createdAt
string<date-time>
updatedAt
string<date-time>