API: summary and sources
Two read-only endpoints power the dashboard overview: summary returns headline counts and breakdowns, and sources returns a paginated list of indexed log files. Both accept the standard API conventions and require a key when API key authentication is enabled.
Summary
Returns a single object aggregated across all issues in the current application.
| Key | Shape | Notes |
|---|---|---|
total | groups_count, occurrences, last_seen | One row. occurrences is 0 when empty. |
severity | rows of severity, groups_count, occurrences | Ordered EMERGENCY to ALERT to CRITICAL to ERROR to WARNING to NOTICE to INFO. |
types | rows of log_type, groups_count, occurrences | Ordered by occurrences descending. |
trend | rows of day, count | Occurrences grouped by occurred_day, oldest first. |
daily_severity | rows of day, severity, count | Latest 30 calendar days ending on the newest occurrence day; the UI fills missing days with zero. |
status | rows of status, groups_count, occurrences | Workflow composition used by the triage-health chart. |
files | up to 12 recent source files | Same row shape as sources data below. |
modules | rows of module fields plus issue_count | Ordered by name (case-insensitive). |
See severities for the level ordering and modules for how issues are grouped.
Sources
Lists indexed log files, newest import first.
| Parameter | Default | Range |
|---|---|---|
page | 1 | clamped to 1 minimum |
limit | 12 | 1-100 |
Each row includes:
{
"id": 1,
"path": "/var/log/laravel.log",
"size": 48213,
"imported_at": "2026-07-25 09:12:00",
"log_type": "laravel",
"channel": "single",
"occurrence_count": 37,
"module_id": 2,
"module_name": "Billing",
"module_slug": "billing",
"module_color": "#3b82f6"
}
module_* fields are null when the source is unassigned. The response wraps rows in data with pagination meta:
{
"data": [ ... ],
"meta": { "total": 40, "page": 1, "limit": 12, "pages": 4 }
}
pages is total divided by limit, rounded up.