Job & Dashboard Reference
Widgets overview
Browse all 14 dashboard widget types, the keys every widget shares, and how widgets bind to connector data and shared queries.
Widgets overview
A widget is one block on a dashboard page: a heading, a number, a chart, a data browser, an editable form, or an action button. Every widget is declared in dashboard YAML with a type from the built-in registry (src/dashboard/register-widget-types.ts); the parser dispatches each entry to its type-specific handler. Data widgets execute read-only connector calls server-side through the Job's connector mapping — the browser never holds connector credentials.
The 14 registered types match the DashboardWidgetType union in the UI API client:
| Type | Purpose |
|---|---|
heading |
Section label or instructional callout. |
stat |
Single numeric result with optional unit and comparison. |
progress |
Current/total ratio bar. |
steps |
Horizontal process stepper. |
people |
Contact cards. |
bar_chart |
Bar chart over an array of records. |
line_chart |
Line chart over an array of records. |
pie_chart |
Pie chart over an array of records. |
table |
Bounded rows with declared columns. |
form |
Typed fields that write a job_config object. |
field_mapping |
Source-to-target mapping editor that writes a job_config array. |
action |
Declarative button that runs a task, job run, or connector method server-side. |
task_progress |
Latest run status for one job task key. |
explorer |
Curated pageable, filterable data browser. |
The registry groups behavior three ways: form and field_mapping are input widgets (they persist a value onto the Job's configuration), action is the action widget, and everything else is read-only display.
Common keys
Every widget accepts these base keys in addition to its type-specific configuration:
| Key | Type | Required | Description |
|---|---|---|---|
id |
string | Yes | Stable identity, unique across the whole dashboard. Used for data fetches, refresh targets, and row_action references. |
type |
string | Yes | One of the 14 registered types. |
title |
string | No | Display title. |
description |
string | No | Display description. |
width |
number | No | Relative span in the responsive grid. |
scope |
string or null | No | Named scope profile to inject into this widget's connector calls, or null to opt out. Omit to use the dashboard's default_scope. |
refresh_interval_seconds |
number | No | Per-widget polling interval, overriding the dashboard-level value. |
Data binding
Data widgets name a connector call in their data (or current/total/compare_to) key:
- id: tickets_total
type: stat
title: Tickets
data:
connector: mongo
method: count
args:
collection: zendesk_tickets- The call shape is
{ connector, method, args? }.connectoris a template connector name resolved through the Job's connector mapping;methodmust be a read-only method — writes are rejected at widget execution time. - Leaf values and whole
datablocks may be JSONata strings, evaluated with the dashboard context:arguments,job,job_config, andshared. - Widgets that support
shared_queryreuse a named entry from the dashboard'sshared_queriesinstead of calling the connector directly; the cached result is bound asdatain the widget's expressions. Prefer shared queries when several widgets need the same expensive call.
Public share behavior
On the public share surface each widget is sanitized by its registry handler: connector call configs, option sources, and action dispatch internals are stripped, and only display-safe keys (titles, columns, form field labels, and similar) reach the anonymous viewer. See Dashboard YAML for page-level public flags and allow_public_input.
Related
- Dashboard YAML — the document structure widgets live in
- Display widgets — heading, stat, progress, steps, people
- Chart and table widgets — bar_chart, line_chart, pie_chart, table
- Input and action widgets — form, field_mapping, action, task_progress, explorer