Packages
List packages
Returns a paginated list of Packages configured at the given site, ordered by name. Use this to power a settings dashboard or to populate a shopfront browse page. The list includes archived (soft-deleted) packages only when archived=true is passed.
Requires the RESERVATIONS_VIEW permission on the site. Pass include_option_offerings=true to embed each item choice's option offering details (helpful when rendering the package contents inline).
get/shop/packages
Response
A paginated list of Packages for the requested site.
Example response
{
"links": {
"first": "http://example.com?page=1",
"next": "https://example.com?page=3",
"prev": "https://example.com?page=1",
"last": "https://example.com?page=4"
},
"meta": {
"from": 1,
"to": 2,
"total": 2,
"current_page": 1,
"last_page": 2,
"per_page": 15,
"path": "http://example.com/api"
},
"data": [
{
"id": "5dcb47800000000000000010",
"categories": [
{
"name": "Massages"
}
],
"cross_sell_offerings": [
{
"offering_name": "Twilight massage",
"offering_type": "appointment"
}
],
"currency": "gbp",
"customer_cancellation_min_duration": "P7D",
"customer_cancellation_permitted": "allowed",
"customer_reschedule_min_duration": "P7D",
"customer_reschedule_permitted": "allowed",
"description": "Buy together and save",
"email_options": {
"hide_prices": true
},
"image": {
"file_name": "super-cool-photo.jpg",
"mime_type": "image/jpeg",
"original_url": "https://example.com/media/super-cool-photo.jpg",
"size": 84256,
"url": "https://example.com/media/super-cool-photo-thumbnail@2x.jpg"
},
"item_choices": [
{
"id": "5dcb47800000000000000025",
"allow_overlaps": true,
"auto_select_timeslot": true,
"description": "Choose your type of massage.",
"hide_times": true,
"name": "Massage",
"max_options": 2,
"min_options": 1,
"option_budget": 2000,
"optional": true,
"options": [
{
"id": "5dcb47800000000000000026",
"item_type": "appointment",
"offering": {
"id": "5e932c0901d210625e3a8766",
"categories": [
{
"id": "5e932c0901d210625e3a8766",
"name": "Massage"
}
],
"currency": "gbp",
"description": "Choose from classic, deep tissue and Swedish massage",
"discounted_price_from": 4500,
"duration": 30,
"durations": [
30
],
"has_availability": true,
"image": {
"file_name": "super-cool-photo.jpg",
"mime_type": "image/jpeg",
"original_url": "https://example.com/media/super-cool-photo.jpg",
"size": 84256,
"url": "https://example.com/media/super-cool-photo-thumbnail@2x.jpg"
},
"max_guests": 2,
"min_guests": 2,
"name": "60 minute massage",
"price_from": 5000,
"price_to": 6500,
"type": "appointment"
},
"price_change": 2000
}
],
"start_time_rules": [
{
"absolute_time_from": "12:00",
"absolute_time_to": "12:30",
"relative_mins_to": 30
}
],
"visible": true
}
],
"max_advance_bookings_interval": "P2W",
"max_daily_duration": 240,
"max_guests": 2,
"max_per_basket": 1,
"max_per_guest": 1,
"members_only": true,
"membership_booking_windows": [
{
"max_advance_bookings_interval": "P2W",
"min_advance_bookings_interval": "P2D"
}
],
"membership_booking_windows_enabled": true,
"min_advance_bookings_interval": "P2D",
"min_guests": 2,
"name": "Treatment and Yoga",
"overnight_package_config": {
"enabled": true,
"rate_id": "5dcb47800000000000000010",
"num_nights": 1
},
"prevent_choice_overlaps": true,
"price_rules": [
{
"id": "5dcb47800000000000000010",
"package_id": "5dcb47800000000000000010",
"date_from": "2020-02-01",
"date_to": "2020-04-01",
"time_from": "10:00",
"time_to": "14:00",
"weekdays": [
"monday"
],
"price": 20000
}
],
"product_code": "MAS123",
"related_retail_offerings": [
{
"offering_name": "Twilight massage",
"offering_type": "appointment"
}
],
"site_id": "00000000-0000-0000-0000-111111111111",
"standard_price": 5000,
"upsell_offerings": [
{
"offering_name": "Twilight massage",
"offering_type": "appointment"
}
],
"visibility": "public",
"deleted_at": "2025-02-04T12:00:00+01:00",
"updated_at": "2025-02-04T12:00:00+01:00"
}
]
}