Lists all booking discounts for a given activity and date

GET /api/configuration/booking-discounts

Success: 200 OK

Overview

Returns the multi-person booking discounts available for one activity on one date: for each discount, the combined price and the combinations of price levels that qualify for it. Call it while building a booking, once you know the activity and the date, to work out whether the party you are booking matches a discounted combination.

Both activityId and date are required. The date must be today or later, and the activity must exist, or you get a 400 or 404 before any discount is looked up.

This endpoint is gated behind the BOOKINGDISCOUNTS feature. If your token does not carry it, every call returns 403 — including calls that would otherwise return an empty list. There is no way to detect the feature from this endpoint other than by the 403.

A date with no qualifying discounts returns 200 with an empty array, not 404. Only promotions of type Booking that are active and whose validity period covers the date are considered, so the same activity can return discounts for one date and nothing for the next.

Endpoint

GET {base_url}/api/configuration/booking-discounts

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

Query parameters

NameTypeRequiredDescription
activityIdstringYesThe activity whose discounts you want, using the activity's string id — the same value you use when booking. Required: omitting it, or sending it empty, fails with 400 and the message Activity ID and Date must be provided. An id that does not exist fails with 404 and Activity with ID '{activityId}' does not exist.
datestring (date-time)YesThe date the booking is for. Required: omitting it fails with 400 and Activity ID and Date must be provided. Only the date part is used — any time component is discarded. It must be today or later, compared against the current UTC date, so a past date fails with 400 and The date must be from today onwards. A discount is included only when its promotion's validity period covers this date, both ends inclusive.

Sample request

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

Response fields

FieldTypeDescription
[].bookingDiscountIDinteger (int32)Identifies the booking discount the entry belongs to. It is not unique within the response — one entry is produced per active Booking promotion mapped to the discount's promotion code, so a discount covered by more than one such promotion appears more than once, with the same combinations repeated. Group by this value before displaying.
[].bookingDiscountTypestringThe kind of booking discount, as configured in the back office. Always present, maximum 20 characters, free text.
[].comboPricenumber (double)The total price charged for the whole qualifying combination, not a per-person price and not a discount amount to subtract. Given to 2 decimal places.
[].combinationsarray of objectThe alternative sets of price levels that qualify for comboPrice. A booking matches the discount if its participants' price levels match any one of these entries. Returned as an empty array, never null, when the discount has no combinations configured — in which case nothing can match it.
[].combinations[].comboIDinteger (int32)Identifies this particular combination. It is unique across all discounts, not just within this entry, and it is the combination a usage record points at when the discount is taken — though booking discount usage records report the combination as its price-level string rather than by this id.
[].combinations[].priceLevelComboarray of stringThe price levels making up this combination, one entry per participant — so a combination of two adults and a junior appears as three entries, and repeats are meaningful. Configured as a single string of at most 200 characters and split for you, so the order carries no meaning: compare it as a multiset against your party's price levels. Empty when the configured value was blank.

Sample response

200 OK
[
  {
    "bookingDiscountID": 12345,
    "bookingDiscountType": "string",
    "comboPrice": 10.5,
    "combinations": [
      {
        "comboID": 12345,
        "priceLevelCombo": [
          "string"
        ]
      }
    ]
  }
]

Errors

StatusMeaningWhen
400Bad requestOne of three checks, in this order, with the message as a plain string body: Activity ID and Date must be provided. when either parameter is missing or empty; The date must be from today onwards when date is before the current UTC date.
403ForbiddenYour token does not carry the BOOKINGDISCOUNTS feature. The body is the plain string The requested operation requires Module BOOKINGDISCOUNTS to be enabled. This is checked before the parameters, so a 403 tells you nothing about whether your parameters were valid. Contact Gladstone Support to have the feature enabled for your integration.
404Not foundNo activity exists with that id. The body is the plain string Activity with ID '{activityId}' does not exist. An activity that exists but has no discounts returns 200 with an empty array instead.
500Internal server errorAn unexpected server-side failure while reading the discounts. The body is empty.

This page as markdown · All pages · llms.txt