Dashboard JSON

A dashboard is a single JSON object. This page is the top-level contract; the authoritative machine-readable version is the published JSON Schema.

Top level

json
{
  "name": "My dashboard",
  "description": "Optional.",
  "version": "1.0.0",
  "settings": { "interval_enabled": false },
  "layout": [ /* tiles */ ]
}
FieldRequiredDescription
nameyesHuman-friendly title (1–140 chars).
descriptionnoOptional summary.
versionnoContent/schema version for future migrations.
settingsnoDashboard runtime settings (see below).
layoutyesArray of one or more tiles.

Settings

json
"settings": { "interval_enabled": true, "interval_ms": 60000 }
FieldDescription
interval_enabledIf true, the dashboard may refresh tiles on an interval.
interval_msDashboard refresh interval in ms (5000–3600000). Required when interval_enabled is true.
Note
Theme is intentionally not part of the dashboard. It is owned by the app, account, user, or deployment environment — so the same dashboard looks right wherever it runs.

Tiles

Each entry in layout is a tile. The minimum is an id, a position, and a block:

json
{
  "id": "notes",
  "position": { "row": 0, "order": 0, "width": 12 },
  "block": { "type": "markdown", "config": { "content": "# Hello" } }
}

A tile may also carry title, card, load, exec, query, depends_on, triggered_by, tags, artifact, and controls. See Tiles for the full field reference.

Source values

Anywhere the schema allows it, a literal can be replaced with a dynamic reference resolved by the runtime:

json
{ "?source": "region_options" }

StrataBI looks the id up in the source registry, loads the payload from S3, and substitutes the value before execution. See Inputs & parameters.

Validation

Dashboards validate against dashboard.schema.json (JSON Schema 2020-12). Invalid documents are rejected before they run — validate at author time to catch mistakes early.