Cast
Drives physical signage panels and server-side video streams from one routing core.
appLines of business79 operationsid cast
How it sits
An app is already assembled from parts, with a face of its own. The counts and the links below are from the platform's spec and the other services' own descriptions.
| Operations | 79 GET 28 · POST 22 · PUT 16 · DELETE 10 · PATCH 3 |
| Resources | 13 |
| Leaned on by | GroundGame, Stitch |
| Leans on | Weave |
| In recipes | none yet |
What it can do
79 operations in 13 resources, as the spec declares them. Each row is one call; paths are relative to the part.
devices
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/devices | List devices + hardware status |
| POST | /api/v1/devices/claim | Claim a device, issue a token |
| GET | /api/v1/devices/current | Box's bound channel by token (loopback/mesh; gate blocks public) |
| POST | /api/v1/devices/frame | Box uploads its actual rendered panel |
| POST | /api/v1/devices/telemetry | Box health/status report |
| POST | /api/v1/devices/virtual | Create a server-side stream device |
| DELETE | /api/v1/devices/{device_id} | Deregister a device |
| GET | /api/v1/devices/{device_id} | One device's status + hardware |
| PUT | /api/v1/devices/{device_id}/channel | Pin a box to a channel (set content / pause one screen) |
| PUT | /api/v1/devices/{device_id}/classification | Set a device's display clearance ceiling |
| POST | /api/v1/devices/{device_id}/command | Queue a command for a box |
| GET | /api/v1/devices/{device_id}/frame | A box's last actual panel |
| PUT | /api/v1/devices/{device_id}/lock | Set a device's control lock (remote read-only gate) |
| PUT | /api/v1/devices/{device_id}/name | Set a device's display name |
| PUT | /api/v1/devices/{device_id}/prefs | Save a box's UI prefs (the remote's preferences) |
| PUT | /api/v1/devices/{device_id}/program | Bind a box to a program (or clear) |
| PUT | /api/v1/devices/{device_id}/rail | Set a box's side-rail width % |
| PUT | /api/v1/devices/{device_id}/scale | Set a box's per-panel render scale |
| POST | /api/v1/devices/{device_id}/stream/start | Start a device's stream — broadcasts its bound channel (HLS + optional YouTube) |
| GET | /api/v1/devices/{device_id}/stream/status | A device's stream status |
| POST | /api/v1/devices/{device_id}/stream/stop | Stop a device's stream |
| PUT | /api/v1/devices/{device_id}/stream/url | Set a device's public YouTube watch URL (shown in the Cast UI) |
| GET | /api/v1/devices/{device_id}/wifi | Read a box's desired WiFi list |
| POST | /api/v1/devices/{device_id}/wifi | Add or update one WiFi network |
| PUT | /api/v1/devices/{device_id}/wifi | Replace a box's WiFi list (full set) |
| DELETE | /api/v1/devices/{device_id}/wifi/{ssid} | Remove one WiFi network |
26 operations
channels
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/channels | List channels |
| POST | /api/v1/channels | Create a channel |
| POST | /api/v1/channels/_self/kiosk-token | Exchange a device token for a Auth kiosk token (Enhanced URL channels) |
| GET | /api/v1/channels/_self/wifi | The calling box's desired WiFi list (device-token authed) |
| DELETE | /api/v1/channels/stale | Retire every stale channel (bulk) |
| GET | /api/v1/channels/stale | List stale channels (retire review) |
| DELETE | /api/v1/channels/{channel_id} | Delete a channel |
| GET | /api/v1/channels/{channel_id} | Channel detail |
| PATCH | /api/v1/channels/{channel_id} | Edit channel metadata |
| DELETE | /api/v1/channels/{channel_id}/current | Clear scene -> standby/logo |
| GET | /api/v1/channels/{channel_id}/current | Box endpoint (SVG + long-poll) |
| PUT | /api/v1/channels/{channel_id}/current | Set a channel's scene (manual) |
| PUT | /api/v1/channels/{channel_id}/data | Push an Enhanced channel's data scene |
| POST | /api/v1/channels/{channel_id}/pause | Pause/resume a channel (hold current slide) |
| PUT | /api/v1/channels/{channel_id}/playlist | Set a slideshow playlist |
| PUT | /api/v1/channels/{channel_id}/story | Compile + push a Story Mode scene |
16 operations
rooms
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/rooms | List rooms (named device groups) |
| POST | /api/v1/rooms | Create a room |
| DELETE | /api/v1/rooms/{room_id} | Delete a room |
| GET | /api/v1/rooms/{room_id} | Room detail |
| PATCH | /api/v1/rooms/{room_id} | Edit a room (name / membership) |
| PUT | /api/v1/rooms/{room_id}/beat | Set/clear a room's synchronized beat |
| POST | /api/v1/rooms/{room_id}/beat/pause | Pause/resume a room's beat (freeze the wall) |
| POST | /api/v1/rooms/{room_id}/beat/pulse | Advance a room one step now (the wall's 'next') |
8 operations
programs
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/programs | List programs (+ bound devices) |
| POST | /api/v1/programs | Create/rename a program (idempotent by id) |
| DELETE | /api/v1/programs/{program_id} | Delete a program (unbinds devices) |
| GET | /api/v1/programs/{program_id} | Program detail |
| POST | /api/v1/programs/{program_id}/jump | Cut a program to a board |
| POST | /api/v1/programs/{program_id}/pause | Pause/resume a program |
| PUT | /api/v1/programs/{program_id}/slots | Set a program's ordered boards |
7 operations
screenshots
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/screenshots | List screenshots |
| POST | /api/v1/screenshots | Capture a screenshot (snapshot or upload) |
| DELETE | /api/v1/screenshots/{shot_id} | Delete a screenshot |
| GET | /api/v1/screenshots/{shot_id} | Screenshot image bytes |
| PATCH | /api/v1/screenshots/{shot_id} | Update a screenshot label |
5 operations
workspaces
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/workspaces | List workspaces |
| POST | /api/v1/workspaces | Create a workspace |
| GET | /api/v1/workspaces/{workspace_id} | Workspace detail (scenes) |
| POST | /api/v1/workspaces/{workspace_id}/scenes | Add/create a scene |
| DELETE | /api/v1/workspaces/{workspace_id}/scenes/{scene_id} | Remove scene |
5 operations
scenes
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/scenes | List scenes |
| POST | /api/v1/scenes | Create a scene (markdown spec or raw SVG) |
| DELETE | /api/v1/scenes/{scene_id} | Delete a scene from the library |
| GET | /api/v1/scenes/{scene_id} | Rendered scene SVG |
4 operations
health
| Method | Path | Does |
|---|---|---|
| GET | /health | Basic health check |
| GET | /health/detailed | Detailed health check |
2 operations
streams
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/streams | All active streams |
| GET | /api/v1/streams/{device_id}/{filename} | Serve HLS playlist/segments |
2 operations
prime
| Method | Path | Does |
|---|---|---|
| GET | /prime | Prime application caches |
1 operation
render
| Method | Path | Does |
|---|---|---|
| POST | /api/v1/render/pdf | Render a the host URL to PDF |
1 operation
state-rev
| Method | Path | Does |
|---|---|---|
| GET | /api/v1/state-rev | Fleet change-revision (cheap poll target) |
1 operation
status
| Method | Path | Does |
|---|---|---|
| GET | /status | Service status overview |
1 operation
All the partsLines of businessThe platform's own id for this service is cbcast.
forge-catalog.json, generated Oct 30, 2026