When to use this. A season is the top-level parameter every style is organised by, and a
brand can have as many as it needs. A style cannot be created without one, so seasons are
usually the first admin data you set up. Use these endpoints to create seasons, group them by
project, and retire them once a collection closes.
The workflow
Seasons sit at the top of the product structure: you create a season, file styles under it, and later deactivate or lock it when the collection is done. Many brands also use the project field to sub-divide a season into drops or collaboration collections.1
Create the season
POST /api/seasons with the season name (and optionally a project and custom ID). Only
designer users can create seasons.2
Look seasons up
GET /api/seasons returns a paginated list, filtered by Search, Names, Project,
CustomId or State; add Properties=isLocked to return only locked seasons. Fetch a
single season with GET /api/seasons/{id}.3
Create styles in it
POST /api/styles references the season: a style cannot be created without one.4
Find styles by season
GET /api/styles with season.id (or season.name / season.project) to pull everything
in a season later.5
Retire the season
PUT /api/seasons/{id} to set state to inactive so it is no longer offered for new
styles (or PUT /api/seasons to retire several seasons in one call), or
DELETE /api/seasons/{id} to soft-delete it.Walkthrough
Create a season for next spring/summer. The body is an array: one or many seasons are created in a single all-or-nothing transaction.id: styles
reference seasons by it.
Field reference
The fields that matter most when creating or updating a season:PUT is a full replace and requires name and state on every item: include the current
value of any field you don’t intend to change. Fields that are not on the public contract
(price-confirmation deadline, milestones, position and access) keep their stored values. To
update several seasons at once, send an array to PUT /api/seasons with each season’s id;
the batch is updated in a single all-or-nothing transaction.Prefer a partial update?
PATCH /api/seasons/{id} accepts an RFC 6902 JSON Patch document
(Content-Type: application/json-patch+json) and touches only the paths you send: /name,
/project, /customId, and /state. state still cannot be set to deleted (use
DELETE /api/seasons/{id}), and name cannot be cleared.Roles & permissions
Managing seasons requires a designer (brand) account. Creating a season requires theCompanyAdmin role; any designer user in the organisation can update or delete its seasons.
Supplier accounts collaborate on styles but do not manage a brand’s seasons. A locked season
cannot be updated or deleted: those calls return 403, and a bulk PUT that includes one is
rejected as a whole. GET /api/seasons/{id}, PUT and PATCH return 403 for a season that
belongs to another organisation and 404 for an id that does not exist.
When things go wrong
Errors use the standard envelope (status: "error", a code, and error.details[]). See
Errors & responses for the full list of codes and how to resolve them.
What to call next
Styles
Create styles in the season:
POST /api/styles, then filter with GET /api/styles?season.id=.Sample types
Season milestone deadlines are driven by sample types:
GET /api/sample-types.Groups
Another way to organise styles:
GET /api/groups.Authentication
How to get and send your
X-Auth-Token API key.