Shows
Read, create, and update shows in a Confirmed production over HTTP. All endpoints return JSON.
GET /shows — list shows
Returns shows within a date window as a JSON array. A read or read-write token works.
Query parameters
Parameter | Type | Description |
|---|---|---|
| timestamp | Earliest start time to include. Defaults to 10 days ago. |
| timestamp | Latest start time to include. Defaults to 30 days ahead. |
| string | Restrict to a single show type. |
Response
An array of show objects in the shape described under The show object.
GET /shows/{show_id} — get details for a specific show
Returns a single show. A read or read-write token works. An unknown id returns 404.
Example
curl https://your-host/api/v1/spectrum/shows/nan3 \
-H "Authorization: Bearer <token>"The show object
The read endpoints and the single-show PUT all return this shape. Spots are split by category into hosts, lineup, and production, each sorted by order.
Field | Type | Description |
|---|---|---|
| string | Show id. |
| string | Show type. |
| timestamp | Start date & time. |
| timestamp | Doors time, derived from |
| string | Venue id. |
| string | Room id. |
| string | Show description. |
| string[] | Tags. |
| boolean | Whether the show is public. |
| string[] | Contact act ids. |
| Slot[] | Host spots. |
| Slot[] | Performer spots (categories |
| Slot[] | Production/crew spots. |
Each spot carries the Slot fields, with the booked act under act_id. settled reads back as true when a spot has been settled.
POST /shows — create shows
Creates one show per entry in dates, each at the given time. All shows share the same type, venue, lineup, and contacts.
Request body
Field | Type | Required | Description |
|---|---|---|---|
| string[] | Yes | One show per date. Format |
| string | Yes | Start time, |
| string | Yes | Show type. Must already exist in the production. |
| string[] | Yes | Act ids of the responsible contacts. Cannot be empty; each must be on the production's team. |
| string | No | Venue id (also accepted as |
| string | No | Room id (also accepted as |
| integer | No | Doors offset in minutes relative to the start time. |
| boolean | No | Whether the show is public. |
| string[] | No | Free-form tags. |
| string | No | Show description. |
| Slot[] | No | Host spots. Each entry is filed under category |
| Slot[] | No | Performer spots. Category defaults to |
| Slot[] | No | Production/crew spots. Each entry is filed under category |
Spot defaults. If none of the hosts,lineup,production are specified, the show will be created with 1 host, 3 acts, 1 production. Act spot length default to 10 minutes.
The Slot object
The shape of a single spot — used for the create arrays above and for spot_updates on the update endpoint. Unknown fields are rejected.
Field | Type | Description |
|---|---|---|
| string | Booked act id (also accepted as |
| enum |
|
| integer | Position within the show. Auto-assigned on create if omitted; set it to reorder. |
| integer | Length in minutes. Acts default to 10. |
| string | Role label (e.g. MC, headliner). |
| string | Fee for the spot. |
| integer | Arrival offset in minutes. |
| integer | Departure offset in minutes. |
| timestamp | Call time, |
| timestamp | Spot start, |
| timestamp | Spot end, |
| integer[] | For hosts: spot orders this host opens. |
| enum |
|
| string | Settlement marker; usually left to the settlement flow. |
Example
curl -X POST https://your-host/api/v1/spectrum/shows \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"dates": ["2026-07-21"],
"time": "21:00",
"type": "dmx-madness",
"production_contacts": ["ejcs"],
"hosts": [ { "role": "MC" } ],
"lineup": [ { "actID": "b9b4" }, {}, {} ],
"production": [ {}, {} ]
}'Response
Returns the count created and the new show ids:
{ "created": 1, "ids": ["nan3"] }PUT /shows — update shows
Applies partial updates to one or more existing shows. Only the fields you send change; everything else is left as-is. If any entry fails validation, the whole batch is rejected before anything is written.
Request body
{
"updates": [
{ "id": "<show id>", "changes": { ... } }
]
}Each changes object may set any of these fields:
Field | Type | Description |
|---|---|---|
| string | Show type. Must exist in the production. |
| timestamp | Start date & time, |
| string | Venue id (or |
| string | Room id (or |
| integer | Doors offset in minutes. |
| boolean | Public flag. |
| string[] | Replaces the tag list. |
| string | Show description. |
| string[] | Contact act ids. Each must be on the team. |
| string | Show status. |
| string | Show currency. |
| string | Comment attached to the change. |
| object | Patch individual spots — see below. |
Editing spots with spot_updates
A map of { spot_id: { field: value } }. Each named spot is merged in place — the fields you send overwrite that spot's values, every other field on the spot and every other spot on the show stays untouched. The value object takes the same fields as the Slot object above. A spot id that isn't on the show is rejected.
This does not replace the show's lineup. To change one spot's fee and reorder another, send only those two spot ids with only the fields that change.
Example
curl -X PUT https://your-host/api/v1/spectrum/shows \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"updates": [
{
"id": "nan3",
"changes": {
"ts": "2026-07-21 20:00",
"venue_id": "5c9g",
"room_id": "bpjj",
"spot_updates": {
"a1b2": { "actID": "b9b4", "fee": "150", "status": "confirmed" },
"c3d4": { "order": 2 }
}
}
}
]
}'Response
Returns the updated shows as a JSON array, each in the show object shape.
PUT /shows/{show_id} — update a specific show
Applies a partial update to a single show. The body is a changes object on its own — the same shape as one entry's changes in the bulk PUT above, with the id taken from the path. Only the fields you send change. An unknown id returns 404.
Example
curl -X PUT https://your-host/api/v1/spectrum/shows/nan3 \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"ts": "2026-07-21 20:00",
"venue_id": "5c9g",
"spot_updates": {
"a1b2": { "fee": "150", "status": "confirmed" }
}
}'Response
Returns the updated show in the show object shape.
Errors
Status | Meaning |
|---|---|
| Missing API token. |
| Invalid token. |
| Token lacks read-write permission. |
| No show with that id (single-show |
| Validation failed — bad field, unknown reference (type / venue / room / act / contact), a room not in its venue, or an unknown spot id. The body carries an |