Dashboard
Monitor's UI lives at /dashboard/{team}/monitor. There are three views: Feature Health (the main table), Runs (per-feature drill-down), and Incidents.
Feature Health
One row per feature. Auto-created the first time the SDK reports an event for a new featureName. HTTP ping monitors live in the same table.
Runs subpage
Drill-down at /dashboard/{team}/monitor/features/{name}. Filter, search, and paginate raw events.
Group-by view
Toggle the toolbar between List and Group by to aggregate runs along a single facet.
Run drawer
The right-hand slide-out for a single event. Opens on row click, or by visiting the Runs subpage with ?run_id=<uuid> appended to its URL.
Export
Click Export CSV on the Runs page to download the runs the Runs view lists, under the same window and filters (status, platform, environment, release, from/to) and the same sort (newest, slowest, fastest; default newest). The response names its order in X-Onelo-Export-Order; a slowest or fastest export leaves out runs that were never timed and says so with X-Onelo-Untimed-Runs-Excluded: true. Repeated identical successes are stored as one row; its run_count column says how many runs that row stands for.
The download uses your authenticated dashboard session automatically. The screen-only sdk, model, trigger, app_build and search filters cannot be applied to thin run rows, so Runs asks you to clear them before exporting instead of returning a misleading file.
409 too_large. Reduce the time range or add a filter and retry.sdk, model, trigger, app_build and q with 400 unsupported_filter rather than returning a file that ignored them.For direct API clients, the same export is available with a dashboard JWT:
GET /api/monitor/features/{feature_name}/runs/export?app_id=…&format=csv
Authorization: Bearer <session JWT>Incidents
Incidents live at /dashboard/{team}/incidents. One row per incident, scoped to the app.