Cross-matter task aggregation for steps, subtasks, and cross-workspace signoff requests. Supports listing, sharing, and bulk actions (reassign, branch). Tasks are a unified view over steps, subtasks, and cross-workspace signoff records.
Route Conventions
- All endpoints require authentication and appropriate workspace permissions.
- Mutation routes (POST) require a valid security token and validate JSON payloads.
- Bulk actions require ADMIN or OWNER org role.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/tasks | List tasks (unified steps + subtasks + signoffs) |
| GET | /api/tasks/shared | List shared task lists visible to the current user |
| POST | /api/tasks/bulk | Bulk reassign or branch tasks (ADMIN/OWNER only) |
List Tasks
Aggregates active steps, pending subtasks, and pending cross-workspace signoff tasks assigned to the current user (or all org members for ADMIN/OWNER scope). Returns a paginated, sorted, unified task list. When multi-workspace oversight is active, tasks include an origin workspace identifier.
GET /api/tasks?scope=my&status=active&priority=ALL&sort=dueDate&page=1&limit=25
Query Parameters
| Param | Default | Description |
|---|---|---|
scope | my | my or all (all requires ADMIN/OWNER) |
status | active | active, overdue, or completed |
priority | ALL | ALL, LOW, MEDIUM, HIGH, or URGENT |
assignee | ALL | User ID filter (only for scope=all) |
board | ALL | Filter by board (matter type) name |
sort | dueDate | dueDate, priority, or assignedAt |
search | - | Free-text search across task/matter titles |
userId | - | View another user's tasks (requires ADMIN/OWNER or shared access) |
includeSubordinates | true | Set to false to exclude subordinate workspace tasks. Defaults to true for overseers. |
page, limit | 1, 25 | Pagination (max 100 per page) |
Response
{
"tasks": [
{
"id": "clx...",
"type": "step",
"title": "Review application",
"matterId": "clx...",
"matterTitle": "ACME Onboarding",
"matterNumber": "MAT-0012",
"boardName": "Client Onboarding",
"dueDate": "2026-03-01T00:00:00.000Z",
"priority": "HIGH",
"status": "ACTIVE",
"assignedAt": "2026-02-20T10:00:00.000Z",
"stepType": "APPROVAL",
"stepId": null,
"assignee": { "id": "...", "name": "Jane", "email": "jane@..." },
"isOverdue": false,
"workspaceId": "clx...",
"workspaceName": "My Workspace",
"crossWorkspaceTaskId": null
}
],
"pagination": { "page": 1, "limit": 25, "total": 42, "pages": 2 },
"summary": { "active": 30, "overdue": 3, "completed": 9, "total": 42 },
"assignees": [],
"boards": ["Client Onboarding", "Due Diligence"],
"isOverseer": true
}
The type field is one of "step", "subtask", or "signoff". The stepId is null for steps, set to the step ID for subtasks. The crossWorkspaceTaskId is set for signoff tasks.
Bulk Actions
Perform bulk operations on selected tasks. Requires ADMIN or OWNER org role. Supports two actions: reassign and branch.
Reassign
Updates the assignedToId on each selected step or subtask. Logs an audit event per task and sends a notification to the target user.
POST /api/tasks/bulk
Content-Type: application/json
{
"action": "reassign",
"tasks": [
{ "id": "clx...", "type": "step", "matterId": "clx...", "stepId": null },
{ "id": "cly...", "type": "subtask", "matterId": "clx...", "stepId": "clz..." }
],
"assignedToId": "usr_target_id",
"reason": "Holiday cover"
}
{ "success": true, "action": "reassign", "updated": 2 }
Branch Task
Creates a review copy (subtask) for each selected task, assigned to the target user. The branch subtask has branchSourceId and branchSourceType set, linking it to the original. When the original step or subtask is completed, all linked branch subtasks are automatically completed (cascade).
POST /api/tasks/bulk
Content-Type: application/json
{
"action": "branch",
"tasks": [
{ "id": "clx...", "type": "step", "matterId": "clx...", "stepId": null }
],
"assignedToId": "usr_reviewer_id"
}
{ "success": true, "action": "branch", "created": 1, "branchIds": ["clb..."] }
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | reassign or branch |
tasks | array | Yes | 1-100 task references, each with id, type, matterId, stepId |
assignedToId | string | Yes | Target user ID (must be an org member) |
reason | string | No | Optional reason (max 500 chars), recorded in audit log |
Branch Cascade Completion
When a step or subtask is completed, any branch subtasks linked to it are automatically completed. This ensures review copies don't linger after the original work is done.
| Trigger | Cascade |
|---|---|
Step completed via POST /api/matters/:id/steps/:stepId/complete | Auto-completes subtasks where branchSourceId = stepId and branchSourceType = STEP |
Subtask toggled complete via POST .../subtasks/:id/toggle | Auto-completes subtasks where branchSourceId = subtaskId and branchSourceType = SUBTASK |
Branch Fields on Subtasks
Branch subtasks include two additional fields:
| Field | Type | Description |
|---|---|---|
branchSourceId | string? | ID of the source step or subtask this was branched from |
branchSourceType | enum? | STEP or SUBTASK |