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
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier |
label | string | null | Optional name, e.g. "Summer season" |
recurrence | string | yearly (repeats every year, month-day only) or one_off (a specific-year range) |
start_date | string | First open date (YYYY-MM-DD) |
end_date | string | Last open date (YYYY-MM-DD) |
is_active | boolean | Inactive windows don't gate bookings |
when_label | string | Human-readable summary, e.g. "May 1 – Sep 30, every year" |
created_at | string | ISO 8601 datetime |
updated_at | string | ISO 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
| Field | Type | Required | Description |
|---|---|---|---|
start_date | string | yes | YYYY-MM-DD |
end_date | string | no | YYYY-MM-DD. Omit to open the start date only. For one_off, must be on or after start_date. |
recurrence | string | no | yearly (default) or one_off |
label | string | no | Optional name |
is_active | boolean | no | Defaults 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
| Status | Code | Description |
|---|---|---|
| 401 | authentication_required | No API key provided |
| 403 | insufficient_scope | API key lacks the required scope |
| 404 | not_found | Window not found for this account |
| 422 | validation_error | Invalid or missing fields (e.g. missing start_date, or a one_off end before its start) |
| 422 | open_season_overlap | The dates overlap an existing open-dates range |