kanban::activity::list
functionRead a ticket's activity timeline: field changes, lane moves, deletion and comment events, oldest first.
limitinteger· uint64min 0
ticket_idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
activityobject[]*required
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
countinteger· uint64*requiredmin 0
kanban::agent::list
functionList assignable agent profiles, resolved through iii-directory with a fallback to the configured agents folder.
agentsobject[]*required
idstring*required
Agent profile id used as the ticket assignee.
sourcestring*required
directory | agents-folder | unavailable
kanban::board::get
functionRead the board: every configured column with its tickets, the done column, every project and release with its counts, plus the resolved paths and priorities. Narrow it with statuses, updated_since, limit and parent_id / project_id / release_id (empty string = none), and ask for compact rows to keep the response small.
compactboolean
Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full summary.
include_deletedboolean
Include soft-deleted tickets. Default false.
limitinteger· uint64min 0
At most this many tickets per column, from the top of the column.
parent_idstring
Only the subtasks of this ticket (uuid or key); empty string = tickets that are not subtasks.
project_idstring
Only tickets in this project (id or name); empty string = tickets in no project.
release_idstring
Only tickets in this release (id or name); empty string = tickets in no release.
statusesstring[]
Only these column ids (board order kept). Omit for every column.
updated_sincestring
Only tickets updated after this ISO timestamp — what changed since your last read.
board_filestring*required
canceled_statusstring
The column that counts as canceled (out of progress and release totals); null when the board has none.
columnsobject[]*required
The columns asked for (all by default), each with the tickets the filters kept.
ticketsany of[]*required
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
data_path_resolvedstring*required
default_statusstring*required
deleted_countinteger· uint64*requiredmin 0
done_statusstring*required
The column that counts as done for progress, releases and subtasks.
prioritiesstring[]*required
projectsobject[]*required
Every project, archived ones included, by name.
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
releasesobject[]*required
Every release, by target date (none last) then name.
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
ticket_countinteger· uint64*requiredmin 0
Every live ticket on the board, regardless of the filters above.
updated_atstring*required
kanban::config::info
functionResolved kanban settings: the folder the board file lives in, the columns, and the numbering prefix.
agents_pathstring*required
agents_path_resolvedstring*required
board_filestring*required
Absolute path of board.json.
canceled_statusstring
The column that counts as canceled (out of progress and release totals); null when the board has none.
columnsobject[]*required
Board columns left to right.
idstring*required
Stable column id stored on tickets.
labelstring*required
Name shown on the board.
configuration_idstring*required
data_pathstring*required
Configured path, as written.
data_path_resolvedstring*required
Absolute folder the board file is read from.
default_statusstring*required
done_statusstring*required
The column that counts as done for progress, releases and subtasks.
prioritiesstring[]*required
project_rootstring*required
subscribersobject*required
changeinteger· uint*requiredmin 0
commentinteger· uint*requiredmin 0
kanban::label::convert
functionTurn a label into a project or a release: create one (or reuse the one with that name, or pass an existing id) and file every ticket carrying the label under it. Reports which tickets were added, already there, in another project/release (kept unless replace) or deleted (skipped). Running it twice adds nothing; dry_run changes nothing.
descriptionstring
Description of a project or release created by this call.
dry_runboolean
Compute the buckets and change nothing.
idstring
An existing project or release (id or name) to add the tickets to.
intoall of*required
Convert into a project or a release.
all of (1)
variant 1
valuestringenum: project, release
labelstring*required
The label to convert; matched ASCII case-insensitively.
mark_released_if_doneboolean
Releases: mark the release released when every live ticket in it is done, dated at the last of them.
namestring
Without `id`: the name of the project or release to create, or to reuse when one has this name.
remove_labelboolean
Remove the label from the tickets that end up in the project or release. Default false.
replaceboolean
Also move tickets that are in another project or release. Default false: they are kept where they are.
target_atstring
Target date `YYYY-MM-DD` of a release created by this call.
bucketsall of*required
Ticket keys per outcome, from where the tickets were before the call.
all of (1)
variant 1
already_herestring[]*required
in_otherstring[]*required
entityany of
The project or release after the conversion; with `dry_run`, the existing one or null.
any of (2)
variant 1
any of (2)
variant 1
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
variant 2
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
… expand 3 nestedcollapse
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
… expand 1 nestedcollapse
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
ticketsany of[]*required
The tickets that were changed.
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::mention::get
functionResolve a @kanban(id=…) chat mention to its pill, preview card and agent summary; null for an unknown id. Declares the kanban mention provider.
idstring*required
The id from the token.
any of (2)
variant 1
dataunknown
The domain object, for a worker's own preview renderer.
fieldsobject[]
Labelled values for the preview card (status, assignee, …).
tonestring
`neutral`, `info`, `success`, `warning` or `danger`.
idstring*required
The canonical id (may differ from the one asked for, e.g. a key resolved to a uuid).
openany of
What clicking the mention opens.
any of (2)
variant 1
any of (3)
variant 1
pagestring*required
Console page id (as registered with `host.pages`).
variant 2
sessionstring*required
Session id to select.
summarystring
One line for an agent: what the item is and its state. Defaults to the label, hint, description and fields.
updated_atstring
RFC 3339 time of the item's last change.
kanban::mention::search
functionSearch live tickets for the chat @kanban mention menu, by key (KAN-12, 12) or title words; best match first.
contextany of
Where the search was asked from, for providers that rank by it.
limitinteger· uintmin 0
Maximum rows (default 8, at most 50).
querystring
What the user typed after `@<name>:`. Empty asks for the most relevant recent items.
itemsobject[]*required
colorstring
Overrides the provider's color for this row.
descriptionstring
One line after the label ("in progress · high").
hintstring
A short human handle shown before the label ("KAN-12").
iconstring
Overrides the provider's icon for this row.
idstring*required
The id written into the token; stable for the item's lifetime.
labelstring*required
The item's name ("Fix login redirect").
kanban::on-config-change
functionInternal: re-read the kanban configuration after an operator change.
idstring
Configuration id that changed.
kanban::project::archive
functionArchive a project. Its tickets stay; an archived project refuses new tickets. Archiving an archived project changes nothing.
idstring*required
Project or release id, or its name.
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
kanban::project::create
functionCreate a project: a named group of tickets with an optional lead and color. Names are unique (ASCII case ignored).
colorstring
blue | purple | teal | green | amber | rose.
leadstring
Agent profile id, or `user`.
namestring*required
Required; unique among projects (ASCII case ignored).
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
kanban::project::list
functionList projects with their live ticket counts (total, done, per column). Archived projects only with include_archived.
include_archivedboolean
Include archived projects. Default false.
projectsobject[]*required
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
kanban::project::restore
functionPut an archived project back. Restoring a project that is not archived changes nothing.
idstring*required
Project or release id, or its name.
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
kanban::project::update
functionRename a project or change its description, lead or color (null clears lead and color). The id accepts the project id or its name.
colorstring
blue | purple | teal | green | amber | rose, or null to clear.
idstring*required
Project id or name.
leadstring
Agent profile id, `user`, or null to clear.
archived_atstring
Set when archived; an archived project refuses new tickets.
colorstring
blue | purple | teal | green | amber | rose.
created_atstring*required
doneinteger· uint64*requiredmin 0
Of those, the ones in the done column.
leadstring
Agent profile id, or `user`.
namestring*required
Unique among projects (trimmed, ASCII case ignored).
source_labelstring
The label this project was converted from, if any.
statusstring*requiredenum: active, archived
totalinteger· uint64*requiredmin 0
Live tickets in the project.
updated_atstring*required
kanban::release::create
functionCreate a release with an optional target date (YYYY-MM-DD). Names are unique (ASCII case ignored). Its status is derived from its tickets.
namestring*required
Required; unique among releases (ASCII case ignored).
target_atstring
Target date, `YYYY-MM-DD`.
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
kanban::release::delete
functionDelete a release no ticket references (soft-deleted tickets included).
idstring*required
Project or release id, or its name.
kanban::release::list
functionList releases by target date then name, each with its derived status (planned, active, released), live ticket counts, how many tickets were reopened after shipping, and a per-project breakdown.
releasesobject[]*required
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
kanban::release::reopen
functionClear a release's released date. Tickets moved out when it shipped do not come back.
idstring*required
Project or release id, or its name.
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
kanban::release::ship
functionMark a release as released. Live tickets that are not done must go somewhere: move_open_to is another unreleased release (id or name), or null to take them out of any release; it is required when there are such tickets. Returns the release and the tickets moved.
idstring*required
Release id or name.
move_open_tostring
Where the live tickets that are not done go: another release's id or name, or null to take them out of any release. Required when there are such tickets; the target must exist and not be released.
movedany of[]*required
The tickets that were not done and moved out of the release.
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
releaseobject*required
A deliverable that tickets are filed under. Its status is derived from the tickets; only `released_at` is stored.
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
kanban::release::update
functionRename a release or change its description or target date (null clears the date). The id accepts the release id or its name.
idstring*required
Release id or name.
target_atstring
Target date `YYYY-MM-DD`, or null to clear.
created_atstring*required
doneinteger· uint64*requiredmin 0
namestring*required
Unique among releases (trimmed, ASCII case ignored).
projectsobject[]*required
Per-project breakdown, biggest first; `project_id: null` is "no project".
doneinteger· uint64*requiredmin 0
project_idstring
`null` for tickets in no project.
totalinteger· uint64*requiredmin 0
reopenedinteger· uint64*requiredmin 0
Not-done live tickets of a released release (0 while it is not released).
source_labelstring
The label this release was converted from, if any.
statusall of*required
released: `released_at` is set. active: some live ticket is outside the first column. planned: otherwise.
all of (1)
variant 1
valuestringenum: planned, active, released
target_atstring
`YYYY-MM-DD`.
totalinteger· uint64*requiredmin 0
updated_atstring*required
kanban::ticket::create
functionCreate a ticket on the board and return it; pass compact to get back only its compact row (key, title, status, priority, assignee, comment_count). Optionally make it a subtask (parent), or file it under a project or release (id or name).
actorstring
Who is making the change. Defaults to `user`.
assigneestring
Agent profile id.
compactboolean
Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full ticket.
parentstring
Make the new ticket a subtask of this ticket (uuid or key). The parent must be live and not a subtask itself.
projectstring
Project id or name. An archived project refuses new tickets.
releasestring
Release id or name.
statusstring
Column id; defaults to the configured default_status.
titlestring*required
Required.
any of (2)
variant 1
activityobject[]
changesobject[]
… expand 3 nestedcollapse
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::ticket::delete
functionSoft-delete a ticket: it leaves the board but stays in the board file. Deleting a deleted ticket changes nothing.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
activityobject[]
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
kanban::ticket::get
functionRead one ticket with its comments and activity, its parent, its live subtasks and their progress. The id accepts the internal uuid or the human-readable key.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
activityobject[]
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
kanban::ticket::links
functionCross-references of one ticket: the tickets it mentions and the tickets that mention it, found by key (KAN-12) in titles, descriptions and comments. Rows are the same summaries kanban::ticket::list returns. The id accepts the internal uuid or the human-readable key.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
mentioned_byany of[]*required
Live tickets whose title, description or comments mention this ticket's key, by ticket number.
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
mentionsany of[]*required
Live tickets whose key appears in this ticket's title, description or comments, by ticket number.
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::ticket::list
functionList tickets, optionally narrowed to a column, an assignee, an updated_since timestamp, a parent (its subtasks), a project or a release (empty string = none); compact rows carry only key, title, status, priority, assignee and comment_count.
assigneestring
Agent profile id; empty string matches unassigned.
compactboolean
Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full summary.
limitinteger· uint64min 0
parent_idstring
Only the subtasks of this ticket (uuid or key); empty string = tickets that are not subtasks.
project_idstring
Only tickets in this project (id or name); empty string = tickets in no project.
release_idstring
Only tickets in this release (id or name); empty string = tickets in no release.
updated_sincestring
Only tickets updated after this ISO timestamp.
countinteger· uint64*requiredmin 0
ticketsany of[]*required
any of (2)
variant 1
comment_countinteger· uint64*requiredmin 0
created_atstring*required
orderinteger· uint64*requiredmin 0
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::ticket::move
functionMove a ticket to a column (and position inside it); used by the board drag and drop. Moving a ticket to where it already is changes nothing; a deleted ticket cannot be moved. Returns the ticket, or only its compact row with compact.
compactboolean
Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full ticket.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
indexinteger· uint64min 0
Zero-based position in the target column.
statusstring*required
Target column id.
any of (2)
variant 1
activityobject[]
changesobject[]
… expand 3 nestedcollapse
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::ticket::restore
functionPut a soft-deleted ticket back on the board. A subtask whose parent is deleted, gone or a subtask itself comes back detached (activity on both tickets, an event for each). Restoring a ticket that is not deleted changes nothing.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
activityobject[]
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
kanban::ticket::update
functionUpdate a ticket field (title, description, status, priority, assignee, labels, parent, project, release) and return the ticket (compact returns only its compact row). To change labels pass add_labels / remove_labels (they edit the current labels, so concurrent edits do not overwrite each other); labels replaces the whole set. parent makes the ticket a subtask (one level: the parent must be live and not a subtask, a ticket with subtasks cannot become one) and null detaches it; the activity is recorded on both tickets. project and release take an id or a name; null clears. A patch that changes nothing records and fires nothing.
add_labelsstring[]
Labels to add to the current ones; one already present (ASCII case ignored) is skipped. Applied after `labels` and `remove_labels`.
assigneestring
Agent profile id, or null to unassign.
compactboolean
Return the compact row (key, title, status, priority, assignee, comment_count) instead of the full ticket.
idstring*required
Ticket uuid or human-readable key (KAN-1, case-insensitive).
labelsstring[]
Replaces the whole label set. Prefer add_labels / remove_labels: they edit the labels the ticket has when the write runs, so concurrent label edits do not overwrite each other.
parentstring
Ticket uuid or key to make this ticket a subtask of, or null to detach it. One level only: the parent must be live and not a subtask, and a ticket with subtasks cannot become one.
projectstring
Project id or name, or null to clear. An archived project refuses new tickets.
releasestring
Release id or name, or null to clear.
remove_labelsstring[]
Labels to drop from the current ones (ASCII case ignored). Applied after `labels`, before `add_labels`.
any of (2)
variant 1
activityobject[]
changesobject[]
… expand 3 nestedcollapse
seqinteger· uint64*requiredmin 0
typestring*required
ticket.created | ticket.updated | ticket.moved | ticket.deleted | ticket.restored | comment.created
assigneestring
Agent profile id.
childrenobject[]*required
Live subtasks by ticket number.
commentsobject[]
authorstring*required
Agent profile id, or `user`.
created_atstring*required
parent_idstring
Set for a reply; replies stay one level deep.
created_atstring*required
deleted_atstring
Set when soft-deleted; the row stays on disk.
idstring*required
Internal uuid.
keystring*required
Human-readable id, e.g. KAN-1.
orderinteger· uint64min 0
Position inside its column.
parentany of
The parent, deleted or not; `null` for a ticket that is not a subtask.
parent_idstring
Uuid of the parent ticket. One level deep: a parent has no parent.
progressobject*required
Live children in the done column over live children that are not canceled.
doneinteger· uint64*requiredmin 0
totalinteger· uint64*requiredmin 0
project_idstring
Uuid of the project (several tickets, independent of the release).
release_idstring
Uuid of the release.
statusstring*required
Column id.
updated_atstring*required
variant 2
comment_countinteger· uint64*requiredmin 0
kanban::ui-content
functionServe the kanban worker's injected console UI assets (content function for its console:script / console:style / console:module triggers).
pathstring*required
The asset path from the trigger config (e.g. `state/page.js`).
contentstring*required
The asset source, verbatim.
content_typestring*required
MIME type the console should serve the asset with.