Brix · Schema
Screen
A screen, composed with its content, live state and health facts.
Digital SignageSoftware-as-a-ServiceRestaurantEducationCorporatehardware integration
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Screen id. |
| spaceId | string | Workspace id. |
| nodeId | object | Location (org node) the screen belongs to; null = workspace root. |
| name | string | |
| status | string | `pairing` = no device has checked in yet. |
| lastSeenAt | object | Last heartbeat or socket ping reply, whichever is later. |
| coreUpdateOfferedAt | object | |
| contentKind | object | What is assigned. Null = nothing assigned. |
| contentId | object | |
| contentFit | null | Retired; always null. Fit is set on the content. |
| deactivatedAt | object | Set while an operator has deactivated the screen. |
| awaitingPaymentAt | object | Set while the screen waits for payment: it was paired past the screens on the plan. It starts to play when the plan has room. |
| tags | array | |
| rotation | integer | 0, 90, 180 or 270 degrees. |
| rotationCommandedAt | object | |
| timezone | object | IANA time zone; null = inherited. |
| timezoneSource | object | |
| operatingHours | string | `default`, or a JSON-encoded weekly window. |
| lastPanelCommand | object | |
| scheduleScreensOff | boolean | |
| displayPowerMode | string | |
| playbackMode | string | |
| locationLabel | object | |
| locationLat | object | |
| locationLng | object | |
| ipCity | object | |
| ipRegion | object | |
| ipCountry | object | |
| ipLat | object | |
| ipLng | object | |
| ipTimezone | object | |
| ipGeoAt | object | |
| playerSettings | object | Player settings as a JSON-ENCODED string (not an object). |
| kioskEnabled | boolean | |
| kioskPinMode | string | |
| kioskGraceSeconds | integer | |
| activeEmergencyId | object | The live emergency overriding this screen, if any. |
| activeCastId | object | The live cast overriding this screen, if any. |
| playerVersionHold | object | |
| sealed | boolean | |
| sealedAt | object | |
| powerPolicyId | object | |
| importSourceId | object | |
| billingGroupId | object | |
| customFields | object | Custom fields as a JSON-ENCODED string. |
| lanSecretAt | object | When the local-trigger key was last set or rotated. The key itself is never returned. |
| createdAt | string | ISO-8601 timestamp (UTC). |
| updatedAt | string | ISO-8601 timestamp (UTC). |
| deletedAt | object | |
| location | object | |
| deviceClaimed | boolean | Status is `pairing` but a device has claimed it and not yet checked in. |
| nodeName | object | |
| groupIds | array | Screen groups this screen is in. |
| contentName | object | |
| contentSharedFrom | object | Name of the workspace that shared the assigned content in; null when it is this workspace's own. |
| thumbnailUrl | object | Preview of the assigned content. |
| contentAppKey | object | |
| contentMediaKind | object | |
| contentState | object | Assigned media that is not playable yet (processing, failed, needs_action); null otherwise. |
| contentOrientation | object | |
| liveThumbnailAt | object | Capture time of the latest live frame (GET /v1/screens/{id}/live-thumbnail). |
| liveThumbnailFreshAt | object | |
| currentContentKind | object | |
| currentContentPosterUrl | object | |
| emergencyHeadline | object | |
| castHeadline | object | |
| castStartedAt | object | |
| castExpiresAt | object | |
| castContentKind | object | |
| castContentId | object | |
| kioskHasCustomPin | boolean | |
| kioskHasRecovery | boolean | |
| obscuredSince | object | A system dialog is covering the screen since this time. |
| pixelHealth | object | |
| displayOffSince | object | |
| displayOffReason | object | |
| expectedDark | object | |
| accountHold | object | |
| outageSummary30d | object | |
| linkFlaps10m | integer | Socket link flips in the last ten minutes; present only when > 0 (list and get). |
| state | object | The device's last reported state (`updatedAt` plus the heartbeat snapshot). The list returns a lean subset; get and PATCH return it all. Null before the first heartbeat. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/brixsignage-com/json-schema/brixsignage-com-screen-schema.json",
"title": "Screen",
"description": "A screen, composed with its content, live state and health facts.",
"x-generated": "2026-11-03",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/brixsignage-com-openapi.json#/components/schemas/Screen",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Screen id."
},
"spaceId": {
"type": "string",
"description": "Workspace id."
},
"nodeId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Location (org node) the screen belongs to; null = workspace root."
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"online",
"offline",
"pairing"
],
"description": "`pairing` = no device has checked in yet."
},
"lastSeenAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "Last heartbeat or socket ping reply, whichever is later."
},
"coreUpdateOfferedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"contentKind": {
"anyOf": [
{
"type": "string",
"enum": [
"playlist",
"schedule",
"layout",
"creative",
"app",
"media",
"signage"
]
},
{
"type": "null"
}
],
"description": "What is assigned. Null = nothing assigned."
},
"contentId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contentFit": {
"type": "null",
"description": "Retired; always null. Fit is set on the content."
},
"deactivatedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "Set while an operator has deactivated the screen."
},
"awaitingPaymentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "Set while the screen waits for payment: it was paired past the screens on the plan. It starts to play when the plan has room."
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"rotation": {
"type": "integer",
"description": "0, 90, 180 or 270 degrees."
},
"rotationCommandedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"timezone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "IANA time zone; null = inherited."
},
"timezoneSource": {
"anyOf": [
{
"type": "string",
"enum": [
"operator",
"device"
]
},
{
"type": "null"
}
]
},
"operatingHours": {
"type": "string",
"description": "`default`, or a JSON-encoded weekly window."
},
"lastPanelCommand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"scheduleScreensOff": {
"type": "boolean"
},
"displayPowerMode": {
"type": "string",
"enum": [
"always-on",
"follow-schedule",
"os-default"
]
},
"playbackMode": {
"type": "string",
"enum": [
"sync",
"unsync",
"device-time"
]
},
"locationLabel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"locationLat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"locationLng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"ipCity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ipRegion": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ipCountry": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ipLat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"ipLng": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"ipTimezone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"ipGeoAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"playerSettings": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Player settings as a JSON-ENCODED string (not an object)."
},
"kioskEnabled": {
"type": "boolean"
},
"kioskPinMode": {
"type": "string",
"enum": [
"workspace",
"custom"
]
},
"kioskGraceSeconds": {
"type": "integer"
},
"activeEmergencyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The live emergency overriding this screen, if any."
},
"activeCastId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The live cast overriding this screen, if any."
},
"playerVersionHold": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"sealed": {
"type": "boolean"
},
"sealedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"powerPolicyId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"importSourceId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"billingGroupId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"customFields": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Custom fields as a JSON-ENCODED string."
},
"lanSecretAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "When the local-trigger key was last set or rotated. The key itself is never returned."
},
"createdAt": {
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
"updatedAt": {
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
"deletedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"location": {
"anyOf": [
{
"type": "object",
"properties": {
"label": {
"type": "string"
},
"lat": {
"type": "number"
},
"lng": {
"type": "number"
}
},
"required": [
"label",
"lat",
"lng"
]
},
{
"type": "null"
}
]
},
"deviceClaimed": {
"type": "boolean",
"description": "Status is `pairing` but a device has claimed it and not yet checked in."
},
"nodeName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"groupIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Screen groups this screen is in."
},
"contentName": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contentSharedFrom": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Name of the workspace that shared the assigned content in; null when it is this workspace's own."
},
"thumbnailUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Preview of the assigned content."
},
"contentAppKey": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contentMediaKind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"contentState": {
"anyOf": [
{
"type": "object",
"properties": {
"state": {
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"code": {
"description": "`normalizing` while the file is prepared for screens.",
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"progress": {
"description": "Percent of the preparation done (0–99), when known.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"durationSec": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"state",
"reason"
]
},
{
"type": "null"
}
],
"description": "Assigned media that is not playable yet (processing, failed, needs_action); null otherwise."
},
"contentOrientation": {
"anyOf": [
{
"type": "string",
"enum": [
"portrait",
"landscape",
"adaptive"
]
},
{
"type": "null"
}
]
},
"liveThumbnailAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "Capture time of the latest live frame (GET /v1/screens/{id}/live-thumbnail)."
},
"liveThumbnailFreshAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"currentContentKind": {
"anyOf": [
{
"type": "string",
"enum": [
"image",
"video",
"stream"
]
},
{
"type": "null"
}
]
},
"currentContentPosterUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"emergencyHeadline": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"castHeadline": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"castStartedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"castExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"castContentKind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"castContentId": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"kioskHasCustomPin": {
"type": "boolean"
},
"kioskHasRecovery": {
"type": "boolean"
},
"obscuredSince": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
],
"description": "A system dialog is covering the screen since this time."
},
"pixelHealth": {
"anyOf": [
{
"type": "string",
"enum": [
"ok",
"frozen",
"blank"
]
},
{
"type": "null"
}
]
},
"displayOffSince": {
"anyOf": [
{
"type": "string",
"description": "ISO-8601 timestamp (UTC)."
},
{
"type": "null"
}
]
},
"displayOffReason": {
"anyOf": [
{
"type": "string",
"enum": [
"standby",
"wrong-input",
"disconnected",
"input-unconfirmed"
]
},
{
"type": "null"
}
]
},
"expectedDark": {
"type": "object",
"properties": {
"dark": {
"type": "boolean",
"description": "True when the rules say the panel should be off now."
},
"reason": {
"anyOf": [
{
"type": "string",
"enum": [
"schedule-block",
"power-policy",
"operating-hours"
]
},
{
"type": "null"
}
]
},
"nextOpen": {
"anyOf": [
{
"type": "object",
"properties": {
"at": {
"type": "string"
},
"day": {
"type": "string"
},
"inMinutes": {
"type": "number"
}
},
"required": [
"at",
"day",
"inMinutes"
]
},
{
"type": "null"
}
]
},
"minutesSinceOpen": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"minutesSinceClose": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
}
},
"required": [
"dark",
"reason",
"nextOpen",
"minutesSinceOpen",
"minutesSinceClose"
]
},
"accountHold": {
"anyOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"suspended",
"cancelled",
"deactivated",
"trial_expired",
"awaiting_payment"
]
},
"reason": {
"type": "string"
}
},
"required": [
"status",
"reason"
]
},
{
"type": "null"
}
]
},
"outageSummary30d": {
"anyOf": [
{
"type": "object",
"properties": {
"windowDays": {
"type": "integer"
},
"count": {
"type": "integer"
},
"topCause": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"topCauseShare": {
"type": "number"
},
"hedgedShare": {
"type": "number"
},
"lastCause": {
"anyOf": [
{
"type": "object",
"properties": {
"cause": {
"type": "string",
"description": "Outage cause key, e.g. `wifi-dropped`, `power-loss`, `unknown`."
},
"confident": {
"type": "boolean"
}
},
"required": [
"cause",
"confident"
]
},
{
"type": "null"
}
]
},
"lastKnownCause": {
"anyOf": [
{
"type": "object",
"properties": {
"cause": {
"type": "string",
"description": "Outage cause key, e.g. `wifi-dropped`, `power-loss`, `unknown`."
},
"confident": {
"type": "boolean"
}
},
"required": [
"cause",
"confident"
]
},
{
"type": "null"
}
]
},
"insight": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"windowDays",
"count",
"topCause",
"topCauseShare",
"hedgedShare",
"lastCause",
"lastKnownCause",
"insight"
]
},
{
"type": "null"
}
]
},
"linkFlaps10m": {
"description": "Socket link flips in the last ten minutes; present only when > 0 (list and get).",
"type": "integer"
},
"state": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "The device's last reported state (`updatedAt` plus the heartbeat snapshot). The list returns a lean subset; get and PATCH return it all. Null before the first heartbeat."
}
},
"required": [
"id",
"spaceId",
"nodeId",
"name",
"status",
"lastSeenAt",
"coreUpdateOfferedAt",
"contentKind",
"contentId",
"contentFit",
"deactivatedAt",
"awaitingPaymentAt",
"tags",
"rotation",
"rotationCommandedAt",
"timezone",
"timezoneSource",
"operatingHours",
"lastPanelCommand",
"scheduleScreensOff",
"displayPowerMode",
"playbackMode",
"locationLabel",
"locationLat",
"locationLng",
"ipCity",
"ipRegion",
"ipCountry",
"ipLat",
"ipLng",
"ipTimezone",
"ipGeoAt",
"playerSettings",
"kioskEnabled",
"kioskPinMode",
"kioskGraceSeconds",
"activeEmergencyId",
"activeCastId",
"playerVersionHold",
"sealed",
"sealedAt",
"powerPolicyId",
"importSourceId",
"billingGroupId",
"customFields",
"lanSecretAt",
"createdAt",
"updatedAt",
"deletedAt",
"location",
"deviceClaimed",
"nodeName",
"groupIds",
"contentName",
"contentSharedFrom",
"thumbnailUrl",
"contentAppKey",
"contentMediaKind",
"contentState",
"contentOrientation",
"liveThumbnailAt",
"liveThumbnailFreshAt",
"currentContentKind",
"currentContentPosterUrl",
"emergencyHeadline",
"castHeadline",
"castStartedAt",
"castExpiresAt",
"castContentKind",
"castContentId",
"kioskHasCustomPin",
"kioskHasRecovery",
"obscuredSince",
"pixelHealth",
"displayOffSince",
"displayOffReason",
"expectedDark",
"accountHold",
"outageSummary30d",
"state"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/brixsignage-com-screen"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.