Retrieves all resource products with their configuration details

GET /api/configuration/resource-products

Success: 200 OK

Overview

Lists every resource product in the environment. A resource product is a bookable thing with a schedule attached — a court, a lane, a studio, a piece of equipment — as distinct from an ordinary retail product, which is only sold. This endpoint returns only resource products.

Despite what "configuration details" suggests, the record is deliberately narrow: an id, a description, the site group it belongs to, the calendar that defines when it is open, an active flag and that calendar's weekly opening times. There is no pricing here, and no availability. Prices come from the price level and time band endpoints; whether a given slot is free comes from the availability and booking endpoints. Do not try to build a booking flow from this response alone.

Three things to know before you rely on the response:

Also note that an environment with no resource products returns 200 with an empty body, not [] — see the Errors table, because a JSON parser expecting an array will fail on it.

Endpoint

GET {base_url}/api/configuration/resource-products

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

Sample request

cURL
curl -X GET '{base_url}/api/configuration/resource-products' \
  -H 'Authorization: Bearer {accessToken}' \
  -H 'X-Use-SSO: true'

Response fields

FieldTypeDescription
[].idstringThe resource product's code, and the value the other resource product endpoints take in the path. Operator-chosen rather than generated, a string of at most 15 characters, and stored upper-cased whatever casing was supplied — so compare case-insensitively and upper-case any id you send back. Unique across all products, resource and retail alike.
[].descriptionstringThe operator's label for the resource, up to 255 characters — for example the court or studio name. Not unique, so two resources can share a description and only id distinguishes them. May be null where none was recorded.
[].siteGroupIdstringThe site group the resource belongs to, matching an id from Retrieves all site groups. Because it points at a group rather than a single site, a resource can be shared across every site in that group; resolve the group to its member sites if you need to know which venues offer it. Up to 15 characters.
[].calendarIdstringThe calendar whose weekly schedule produced openingTimes. Always populated, and several resources commonly share one calendar — meaning an identical calendarId across two resources implies identical openingTimes. Up to 15 characters. It is echoed here mainly so you can spot that sharing; there is no endpoint in this group that takes it.
[].activebooleanWhether the resource is in service. true unless the resource has been marked inactive — so true means "not marked inactive" rather than "positively confirmed active". Inactive resources are returned by this endpoint regardless, so check this field rather than assuming the list is pre-filtered.
[].openingTimesarray of objectThe resource's calendar expressed as weekly open periods. Always present, and an empty array [] when the calendar has no periods defined — never null. A day can appear more than once, which is how a split day (morning and evening, closed over lunch) is represented, so do not key a map on day. Order is not defined, and no entry exists for a day the resource is closed. These are recurring weekly periods with no date component: date-specific closures and exceptions are not represented here at all.
[].openingTimes[].daystringThe day of the week the period applies to, as an English DayOfWeek name — Sunday through Saturday, capitalised.
[].openingTimes[].startTimestringThe time the period opens, as HH:mm in the site's local time with no date and no zone. The minute is padded on the wrong side, so any minute from 1 to 9 is rendered with a trailing zero instead of a leading one — 09:05 comes back as 09:50 and 07:01 as 07:10. Values on the hour or at 10-minute boundaries are unaffected, which is why the defect is easy to miss. Treat a minute value you cannot corroborate as unreliable rather than parsing it directly.
[].openingTimes[].endTimestringThe time the period closes, as HH:mm in the site's local time with no date and no zone, and subject to the same minute-padding defect as startTime. Read it as the end of the open period, not as the last bookable slot.

Sample response

200 OK
[
  {
    "id": "string",
    "description": "string",
    "siteGroupId": "string",
    "calendarId": "string",
    "active": true,
    "openingTimes": [
      {
        "day": "string",
        "startTime": "string",
        "endTime": "string"
      }
    ]
  }
]

Errors

StatusMeaningWhen
200OKSuccess. When there are no resource products the response is 200 with a completely empty body, not 200 with []. A client that parses the body as JSON unconditionally will throw on it, so check for an empty body before parsing.
500Internal server errorAn unexpected server-side failure reading the products or their calendars. The response has no body. There is no request input to correct, so retry rather than adjust the call.

This page as markdown · All pages · llms.txt