Skip to main content

Open Dates (Operating Season)

Manage the date ranges your business takes bookings — your operating season. The inverse of a closure: once any active window exists, dates outside every window are unbookable on every channel (widget, POS, API), for both rentals and experiences. With no windows, the business is open all year.

Open dates are separate from seasonal pricing (see Seasons) — they only control when bookings are accepted, never prices.

Object​

FieldTypeDescription
idintegerUnique identifier
labelstring | nullOptional name, e.g. "Summer season"
recurrencestringyearly (repeats every year, month-day only) or one_off (a specific-year range)
start_datestringFirst open date (YYYY-MM-DD)
end_datestringLast open date (YYYY-MM-DD)
is_activebooleanInactive windows don't gate bookings
when_labelstringHuman-readable summary, e.g. "May 1 – Sep 30, every year"
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

A yearly window may wrap the New Year — a window whose end month-day is before its start month-day (e.g. 2026-11-01 → 2026-03-31) is open across the year boundary (Nov–Mar).

List open dates​

GET /v1/settings/open-seasons

Requires the settings:read scope. Paginated (data / meta / links).

Success (200 OK)​

{
"data": [
{
"id": 1,
"label": "Summer season",
"recurrence": "yearly",
"start_date": "2026-05-01",
"end_date": "2026-09-30",
"is_active": true,
"when_label": "May 1 – Sep 30, every year",
"created_at": "2026-01-01T00:00:00+00:00",
"updated_at": "2026-01-01T00:00:00+00:00"
}
],
"meta": { "request_id": "req_abc123", "timestamp": "2026-07-23T12:00:00+00:00" },
"links": {}
}

Get a single window​

GET /v1/settings/open-seasons/{id}

Requires the settings:read scope. Returns 404 not_found if the window doesn't belong to your account.

Create open dates​

POST /v1/settings/open-seasons

Requires the settings:write scope.

Body​

FieldTypeRequiredDescription
start_datestringyesYYYY-MM-DD
end_datestringnoYYYY-MM-DD. Omit to open the start date only. For one_off, must be on or after start_date.
recurrencestringnoyearly (default) or one_off
labelstringnoOptional name
is_activebooleannoDefaults to true
curl -X POST "https://app.equipdash.com/api/v1/settings/open-seasons" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{"label":"Summer season","recurrence":"yearly","start_date":"2026-05-01","end_date":"2026-09-30"}'

Returns 201 Created with the created object.

Update open dates​

PUT /v1/settings/open-seasons/{id}

Requires the settings:write scope. Same body as create. Returns 200 OK.

Delete open dates​

DELETE /v1/settings/open-seasons/{id}

Requires the settings:write scope. Returns 204 No Content. Deleting the only active window reopens the whole year.

Errors​

StatusCodeDescription
401authentication_requiredNo API key provided
403insufficient_scopeAPI key lacks the required scope
404not_foundWindow not found for this account
422validation_errorInvalid or missing fields (e.g. missing start_date, or a one_off end before its start)
422open_season_overlapThe dates overlap an existing open-dates range