Aggregate, read-only views that power the Klaarin dashboard — stat cards, the active task list, client comments, and team workload. Every endpoint is scoped to the active workspace and further trimmed by the caller's role, matching the web dashboard's own visibility rules exactly. All four accept the shared filter set below; a parameter is only listed on an endpoint where it changes the result.
GET
/dashboard/stats
The four stat-card counts: projects, overdue, due today, due this week.
Query parameters
searchstringoptionalMatches task name or description
fromdateoptionalEarliest task deadline to include (YYYY-MM-DD, inclusive). Intersects with each tile's own window rather than replacing it
todateoptionalLatest task deadline to include (YYYY-MM-DD, inclusive)
teamIdintegeroptionalFilter to the members of one or more teams, including their sub-teams (comma-separated). Combined with assigneeId it intersects, it does not widen
assigneeIdstringoptionalFilter to one or more assignees (comma-separated)
taskIdintegeroptionalFilter to one task
projectIdintegeroptionalFilter to one project
projectStatusstringoptionalFilter to projects whose status matches this value exactly, e.g. in-progress
statusstringoptionalFilter to one task status. Replaces the default not-completed baseline, so a completed status can be counted
localDatedateoptionalCaller's local date (YYYY-MM-DD), defaults to server today — pass this to avoid a timezone-boundary mismatch on overdue/due-today/due-this-week
The Active Tasks list — lean task rows for the dashboard, not the full task shape GET /tasks/{id} returns.
Query parameters
searchstringoptionalMatches task name or description
fromdateoptionalEarliest task deadline to include (YYYY-MM-DD, inclusive)
todateoptionalLatest task deadline to include (YYYY-MM-DD, inclusive)
teamIdintegeroptionalFilter to the members of one or more teams, including their sub-teams (comma-separated). Combined with assigneeId it intersects, it does not widen
assigneeIdstringoptionalFilter to one or more assignees (comma-separated). Never widens past what the caller's role may see
taskIdintegeroptionalFilter to one task
projectIdintegeroptionalFilter to one project
projectStatusstringoptionalFilter to projects whose status matches this value exactly, e.g. in-progress
statusstringoptionalFilter to one status value
sortstringoptionaldue (default), created, name, or status. status sorts by a fixed pipeline order (todo, in-progress, internal-review, client-review); a status outside that list sorts last
localDatedateoptionalCaller's local date (YYYY-MM-DD), for due-state labeling
limitintegeroptionalPage size, default 25, max 100
offsetintegeroptionalNumber of results to skip, default 0
Client Comments & Mentions. Returns an empty page (not an error) for a role that can't see client comments — currently client.
Query parameters
searchstringoptionalMatches the comment's own content
fromdateoptionalEarliest comment date to include (YYYY-MM-DD, inclusive). Unlike the other endpoints this filters when the comment was posted, not a task deadline
todateoptionalLatest comment date to include (YYYY-MM-DD, inclusive)
teamIdintegeroptionalFilter to comments on tasks assigned to the members of one or more teams, including their sub-teams (comma-separated)
assigneeIdstringoptionalFilter to comments on tasks assigned to one or more people (comma-separated). This matches the task's assignee, not the comment's author
projectIdintegeroptionalFilter to one project
projectStatusstringoptionalFilter to projects whose status matches this value exactly, e.g. in-progress
limitintegeroptionalPage size, default 25, max 100
offsetintegeroptionalNumber of results to skip, default 0
GET
/dashboard/workload
Per-person capacity/utilization gauge plus a 6-row breakdown, for the whole team visible in the active workspace. Not paginated — one object covering everyone the caller's role allows onto the roster. Returns empty workloads for a role that can't see workload — currently client.
Query parameters
fromdateoptionalStart of an explicit window (YYYY-MM-DD). Overrides the mode's implicit window for capacity, the completed window, and the daily due-window
todateoptionalEnd of the explicit window (YYYY-MM-DD). Defaults to from, i.e. a single day
teamIdintegeroptionalLimit the roster to the members of one or more teams, including their sub-teams (comma-separated)
assigneeIdstringoptionalLimit the roster to one or more people (comma-separated). Someone picked here appears at 0% rather than being dropped when they have no active task in scope
projectIdintegeroptionalFilter to one project
projectStatusstringoptionalFilter to projects whose status matches this value exactly, e.g. in-progress