Freedome media server API 1.0.0

Base path /api/v1 on the installation (LAN, mDNS _freedome._tcp); /health and /ready are unversioned. Conventions: docs/conventions.md (errors RFC 9457, merge-patch, ETag / If-Match, Idempotency-Key, cursor pages). Versions before 1.0.0 (0.x previews, 1.0.0-rc.N) are not a stability promise; 1.0.0 freezes the API (M-CT2), then only additive changes within v1 (docs/versioning.md). Other transports: GraphQL /api/v1/graphql (graphql/mediaserver.graphql), WebSocket /api/v1/ws (asyncapi/ws.yaml), socket.io /v1 (asyncapi/socketio.yaml), OSC (osc/addresses.yaml), legacy profile (asyncapi/socketio-legacy.yaml, osc/legacy.yaml). Support: [email protected]. Commercial use → https://freedome.nativemind.us/commercial.

Servers: {scheme}://{host}:{port}/api/v1 · source openapi/mediaserver.yaml

discovery · venues · displays · output · calibration · auth · users · api-keys · system · shows · playback · uploads · assets · audio · engines · gateways · apps · clients · events · scenarios · devices · jobs

discovery

GET /info — getInfo

Server self-description · scope anon

Product, versions, transports, auth methods, venues summary and capabilities. Anonymous.

ParameterInRequiredDescription
If-None-MatchheaderETag of a cached representation (304 when unchanged).
StatusDescriptionBody
200Server info.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/info.schema.json","$comment":"NativeMindNONC — f
304Representation unchanged (If-None-Match).
429Rate limited.application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /health — getHealth

Liveness · scope anon

ok while the process serves requests; degraded lists failing dependencies (engines down do not make the server unhealthy).

StatusDescriptionBody
200Alive.application/json {"description":"GET /health and /ready (unversioned, anonymous).","type":"object","required":["status"],"properties":{"status":{"enum":["ok","degraded","down"]}
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /ready — getReady

Readiness · scope anon

200 when the server accepts API traffic (storage open, venue loaded); 503 problem otherwise.

StatusDescriptionBody
200Ready.application/json {"description":"GET /health and /ready (unversioned, anonymous).","type":"object","required":["status"],"properties":{"status":{"enum":["ok","degraded","down"]}
503Not ready.application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /metrics — getMetrics

Prometheus metrics · scope anon

Prometheus text exposition 0.0.4; metric names are listed in docs/metrics.md. Anonymous by default on the LAN listener; installations may restrict it to system:read (config [metrics] require_auth).

StatusDescriptionBody
200Metrics.text/plain {"type":"string"}
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /openapi.json — getOpenApi

This API description (OpenAPI 3.1 JSON) · scope anon

The bundled contract document the server implements, with servers set to this instance. Swagger UI at /api/v1/docs.

StatusDescriptionBody
200OpenAPI document.application/json {"type":"object","required":["openapi","info","paths"],"properties":{"openapi":{"type":"string"},"info":{"type":"object"},"paths":{"type":"object"}}}
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

venues

GET /venues — listVenues

List stored venues · scope info:read

Stored venues (one is active per instance; default marks the alias target).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of venues.application/json {"description":"GET /venues page.","type":"object","allOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/sche
429Rate limited.application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues — createVenue

Create a venue · scope venues:write

Body = .dome venue manifest without format / kind. meta.id becomes the venue id (409 if taken).

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /venues and PUT /venues/{venueId} body.","type":"object","allOf":[{"description":"Venue content shared by GET / PUT / POST: the .dome venue

{
  "meta": {
    "id": "7a2b3c4d-5e6f-4a71-8b8c-9d0e1f2a3b4c",
    "title": {
      "en": "Prism M"
    }
  },
  "dome": {
    "mode": "quantum",
    "shape": "pyramid",
    "radius": 0.212
  },
  "displays": [
    {
      "id": "u1",
      "type": "prism_unit",
      "resolution": [
        1920,
        1080
      ],
      "optics": {
        "faces": 4,
        "faceAngle": 45
      },
      "output": {
        "host": "node-1",
        "connector": "HDMI-1"
      }
    }
  ]
}
StatusDescriptionBody
201Created.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId} — getVenue

Get a venue · scope info:read

Venue = .dome venue sections + id, revision, status, activeShowId; ETag = revision.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
If-None-MatchheaderETag of a cached representation (304 when unchanged).
StatusDescriptionBody
200The venue.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
304Representation unchanged (If-None-Match).
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId} — putVenue

Replace (or create with a client-chosen id) a venue · scope venues:write

Replace needs If-Match; create needs If-None-Match: * and the path id equal to meta.id.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
If-MatchheaderRequired to replace an existing resource (428 when missing, 412 when stale). To create with a client-chosen id send `If-None-Match: *` instead.
If-None-Matchheader`*` = create only (412 if the id exists).

Request application/json: {"description":"POST /venues and PUT /venues/{venueId} body.","type":"object","allOf":[{"description":"Venue content shared by GET / PUT / POST: the .dome venue

{
  "meta": {
    "id": "6f1a2b3c-4d5e-4f60-8a7b-8c9d0e1f2a3b",
    "title": {
      "en": "Fisheye 6 m"
    }
  },
  "dome": {
    "mode": "classical",
    "shape": "hemisphere",
    "radius": 3
  },
  "displays": [
    {
      "id": "p1",
      "type": "projector",
      "resolution": [
        4096,
        2160
      ],
      "lens": {
        "kind": "fisheye",
        "fov": 180
      },
      "output": {
        "host": "node-1",
        "connector": "HDMI-1"
      }
    }
  ]
}
StatusDescriptionBody
200Replaced.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
201Created (If-None-Match `*`).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId} — patchVenue

Merge-patch a venue · scope venues:write

RFC 7396 merge patch over the venue sections; the merged result is validated like a PUT body.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"description":"PATCH body (application/merge-patch+json, RFC 7396) over the venue sections; the merged result must be a valid input.","type":"object","minPrope

{
  "meta": {
    "title": {
      "en": "Main dome"
    }
  }
}
StatusDescriptionBody
200Patched.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId} — deleteVenue

Delete a venue · scope venues:write

Refused with 409 while the venue is playing or is the default venue.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/export — exportVenue

Export the venue as a .dome · scope content:read

kind: venue .dome (01b v0.2) incl. calibration sidecars; reference-writer layout (mimetype first, deterministic).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200The .dome file.application/vnd.nativemind.freedome.dome+zip {"type":"string","contentMediaType":"application/vnd.nativemind.freedome.dome+zip"}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/activate — activateVenue

Make this the active venue · scope venues:write

One active venue per instance (RC6): pushes displays + applied calibration to the engines; the alias default then resolves to it. Refused (409) while another venue is playing.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Active venue.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/venue.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

displays

GET /venues/{venueId}/displays — listDisplays

List the venue's displays with live state · scope info:read

Configuration (.dome entry) and live state of every display of the venue.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of displays.application/json {"type":"object","allOf":[{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/pagination.schema.j
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/displays/{displayId} — getDisplay

Get a display (config + live state) · scope info:read

Configuration (.dome entry) and live state; ETag = venue revision.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
StatusDescriptionBody
200The display.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/display.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/displays/{displayId} — patchDisplay

Merge-patch the display configuration · scope venues:write

Patches config (the .dome display entry); bumps the venue revision. If-Match = venue ETag.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"description":"PATCH body (application/merge-patch+json) over `config`; `id` cannot change.","type":"object","minProperties":1,"not":{"required":["id"]}}

{
  "lens": {
    "fov": 185
  }
}
StatusDescriptionBody
200Patched.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/display.schema.json","$comment":"NativeMindNONC
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/displays/{displayId}/identify — identifyDisplay

Flash the display id overlay · scope displays:control

Shows the display id over the output for durationS seconds (default 5).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST …/identify body (optional): how long to show the id overlay.","type":"object","properties":{"durationS":{"type":"number","minimum":0.5,"max

{
  "durationS": 5
}
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/displays/{displayId}/pattern — setTestPattern

Show a test pattern (or `off`) · scope displays:control

Engine freedome_pattern_*; result also published as event display.pattern on venues/{v}/displays/{d}.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).

Request application/json: {"description":"PUT /venues/{venueId}/displays/{displayId}/pattern body (engine freedome_pattern_*).","type":"object","required":["kind"],"properties":{"kind":{

{
  "kind": "grid",
  "params": {
    "spacingDeg": 10,
    "lineWidthPx": 2,
    "colour": "#ffffff"
  }
}
StatusDescriptionBody
200Pattern shown; current display state.application/json {"type":"object","required":["online"],"properties":{"online":{"type":"boolean","description":"engine output / device agent reachable"},"power":{"anyOf":[{"enum
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/displays/{displayId}/power — setDisplayPower

Switch display power / shutter · scope displays:control

Only what state.capabilities lists (PJLink, device agent); otherwise 422 validation-failed.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST …/power body; only what the device supports (state.capabilities).","type":"object","minProperties":1,"properties":{"on":{"type":"boolean"},

{
  "on": true,
  "shutter": "open"
}
StatusDescriptionBody
200Command sent; current display state (power may pass through warming).application/json {"type":"object","required":["online"],"properties":{"online":{"type":"boolean","description":"engine output / device agent reachable"},"power":{"anyOf":[{"enum
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

output

GET /venues/{venueId}/output — getOutput

Get the venue output state · scope playback:read

Current master brightness, volume, blackout, rotation, lighting and NDI output.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Output state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/output.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/output — patchOutput

Change output (brightness, volume, blackout …) · scope playback:control

Last writer wins (playback class, 02e §3.5); published as output.changed on venues/{v}/output.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/merge-patch+json: {"description":"PATCH body (application/merge-patch+json): any subset of the output fields.","type":"object","minProperties":1,"properties":{"brightness":{"desc

{
  "brightness": 0.25,
  "blackout": false
}
StatusDescriptionBody
200New output state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/output.schema.json","$comment":"NativeMindNONC —
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

calibration

GET /venues/{venueId}/calibration — getCalibration

Get the venue calibration (per display warp / blend / colour / report) · scope info:read

The .dome calibration block of the venue; ETag = venue revision.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200`.dome` `calibration` block; file paths are readable through getCalibrationFile.application/json {"description":"Per-display calibration (01b §4.3); keys of `displays` are display ids (checked by the codecs).","type":"object","properties":{"displays":{"type
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/calibration/displays/{displayId}/{file} — getCalibrationFile

Download a calibration sidecar · scope info:read

Binary sidecar of one display; media type by file.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
filepathyesCalibration sidecar: `warp` (FDMESH), `blend` (16-bit PNG), `colour` (.cube 3D LUT).
StatusDescriptionBody
200warp → FDMESH (01b §5.1), blend → 16-bit PNG, colour → .cube.application/vnd.nativemind.freedome.fdmesh {"type":"string","contentMediaType":"application/vnd.nativemind.freedome.fdmesh"}
image/png {"type":"string","contentMediaType":"image/png"}
text/plain {"type":"string"}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/calibration/displays/{displayId}/{file} — putCalibrationFile

Upload / import a calibration sidecar · scope calibration:run

Validated (FDMESH grammar + size, PNG 16-bit grey, .cube 33³ / 65³); updates the venue calibration (revision++). If-Match = venue ETag.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
displayIdpathyesDisplay id (`.dome` `displays[].id`).
filepathyesCalibration sidecar: `warp` (FDMESH), `blend` (16-bit PNG), `colour` (.cube 3D LUT).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/vnd.nativemind.freedome.fdmesh: {"type":"string","contentMediaType":"application/vnd.nativemind.freedome.fdmesh"}

Request image/png: {"type":"string","contentMediaType":"image/png"}

Request text/plain: {"type":"string"}

StatusDescriptionBody
200Stored; the new calibration block.application/json {"description":"Per-display calibration (01b §4.3); keys of `displays` are display ids (checked by the codecs).","type":"object","properties":{"displays":{"type
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
415Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/calibration/jobs — listCalibrationJobs

List the venue's calibration jobs · scope info:read

Newest first; status filters (e.g. running jobs for a "resume" dialog).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
statusqueryJob status filter.
StatusDescriptionBody
200Page of calibration jobs.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","venueId","kind","status","st
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/calibration/jobs — startCalibrationJob

Start a calibration job · scope calibration:run

Visual kinds need calibration:run; audio kinds (audio-room, audio-speaker-check) need audio:calibrate. 202 + Location → getCalibrationJob.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /venues/{venueId}/calibration/jobs body.","type":"object","required":["kind"],"properties":{"kind":{"anyOf":[{"enum":["visual-camera","visu

{
  "kind": "visual-camera",
  "displays": [
    "p1"
  ],
  "options": {
    "grid": 17
  }
}
StatusDescriptionBody
202Accepted.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/calibration-job.schema.json","$comment":"NativeM
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/calibration/jobs/{jobId} — getCalibrationJob

Calibration job state (steps, awaited input, residual errors) · scope info:read

Steps, the input awaited from the operator / camera, residual errors and the proposed result.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
jobIdpathyesJob id (UUIDv7).
StatusDescriptionBody
200Job state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/calibration-job.schema.json","$comment":"NativeM
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/calibration/jobs/{jobId}/captures — submitCalibrationCapture

Submit a camera frame for the awaited step · scope calibration:run

JSON with a tus uploadId or multipart/form-data with an image part (≤ 32 MB) for the awaited step; 409 when no capture is awaited.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
jobIdpathyesJob id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST …/captures JSON body: a camera frame uploaded before (tus upload id); multipart/form-data with an `image` part is the alternative (≤ 32 MB)

{
  "uploadId": "0192f3a4-5b6c-7d8e-9f01-23456789abd2",
  "stepId": "capture-p1-grid"
}

Request multipart/form-data: {"type":"object","required":["image"],"properties":{"image":{"type":"string","contentMediaType":"image/jpeg","description":"JPEG / PNG frame, ≤ 32 MB"},"stepId"

StatusDescriptionBody
200Capture accepted; job state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/calibration-job.schema.json","$comment":"NativeM
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/calibration/jobs/{jobId}/apply — applyCalibrationJob

Apply the solved calibration to the venue · scope calibration:run

Writes result into the venue calibration (revision++); 409 unless the job succeeded.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
jobIdpathyesJob id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Applied; the new venue calibration.application/json {"description":"Per-display calibration (01b §4.3); keys of `displays` are display ids (checked by the codecs).","type":"object","properties":{"displays":{"type
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/calibration/jobs/{jobId}/cancel — cancelCalibrationJob

Cancel a calibration job · scope calibration:run

Stops the job and restores the pre-job patterns; the venue calibration is unchanged.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
jobIdpathyesJob id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Cancelled (or already finished); job state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/calibration-job.schema.json","$comment":"NativeM
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

auth

POST /auth/session — createSession

Sign in with a local account · scope anon

{username, password} → access JWT (15 min) + rotating refresh token. Rate limited per IP and username.

Request application/json: {"description":"POST /auth/session (local account).","type":"object","required":["username","password"],"properties":{"username":{"type":"string","minLength":1,

{
  "username": "operator",
  "password": "correct-horse-battery",
  "client": {
    "app": "freedome_manager",
    "appVersion": "4.0.0"
  }
}
StatusDescriptionBody
201Session created.application/json {"type":"object","required":["accessToken","tokenType","expiresIn"],"properties":{"accessToken":{"type":"string","minLength":16,"description":"access JWT (15 mi
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
429Rate limited.application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /auth/session — deleteSession

Sign out (revoke the current session and its refresh family) · scope any

Revokes the session of the presented access token; emits session.revoked on auth/sessions.

StatusDescriptionBody
204Done, no body.
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /auth/refresh — refreshSession

Rotate the refresh token · scope anon

Returns a new token pair; presenting an already rotated refresh token revokes every session of that family (401).

Request application/json: {"description":"POST /auth/refresh.","type":"object","required":["refreshToken"],"properties":{"refreshToken":{"type":"string","minLength":16}},"additionalPrope

{
  "refreshToken": "example-refresh-token-not-a-secret"
}
StatusDescriptionBody
200New token pair.application/json {"type":"object","required":["accessToken","tokenType","expiresIn"],"properties":{"accessToken":{"type":"string","minLength":16,"description":"access JWT (15 mi
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /auth/token-exchange — exchangeCloudToken

Exchange a cloud (L7) token for a local session · scope anon

Linked installations only — the L7 JWT is verified offline with the cached JWKS of freedome.nativemind.us and its org role is mapped to a local role. Unlinked → 401 unauthenticated "installation not linked".

Request application/json: {"description":"POST /auth/token-exchange: an L7 (freedome.nativemind.us) access JWT for a local session; linked installations only (JWKS of the cloud).","type"

{
  "subjectToken": "example.cloud-jwt.not-a-secret",
  "client": {
    "app": "freedome_manager"
  }
}
StatusDescriptionBody
200Local token pair.application/json {"type":"object","required":["accessToken","tokenType","expiresIn"],"properties":{"accessToken":{"type":"string","minLength":16,"description":"access JWT (15 mi
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /auth/pairings — listPairings

List pending pairings (operator view) · scope users:manage

Pending and recently decided pairings, for the approval dialog in Manager / on the dome.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of pairings.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"Pairing state. `code` (6 digits) is returned on
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /auth/pairings — createPairing

Ask to pair an ecosystem app (guest token) · scope anon

Returns a 6-digit code to show to the operator (also as QR freedome://pair?host=…&code=…); the app polls getPairing until approved / denied / expired (5 min).

Request application/json: {"description":"POST /auth/pairings (anonymous; ecosystem app asks for a guest token).","type":"object","required":["app","deviceName"],"properties":{"app":{"ty

{
  "app": "net.nativemind.starveda",
  "deviceName": "Anna iPhone"
}
StatusDescriptionBody
201Pairing pending.application/json {"description":"Pairing state. `code` (6 digits) is returned only to the requester on creation and shown on the dome / in Manager; `tokens` only once, to the re
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
429Rate limited.application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /auth/pairings/{pairingId} — getPairing

Poll a pairing · scope anon

Anonymous poll by the requesting app (the unguessable id is the capability). After approval the first poll returns tokens once.

ParameterInRequiredDescription
pairingIdpathyesPairing id (UUIDv7).
StatusDescriptionBody
200Pairing state.application/json {"description":"Pairing state. `code` (6 digits) is returned only to the requester on creation and shown on the dome / in Manager; `tokens` only once, to the re
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /auth/pairings/{pairingId}/approve — approvePairing

Approve (or deny) a pairing · scope users:manage

Operator decision; approve:false denies. The granted role never exceeds the approver's.

ParameterInRequiredDescription
pairingIdpathyesPairing id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /auth/pairings/{pairingId}/approve body (operator side).","type":"object","properties":{"approve":{"type":"boolean","default":true,"descrip

{
  "approve": true,
  "role": "guest",
  "ttlSec": 2592000
}
StatusDescriptionBody
200Decided.application/json {"description":"Pairing state. `code` (6 digits) is returned only to the requester on creation and shown on the dome / in Manager; `tokens` only once, to the re
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /auth/me — getMe

Current principal and scopes · scope any

Who is calling (user, API key, pairing, cloud) and the effective scopes.

StatusDescriptionBody
200Principal.application/json {"description":"GET /auth/me: who is calling and what they may do.","type":"object","required":["subject","kind","role","scopes"],"properties":{"subject":{"type
401Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

users

GET /users — listUsers

List local users · scope users:manage

Cursor page of local accounts; ?q= matches username / display name.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
qqueryFull-text query where supported.
StatusDescriptionBody
200Page of users.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","username","role","revision",
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /users — createUser

Create a local user · scope users:manage

The new user's role cannot exceed the caller's.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /users.","type":"object","required":["username","password","role"],"properties":{"username":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-

{
  "username": "operator",
  "displayName": "Night operator",
  "password": "correct-horse-battery",
  "role": "operator"
}
StatusDescriptionBody
201Created.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/user.schema.json","$comment":"NativeMindNONC — f
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /users/{userId} — getUser

Get a user · scope users:manage

One local account.

ParameterInRequiredDescription
userIdpathyesUser id (UUIDv7).
StatusDescriptionBody
200The user.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/user.schema.json","$comment":"NativeMindNONC — f
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /users/{userId} — patchUser

Merge-patch a user · scope users:manage

Display name, password, role, disabled. A password change revokes the user's sessions.

ParameterInRequiredDescription
userIdpathyesUser id (UUIDv7).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"description":"PATCH /users/{userId} (merge-patch). Changing the password revokes the user's sessions.","type":"object","minProperties":1,"properties":{"displa

{
  "disabled": true
}
StatusDescriptionBody
200Patched.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/user.schema.json","$comment":"NativeMindNONC — f
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /users/{userId} — deleteUser

Delete a user · scope users:manage

Revokes the user's sessions. The last superadmin cannot be deleted (409).

ParameterInRequiredDescription
userIdpathyesUser id (UUIDv7).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

api-keys

GET /api-keys — listApiKeys

List API keys · scope keys:manage

Metadata only — the secret is never returned after creation. Revoked keys stay listed with revokedAt (audit).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of keys.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","name","role","scopes","creat
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /api-keys — createApiKey

Create an API key (token shown once) · scope keys:manage

The key's role cannot exceed the caller's; scopes may narrow the role.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /api-keys. A key never gets more than the caller's own role.","type":"object","required":["name","role"],"properties":{"name":{"type":"stri

{
  "name": "Lobby kiosk",
  "role": "guest"
}
StatusDescriptionBody
201Created; `token` is shown only in this response.application/json {"description":"201 body of POST /api-keys: the key plus its token, shown once.","type":"object","required":["key","token"],"properties":{"key":{"type":"object"
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /api-keys/{keyId} — getApiKey

Get API key metadata · scope keys:manage

Metadata of one key. A revoked key → 404 (it is still listed by listApiKeys with revokedAt).

ParameterInRequiredDescription
keyIdpathyesAPI key id (the `<id>` of `fdk_<id>_<secret>`).
StatusDescriptionBody
200The key.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/api-key.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /api-keys/{keyId} — deleteApiKey

Revoke an API key · scope keys:manage

Immediate; cached verifications are dropped. Idempotent — revoking an already revoked key → 204; an unknown id → 404.

ParameterInRequiredDescription
keyIdpathyesAPI key id (the `<id>` of `fdk_<id>_<secret>`).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

system

GET /system — getSystem

Host and service status · scope system:read

Host, OS, CPU / GPU, temperatures, disks, uptime, component versions.

StatusDescriptionBody
200Status.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/system.schema.json","$comment":"NativeMindNONC —
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /system/logs — getLogs

Server log (ring buffer) · scope system:read

Newest first; level = minimum level. Live tail = topic system/logs.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
sincequeryOnly entries at or after this time (RFC 3339).
levelqueryMinimum level.
StatusDescriptionBody
200Page of log entries.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["ts","level","message"],"propertie
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /system/logs — clearLogs

Clear the log ring buffer · scope system:admin

Files written by the OS journal are not touched.

StatusDescriptionBody
204Done, no body.
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /system/config — getConfig

Effective configuration (secrets redacted) · scope system:read

Secrets are always "***" and listed in redacted.

StatusDescriptionBody
200Configuration.application/json {"description":"Effective server configuration (TOML sections as JSON). Secret values are always returned as \"***\" and a PUT that sends \"***\" keeps the stor
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /system/config — putConfig

Replace the configuration (and reload) · scope system:admin

Validated, written atomically, hot-reloaded where possible; "***" keeps the stored secret.

ParameterInRequiredDescription
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"description":"PUT /system/config body (If-Match = config revision).","type":"object","required":["values"],"properties":{"values":{"type":"object","additional

{
  "values": {
    "http": {
      "listen": "0.0.0.0:8080",
      "base_path": ""
    },
    "osc": {
      "udp_in": 7000,
      "udp_out": 7001
    },
    "cloud": {
      "link_token": "***"
    },
    "legacy": {
      "enabled": false
    }
  }
}
StatusDescriptionBody
200Applied.application/json {"description":"Effective server configuration (TOML sections as JSON). Secret values are always returned as \"***\" and a PUT that sends \"***\" keeps the stor
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/diagnostics — runDiagnostics

Run diagnostics (job) · scope system:read

Checks engines, displays, audio, network, storage, sync, gateways; report in the job result.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","properties":{"checks":{"type":"array","items":{"anyOf":[{"enum":["engines","displays","audio","network","storage","sync","gateways"]},{"type":

{
  "checks": [
    "engines",
    "displays",
    "storage"
  ]
}
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/backup — createBackup

Create a backup (job → downloadable archive) · scope system:admin

The finished job's links.resource points to the archive download.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","properties":{"include":{"type":"array","items":{"anyOf":[{"enum":["config","database","venues","shows","keys","assets"]},{"type":"string"}]},"

{
  "include": [
    "config",
    "database",
    "venues",
    "shows"
  ],
  "note": "before update"
}
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/restore — restoreBackup

Restore a backup (job; service restarts) · scope system:admin

The archive is uploaded first with tus (purpose=restore).

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","required":["uploadId","confirm"],"properties":{"uploadId":{"description":"tus upload (purpose restore) holding the backup archive","type":"str

{
  "uploadId": "0192f3a4-5b6c-7d8e-9f01-23456789ad01",
  "confirm": true
}
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /system/update — getUpdate

Update status · scope system:read

Installed and available versions per component.

StatusDescriptionBody
200Update status.application/json {"type":"object","required":["status"],"properties":{"status":{"anyOf":[{"enum":["idle","checking","available","downloading","installing","restartPending","fail
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/update — startUpdate

Start a package / firmware update (job) · scope system:admin

From the configured channel, a version, or an uploaded offline package.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","properties":{"channel":{"anyOf":[{"enum":["stable","beta"]},{"type":"string"}]},"version":{"description":"Semantic version 2.0.0.","type":"str

{
  "channel": "stable",
  "version": "1.0.1"
}
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/reboot — rebootSystem

Reboot the host · scope system:admin

Requires {confirm:true}; disabled unless allowed in config (403 otherwise). Emits system.health before going down.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /system/reboot and /system/shutdown body.","type":"object","required":["confirm"],"properties":{"confirm":{"const":true},"delaySec":{"type"

{
  "confirm": true,
  "delaySec": 5,
  "reason": "driver update"
}
StatusDescriptionBody
202Scheduled.application/json {"type":"object","required":["action","at"],"properties":{"action":{"enum":["reboot","shutdown"]},"at":{"description":"RFC 3339 UTC with milliseconds, e.g. 2026
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /system/shutdown — shutdownSystem

Shut the host down · scope system:admin

Requires {confirm:true}; disabled unless allowed in config (403 otherwise).

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /system/reboot and /system/shutdown body.","type":"object","required":["confirm"],"properties":{"confirm":{"const":true},"delaySec":{"type"

{
  "confirm": true,
  "delaySec": 30
}
StatusDescriptionBody
202Scheduled.application/json {"type":"object","required":["action","at"],"properties":{"action":{"enum":["reboot","shutdown"]},"at":{"description":"RFC 3339 UTC with milliseconds, e.g. 2026
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /nodes — listNodes

Cluster nodes and their clocks · scope info:read

This server and the engine hosts it drives, with PTP / NTP clock status (multi-node sync).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of nodes.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"Cluster node (02d UC-K1–K3): this server and th
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /nodes/{nodeId} — getNode

One cluster node · scope info:read

Node status and clock.

ParameterInRequiredDescription
nodeIdpathyesCluster node id.
StatusDescriptionBody
200The node.application/json {"description":"Cluster node (02d UC-K1–K3): this server and the engine hosts it drives.","type":"object","required":["id","role","status"],"properties":{"id":{
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

shows

GET /shows — listShows

List shows · scope content:read

Summaries (no asset / show bodies); ?q= matches title and tags, ?tag= filters.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
qqueryFull-text query where supported.
sortqueryComma-separated fields, `-` prefix = descending.
tagqueryTag filter.
StatusDescriptionBody
200Page of show summaries.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"Collection item: no assets / show body.","type"
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /shows — createShow

Create a show · scope content:write

Body = .dome show manifest without format / kind; id = meta.id. 409 if it exists (use putShow to replace).

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /shows and PUT /shows/{showId} body. Assets are referenced by .dome asset entries; an entry whose `src` is `asset:<assetId>` points to an a

{
  "meta": {
    "id": "9c4d5e6f-7a8b-4c93-8d0e-1f2a3b4c5d6e",
    "title": {
      "en": "Intro show"
    }
  },
  "assets": [
    {
      "id": "intro",
      "src": "asset:0192f3a4-5b6c-7d8e-9f01-23456789ae01",
      "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "size": 734003200,
      "type": "video",
      "mapping": {
        "projection": "domemaster",
        "fov": 180
      },
      "duration": 600
    }
  ],
  "show": {
    "playlists": [
      {
        "id": "main",
        "items": [
          {
            "asset": "intro"
          }
        ]
      }
    ],
    "cues": [
      {
        "id": "dim",
        "at": {
          "trigger": "go"
        },
        "actions": [
          {
            "do": "setBrightness",
            "target": "main",
            "args": {
              "value": 0.7
            }
          }
        ]
      }
    ],
    "triggers": [
      {
        "id": "go",
        "source": "osc",
        "match": "/dome/go"
      }
    ],
    "startup": {
      "playlist": "main"
    }
  }
}
StatusDescriptionBody
201Created.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/show.schema.json","$comment":"NativeMindNONC — f
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId} — getShow

Get a show · scope content:read

Full show with validation warnings against the active venue.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
If-None-MatchheaderETag of a cached representation (304 when unchanged).
StatusDescriptionBody
200The show.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/show.schema.json","$comment":"NativeMindNONC — f
304Representation unchanged (If-None-Match).
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId} — putShow

Replace (or create with a client-chosen id) · scope content:write

If-Match replaces; If-None-Match: * creates with this id (412 if taken).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
If-MatchheaderRequired to replace an existing resource (428 when missing, 412 when stale). To create with a client-chosen id send `If-None-Match: *` instead.
If-None-Matchheader`*` = create only (412 if the id exists).

Request application/json: {"description":"POST /shows and PUT /shows/{showId} body. Assets are referenced by .dome asset entries; an entry whose `src` is `asset:<assetId>` points to an a

{
  "meta": {
    "id": "9c4d5e6f-7a8b-4c93-8d0e-1f2a3b4c5d6e",
    "title": {
      "en": "Intro show"
    }
  },
  "assets": [
    {
      "id": "intro",
      "src": "asset:0192f3a4-5b6c-7d8e-9f01-23456789ae01",
      "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
      "size": 734003200,
      "type": "video",
      "mapping": {
        "projection": "domemaster",
        "fov": 180
      },
      "duration": 600
    }
  ],
  "show": {
    "playlists": [
      {
        "id": "main",
        "items": [
          {
            "asset": "intro"
          }
        ]
      }
    ],
    "cues": [
      {
        "id": "dim",
        "at": {
          "trigger": "go"
        },
        "actions": [
          {
            "do": "setBrightness",
            "target": "main",
            "args": {
              "value": 0.7
            }
          }
        ]
      }
    ],
    "triggers": [
      {
        "id": "go",
        "source": "osc",
        "match": "/dome/go"
      }
    ],
    "startup": {
      "playlist": "main"
    }
  }
}
StatusDescriptionBody
200Replaced.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/show.schema.json","$comment":"NativeMindNONC — f
201Created.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/show.schema.json","$comment":"NativeMindNONC — f
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /shows/{showId} — patchShow

Merge-patch a show · scope content:write

RFC 7396 over the show sections; the result must validate as a show.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"description":"PATCH /shows/{showId} (application/merge-patch+json): any subset of the sections; arrays are replaced whole (RFC 7396).","type":"object","minPro

{
  "meta": {
    "title": {
      "en": "Intro show (v2)"
    }
  }
}
StatusDescriptionBody
200Patched.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/show.schema.json","$comment":"NativeMindNONC — f
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /shows/{showId} — deleteShow

Delete a show · scope content:write

Refused (409) while it is the active show of a playing venue. Assets are kept.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/export — exportShow

Export the show as a .dome · scope content:read

kind: show .dome; ?embedAssets=true stores the media inside (stored entries, ZIP64). Range supported.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
embedAssetsqueryEmbed the asset files (otherwise external references with sha256 + size).
RangeheaderByte range (RFC 9110).
StatusDescriptionBody
200The .dome file.application/vnd.nativemind.freedome.dome+zip {"type":"string","contentMediaType":"application/vnd.nativemind.freedome.dome+zip"}
206Partial content.application/vnd.nativemind.freedome.dome+zip {"type":"string","contentMediaType":"application/vnd.nativemind.freedome.dome+zip"}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/playlists/{itemId} — getPlaylist

Get a playlist of the show · scope content:read

The .dome show.playlists[] entry with this id; ETag = show revision.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
StatusDescriptionBody
200The playlist.application/json {"type":"object","required":["id","items"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId}/playlists/{itemId} — putPlaylist

Create or replace a playlist of the show · scope content:write

Body id must equal the path id. If-Match = show ETag; bumps the show revision (event show.updated, sub-kind playlist.updated).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"type":"object","required":["id","items"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"

{
  "id": "main",
  "name": "Main",
  "loop": false,
  "items": [
    {
      "asset": "intro",
      "transition": {
        "kind": "fade",
        "duration": 2
      }
    }
  ]
}
StatusDescriptionBody
200Stored; the playlist as saved.application/json {"type":"object","required":["id","items"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /shows/{showId}/playlists/{itemId} — deletePlaylist

Delete a playlist of the show · scope content:write

409 when other show entries still reference it (e.g. a cue → trigger, startup → playlist).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/timelines/{itemId} — getTimeline

Get a timeline of the show · scope content:read

The .dome show.timelines[] entry with this id; ETag = show revision.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
StatusDescriptionBody
200The timeline.application/json {"type":"object","required":["id","tracks"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId}/timelines/{itemId} — putTimeline

Create or replace a timeline of the show · scope content:write

Body id must equal the path id. If-Match = show ETag; bumps the show revision (event show.updated, sub-kind timeline.updated).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"type":"object","required":["id","tracks"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$

{
  "id": "tl",
  "fps": 60,
  "duration": 600,
  "tracks": [
    {
      "id": "v",
      "kind": "video",
      "clips": [
        {
          "asset": "intro",
          "start": 0
        }
      ]
    }
  ],
  "markers": [
    {
      "id": "half",
      "time": 300,
      "name": "Half"
    }
  ]
}
StatusDescriptionBody
200Stored; the timeline as saved.application/json {"type":"object","required":["id","tracks"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /shows/{showId}/timelines/{itemId} — deleteTimeline

Delete a timeline of the show · scope content:write

409 when other show entries still reference it (e.g. a cue → trigger, startup → playlist).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/cues/{itemId} — getCue

Get a cue of the show · scope content:read

The .dome show.cues[] entry with this id; ETag = show revision.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
StatusDescriptionBody
200The cue.application/json {"type":"object","required":["id","actions"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId}/cues/{itemId} — putCue

Create or replace a cue of the show · scope content:write

Body id must equal the path id. If-Match = show ETag; bumps the show revision (event show.updated, sub-kind cue.updated).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"type":"object","required":["id","actions"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}

{
  "id": "dim",
  "at": {
    "trigger": "go"
  },
  "actions": [
    {
      "do": "setBrightness",
      "target": "main",
      "args": {
        "value": 0.7,
        "fade": 3
      }
    }
  ]
}
StatusDescriptionBody
200Stored; the cue as saved.application/json {"type":"object","required":["id","actions"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /shows/{showId}/cues/{itemId} — deleteCue

Delete a cue of the show · scope content:write

409 when other show entries still reference it (e.g. a cue → trigger, startup → playlist).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/triggers/{itemId} — getTrigger

Get a trigger of the show · scope content:read

The .dome show.triggers[] entry with this id; ETag = show revision.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
StatusDescriptionBody
200The trigger.application/json {"type":"object","required":["id","source"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId}/triggers/{itemId} — putTrigger

Create or replace a trigger of the show · scope content:write

Body id must equal the path id. If-Match = show ETag; bumps the show revision (event show.updated, sub-kind trigger.updated).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"type":"object","required":["id","source"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$

{
  "id": "go",
  "source": "osc",
  "match": "/dome/go"
}
StatusDescriptionBody
200Stored; the trigger as saved.application/json {"type":"object","required":["id","source"],"properties":{"id":{"description":"Document-scoped id (02e §3.2).","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /shows/{showId}/triggers/{itemId} — deleteTrigger

Delete a trigger of the show · scope content:write

409 when other show entries still reference it (e.g. a cue → trigger, startup → playlist).

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
itemIdpathyesDocument-scoped id of the playlist / timeline / cue / trigger inside the show.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /shows/{showId}/matrix — getMatrix

Get the show matrix · scope content:read

Screenberry-style matrix (.dome show.matrix); 404 when the show has none.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
StatusDescriptionBody
200The matrix.application/json {"description":"Screenberry-style matrix (compatibility); cells reference row / column ids.","type":"object","required":["rows","columns","cells"],"properties":
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /shows/{showId}/matrix — putMatrix

Replace the show matrix · scope content:write

If-Match = show ETag; emits matrix.updated.

ParameterInRequiredDescription
showIdpathyesShow id (UUIDv7 for server-created shows, or the `.dome` `meta.id` of an imported show).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"description":"Screenberry-style matrix (compatibility); cells reference row / column ids.","type":"object","required":["rows","columns","cells"],"properties":

{
  "rows": [
    {
      "id": "r1"
    }
  ],
  "columns": [
    {
      "id": "c1"
    },
    {
      "id": "c2"
    }
  ],
  "cells": [
    {
      "row": "r1",
      "column": "c1",
      "asset": "intro"
    },
    {
      "row": "r1",
      "column": "c2",
      "asset": "poster"
    }
  ]
}
StatusDescriptionBody
200Stored.application/json {"description":"Screenberry-style matrix (compatibility); cells reference row / column ids.","type":"object","required":["rows","columns","cells"],"properties":
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /imports — startImport

Import a file (job) · scope content:write

Source = a tus upload (purpose=import), an allow-listed URL, or a stored asset. Content sniffing (02e §9.2) wins over format when they disagree (unsupported-format if neither matches).

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/import.schema.json","$comment":"NativeMindNONC —

{
  "uploadId": "0192f3a4-5b6c-7d8e-9f01-23456789af01",
  "format": "dome",
  "target": {
    "kind": "auto",
    "activate": true
  }
}
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
415Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

playback

GET /venues/{venueId}/players — listPlayers

List the venue's media players · scope playback:read

Player main always exists; others come from the active show's mediaPlayers.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of players.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","venueId","status","position"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/players/{playerId} — getPlayer

Player state · scope playback:read

Live state; also pushed as player.state / player.position on venues/{v}/players/{p}.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
StatusDescriptionBody
200The player.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/players/{playerId} — patchPlayer

Set rate / loop / volume / opacity / brightness / rotation · scope playback:control

Merge-patch of the player's live parameters (UC-P6); last writer wins.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.

Request application/merge-patch+json: {"description":"PATCH /venues/{venueId}/players/{playerId} (merge-patch; playback is last-writer-wins, no If-Match).","type":"object","minProperties":1,"propert

{
  "volume": 0.6,
  "rate": 1
}
StatusDescriptionBody
200Updated player.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/play — play

Play (optionally a given source, optionally scheduled) · scope playback:control

Without a body: resume the loaded source or start show.startup. at schedules the start on the server clock (multi-node sync). Playing on playing = no-op success.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST …/play: what to play (absent = resume the loaded source / startup) and when. `at` = scheduled start on the server clock (multi-node sync, 0

{
  "playlistId": "main",
  "itemIndex": 0,
  "position": 0,
  "at": "2026-10-19T12:00:05.000Z"
}
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/pause — pause

Pause · scope playback:control

Pause at the current position (no-op when already paused).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/resume — resume

Resume · scope playback:control

Resume a paused player.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/stop — stop

Stop · scope playback:control

Stop and rewind; the player shows the configured idle content.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/next — next

Next item · scope playback:control

Next playlist item / timeline marker / matrix column.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/previous — previous

Previous item · scope playback:control

Previous playlist item / timeline marker / matrix column.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/players/{playerId}/seek — seek

Seek · scope playback:control

Exactly one of position (s), marker (timeline marker id) or normalized (0..1); optional at for synchronised seeks.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
playerIdpathyesMedia player id or the alias `main`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST …/seek: exactly one of position (s), marker (timeline marker id) or normalized (0..1).","type":"object","properties":{"position":{"descript

{
  "position": 120
}
StatusDescriptionBody
200Player state after the command (pending = not yet acknowledged by the engine).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/player.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/cues/{cueId}/fire — fireCue

Fire a cue (GO) · scope playback:control

Runs the cue actions of the active show (or showId); result per action. Also cue.fired / cue.failed on venues/{v}/cues.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
cueIdpathyesCue id (`.dome` `show.cues[].id`).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","properties":{"showId":{"description":"default = active show","type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$","examples":["p1","intro.mp4","

{
  "showId": "9c4d5e6f-7a8b-4c93-8d0e-1f2a3b4c5d6e"
}
StatusDescriptionBody
200Cue fired.application/json {"type":"object","required":["cueId","showId","firedAt"],"properties":{"cueId":{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist /
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/active-show — getActiveShow

The venue's active show · scope playback:read

Show loaded onto the venue (showId null = none) with mapping warnings.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Active show.application/json {"type":"object","required":["venueId","showId"],"properties":{"venueId":{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist / cue id
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/active-show — setActiveShow

Load a show onto the venue · scope playback:control

Maps the show onto this venue's geometry (02 §9); autoplay starts show.startup on main; showId: null unloads. Playback-class operation: no If-Match.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/json: {"description":"PUT /venues/{venueId}/active-show: load a show onto the venue (mapped onto its geometry); showId null unloads.","type":"object","required":["sho

{
  "showId": "9c4d5e6f-7a8b-4c93-8d0e-1f2a3b4c5d6e",
  "autoplay": true
}
StatusDescriptionBody
200Loaded.application/json {"type":"object","required":["venueId","showId"],"properties":{"venueId":{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist / cue id
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/parameters — listParameters

List node / layer parameters · scope playback:read

Parameter registry (UC-N2): path, type, value, range; ?prefix= narrows (e.g. players.main). Live changes: topic venues/{v}/parameters.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
prefixqueryDotted path prefix.
StatusDescriptionBody
200Page of parameters.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"A node / layer parameter (02d ParameterService
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/parameters/{path} — getParameter

Get a parameter · scope playback:read

One parameter with type and range.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
pathpathyesDotted parameter path, e.g. `master.brightness`, `players.main.opacity`.
StatusDescriptionBody
200The parameter.application/json {"description":"A node / layer parameter (02d ParameterService UC-N1–N3; Screenberry-compatible surface).","type":"object","required":["path","type","value"],"p
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/parameters/{path} — setParameter

Set a parameter · scope playback:control

Screenberry-compatible parameter surface (UC-N1); optional fadeSec. Read-only parameters → 422.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
pathpathyesDotted parameter path, e.g. `master.brightness`, `players.main.opacity`.

Request application/json: {"description":"PUT /venues/{venueId}/parameters/{path} body.","type":"object","required":["value"],"properties":{"value":{"anyOf":[{"type":"number"},{"type":"b

{
  "value": 0.8,
  "fadeSec": 2
}
StatusDescriptionBody
200New value.application/json {"description":"A node / layer parameter (02d ParameterService UC-N1–N3; Screenberry-compatible surface).","type":"object","required":["path","type","value"],"p
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

uploads

POST /uploads — createUpload

Create an upload (tus Creation, optionally with the first chunk) · scope content:write

Upload-Length + Upload-Metadata (filename, contentType, sha256, purpose, assetId). With a body (Content-Type: application/offset+octet-stream) the first chunk is stored (Creation-With-Upload) and Upload-Offset returned. Upload-Defer-Length is not supported.

ParameterInRequiredDescription
Tus-Resumableheaderyestus protocol version used by the client (`1.0.0`); other values → 412 with `Tus-Version`.
Upload-LengthheaderyesTotal size in bytes (≤ Tus-Max-Size, else 413).
Upload-Metadataheaderyes`filename` and `purpose` required; `sha256` strongly recommended.
Upload-Checksumheader`sha256 <base64 digest of this chunk>`; mismatch → 460 and the chunk is discarded.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/offset+octet-stream: {"type":"string","contentMediaType":"application/octet-stream"}

StatusDescriptionBody
201Created; `Location` = /api/v1/uploads/{uploadId}.
400Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
415Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
460Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

OPTIONS /uploads — getUploadCapabilities

tus discovery · scope anon

Returns the tus capability headers (no body). Anonymous so that tus clients can probe before auth.

StatusDescriptionBody
204Capabilities.
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /uploads/{uploadId} — getUpload

Upload status as JSON · scope content:write

For clients without a tus library (progress UIs); also pushed as upload.progress on uploads/{u}.

ParameterInRequiredDescription
uploadIdpathyestus upload id (UUIDv7).
StatusDescriptionBody
200Upload status.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/upload.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /uploads/{uploadId} — appendUpload

Append a chunk (tus PATCH) · scope content:write

Upload-Offset must equal the server offset (409 otherwise); Upload-Checksum: sha256 … per chunk (460 on mismatch, chunk discarded). Concurrency is the offset, not If-Match.

ParameterInRequiredDescription
uploadIdpathyestus upload id (UUIDv7).
Tus-Resumableheaderyestus protocol version used by the client (`1.0.0`); other values → 412 with `Tus-Version`.
Upload-OffsetheaderyesOffset the chunk starts at; must equal the server offset (409 otherwise).
Upload-Checksumheader`sha256 <base64 digest of this chunk>`; mismatch → 460 and the chunk is discarded.

Request application/offset+octet-stream: {"type":"string","contentMediaType":"application/octet-stream"}

StatusDescriptionBody
204Chunk stored; new offset. When offset = length the upload completes (asset / import job follows).
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
410Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
415Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
460Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /uploads/{uploadId} — deleteUpload

Terminate an upload (tus Termination) · scope content:write

Frees the stored bytes; later requests → 404.

ParameterInRequiredDescription
uploadIdpathyestus upload id (UUIDv7).
Tus-Resumableheaderyestus protocol version used by the client (`1.0.0`); other values → 412 with `Tus-Version`.
StatusDescriptionBody
204Terminated.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

HEAD /uploads/{uploadId} — getUploadOffset

Current offset (tus HEAD) · scope content:write

Upload-Offset, Upload-Length, Upload-Metadata, Cache-Control: no-store. Expired / unknown → 404 (or 410).

ParameterInRequiredDescription
uploadIdpathyestus upload id (UUIDv7).
Tus-Resumableheaderyestus protocol version used by the client (`1.0.0`); other values → 412 with `Tus-Version`.
StatusDescriptionBody
200Offset.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
410Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

assets

GET /assets — listAssets

List / search assets · scope content:read

Filters type, tag, status, full text q (name, tags).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
qqueryFull-text query where supported.
sortqueryComma-separated fields, `-` prefix = descending.
countqueryReturn `count` where cheap.
typequeryAsset type.
tagqueryTag filter.
statusqueryStatus filter.
StatusDescriptionBody
200Page of assets.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","name","type","status","revis
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /assets — createAsset

Create an asset from an upload, a URL, or a small multipart file · scope content:write

JSON: {uploadId | url, id?, name?, type?, mapping?, tags}. multipart/form-data with part file for ≤ 100 MB (larger → 413, use tus). Probing (ffprobe, thumbnails) runs in the background: status processing → ready | failed, events on assets/{a}.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /assets JSON body: register a finished tus upload or an external URL (streams, CDN).","type":"object","properties":{"uploadId":{"descriptio

{
  "uploadId": "0192f3a4-5b6c-7d8e-9f01-23456789ae10",
  "name": "Intro 4K",
  "type": "video",
  "mapping": {
    "projection": "domemaster",
    "fov": 180
  },
  "tags": [
    "intro"
  ]
}

Request multipart/form-data: {"description":"POST /assets multipart/form-data body (simple upload ≤ 100 MB): part `file` + optional JSON fields.","type":"object","required":["file"],"proper

StatusDescriptionBody
201Created (processing).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/asset.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
415Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /assets/{assetId} — getAsset

Get an asset · scope content:read

Metadata, probe data, thumbnails, shows using it.

ParameterInRequiredDescription
assetIdpathyesAsset id (UUIDv7, or the `.dome` `assets[].id` of an imported asset).
If-None-MatchheaderETag of a cached representation (304 when unchanged).
StatusDescriptionBody
200The asset.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/asset.schema.json","$comment":"NativeMindNONC —
304Representation unchanged (If-None-Match).
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /assets/{assetId} — patchAsset

Merge-patch asset metadata · scope content:write

Name, type, mapping, tags (content is immutable — upload a new asset or re-upload with assetId).

ParameterInRequiredDescription
assetIdpathyesAsset id (UUIDv7, or the `.dome` `assets[].id` of an imported asset).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"type":"object","minProperties":1,"properties":{"name":{"type":"string","minLength":1,"maxLength":512},"type":{"anyOf":[{"enum":["video","image","audio","zelim

{
  "tags": [
    "intro",
    "4k"
  ]
}
StatusDescriptionBody
200Patched.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/asset.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /assets/{assetId} — deleteAsset

Delete an asset · scope content:write

Refused (409) while referenced by a show unless ?force=true (cues referencing it then report failed; a playing show continues).

ParameterInRequiredDescription
assetIdpathyesAsset id (UUIDv7, or the `.dome` `assets[].id` of an imported asset).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
forcequeryProceed although the resource is referenced (cues referencing it are reported failed).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /assets/{assetId}/content — downloadAsset

Download the asset content · scope content:read

Range requests (206), ETag = sha256, If-None-Match → 304. Registered URL assets → 303 to the URL.

ParameterInRequiredDescription
assetIdpathyesAsset id (UUIDv7, or the `.dome` `assets[].id` of an imported asset).
RangeheaderByte range (RFC 9110), e.g. `bytes=0-1048575`.
If-None-MatchheaderETag of a cached representation (304 when unchanged).
StatusDescriptionBody
200Full content.*/* {"type":"string","contentMediaType":"application/octet-stream"}
206Partial content.*/* {"type":"string","contentMediaType":"application/octet-stream"}
303External asset — see `Location`.
304Representation unchanged (If-None-Match).
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
416Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /assets/{assetId}/thumbnail — getAssetThumbnail

Asset thumbnail · scope content:read

PNG / JPEG / WebP; ?size= = longest edge in px (nearest generated size).

ParameterInRequiredDescription
assetIdpathyesAsset id (UUIDv7, or the `.dome` `assets[].id` of an imported asset).
sizequeryLongest edge in pixels.
StatusDescriptionBody
200Image.image/png {"type":"string","contentMediaType":"image/png"}
image/jpeg {"type":"string","contentMediaType":"image/jpeg"}
image/webp {"type":"string","contentMediaType":"image/webp"}
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /storage — getStorageStats

Storage usage · scope content:read

Disk / quota usage of the content store (replaces /api/v1/content/stats).

StatusDescriptionBody
200Stats.application/json {"description":"GET /storage (replaces /api/v1/content/stats).","type":"object","required":["totalBytes","usedBytes","freeBytes"],"properties":{"totalBytes":{"t
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/texture-sources — listTextureSources

List live texture sources · scope playback:read

Spout / Syphon / DMA-BUF / NDI senders the engines of this venue can see. To show one, register a stream asset with the matching src and play it.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of sources.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"A live source seen by the engine (GET /venues/{
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

audio

GET /venues/{venueId}/audio — getAudio

Venue audio state · scope playback:read

Mode (digital / hybrid / combined), master gain, mute, engine status.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Audio state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/audio.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/audio — patchAudio

Set mode / master gain / mute · scope audio:control

Mode change re-routes the active show's audio between the engines (02c A8).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/merge-patch+json: {"type":"object","minProperties":1,"properties":{"mode":{"description":"A8: digital = anAntaDigital only; hybrid = anAntaSound (mechanical devices); combined =

{
  "masterGainDb": -9,
  "mute": false
}
StatusDescriptionBody
200New state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/audio.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/layout — getSpeakerLayout

Speaker layout (.dome audio block) · scope info:read

Ambisonics, decoder, speakers, room correction, devices; ETag = venue revision.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Layout.application/json {"description":"AnantaSound layout (01b §4.4).","type":"object","properties":{"ambisonics":{"type":"object","properties":{"order":{"type":"integer","minimum":0,
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/layout — putSpeakerLayout

Replace the speaker layout · scope venues:write

Written into the venue (revision++) and applied to AnantaDigital (decoder rebuilt).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"description":"AnantaSound layout (01b §4.4).","type":"object","properties":{"ambisonics":{"type":"object","properties":{"order":{"type":"integer","minimum":0,

{
  "ambisonics": {
    "order": 3,
    "normalisation": "SN3D",
    "channelOrder": "ACN"
  },
  "decoder": {
    "kind": "allrad",
    "dualBand": true
  },
  "speakers": [
    {
      "id": "s1",
      "azimuth": 0,
      "elevation": 0,
      "distance": 4
    }
  ],
  "devices": [
    {
      "id": "qrd1",
      "kind": "qrd",
      "address": "osc://10.0.0.20:9000"
    }
  ]
}
StatusDescriptionBody
200Stored.application/json {"description":"AnantaSound layout (01b §4.4).","type":"object","properties":{"ambisonics":{"type":"object","properties":{"order":{"type":"integer","minimum":0,
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/zones — listAudioZones

List audio zones · scope playback:read

AnantaDigital zones of the venue.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of zones.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"anAntaDigital zone: a subset of speakers with g
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/zones/{zoneId} — getAudioZone

Get a zone · scope playback:read

One zone.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
zoneIdpathyesAudio zone id.
StatusDescriptionBody
200The zone.application/json {"description":"anAntaDigital zone: a subset of speakers with gain, delay, EQ.","type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string",
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/zones/{zoneId} — putAudioZone

Create or replace a zone · scope audio:control

If-None-Match: * creates, If-Match replaces.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
zoneIdpathyesAudio zone id.
If-MatchheaderRequired to replace an existing resource (428 when missing, 412 when stale). To create with a client-chosen id send `If-None-Match: *` instead.
If-None-Matchheader`*` = create only (412 if the id exists).

Request application/json: {"type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":128},"speakers":{"type":"array","items":{"description":"Document-sc

{
  "name": "Front",
  "speakers": [
    "s1",
    "s2"
  ],
  "gainDb": -3,
  "delayMs": 2.5
}
StatusDescriptionBody
200Replaced.application/json {"description":"anAntaDigital zone: a subset of speakers with gain, delay, EQ.","type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string",
201Created.application/json {"description":"anAntaDigital zone: a subset of speakers with gain, delay, EQ.","type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string",
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/audio/zones/{zoneId} — patchAudioZone

Live zone change (gain, delay, EQ, mute) · scope audio:control

Last writer wins (OSC /freedome/v1/venue/{v}/audio/zone/{z}/gain).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
zoneIdpathyesAudio zone id.

Request application/merge-patch+json: {"type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string","maxLength":128},"speakers":{"type":"array","items":{"description":"Document-sc

{
  "gainDb": -6
}
StatusDescriptionBody
200Updated zone.application/json {"description":"anAntaDigital zone: a subset of speakers with gain, delay, EQ.","type":"object","allOf":[{"type":"object","properties":{"name":{"type":"string",
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId}/audio/zones/{zoneId} — deleteAudioZone

Delete a zone · scope audio:control

Speakers fall back to the default zone.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
zoneIdpathyesAudio zone id.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/devices — listAudioDevices

List audio devices with live state · scope playback:read

?kind=speaker|microphone|qrd|patefon|karmic_cluster|resonator (replaces get_microphones).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
kindqueryDevice kind filter.
StatusDescriptionBody
200Page of devices.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"Audio device = .dome audio.devices[] / speakers
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/devices/{deviceId} — getAudioDevice

Get an audio device · scope playback:read

Configuration + live state.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
deviceIdpathyesAudio device id (`.dome` `audio.devices[].id`).
StatusDescriptionBody
200The device.application/json {"description":"Audio device = .dome audio.devices[] / speakers[] entry + live state (02c §6).","type":"object","required":["id","kind","state"],"properties":{"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/audio/devices/{deviceId} — patchAudioDevice

Live device change (gain, mute, name, config) · scope audio:control

Gain / mute are live (last writer wins); config changes are written into the venue.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
deviceIdpathyesAudio device id (`.dome` `audio.devices[].id`).

Request application/merge-patch+json: {"type":"object","minProperties":1,"properties":{"name":{"type":"string"},"gainDb":{"description":"Gain in dB (C5: optional companion of linear `volume`).","typ

{
  "gainDb": -3
}
StatusDescriptionBody
200Updated device.application/json {"description":"Audio device = .dome audio.devices[] / speakers[] entry + live state (02c §6).","type":"object","required":["id","kind","state"],"properties":{"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/audio/devices/{deviceId}/test — testAudioDevice

Test a device (ping / tone / self-test / strike) · scope audio:control

Bounded by the device limits (actuator self-test is refused while a session runs, 409).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
deviceIdpathyesAudio device id (`.dome` `audio.devices[].id`).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","properties":{"kind":{"anyOf":[{"enum":["ping","tone","selftest","strike"]},{"type":"string"}],"default":"ping"},"frequencyHz":{"type":"number"

{
  "kind": "tone",
  "frequencyHz": 432,
  "gainDb": -30,
  "durationS": 2
}
StatusDescriptionBody
200Result.application/json {"type":"object","required":["deviceId","ok"],"properties":{"deviceId":{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist / cue ids)
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/presets — listAudioPresets

List installed presets · scope content:read

L6 programme / pattern / session presets installed on this server.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
kindqueryPreset kind.
StatusDescriptionBody
200Page of presets.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","kind","revision"],"propertie
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/presets/{presetId} — getAudioPreset

Get a preset document · scope content:read

The ananta/1.0 document.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
presetIdpathyesAudio preset id.
StatusDescriptionBody
200The preset.application/json {"description":"Installed L6 preset: an ananta/1.0 programme, pattern or session document (02c, RC2).","type":"object","required":["id","kind","revision","docum
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/presets/{presetId} — putAudioPreset

Install or replace a preset · scope content:write

Validated against ananta/1.0 (02c); If-None-Match: * creates.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
presetIdpathyesAudio preset id.
If-MatchheaderRequired to replace an existing resource (428 when missing, 412 when stale). To create with a client-chosen id send `If-None-Match: *` instead.
If-None-Matchheader`*` = create only (412 if the id exists).

Request application/json: {"description":"PUT /venues/{venueId}/audio/presets/{presetId} body.","type":"object","required":["kind","document"],"properties":{"kind":{"enum":["programme","

{
  "kind": "session",
  "document": {
    "format": "ananta-session",
    "formatVersion": "1.0.0",
    "id": "calm-7",
    "title": {
      "en": "Calm 7"
    },
    "items": [
      {
        "programme": {
          "id": "tone-432"
        }
      }
    ]
  }
}
StatusDescriptionBody
200Replaced.application/json {"description":"Installed L6 preset: an ananta/1.0 programme, pattern or session document (02c, RC2).","type":"object","required":["id","kind","revision","docum
201Installed.application/json {"description":"Installed L6 preset: an ananta/1.0 programme, pattern or session document (02c, RC2).","type":"object","required":["id","kind","revision","docum
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId}/audio/presets/{presetId} — deleteAudioPreset

Remove a preset · scope content:write

Refused (409) while a session runs it.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
presetIdpathyesAudio preset id.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/sessions — listAudioSessions

List audio sessions (running and recent) · scope playback:read

Running first, then finished ones from the last 24 h.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of sessions.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","venueId","presetId","status"
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/audio/sessions — startAudioSession

Run a preset · scope audio:control

Runs a programme / session preset on the engine(s) the audio mode selects; optional scheduled at.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /venues/{venueId}/audio/sessions: run an installed preset (programme or session).","type":"object","required":["presetId"],"properties":{"p

{
  "presetId": "calm-7",
  "gainDb": -6,
  "targets": {
    "zones": [
      "front"
    ]
  }
}
StatusDescriptionBody
201Started.application/json {"type":"object","required":["id","venueId","presetId","status","startedAt"],"properties":{"id":{"description":"Server-owned resource id: UUIDv7, lowercase, sor
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/sessions/{sessionId} — getAudioSession

Get an audio session · scope playback:read

Status and position.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
StatusDescriptionBody
200The session.application/json {"type":"object","required":["id","venueId","presetId","status","startedAt"],"properties":{"id":{"description":"Server-owned resource id: UUIDv7, lowercase, sor
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId}/audio/sessions/{sessionId} — stopAudioSession

Stop an audio session · scope audio:control

Fades out (release times of the programme) and stops; idempotent.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/generator — getGenerator

Generator state · scope playback:read

Running test / MULTI generator.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Generator state.application/json {"type":"object","required":["running"],"properties":{"running":{"type":"boolean"},"settings":{"description":"Test / MULTI generator (iScillator semantics; repl
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/generator — setGenerator

Start / change the generator · scope audio:control

sine | pink | white | sweep | multi (iScillator semantics); replaces generate_test_signal.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/json: {"description":"Test / MULTI generator (iScillator semantics; replaces generate_test_signal).","type":"object","required":["signal"],"properties":{"signal":{"an

{
  "signal": "pink",
  "gainDb": -20,
  "targets": {
    "zones": [
      "front"
    ]
  }
}
StatusDescriptionBody
200Running.application/json {"type":"object","required":["running"],"properties":{"running":{"type":"boolean"},"settings":{"description":"Test / MULTI generator (iScillator semantics; repl
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId}/audio/generator — stopGenerator

Stop the generator · scope audio:control

Idempotent.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/sources/{sourceId}/position — setSourcePosition

Position an interactive source · scope audio:control

Azimuth / elevation / distance with an optional ramp; high-rate callers should prefer OSC or WS call.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sourceIdpathyesInteractive / realtime audio source id.

Request application/json: {"description":"Interactive / realtime source position (spherical, listener at the dome centre).","type":"object","required":["azimuth","elevation"],"properties

{
  "azimuth": 45,
  "elevation": 30,
  "distance": 3,
  "rampMs": 50
}
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/analysis — getAudioAnalysis

Live analysis settings and status · scope playback:read

Analysed inputs and whether the audio engine is running them. Frames are events, see topic venues/{venueId}/audio/analysis/{inputId}.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200Analysis state.application/json {"description":"GET /venues/{venueId}/audio/analysis, event audioAnalysis.state.","type":"object","required":["venueId","enabled","status","inputs"],"properties
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/analysis — setAudioAnalysis

Set the analysed inputs · scope audio:control

Replaces the whole list of inputs and starts or stops the analysis. 503 engine-unavailable when the audio engine is not reachable.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/json: {"description":"PUT /venues/{venueId}/audio/analysis body: replaces the whole list of inputs.","type":"object","required":["enabled","inputs"],"properties":{"en

{
  "enabled": true,
  "inputs": [
    {
      "id": "vocal",
      "label": "Lead vocal",
      "channels": [
        1
      ],
      "envelope": {
        "attackMs": 8,
        "decayMs": 120
      }
    }
  ]
}
StatusDescriptionBody
200Analysis state.application/json {"description":"GET /venues/{venueId}/audio/analysis, event audioAnalysis.state.","type":"object","required":["venueId","enabled","status","inputs"],"properties
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/reactive — getAudioReactive

AudioReactive state · scope playback:read

Active scene, master intensity, service status.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
StatusDescriptionBody
200AudioReactive state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/audio-reactive.schema.json","$comment":"NativeMi
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /venues/{venueId}/audio/reactive — patchAudioReactive

Select a scene, enable, set intensity · scope playback:control

Merge-patch; takes effect on the next frame. 422 for an unknown scene or a scene whose gateway or input does not exist.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.

Request application/merge-patch+json: {"description":"PATCH /venues/{venueId}/audio/reactive. activeSceneId null = no scene. An unknown scene, or a scene whose gateway or input does not exist, is re

{
  "activeSceneId": "percussion-wave"
}
StatusDescriptionBody
200AudioReactive state.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/audio-reactive.schema.json","$comment":"NativeMi
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/reactive/scenes — listAudioReactiveScenes

List AudioReactive scenes · scope content:read

Scenes stored for this venue.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of scenes.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"description":"A scene is data: which metrics drive which targ
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/audio/reactive/scenes/{sceneId} — getAudioReactiveScene

Get a scene · scope content:read

The scene document.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sceneIdpathyesAudioReactive scene id.
StatusDescriptionBody
200The scene.application/json {"description":"A scene is data: which metrics drive which targets. Mapping ids are unique within the scene.","type":"object","allOf":[{"type":"object","propert
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /venues/{venueId}/audio/reactive/scenes/{sceneId} — putAudioReactiveScene

Store or replace a scene · scope content:write

If-None-Match: * creates. Replacing the active scene takes effect on the next frame.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sceneIdpathyesAudioReactive scene id.
If-MatchheaderRequired to replace an existing resource (428 when missing, 412 when stale). To create with a client-chosen id send `If-None-Match: *` instead.
If-None-Matchheader`*` = create only (412 if the id exists).

Request application/json: {"description":"PUT …/audio/reactive/scenes/{sceneId} body.","type":"object","allOf":[{"type":"object","properties":{"title":{"description":"Plain string (treat

{
  "title": {
    "en": "Vocal Aura"
  },
  "mappings": [
    {
      "id": "glow",
      "mode": "continuous",
      "source": {
        "input": "vocal",
        "metric": "rms"
      },
      "target": {
        "kind": "osc",
        "gateway": "resolume",
        "address": "/composition/layers/2/video/opacity",
        "type": "f"
      }
    }
  ]
}
StatusDescriptionBody
200Replaced.application/json {"description":"A scene is data: which metrics drive which targets. Mapping ids are unique within the scene.","type":"object","allOf":[{"type":"object","propert
201Stored.application/json {"description":"A scene is data: which metrics drive which targets. Mapping ids are unique within the scene.","type":"object","allOf":[{"type":"object","propert
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /venues/{venueId}/audio/reactive/scenes/{sceneId} — deleteAudioReactiveScene

Remove a scene · scope content:write

Refused (409) while the scene is active.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sceneIdpathyesAudioReactive scene id.
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

engines

GET /engines — listEngines

List engines · scope info:read

visual, anantasound, anantadigital (status, version, protocol, capabilities, metrics).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of engines.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["name","status"],"properties":{"na
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /engines/{name} — getEngine

Get an engine · scope info:read

Status mirror; also pushed on engines/{name}.

ParameterInRequiredDescription
namepathyesEngine name: `visual`, `anantasound`, `anantadigital`, or `<kind>@<node>` on multi-node installations.
StatusDescriptionBody
200The engine.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/engine.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /engines/visual/backend — setComputeBackend

Switch the visual compute / render backend · scope system:admin

Applied by restarting the render pipeline of freedome-engined (short blackout). 422 when the backend is not in backends.

Request application/json: {"type":"object","required":["backend"],"properties":{"backend":{"anyOf":[{"enum":["vulkan","metal","d3d12","opengl","software"]},{"type":"string","pattern":"^[

{
  "backend": "software"
}
StatusDescriptionBody
200Engine after the switch.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/engine.schema.json","$comment":"NativeMindNONC —
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /engines/{name}/restart — restartEngine

Restart an engine · scope system:admin

The engine host process is restarted by its supervisor; playback resumes from the last state where the engine supports it. 202 + job.

ParameterInRequiredDescription
namepathyesEngine name: `visual`, `anantasound`, `anantadigital`, or `<kind>@<node>` on multi-node installations.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
202Long action accepted; `Location` → /api/v1/jobs/{jobId}; body = the job (02e §3.1).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

gateways

GET /gateways — listGateways

List gateways · scope gateways:manage

Inbound emulators (Screenberry, fulldome.pro / 360dome …), outbound drivers, converters with status.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of gateways.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","direction","protocol","enabl
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /gateways/{gatewayId} — getGateway

Get a gateway · scope gateways:manage

Status, listeners, peers, redacted config.

ParameterInRequiredDescription
gatewayIdpathyesGateway id (e.g. `screenberry`, `dome360`, `osc-out-1`).
StatusDescriptionBody
200The gateway.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/gateway.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /gateways/{gatewayId} — patchGateway

Enable / configure a gateway · scope gateways:manage

Merge-patch of enabled, config, allowCidrs; listeners restart.

ParameterInRequiredDescription
gatewayIdpathyesGateway id (e.g. `screenberry`, `dome360`, `osc-out-1`).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/merge-patch+json: {"type":"object","minProperties":1,"properties":{"enabled":{"type":"boolean"},"config":{"type":"object","additionalProperties":true},"allowCidrs":{"type":"array

{
  "enabled": false
}
StatusDescriptionBody
200Updated gateway.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/gateway.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /gateways/{gatewayId}/test — testGateway

Connectivity test of an outbound driver · scope gateways:manage

Replaces /api/vendor/test.

ParameterInRequiredDescription
gatewayIdpathyesGateway id (e.g. `screenberry`, `dome360`, `osc-out-1`).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Result.application/json {"type":"object","required":["gatewayId","ok"],"properties":{"gatewayId":{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist / cue id
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /integrations/osc/send — sendOsc

Send an OSC message to a configured target · scope gateways:manage

Only targets configured on the server (never arbitrary hosts); audited.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /integrations/osc/send: to a configured OSC target only (never an arbitrary host).","type":"object","required":["target","address"],"proper

{
  "target": "lights-desk",
  "address": "/cue/1/go",
  "args": [
    {
      "type": "i",
      "value": 1
    }
  ]
}
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

apps

POST /apps/{app}/payloads — publishAppPayload

Publish app content to the dome · scope apps:publish

kind scene | overlay | state; expires after ttlSec; event app.payload on apps/{app}.

ParameterInRequiredDescription
apppathyesApplication id (reverse-DNS store id or slug), e.g. `net.nativemind.starveda`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/app-payload.schema.json","$comment":"NativeMindN

{
  "kind": "overlay",
  "data": {
    "text": "Hello",
    "colour": "#ffcc00"
  },
  "ttlSec": 60
}
StatusDescriptionBody
201Published.application/json {"description":"Response of publishAppPayload and the `data.resource` of event app.payload.","type":"object","required":["id","app","kind","expiresAt"],"propert
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /apps/{app}/payloads — clearAppPayloads

Clear the app content · scope apps:publish

Removes every payload of this app (event app.cleared).

ParameterInRequiredDescription
apppathyesApplication id (reverse-DNS store id or slug), e.g. `net.nativemind.starveda`.
StatusDescriptionBody
204Done, no body.
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

clients

GET /clients — listClients

List registered clients · scope system:read

Admin view of connected devices.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of clients.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","app","deviceName","capabilit
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /clients — registerClient

Register this device · scope any

Any principal; the client then subscribes to clients/{clientId}/commands.

ParameterInRequiredDescription
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","required":["app","deviceName"],"properties":{"app":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,128}$"},"appVersion":{"type":"string","maxLen

{
  "app": "net.nativemind.churyavzrosliy",
  "deviceName": "Tablet 3",
  "platform": "android",
  "capabilities": [
    "vibration",
    "sensors.accelerometer"
  ]
}
StatusDescriptionBody
201Registered.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/client.schema.json","$comment":"NativeMindNONC —
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

DELETE /clients/{clientId} — unregisterClient

Unregister a device · scope any

The registering principal or system:read.

ParameterInRequiredDescription
clientIdpathyesRegistered client id (UUIDv7).
StatusDescriptionBody
204Done, no body.
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /clients/{clientId}/telemetry — postClientTelemetry

Post sensor samples · scope any

Batched (≤ 1000 samples); only the registering principal.

ParameterInRequiredDescription
clientIdpathyesRegistered client id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /clients/{clientId}/telemetry: batched sensor samples (replaces sendSensorData).","type":"object","required":["samples"],"properties":{"sam

{
  "samples": [
    {
      "ts": "2026-10-19T12:00:00.000Z",
      "sensor": "sensors.accelerometer",
      "values": [
        0.01,
        9.81,
        0.2
      ]
    }
  ]
}
StatusDescriptionBody
204Done, no body.
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
413Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

events

GET /events — listEvents

Event history (resume after reconnect) · scope events:subscribe

Events with seq > sinceSeq on the given topic filters (wildcards +, #), oldest first; authorisation per concrete topic. resync: true when the gap is older than the buffer (default 10 000 events / 10 min).

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
topicsqueryyesComma-separated topic filters.
sinceSeqqueryLast seq the client has seen.
StatusDescriptionBody
200Page of events.application/json {"description":"GET /events (history ring buffer, resume after reconnect): events with seq > sinceSeq on the requested topics. `resync: true` = the gap is older
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

scenarios

GET /scenarios — listScenarios

List installed scenarios · scope content:read

UC-SC1: id, version, title, params JSON Schema, capabilities, enabled.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of scenarios.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","version","api","title","enab
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /scenarios/{scenarioId} — getScenario

Get a scenario (with its params schema) · scope content:read

UC-SC1.

ParameterInRequiredDescription
scenarioIdpathyesScenario plugin id, e.g. `karmic_clusters`.
StatusDescriptionBody
200The scenario.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PATCH /scenarios/{scenarioId} — patchScenario

Enable / disable a scenario plugin · scope system:admin

UC-SC5 (admin); disabling stops its running sessions.

ParameterInRequiredDescription
scenarioIdpathyesScenario plugin id, e.g. `karmic_clusters`.

Request application/merge-patch+json: {"description":"PATCH /scenarios/{scenarioId} (admin, UC-SC5).","type":"object","required":["enabled"],"properties":{"enabled":{"type":"boolean"}},"additionalPr

{
  "enabled": false
}
StatusDescriptionBody
200Updated scenario.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario.schema.json","$comment":"NativeMindNONC
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/scenario-sessions — listScenarioSessions

List scenario sessions of the venue · scope playback:read

Running first, then recent.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of sessions.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","venueId","scenarioId","statu
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/scenario-sessions — startScenarioSession

Start a scenario session · scope playback:control

UC-SC2: params validated against the scenario params schema; the session runs with the caller role (capabilities beyond it are refused, 403).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"description":"POST /venues/{venueId}/scenario-sessions (UC-SC2); params are validated against the scenario's paramsSchema (422).","type":"object","required":[

{
  "scenarioId": "karmic_clusters",
  "params": {
    "durationS": 600
  }
}
StatusDescriptionBody
201Started.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario-session.schema.json","$comment":"Native
403Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/scenario-sessions/{sessionId} — getScenarioSession

Get a scenario session · scope playback:read

UC-SC4: status, progress, phase.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
StatusDescriptionBody
200The session.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario-session.schema.json","$comment":"Native
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/scenario-sessions/{sessionId}/pause — pauseScenarioSession

Pause a scenario session · scope playback:control

UC-SC3.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Session after the command.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario-session.schema.json","$comment":"Native
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/scenario-sessions/{sessionId}/resume — resumeScenarioSession

Resume a scenario session · scope playback:control

UC-SC3.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Session after the command.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario-session.schema.json","$comment":"Native
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /venues/{venueId}/scenario-sessions/{sessionId}/stop — stopScenarioSession

Stop a scenario session · scope playback:control

UC-SC3: the plugin must finish within 5 s, then the session is stopped.

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Session after the command.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/scenario-session.schema.json","$comment":"Native
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /venues/{venueId}/scenario-sessions/{sessionId}/log — getScenarioSessionLog

Scenario session log · scope playback:read

UC-SC4: log lines (also pushed as scenarioSession.log).

ParameterInRequiredDescription
venueIdpathyesVenue id or the alias `default`.
sessionIdpathyesSession id (UUIDv7).
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of log lines.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["seq","ts","level","message"],"pro
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

devices

GET /devices — listDevices

List visual device agents · scope info:read

Discovered and paired devices with live state.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
StatusDescriptionBody
200Page of devices.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","variant","address","paired",
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /devices/{deviceId} — getDevice

Get a visual device · scope info:read

Identity, binding, live state.

ParameterInRequiredDescription
deviceIdpathyesVisual device agent id (`freedome.device.v1` device, e.g. a projector unit).
StatusDescriptionBody
200The device.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/device.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /devices/{deviceId}/pairing — beginDevicePairing

Begin pairing (device shows a code) · scope venues:write

The agent displays a short code; confirm it with confirmDevicePairing before expiresAt.

ParameterInRequiredDescription
deviceIdpathyesVisual device agent id (`freedome.device.v1` device, e.g. a projector unit).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Pairing started.application/json {"description":"POST /devices/{deviceId}/pairing: the device shows a code (display / LED); the operator confirms it.","type":"object","required":["deviceId","ex
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
503Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /devices/{deviceId}/pairing/confirm — confirmDevicePairing

Confirm pairing with the shown code · scope venues:write

Wrong code → 422; three failures cancel the pairing.

ParameterInRequiredDescription
deviceIdpathyesVisual device agent id (`freedome.device.v1` device, e.g. a projector unit).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.

Request application/json: {"type":"object","required":["code"],"properties":{"code":{"type":"string","pattern":"^[0-9A-Z]{4,8}$"}},"additionalProperties":false}

{
  "code": "482913"
}
StatusDescriptionBody
200Paired device.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/device.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /devices/{deviceId}/unpair — unpairDevice

Unpair a device · scope venues:write

Forgets the device credentials and its display binding.

ParameterInRequiredDescription
deviceIdpathyesVisual device agent id (`freedome.device.v1` device, e.g. a projector unit).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
204Done, no body.
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

PUT /devices/{deviceId}/display — bindDevice

Bind the device to a display · scope venues:write

displayId: null unbinds. Written into the venue (revision++).

ParameterInRequiredDescription
deviceIdpathyesVisual device agent id (`freedome.device.v1` device, e.g. a projector unit).
If-MatchheaderyesStrong ETag of the representation being changed (428 when missing, 412 when stale).

Request application/json: {"type":"object","required":["displayId"],"properties":{"displayId":{"anyOf":[{"description":"Document-scoped id (.dome displays[].id, assets[].id, playlist / c

{
  "displayId": "p1"
}
StatusDescriptionBody
200Device after binding.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/device.schema.json","$comment":"NativeMindNONC —
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
409Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
412Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
422Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
428Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

jobs

GET /jobs — listJobs

List jobs · scope any

The caller's own jobs; with system:read all jobs. Newest first; filter by kind / status.

ParameterInRequiredDescription
limitqueryPage size (default 50, max 500).
cursorqueryOpaque cursor from the previous page's `nextCursor`.
kindqueryJob kind filter.
statusqueryStatus filter.
StatusDescriptionBody
200Page of jobs.application/json {"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","kind","status","createdAt"],
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

GET /jobs/{jobId} — getJob

Job state · scope any

Visible to the principal that started it, and to system:read.

ParameterInRequiredDescription
jobIdpathyesJob id (UUIDv7).
StatusDescriptionBody
200Job.application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

POST /jobs/{jobId}/cancel — cancelJob

Cancel a job · scope any

Requests cancellation; finished jobs are returned unchanged.

ParameterInRequiredDescription
jobIdpathyesJob id (UUIDv7).
Idempotency-KeyheaderUUID; replays within 24 h return the original response, a different body with the same key → 409.
StatusDescriptionBody
200Cancelled (or already finished).application/json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/api/1.0/job.schema.json","$comment":"NativeMindNONC — fr
404Error (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO
defaultError (RFC 9457 problem details, 02e §3.3).application/problem+json {"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://freedome.nativemind.us/schemas/common/1.0/problem.schema.json","$comment":"NativeMindNO

NativeMindNONC · commercial use → NativeMind sales · [email protected]