Documentation menu
These are pre-release docs from the main branch.

API reference

22 operations in boards. Raw spec: openapi.json.

GET/api/v1/board-groups

GET /api/board-groups — the org's groups in nav order (any member may read; rendering input for the tree).

Responses

StatusDescription
200

Security: bearer

POST/api/v1/board-groups

POST /api/board-groups — creates a nav group (ManageBoards gated); emits `board.group_created`.

Request body

CreateGroupRequest

Responses

StatusDescription
200

Security: bearer

PATCH/api/v1/board-groups/{id}

PATCH /api/board-groups/{id} — renames/reorders a group. ManageBoards OR the group's owner may do this; emits `board.group_updated`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

UpdateGroupRequest

Responses

StatusDescription
200

Security: bearer

DELETE/api/v1/board-groups/{id}

DELETE /api/board-groups/{id} — removes a group; member boards become ungrouped, never deleted. ManageBoards OR the group's owner; emits `board.group_removed`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
204

Security: bearer

GET/api/v1/boards

GET /api/boards

Responses

StatusDescription
200

Security: bearer

POST/api/v1/boards

POST /api/boards — creates a board seeded with the four default statuses.

Request body

CreateBoardRequest

Responses

StatusDescription
200

Security: bearer

POST/api/v1/boards/favorite

POST /api/boards/favorite — toggles a board favorite for the current user (user-scoped; any authenticated member may star boards they can see). Emits `board.favorite_toggled` in-tx.

Request body

FavoriteRequest

Responses

StatusDescription
204

Security: bearer

GET/api/v1/boards/nav

GET /api/boards/nav — every org board annotated with the current user's favorite mark, board role, and group assignment.

Responses

StatusDescription
200

Security: bearer

GET/api/v1/boards/{id}/checklist-template

GET /api/boards/{id}/checklist-template

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

PUT/api/v1/boards/{id}/checklist-template

PUT /api/boards/{id}/checklist-template — creates or replaces the board's template wholesale and sets the enforcement toggle; emits `board.checklist_template_updated` and audits the change.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

PutChecklistTemplateRequest

Responses

StatusDescription
200

Security: bearer

DELETE/api/v1/boards/{id}/checklist-template

DELETE /api/boards/{id}/checklist-template — removes the template. Ticket instances demote to ad-hoc items; with no template left, close-time enforcement is off by construction regardless of the toggle.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
204

Security: bearer

PUT/api/v1/boards/{id}/group

PUT /api/boards/{id}/group — assigns/unassigns the board's nav group. Board-admin gated (ConfigureBoard); emits `board.group_updated`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

AssignGroupRequest

Responses

StatusDescription
204

Security: bearer

GET/api/v1/boards/{id}/members

GET /api/boards/{id}/members — the roster (ConfigureBoard gated).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

PUT/api/v1/boards/{id}/members

PUT /api/boards/{id}/members — adds or re-roles one membership. ManageMembers gated (board admin); emits `board.membership_updated`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

UpsertMemberRequest

Responses

StatusDescription
200

Security: bearer

DELETE/api/v1/boards/{id}/members/{user_id}

DELETE /api/boards/{id}/members/{user_id} — removes one membership; the user falls back to org-governed access. Emits `board.membership_removed`.

Parameters

NameInTypeRequiredDescription
idpathstringYes
user_idpathstringYes

Responses

StatusDescription
204

Security: bearer

GET/api/v1/boards/{id}/statuses

GET /api/boards/{id}/statuses

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

POST/api/v1/boards/{id}/statuses

POST /api/boards/{id}/statuses — adds a custom status bound to a semantic category; emits `board.status_added`.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

CreateStatusRequest

Responses

StatusDescription
200

Security: bearer

GET/api/v1/boards/{id}/statuses/usage

boards_status_usage

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

PATCH/api/v1/boards/{id}/statuses/{status_id}

PATCH /api/boards/{id}/statuses/{status_id} — rebinds/reorders/renames a status; emits `board.status_updated`.

Parameters

NameInTypeRequiredDescription
idpathstringYes
status_idpathstringYes

Request body

UpdateStatusRequest

Responses

StatusDescription
200

Security: bearer

DELETE/api/v1/boards/{id}/statuses/{status_id}

DELETE /api/boards/{id}/statuses/{status_id} — removes a custom status.

Without `reassign_to` a status holding tickets is refused (409), as before. With it, every ticket moves first — set-based, mirroring the per-ticket status-change invariants exactly (denormalised category, one-shot `resolved_at`, SLA pause bookkeeping) — and each moved ticket gets its own `ticket.status_changed` outbox row, so a bulk move is as auditable as a single one. Automations naming the status are paused, never repointed. Emits `board.status_removed`.

Parameters

NameInTypeRequiredDescription
idpathstringYes
status_idpathstringYes
reassign_toquery—NoMove every ticket in this status to `reassign_to` and then delete it. Must be another status on the same board. Absent, a status holding tickets is refused with 409 and nothing changes.

Responses

StatusDescription
200
409

Security: bearer

GET/api/v1/boards/{id}/transitions

GET /api/boards/{id}/transitions — the board's effective workflow.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Responses

StatusDescription
200

Security: bearer

PUT/api/v1/boards/{id}/transitions

PUT /api/boards/{id}/transitions — atomically replaces the explicit transition matrix; emits `board.transitions_updated`. Endpoints must be statuses of THIS board and self-transitions are rejected.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

SetTransitionsRequest

Responses

StatusDescription
200

Security: bearer