API Reference
Control Seat exposes REST APIs for managing dashboards, tags, data sources, and automation. All endpoints are accessed through your workspace URL.
Screens & Pages
| Method | Route | Purpose |
|---|
GET | /api/pages | List pages |
POST | /api/pages | Create a page |
DELETE | /api/pages/:id | Delete a page |
POST | /api/screens/save | Save a draft screen |
POST | /api/publish | Publish a screen and return runtime URL |
GET | /api/screens/:id | Fetch a screen payload |
GET | /api/slug/:slug | Resolve a published slug |
GET | /api/slug/:projectId/:slug | Resolve a published project-scoped slug |
POST | /api/screens/:id/unpublish | Unpublish a screen |
Versions
| Method | Route | Purpose |
|---|
GET | /api/screens/:id/versions | List saved versions |
POST | /api/screens/:id/versions/create | Create a version snapshot |
POST | /api/screens/:id/revert | Revert to a version |
Projects, Folders & Assets
| Method | Route | Purpose |
|---|
GET | /api/projects | List projects |
POST | /api/projects | Create project |
GET | /api/projects/:projectId | Fetch project |
PATCH | /api/projects/:projectId | Update project |
DELETE | /api/projects/:projectId | Delete project |
GET | /api/folders | List page folders |
POST | /api/folders | Create folder |
POST | /api/folders/move-page | Move page to folder |
POST | /api/folders/move-folder | Reparent folder |
DELETE | /api/folders/:folderId | Delete folder |
GET | /api/assets | List assets |
POST | /api/assets | Upload/persist asset |
DELETE | /api/assets/:assetId | Delete asset |
Gateway Scripts
| Method | Route | Purpose |
|---|
GET | /api/gateway-scripts/:scope/:scopeId | Fetch entries and modules |
POST | /api/gateway-scripts/:scope/:scopeId | Save entries and modules |
GET | /api/gateway-scripts/:scope/:scopeId/logs | Fetch logs |
DELETE | /api/gateway-scripts/:scope/:scopeId/logs | Clear logs |
POST | /api/gateway-scripts/events | Enqueue manual/runtime events |
ALL | /api/gateway-scripts/http/:scopeId/* | HTTP trigger ingress |
Tags & Folders
| Method | Route | Purpose |
|---|
GET | /api/folders/tree | Folder tree with embedded tags and values |
POST | /api/tags | Create tag |
GET | /api/tags | List tags |
GET | /api/tags/:id | Get tag |
PUT | /api/tags/:id | Update tag metadata |
GET | /api/tags/by-path?path=... | Lookup by local path |
GET | /api/tags/by-full-path?path=... | Lookup by canonical full path |
POST | /api/tags/:id/write | Write tag value |
GET | /ws | Live tag stream (WebSocket) |
Historian
| Method | Route | Purpose |
|---|
GET | /api/history | Raw points in a time range |
GET | /api/history/last | Most recent points |
GET | /api/history/aggregate | Aggregate buckets (avg, min, max, count) |
Data Sources
| Method | Route | Purpose |
|---|
POST | /api/datasources | Create datasource |
GET | /api/datasources | List datasources |
PUT | /api/datasources/:name | Update datasource |
POST | /api/datasources/:name/ping | Test datasource connection |
POST | /api/datasources/:name/query | Run read-only query |
GET | /api/datasources/:name/schema | List schemas |
Runtime URLs
Published dashboards are accessible at:
Example: Publish A Screen
POST /api/publish
Content-Type: application/json
{
"screenId": "abc123",
"name": "Main Overview",
"slug": "main-overview",
"projectId": "plant-a",
"html": "<div id=\"root\"></div>",
"css": "",
"js": "",
"scripts": {
"client": ""
},
"projectData": {}
}