Skip to main content
POST
Duplicate 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

Path Parameters

id
integer
required

1club booking policy id

Response

The copy

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>