Calendar & Scheduling

Sessions

A Session represents an occurrence of a SessionType.

get/shop/sessions

List Sessions

listSessions

This endpoint lists all Sessions.

Query parameters

  • cancelledbooleanoptional

    Whether to exclusively return cancelled Sessions.

  • idstringoptional

    A comma separated list of Session ids to search for.

  • include_bookingsbooleanoptional

    Whether to include associated Bookings.

  • include_cancelledbooleanoptional

    Whether to include cancelled Sessions.

  • practitioner_idstringoptional

    A comma separated list of Practitioner ids.

  • recurrence_group_idstringoptional

    A comma separated list of SessionRecurrenceGroup ids.

  • room_idstringoptional

    A comma separated list of Room ids.

  • session_type_idstringoptional

    A comma separated list of SessionType ids.

  • zone_idstringoptional

    A comma separated list of Zone ids.

  • datedate-timeoptional

    A date string to retrieve results for

  • dateFromdate-timeoptional

    A date string to retrieve results from

  • dateTodate-timeoptional

    A date string to retrieve results to

  • pageintegeroptional

    The page to retrieve results from

  • per_pageintegeroptional

    The number of results to return per page

  • site_idstringoptional

    Filter results by the site they belong to

  • start_time_fromdate-timeoptional

    Filter results by when they start.

  • start_time_todate-timeoptional

    Filter results by when they end.

Responses

  • 200

    The Sessions were successfully retrieved.

  • 401

    The user is unauthenticated

get/shop/sessions/{sessionId}

Fetch a Session

getSession

Returns a single Session model.

Path parameters

Query parameters

Responses

  • 200

    The Session was successfully retrieved.

  • 401

    The user is unauthenticated

  • 404

    The resource couldn't be found

put/shop/sessions/{sessionId}

Update a Session

updateSession

Updates an in-flight Session occurrence — practitioner, room, times, capacity, waitlist behaviour. Only fields included in the request body are written; everything else is left unchanged.

Note this updates a single occurrence rather than the underlying SessionType or SessionRecurrenceGroup — for repeating session changes use the recurrence-group endpoints instead.

Path parameters

Query parameters

Request body

  • idstringrequired

    Stable identifier for the session occurrence. A Session is one scheduled instance of a SessionType — bookings are made against this id, not against the underlying type or recurrence group.

  • bookingsobject[]optional

    If requested, an array of bookings for this session.

  • capacityintegerrequired

    The total capacity of the session.

  • currencystringrequired

    The ISO-4217 currency code in lower case.

  • durationintegerrequired

    The duration of the session.

  • end_timedate-timerequired

    The date and time the session ends.

  • max_basketsintegerrequirednullable

    The maximum number of baskets that may have bookings for this session.

  • num_checked_inintegerrequired

    If bookings are included, this is the number of bookings that have been checked in.

  • num_no_showintegerrequired

    If bookings are included, this is the number of bookings that have marked as no-show.

  • num_waitlistedintegerrequired

    The number of customers currently on the waiting list for this session.

  • organisation_idstringrequired

    Organisation the session belongs to. Sessions are scoped to a single organisation and are invisible to API callers from other organisations.

  • practitionerobjectrequirednullable

    The summary of a Practitioner object

  • practitioner_idstringrequirednullable

    The practitioner scheduled to lead this session. null for sessions that don't require a specific staff member (e.g. a free-access spa slot). Must reference an active practitioner on site_id.

  • priceintegerrequired

    The cost of the session, in the smallest denomination (eg pence or cents).

  • remaining_capacityintegerrequired

    The remaining capacity of the session.

  • roomobjectrequired

    The summary of a Room object

  • room_idstringrequired

    The room the session takes place in. Must reference a room configured on site_id. Used by the staff console to colour the session in the schedule view and to enforce per-room capacity caps.

  • session_type_idstringrequired

    The SessionType this session is an occurrence of. Inherits defaults (default capacity, default duration, default price) from this type unless overridden on the session itself.

  • session_type_namestringrequired

    Cached display name copied from the parent SessionType at the time the session was created. Useful for reporting where the type may since have been renamed.

  • site_idstringrequired

    Site the session is hosted at. Sessions never span more than one site; bookings on the session inherit this site_id for rota and revenue-reporting purposes.

  • start_timedate-timerequired

    The date and time the session starts.

  • waitlist_enabledbooleanrequired

    Whether the waitlist is enabled for this session.

  • created_atdate-timerequired

    The date and time the session was created.

  • deleted_atdate-timeoptional

    The date and time the session was deleted (cancelled).

  • updated_atdate-timerequired

    The date and time the session was last updated.

Responses

  • 200

    The Session was successfully updated.

  • 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/sessions/{sessionId}

Cancel a Session

deleteSession

Cancels a single Session occurrence. Any existing bookings on the session are notified per the site's session-cancellation settings; the session itself is soft-deleted so it can be restored (see POST /shop/sessions/{sessionId}/restore).

Path parameters

Query parameters

Responses

  • 204

    The session was successfully cancelled.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found

post/shop/sessions/{sessionId}/restore

Restore a deleted session

restoreSession

Un-deletes a previously soft-deleted Session. The session returns to its pre-deletion state, including its slot on the calendar. Customers booked into the session before deletion are NOT automatically rebooked — their bookings remain cancelled.

Requires the SETTINGS_MANAGE permission on the session's site. No request body.

Path parameters

Responses

  • 200

    The session was restored successfully.

  • 401

    The user is unauthenticated

  • 403

    The authenticated user does not have permission.

  • 404

    The resource couldn't be found