Offerings catalog

Area Booking Types

An AreaBookingType represents a type of area that can be booked at a site.

get/shop/area-booking-types

List area booking types

listAreaBookingTypes

Returns a paginated list of AreaBookingTypes configured at the given site, ordered by name. Use this to power a settings dashboard or to populate a booking-frame selector for cabanas, pool loungers, treatment pods and other bookable spaces. The list includes archived items only when archived=true is passed.

Requires the RESERVATIONS_VIEW permission on the site.

Query parameters

  • site_idstringrequired

    Filter results by the site they belong to

  • pageintegeroptional

    The page to retrieve results from

  • per_pageintegeroptional

    The number of results to return per page

  • archivedbooleanoptional

    Whether to include archived resources in the response. When true, archived resources are returned; when false or omitted, only non-archived resources are returned.

  • category_idstringoptional

    Filter results to area booking types that include the given category in their category_ids. Comma-separate to OR multiple categories.

Responses

  • 200

    A paginated list of AreaBookingTypes for the requested site.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

post/shop/area-booking-types

Create an area booking type

createAreaBookingType

Creates a new AreaBookingType at the given site. The required body is name, start_time_interval, duration_interval, min_duration and max_duration; everything else has sensible defaults.

Requires the SETTINGS_MANAGE permission on the site referenced via the Trybe-Site-Id header. The newly created type is attributed to the caller's primary organisation.

Query parameters

  • site_idstringrequired

    Filter results by the site they belong to

  • pageintegeroptional

    The page to retrieve results from

  • per_pageintegeroptional

    The number of results to return per page

  • archivedbooleanoptional

    Whether to include archived resources in the response. When true, archived resources are returned; when false or omitted, only non-archived resources are returned.

  • category_idstringoptional

    Filter results to area booking types that include the given category in their category_ids. Comma-separate to OR multiple categories.

Request body

  • namestringrequired

    Display name for the area booking type. Visible to customers in the booking flow and to staff in the admin UI. Plain text only — HTML tags are rejected at validation time.

  • descriptionstringoptional

    Long-form description shown to customers when they're selecting the area. Markdown is rendered.

  • product_codestringoptionalnullable

    Optional product code used to map this area booking type to an external POS or PMS catalog. Free-form string; uniqueness is not enforced server-side.

  • external_idstringoptionalnullable

    External identifier used by integrations to reference this offering. Free-form.

  • currencystringoptional

    The ISO-4217 currency code.

  • start_time_intervalintegerrequired

    The granularity (in minutes) at which start times are offered. 30 means slots are offered on the hour and half-hour.

  • duration_intervalintegerrequired

    The granularity (in minutes) at which the customer can extend their booking beyond min_duration, up to max_duration. 60 means durations are picked in one-hour steps.

  • min_durationintegerrequired

    Minimum bookable duration in minutes. Customers cannot pick a duration shorter than this.

  • max_durationintegerrequired

    Maximum bookable duration in minutes. Customers cannot pick a duration longer than this.

  • end_bufferintegeroptionalnullable

    Minutes of buffer time added after the booking ends. Useful for reset, cleaning, or staff handover. The calendar slot is reserved for duration + end_buffer.

  • max_basketsintegeroptional

    Maximum number of concurrent baskets (distinct customer bookings) that can hold the same time slot. 0 is treated as no parallel allowance — only one booking holds the area at any time. Use higher values when the area accepts multiple parties simultaneously (e.g. shared sun-loungers).

  • max_guestsintegeroptionalnullable

    Maximum number of guests a single booking of this area can cover. Used to surface a guest-count selector in the booking flow.

  • area_idsstring[]optional

    BookableArea IDs this booking type maps to. Filtered to areas belonging to the site referenced in the Trybe-Site-Id header; areas outside the site are silently filtered out.

  • category_idsstring[]optional

    Category IDs the area booking type belongs to. Used for shopfront grouping.

  • offered_onlinebooleanoptional

    When true, the area booking type is bookable via the public shopfront. When false, it's bookable only via the admin UI. Defaults to false.

  • privatebooleanoptional

    When true, only customers with the direct link can book this area booking type.

  • visibilitystringoptional

    Visibility override. When set, controls who can see this offering in the shopfront beyond the offered_online/private defaults.

    Possible values:publichiddenmembers_only
  • customers_onlybooleanoptional

    When true, only registered customers (not guests) can book.

  • members_onlybooleanoptional

    When true, only members of permitted membership types can book.

  • permitted_membership_type_idsstring[]optionalnullable

    Membership type IDs whose members are allowed to book. Only relevant when members_only=true. Membership types from outside the site's brand are silently filtered out.

  • When true, members can book further in advance than the standard window. The exact extra advance period per membership type is defined in membership_booking_windows.

  • Per-membership-type advance-booking-window overrides.

  • max_advance_bookings_intervalstringoptionalnullable

    ISO 8601 duration limiting how far in advance customers can book. e.g. P30D = 30 days, P1Y = 1 year. Null means unbounded.

  • min_advance_bookings_intervalstringoptionalnullable

    ISO 8601 duration limiting how soon before the booking start time a customer can place a booking. e.g. PT2H = at least 2 hours' notice.

  • customer_cancellation_permittedstringoptionalnullable

    Whether and when customers can cancel a booking themselves. allowed = always. if_unpaid = only if no payment has been taken. disallowed = never (admin only).

    Possible values:allowedif_unpaiddisallowed
  • ISO 8601 duration before the booking start during which cancellation is no longer permitted. e.g. PT24H = no cancellation in the last 24 hours.

  • Whether to surface the price alongside the offering in calendar views.

  • max_per_basketintegeroptionalnullable

    Maximum number of this area booking type per basket.

  • max_per_guestintegeroptionalnullable

    Maximum number of this area booking type per individual guest within a basket.

  • revenue_centrestringoptionalnullable

    Identifier of the revenue centre that bookings of this area booking type post to. Must be a valid revenue centre for the site.

  • upsell_offeringsobject[]optional

    Other offerings to upsell on the booking confirmation page.

  • cross_sell_offeringsobject[]optional

    Other offerings to cross-sell during the booking flow.

Responses

  • 201

    A single AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 422

    The request didn't pass validation

get/shop/area-booking-types/{areaBookingTypeId}

Retrieve an area booking type

getAreaBookingType

Returns the full AreaBookingType for the given ID. Use this to populate an admin edit screen or to look up settings when building a booking against a known offering.

Path parameters

Responses

  • 200

    A single AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

put/shop/area-booking-types/{areaBookingTypeId}

Update an area booking type

updateAreaBookingType

Partially updates an AreaBookingType. Every field is optional; only fields you send are written. Fields you omit retain their current values.

Requires the SETTINGS_MANAGE permission on the area booking type's site.

Path parameters

Request body

  • namestringoptional

    Display name. Plain text only — HTML tags are rejected.

  • descriptionstringoptionalnullable

    Long-form description shown to customers. Markdown rendered.

  • product_codestringoptionalnullable

    External POS/PMS product code.

  • external_idstringoptionalnullable

    External identifier used by integrations.

  • currencystringoptional

    The ISO-4217 currency code.

  • start_time_intervalintegeroptional

    Granularity (in minutes) at which start times are offered.

  • duration_intervalintegeroptional

    Granularity (in minutes) at which the customer can extend the booking between min_duration and max_duration.

  • min_durationintegeroptional

    Minimum bookable duration in minutes.

  • max_durationintegeroptional

    Maximum bookable duration in minutes.

  • end_bufferintegeroptionalnullable

    Buffer minutes added after the booking ends.

  • max_basketsintegeroptionalnullable

    Maximum number of concurrent baskets that can hold the same time slot. On update this is nullable (set to null to clear any previously configured cap).

  • max_guestsintegeroptionalnullable

    Maximum number of guests a single booking of this area can cover.

  • area_idsstring[]optional

    BookableArea IDs this booking type maps to. Filtered to areas belonging to the area booking type's site.

  • category_idsstring[]optional

    Category IDs for shopfront grouping.

  • offered_onlinebooleanoptional

    Whether bookable via the public shopfront.

  • privatebooleanoptional

    When true, only customers with the direct link can book.

  • visibilitystringoptional

    Visibility override that determines who sees this offering on the shopfront. public shows it to everyone; hidden keeps it out of search and browse (still bookable by direct link); members_only restricts to authenticated members of permitted membership types.

    Possible values:publichiddenmembers_only
  • customers_onlybooleanoptional

    Restrict booking to registered customers.

  • members_onlybooleanoptional

    Restrict booking to permitted membership-type holders.

  • permitted_membership_type_idsstring[]optionalnullable

    Membership types whose members can book when members_only=true.

  • Whether to apply per-membership-type advance-booking windows.

  • Per-membership-type advance-window overrides.

  • max_advance_bookings_intervalstringoptionalnullable

    ISO 8601 max-advance booking duration.

  • min_advance_bookings_intervalstringoptionalnullable

    ISO 8601 min-advance booking duration.

  • customer_cancellation_permittedstringoptionalnullable

    Customer self-cancellation policy.

    Possible values:allowedif_unpaiddisallowed
  • ISO 8601 duration before start at which cancellation is locked.

  • Surface prices in calendar views.

  • max_per_basketintegeroptionalnullable

    Max of this type per basket.

  • max_per_guestintegeroptionalnullable

    Max of this type per guest per basket.

  • revenue_centrestringoptionalnullable

    Revenue centre to post bookings to. Must be valid for the area booking type's site.

  • upsell_offeringsobject[]optional

    Upsell candidates at booking confirmation.

  • cross_sell_offeringsobject[]optional

    Cross-sell candidates during booking.

  • image_idstringoptionalnullable

    ID of an uploaded Media for the cover image.

  • metaobjectoptional

    SEO metadata for the shopfront page.

Responses

  • 200

    A single AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

delete/shop/area-booking-types/{areaBookingTypeId}

Delete an area booking type

deleteAreaBookingType

Soft-deletes the area booking type. Existing bookings are unaffected; the type is removed from new-booking flows. Use POST .../restore to bring it back.

400 Bad Request if the area booking type is referenced by any Package's item choices — remove it from those packages first.

Path parameters

Responses

  • 204

    Area booking type deleted successfully.

  • 400

    Deletion blocked because the area booking type is referenced by existing packages. The response body lists the package names.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

get/shop/area-booking-types/{areaBookingTypeId}/availability-rules

List availability rules for an area booking type

listAreaBookingTypeAvailabilityRules

Returns all AvailabilityRules configured on an AreaBookingType. Availability rules carve up the working calendar into windows when bookings can or cannot happen — useful for blocking maintenance days, restricting cabana hours, or opening the pool deck only during summer months.

Rule semantics: any is_available: false rule overrides any is_available: true rule for the same time period.

Path parameters

Responses

  • 200

    A list of AvailabilityRules on an AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

post/shop/area-booking-types/{areaBookingTypeId}/availability-rules

Create an availability rule for an area booking type

createAreaBookingTypeAvailabilityRule

Adds a new AvailabilityRule to an AreaBookingType. With is_available: true the rule opens new bookable windows; with is_available: false it blocks them. Omitting date/time/weekday filters means the rule applies always.

Requires the SETTINGS_MANAGE permission on the area booking type's site.

Path parameters

Request body

  • is_availablebooleanoptional

    Whether the window is bookable. false rules override true rules.

  • date_fromdateoptionalnullable

    First date this rule applies (inclusive).

  • date_todateoptionalnullable

    Last date this rule applies (inclusive).

  • time_fromstringoptionalnullable

    Daily start time in HH:MM.

  • time_tostringoptionalnullable

    Daily end time in HH:MM.

  • min_durationintegeroptional

    Match only for durations ≥ this many minutes.

  • max_durationintegeroptional

    Match only for durations ≤ this many minutes.

  • weekdaysstring[]optional

Responses

  • 201

    A single AvailabilityRule.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

get/shop/area-booking-types/{areaBookingTypeId}/availability-rules/{availabilityRuleId}

Retrieve an availability rule

getAreaBookingTypeAvailabilityRule

Returns a single AvailabilityRule belonging to the given AreaBookingType.

Path parameters

Responses

  • 200

    A single AvailabilityRule.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

put/shop/area-booking-types/{areaBookingTypeId}/availability-rules/{availabilityRuleId}

Update an availability rule

updateAreaBookingTypeAvailabilityRule

Replaces an AvailabilityRule. The server validates the same shape as on create, so is_available is required. Requires the SETTINGS_MANAGE permission on the area booking type's site.

Path parameters

Request body

  • is_availablebooleanrequired

    Whether the window is bookable. false rules override true rules.

  • date_fromdateoptionalnullable

    First date this rule applies (inclusive).

  • date_todateoptionalnullable

    Last date this rule applies (inclusive).

  • time_fromstringoptionalnullable

    Daily start time in HH:MM.

  • time_tostringoptionalnullable

    Daily end time in HH:MM.

  • min_durationintegeroptional

    Match only for durations ≥ this many minutes.

  • max_durationintegeroptional

    Match only for durations ≤ this many minutes.

  • weekdaysstring[]optional

Responses

  • 200

    A single AvailabilityRule.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

delete/shop/area-booking-types/{areaBookingTypeId}/availability-rules/{availabilityRuleId}

Delete an availability rule

deleteAreaBookingTypeAvailabilityRule

Removes an AvailabilityRule from an AreaBookingType. Calendar availability is recomputed from the remaining rules. Existing bookings are unaffected.

Path parameters

Responses

  • 204

    Availability rule deleted successfully.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

post/shop/area-booking-types/{areaBookingTypeId}/copy

Duplicate an area booking type

copyAreaBookingType

Creates a copy of an existing AreaBookingType with new fields applied from the request body. Useful when seeding a new offering off an existing one rather than building from scratch. The new area booking type is created under the same site as the original; you can override most fields by sending them in the body.

Requires the SETTINGS_MANAGE permission on the original area booking type's site.

Path parameters

Request body

  • namestringrequired

    Display name for the new copy. Required so the copy is distinguishable from the source.

  • currencystringoptional

    The ISO-4217 currency code.

  • descriptionstringoptional

    Override the customer-facing long-form description. Defaults to the source's description when omitted. Markdown rendered.

  • product_codestringoptionalnullable

    External POS/PMS product code on the copy.

  • external_idstringoptionalnullable

    Override external identifier on the copy. Defaults to null so integrations don't accidentally see two offerings with the same external id.

  • start_time_intervalintegeroptional

    Override the start-time granularity (in minutes) on the copy. 30 means slots are offered on the hour and half-hour.

  • duration_intervalintegeroptional

    Override the duration step (in minutes) on the copy.

  • min_durationintegeroptional

    Override the minimum bookable duration (in minutes) on the copy.

  • max_durationintegeroptional

    Override the maximum bookable duration (in minutes) on the copy.

  • end_bufferintegeroptionalnullable

    Override the buffer minutes after each booking on the copy.

  • max_basketsintegeroptionalnullable

    Override the maximum number of concurrent baskets the copy accepts on the same time slot.

  • area_idsstring[]optional

    Override the bookable areas the copy maps to. Filtered to BookableAreas belonging to the source's site.

  • category_idsstring[]optional

    Override the shopfront category memberships on the copy.

  • offered_onlinebooleanoptional

    Whether the copy is bookable via the public shopfront. Defaults to the source's value.

  • privatebooleanoptional

    When true, only customers with the direct link can book the copy.

  • visibilitystringoptional

    Visibility override on the copy. Same semantics as on the source.

    Possible values:publichiddenmembers_only
  • customers_onlybooleanoptional

    When true, only registered customers (not guests) can book the copy.

  • members_onlybooleanoptional

    When true, only members of permitted membership types can book the copy.

  • permitted_membership_type_idsstring[]optionalnullable

    Membership types whose members can book the copy when members_only=true.

  • Whether to apply per-membership-type advance-booking windows on the copy.

  • Per-membership-type advance-window overrides on the copy.

  • max_advance_bookings_intervalstringoptionalnullable

    ISO 8601 duration limiting how far in advance customers can book the copy. e.g. P30D = 30 days.

  • min_advance_bookings_intervalstringoptionalnullable

    ISO 8601 duration limiting how soon before the booking start time a customer can book the copy. e.g. PT2H = at least 2 hours' notice.

  • customer_cancellation_permittedstringoptionalnullable

    Customer self-cancellation policy on the copy. allowed = always; if_unpaid = only if no payment has been taken; disallowed = never.

    Possible values:allowedif_unpaiddisallowed
  • ISO 8601 duration before the booking start during which cancellation is no longer permitted on the copy.

  • Whether to surface the price alongside the offering in calendar views on the copy.

  • max_per_basketintegeroptionalnullable

    Maximum number of the copy per basket.

  • max_per_guestintegeroptionalnullable

    Maximum number of the copy per individual guest within a basket.

  • revenue_centrestringoptionalnullable

    Revenue centre identifier that bookings of the copy post to. Must be a valid revenue centre for the area booking type's site.

  • upsell_offeringsobject[]optional

    Override the upsell candidates surfaced at booking confirmation on the copy.

  • cross_sell_offeringsobject[]optional

    Override the cross-sell candidates surfaced during the booking flow on the copy.

  • metaobjectoptional

    SEO metadata for the copy's shopfront page.

Responses

  • 201

    A single AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

get/shop/area-booking-types/{areaBookingTypeId}/price-rules

List price rules for an area booking type

listAreaBookingTypePriceRules

Returns all price rules configured for the given AreaBookingType, filterable by date range and weekday. Price rules determine the price a customer pays based on when the booking is placed and how long it lasts — peak vs off-peak, weekday vs weekend, day-rate vs half-day. The first rule whose conditions match the booking wins.

Path parameters

Query parameters

  • date_fromdateoptional

    Restrict results to those on or after this date, ISO-8601 YYYY-MM-DD.

  • date_todateoptional

    Restrict results to those on or before this date, ISO-8601 YYYY-MM-DD.

  • weekdaysstring[]optional

    Filter for price rules that are apply on any of the given weekdays.

  • pageintegeroptional

    The page to retrieve results from

  • per_pageintegeroptional

    The number of results to return per page

Responses

  • 200

    A paginated list of price rules for an area booking type.

  • 401

    The user is unauthenticated

  • 404

    The resource couldn't be found

post/shop/area-booking-types/{areaBookingTypeId}/price-rules

Create a price rule for an area booking type

createAreaBookingTypePriceRule

Adds a new price rule to an AreaBookingType. Rules with date and time ranges + weekday filters combine to express most pricing scenarios — peak vs off-peak, weekday vs weekend, seasonal overrides. The max_duration is required and the price applies to bookings up to that length. The first rule whose conditions match a given booking wins.

Requires the SETTINGS_MANAGE permission on the area booking type's site.

Path parameters

Request body

  • priceintegerrequired

    Price in the smallest currency unit (e.g. pence, cents). 12000 means £120.00 in a GBP-denominated site.

  • max_durationintegerrequired

    Apply this rule to bookings up to this many minutes long. For an area booking, this is typically how the day-rate vs half-day rate split is expressed.

  • date_fromdateoptionalnullable

    First date this rule applies (inclusive). Defaults to today in the site's timezone if omitted.

  • date_todateoptionalnullable

    Last date this rule applies (inclusive). When omitted, the rule has no end date.

  • time_fromstringoptionalnullable

    Start of the time-of-day window in 24-hour HH:MM format. When time_to is set, must be earlier than time_to (the rule does not wrap past midnight).

  • time_tostringoptionalnullable

    End of the time-of-day window in 24-hour HH:MM format. Must be later than time_from if both are set.

  • weekdaysstring[]optionalnullable

    Days of the week this rule applies on. Empty / omitted means every day.

Responses

  • 201

    A single price rule on an AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

get/shop/area-booking-types/{areaBookingTypeId}/price-rules/{priceRuleId}

Retrieve a price rule

getAreaBookingTypePriceRule

Returns a single price rule belonging to the given AreaBookingType.

Path parameters

Responses

  • 200

    A single price rule on an AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

put/shop/area-booking-types/{areaBookingTypeId}/price-rules/{priceRuleId}

Update a price rule

updateAreaBookingTypePriceRule

Partially updates a price rule. Every field is optional; only fields you send are written. Requires the SETTINGS_MANAGE permission on the area booking type's site.

Path parameters

Request body

  • priceintegeroptional

    Price in the smallest currency unit.

  • max_durationintegeroptional

    Apply this rule to bookings up to this many minutes long.

  • date_fromdateoptionalnullable

    First date this rule applies (inclusive).

  • date_todateoptionalnullable

    Last date this rule applies (inclusive).

  • time_fromstringoptionalnullable

    Start of the time-of-day window in HH:MM.

  • time_tostringoptionalnullable

    End of the time-of-day window in HH:MM.

  • weekdaysstring[]optionalnullable

Responses

  • 200

    A single price rule on an AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

  • 422

    The request didn't pass validation

delete/shop/area-booking-types/{areaBookingTypeId}/price-rules/{priceRuleId}

Delete a price rule

deleteAreaBookingTypePriceRule

Removes a price rule from an AreaBookingType. Existing bookings already priced under this rule are unaffected — they retain the price set at booking time.

Path parameters

Responses

  • 204

    Price rule deleted successfully.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

post/shop/area-booking-types/{areaBookingTypeId}/restore

Restore a deleted area booking type

restoreAreaBookingType

Un-deletes a previously soft-deleted AreaBookingType. The area booking type returns to its pre-deletion state, including all areas and rules. Existing bookings against it remain unaffected by either the delete or the restore.

Requires the SETTINGS_MANAGE permission on the area booking type's site. No request body.

Path parameters

Responses

  • 200

    A single AreaBookingType.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found