The Kanban board gives your team a real-time visual overview of every task’s progress. It organizes tasks into five columns — one per status — and lets you move cards by dragging and dropping them. Dragging a card to a different column automatically triggers a status change, while dragging within the same column updates the display order. Access the board atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/0m1n3m/contacts-db/llms.txt
Use this file to discover all available pages before exploring further.
GET /tasks/board; no extra parameters are required to load the default view.
Board columns
The board always renders five columns in the following fixed order, matching theTaskStatus enum values:
| # | Column | Status value |
|---|---|---|
| 1 | Created | created |
| 2 | Accepted | accepted |
| 3 | In Progress | in_progress |
| 4 | In Review | in_review |
| 5 | Done | done |
TaskBoardController. Tasks within a column are sorted first by sort_order ascending, then by id ascending as a tiebreaker.
Drag and drop
Moving a card to a different column (status change)
When you drag a task card from one column to another, the board sends aPATCH request to update the task’s status and refresh the sort order of both affected columns simultaneously:
| Field | Type | Description |
|---|---|---|
status | string | The target status value: created, accepted, in_progress, in_review, or done |
from_ordered_task_ids | array<int> | IDs of tasks remaining in the source column, in the order they appear after the card was removed |
to_ordered_task_ids | array<int> | IDs of tasks in the destination column, in the order they appear after the card was inserted |
ChangeTaskStatusAction to validate the transition against the actor’s role, update time-tracking fields, and dispatch status-change notifications. It then writes the new sort_order for every task in both arrays.
Sort order values are stored as multiples of 10 (10, 20, 30, …). This gap-based scheme allows new cards to be inserted between existing ones without rewriting every record in the column — a card dropped between positions 20 and 30 can be assigned sort order 25 without touching its neighbours.
Reordering within the same column
When you drag a card to a new position within its existing column (no status change), the board sends:| Field | Type | Required | Description |
|---|---|---|---|
to_status | string | Yes | The target status value (must match the task’s current status for a pure reorder) |
from_ordered_task_ids | array<int> | No | IDs of tasks in the source column after the move; validated with sometimes so it may be omitted if the drag event fires before the source column is resolved |
to_ordered_task_ids | array<int> | Yes | IDs of tasks in the destination column in their new order |
to_status value matches the task’s current status, only the sort order is updated and no status transition is recorded. If to_status differs from the current status (which can happen in edge cases), ChangeTaskStatusAction is invoked before the reorder.
Filtering by project
The currentTaskBoardController loads tasks across all projects — there is no project_id query parameter supported on the board endpoint. To work with tasks scoped to a single project, use the task list (GET /tasks) or filter from the project detail page (GET /projects/{id}).
The Task model does expose a scopeKanbanColumn scope that accepts a nullable project_id for use in custom queries:
Task card information
Each card on the board surfaces a concise summary of the task:Title
The task’s title, truncated if it overflows the card width.
Priority badge
A colour-coded badge for
critical, high, normal, or low priority.Assignees
Avatar stack showing all assigned users. Cards include an
assigned_to_me boolean flag so the current user’s assignments are highlighted.Due date
Shown when
due_at is set; displayed in a warning colour when overdue.id, title, sort_order, status, project_id, created_by, priority), keeping the initial page payload small. Full task details are fetched on demand when a card is opened.
Kanban visibility rules
TaskBoardController loads all tasks for each status column regardless of the viewer’s role — it does not apply the scopeVisibleTo scope. Every authenticated user therefore sees every card in every column. The assigned_to_me boolean flag is computed per-card (based on the task_assignments pivot) so the UI can visually highlight a user’s own assignments, but cards belonging to others are still rendered.
For strictly role-filtered task listings, use the task list (GET /tasks), which does apply scopeVisibleTo. For full details on role-based task visibility, see Managing Tasks.