Documentation menu

API reference

10 operations in taxonomy. Raw spec: openapi.json.

GET/api/v1/taxonomy/categories

GET /api/taxonomy/categories — the two-level category tree, flat and ordered (roots and subcategories interleaved by sort order; `parent_id` reconstructs the tree).

Parameters

NameInTypeRequiredDescription
include_retiredquerybooleanNoInclude retired nodes (admin editors + the manifest want them; pickers default to false).

Responses

StatusDescription
200

Security: bearer

POST/api/v1/taxonomy/categories

POST /api/taxonomy/categories — create a root category, or a subcategory when `parent_id` names a root of this org.

Request body

CreateTaxonomyNodeRequest

Responses

StatusDescription
200
404parent category not found
409duplicate sibling name or idempotency key reused

Security: bearer

PATCH/api/v1/taxonomy/categories/{id}

PATCH /api/taxonomy/categories/{id} — rename / edit description / re-sort (root or subcategory).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

UpdateTaxonomyNodeRequest

Responses

StatusDescription
200
404node not visible in scope (rls_sparse)
409duplicate sibling name, version conflict, or idempotency key reused

Security: bearer

POST/api/v1/taxonomy/categories/{id}/reparent

POST /api/taxonomy/categories/{id}/reparent — move a SUBCATEGORY under a different root. Roots cannot be reparented (that would grow a third level or orphan children).

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

ReparentCategoryRequest

Responses

StatusDescription
200
404node or new parent not visible in scope (rls_sparse)
409version conflict or idempotency key reused

Security: bearer

POST/api/v1/taxonomy/categories/{id}/retire

POST /api/taxonomy/categories/{id}/retire — soft-retire a root or subcategory. Idempotent like the type surface.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

RetireTaxonomyNodeRequest

Responses

StatusDescription
200
404node not visible in scope (rls_sparse)
409version conflict or idempotency key reused

Security: bearer

GET/api/v1/taxonomy/types

GET /api/taxonomy/types — the org's ticket types; active-only unless `include_retired`.

Parameters

NameInTypeRequiredDescription
include_retiredquerybooleanNoInclude retired nodes (admin editors + the manifest want them; pickers default to false).

Responses

StatusDescription
200

Security: bearer

POST/api/v1/taxonomy/types

POST /api/taxonomy/types — create a ticket type.

Request body

CreateTaxonomyNodeRequest

Responses

StatusDescription
200
409duplicate name or idempotency key reused

Security: bearer

PATCH/api/v1/taxonomy/types/{id}

PATCH /api/taxonomy/types/{id} — rename / edit description / re-sort. Behavior-neutral: nothing keys off these trees.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

UpdateTaxonomyNodeRequest

Responses

StatusDescription
200
404node not visible in scope (rls_sparse)
409duplicate name, version conflict, or idempotency key reused

Security: bearer

POST/api/v1/taxonomy/types/{id}/retire

POST /api/taxonomy/types/{id}/retire — soft-retire: pickers hide the node, existing tickets keep their reference. Idempotent: retiring an already-retired node returns its current state.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

RetireTaxonomyNodeRequest

Responses

StatusDescription
200
404node not visible in scope (rls_sparse)
409version conflict or idempotency key reused

Security: bearer

POST/api/v1/tickets/{id}/move-board

POST /api/tickets/{id}/move-board — move a ticket to another board with the status remapped through the SEMANTIC categories (typed 409 listing the target statuses when the current category has no counterpart). SLA state is preserved by default; `reset_sla` re-initializes the clocks. Audited, emits `ticket.board_moved`, all in one transaction. Instant- first (IF1/IF2): idempotency-keyed, version-gated, read-your-write.

Parameters

NameInTypeRequiredDescription
idpathstringYes

Request body

MoveBoardRequest

Responses

StatusDescription
200
404ticket or target board not visible in scope (rls_sparse)
409no matching semantic status on the target board, version conflict, or idempotency key reused
422validation error

Security: bearer