Return a single booking with member details in the same format as a booking sheet

GET /api/booking-sheets/booking/{bookingId}

Success: 200 OK

Overview

Returns one booking in exactly the shape it takes inside a booking sheet, so you can refresh a single cell of a sheet without re-fetching the whole grid. The response is a bare booking object, not wrapped in resourceGroups.

Reach for it after Return booking sheets for the given resource group with member details has given you a bookingId, or follow the id field on any booking in that response — it is an absolute URL to this endpoint for that booking.

Unlike the booking-sheet endpoints, this one always emits bookedMembers and bookeeName. Passing includeMembers=false empties them rather than removing them.

Endpoint

GET {base_url}/api/booking-sheets/booking/{bookingId}

{base_url} is the environment URL issued to your integration. See Authenticating with Gladstone APIs.

Path parameters

NameTypeRequiredDescription
bookingIdinteger (int32)YesThe booking to return. Take it from resourceGroups[].bookings[].bookingId on either booking-sheet endpoint. An id that does not exist gives 404, and so does one that exists but is not attached to a resource group configured as a booking sheet.

Query parameters

NameTypeRequiredDescription
includeMembersbooleanNoWhether to load the people on the booking. Defaults to true, so omitting it gives you member details. Set it to false for a lighter call that returns bookedMembers as [], bookeeName as "", and numberOfBookees and waitingListSize as 0; every other field is unaffected.

Sample request

cURL
curl -X GET '{base_url}/api/booking-sheets/booking/{bookingId}' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'

Response fields

FieldTypeDescription
bookingIdinteger (int32)The numeric identifier of this booking. The same value you passed in the path.
recurringScheduleIdstring (uuid)The block-booking schedule this booking was generated from. Every booking produced by the same schedule carries the same value, so you can group them. null for a one-off booking.
isBlockBookingbooleanWhether this booking forms part of a block booking. Both 0 and no value in the underlying record are reported as false.
idstringAn absolute URL to this booking on GET /api/booking-sheets/booking/{bookingId}, built from the gateway host that served your request. A convenience link — bookingId carries the same information.
startTimestring (date-time)When the booked period starts. Use it with endTime to place the booking on the sheet.
endTimestring (date-time)When the booked period ends.
activityIdstringThe activity being booked. Bookings sharing an activityId also share description, the two colour fields, activityComments and pricedProducts.
activityForeColorHexstringThe activity's configured foreground (text) colour as a hex string, so a sheet can render every booking in its activity's colours.
activityBackColorHexstringThe activity's configured background colour as a hex string.
descriptionstringThe activity's description — the name of the activity, not a note about this booking. Per-booking free text is in bookingComments.
maximumBookeesinteger (int32)The maximum number of bookees the booking allows. Reported as 0 when the booking has no maximum recorded, which is not the same as "no places available".
numberOfBookeesinteger (int32)How many places are taken: the sum of bookedMembers[].partySize over entries that are not on the waiting list and are not the host. 0 when you call with includeMembers=false, because the members it is derived from are not loaded.
waitingListSizeinteger (int32)The sum of bookedMembers[].partySize over entries that are on the waiting list and are not the host. Also 0 when includeMembers=false.
pricedProductsarray of objectThe chargeable, non-resource products configured against the booking's activity — what a bookee can be sold for it. Derived from the activity, so every booking with the same activityId returns the same list.
pricedProducts[].idstringThe product's identifier.
pricedProducts[].descriptionstringThe product's description.
resourceProductsarray of objectThe bookable resources this booking occupies, such as the courts or lanes. Each is one of the resources belonging to the booking sheet the booking was made on.
resourceProducts[].idstringThe resource product's identifier.
resourceProducts[].descriptionstringThe resource product's description.
bookedMembersarray of objectEveryone on the booking, including anyone waiting. Returned as an empty array — not omitted — when you call with includeMembers=false.
bookedMembers[].idinteger (int32)The member's numeric id, or 0 when the place was booked for a non-member guest. When it is 0, firstNames and lastName hold the guest name captured on the booking rather than a member record.
bookedMembers[].firstNamesstringThe member's forename(s) when id is greater than 0, otherwise the non-member forename captured on the booking.
bookedMembers[].lastNamestringThe member's surname when id is greater than 0, otherwise the non-member surname captured on the booking.
bookedMembers[].isOnWaitingListbooleanWhether this entry is a waiting-list place rather than a confirmed one. Waiting-list entries count towards waitingListSize instead of numberOfBookees.
bookedMembers[].salesStatusIndinteger (enum)Payment status of the sales invoice raised for this place: 0 unpaid, 1 part paid, 2 paid, 3 void, 4 part credited, 5 part credited and paid, 6 credited, 7 credit note, 8 pending. Reported as 0 when the record holds no status, so 0 means "unpaid or never set".
bookedMembers[].salesInvoiceIdinteger (int32)The sales invoice raised for this place. 0 when no invoice exists, in which case totalAmount is also 0.
bookedMembers[].bookingIdinteger (int32)The booking this entry belongs to. Repeats the top-level bookingId.
bookedMembers[].bookingRefinteger (int32)Distinguishes the several entries on one booking: bookingId plus bookingRef identifies a single place. 0 when the underlying record has no reference.
bookedMembers[].attendedIndbooleanWhether attendance has been recorded for this place. false covers both "did not attend" and "not yet marked" — the two are not distinguishable here.
bookedMembers[].waitingListDateTimestring (date-time)When the waiting-list entry was created, in UTC. null unless isOnWaitingList is true.
bookedMembers[].totalAmountnumber (double)The total of the sales invoice identified by salesInvoiceId. 0 when there is no invoice.
bookedMembers[].partySizeinteger (int32)How many places this single entry covers — one entry can stand for a group. Defaults to 1 when the record does not state a size. numberOfBookees and waitingListSize are sums of this field.
bookedMembers[].bookingPartiesarray of objectThe breakdown of partySize by price level. Entries with no price level are dropped and entries sharing a price level are merged, so this array can be shorter than the number of places booked individually — and empty even when partySize is greater than 0.
bookedMembers[].bookingParties[].keyBookeeIndinteger (int32)1 when any of the merged entries at this price level is the key bookee — the lead person on the booking — otherwise 0.
bookedMembers[].bookingParties[].priceLevelIdstringThe price level charged for these places: the tariff, such as adult or junior, that sets the rate. Never empty, because entries without a price level are excluded.
bookedMembers[].bookingParties[].quantityinteger (int32)The number of places at this price level, summed across the merged entries.
bookedMembers[].phoneNostringThe member's mobile telephone number, falling back to their home number when no mobile is held. null when neither is recorded.
bookeeNamestringThe display name held against the booking: who the booking is under. An empty string when you call with includeMembers=false.
bookingTypestringEither Activity or Reservation, taken from the activity's type.
activityCommentsstringFree-text comments configured on the activity, so the same text appears on every booking for that activity. null when none is set.
bookingCommentsstringFree-text comments recorded against this individual booking. null when none is set.

Sample response

200 OK
{
  "bookingId": 12345,
  "recurringScheduleId": "b7f3c1e2-9a44-4f2b-8c17-0d5e9a1b6c33",
  "isBlockBooking": true,
  "id": "string",
  "startTime": "2026-08-14T19:00:00Z",
  "endTime": "2026-08-14T19:00:00Z",
  "activityId": "string",
  "activityForeColorHex": "string",
  "activityBackColorHex": "string",
  "description": "string",
  "maximumBookees": 1,
  "numberOfBookees": 1,
  "waitingListSize": 1,
  "pricedProducts": [
    {
      "id": "string",
      "description": "string"
    }
  ],
  "resourceProducts": [
    {
      "id": "string",
      "description": "string"
    }
  ],
  "bookedMembers": [
    {
      "id": 12345,
      "firstNames": "string",
      "lastName": "string",
      "isOnWaitingList": true,
      "salesStatusInd": 0,
      "salesInvoiceId": 12345,
      "bookingId": 12345,
      "bookingRef": 1,
      "attendedInd": true,
      "waitingListDateTime": "2026-08-14T19:00:00Z",
      "totalAmount": 10.5,
      "partySize": 1,
      "bookingParties": [
        {
          "keyBookeeInd": 1,
          "priceLevelId": "string",
          "quantity": 1
        }
      ],
      "phoneNo": "string"
    }
  ],
  "bookeeName": "string",
  "bookingType": "string",
  "activityComments": "string",
  "bookingComments": "string"
}

Errors

StatusMeaningWhen
404Not foundInvalid Booking ID — no booking matched, either because the id does not exist or because the booking is not on a resource group configured as a booking sheet.
500Internal server errorAny unexpected server-side failure; the response body is empty. Retry, then raise a support ticket with the time of the call.

This page as markdown · All pages · llms.txt