The Versus Knowledge Base / Wiki — spaces, pages, content, and collaboration. Auto-generated from the platform OpenAPI schema so it matches the running API.
REST API for this feature — 249 operations across 175 resource paths, auto-generated from the platform's live OpenAPI schema (drf-spectacular).
Base URL
https://<your-versus-host>/api· AuthAuthorization: Bearer <JWT>(fromPOST /api/auth/token/) · 📄 Download the OpenAPI spec for Postman/Insomnia/Swagger · see the API overview for pagination, filtering, and errors.
GET /api/kb/agents/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbAgentList
POST /api/kb/agents/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
Request body (application/json): KbAgentRequest
Responses: 201 → KbAgent
GET /api/kb/agents/{key}/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200 → KbAgent
PUT /api/kb/agents/{key}/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
PATCH /api/kb/agents/{key}/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): PatchedKbAgentRequest
Responses: 200 → KbAgent
DELETE /api/kb/agents/{key}/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 204
POST /api/kb/agents/{key}/act/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
GET /api/kb/agents/{key}/actions/GET the agent's enabled actions, or POST to REPLACE them with a list of
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/actions/GET the agent's enabled actions, or POST to REPLACE them with a list of
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/ask/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
GET /api/kb/agents/{key}/asks/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/asks/{ask_id}/feedback/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ask_id | path | yes | string | |
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/chat/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/preview/CRUD + operations for Wiki Agents. Looked up by key (unique per tenant)
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
GET /api/kb/agents/{key}/scope/GET the agent's scope rows, or POST to REPLACE them with a list of
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200 → KbAgent
POST /api/kb/agents/{key}/scope/GET the agent's scope rows, or POST to REPLACE them with a list of
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Request body (application/json): KbAgentRequest
Responses: 200 → KbAgent
POST /api/kb/assist/augment/POST /api/kb/assist/augment/ — page-aware AI authoring. Grounds on the CURRENT
Responses: 200
POST /api/kb/assist/compose/POST /api/kb/assist/compose — generate a whole page from a prompt
Responses: 200
GET /api/kb/assist/ops/GET /api/kb/assist/ops — the reshape op catalog (server-driven menu).
Responses: 200
POST /api/kb/assist/reshape/POST /api/kb/assist/reshape — transform a selection of blocks; returns
Responses: 200
GET /api/kb/assist/stream/{request_id}/GET /api/kb/assist/stream/<request_id> — SSE stream for an in-flight
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
request_id | path | yes | string |
Responses: 200
POST /api/kb/assist/{request_id}/apply/POST /api/kb/assist/<request_id>/apply — record that the client accepted &
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
request_id | path | yes | string |
Responses: 200
POST /api/kb/assist/{request_id}/discard/POST /api/kb/assist/<request_id>/discard — user rejected the suggestion.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
request_id | path | yes | string |
Responses: 200
POST /api/kb/assist/{request_id}/feedback/POST /api/kb/assist/<request_id>/feedback — {rating, reason} (P2).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
request_id | path | yes | string |
Responses: 200
GET /api/kb/attachments/{attach_id}/GET /api/kb/attachments/uuid:attach_id/ — proxy-stream the current bytes
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 200
DELETE /api/kb/attachments/{attach_id}/GET /api/kb/attachments/uuid:attach_id/ — proxy-stream the current bytes
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 204
GET /api/kb/attachments/{attach_id}/preview/GET /api/kb/attachments/uuid:attach_id/thumb/ | /preview/ — lazily
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 200
POST /api/kb/attachments/{attach_id}/restore/POST /api/kb/attachments/uuid:attach_id/restore/ {number} — promote an old
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 200
GET /api/kb/attachments/{attach_id}/thumb/GET /api/kb/attachments/uuid:attach_id/thumb/ | /preview/ — lazily
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 200
GET /api/kb/attachments/{attach_id}/versions/GET /api/kb/attachments/uuid:attach_id/versions/ — list versions (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string |
Responses: 200
GET /api/kb/attachments/{attach_id}/versions/{number}/GET /api/kb/attachments/uuid:attach_id/versions/int:number/ — download
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
attach_id | path | yes | string | |
number | path | yes | integer |
Responses: 200
GET /api/kb/clips/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbClipList
POST /api/kb/clips/POST /api/kb/clips/ — create a clip + open its resumable upload session
Responses: 201 → KbClip
POST /api/kb/clips/from-session/{session_id}/POST /api/kb/clips/from-session/<session_id>/ — NEW seam: PSM RDP/HTTPS
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
session_id | path | yes | string |
Responses: 200 → KbClip
GET /api/kb/clips/{clip_id}/captionsGET /api/kb/clips/uuid:clip_id/captions — the transcript as text/vtt (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
clip_id | path | yes | string |
Responses: 200
GET /api/kb/clips/{clip_id}/posterGET /api/kb/clips/uuid:clip_id/poster — the poster JPEG (DB blob).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
clip_id | path | yes | string |
Responses: 200
GET /api/kb/clips/{clip_id}/streamGET /api/kb/clips/uuid:clip_id/stream — range-aware byte serving (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
clip_id | path | yes | string |
Responses: 200
GET /api/kb/clips/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
PUT /api/kb/clips/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
PATCH /api/kb/clips/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
DELETE /api/kb/clips/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 204
POST /api/kb/clips/{id}/abort/POST /api/kb/clips/<id>/abort/ — abort multipart, mark failed (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
POST /api/kb/clips/{id}/complete/POST /api/kb/clips/<id>/complete/ — finalise + flip to ready (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
PUT /api/kb/clips/{id}/part/PUT /api/kb/clips/<id>/part/?n=<k> — upload chunk k (raw body). Idempotent
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
POST /api/kb/clips/{id}/poster/POST /api/kb/clips/<id>/poster/ — store the client-captured JPEG poster
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
POST /api/kb/clips/{id}/transcribe/POST /api/kb/clips/<id>/transcribe/ — kick the optional AI transcript
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb clip. |
Responses: 200 → KbClip
GET /api/kb/comments/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbPageCommentList
POST /api/kb/comments/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbPageCommentRequest
Responses: 201 → KbPageComment
GET /api/kb/comments/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Responses: 200 → KbPageComment
PUT /api/kb/comments/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): KbPageCommentRequest
Responses: 200 → KbPageComment
PATCH /api/kb/comments/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): PatchedKbPageCommentRequest
Responses: 200 → KbPageComment
DELETE /api/kb/comments/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Responses: 204
GET /api/kb/datasets/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbDatasetList
POST /api/kb/datasets/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbDatasetRequest
Responses: 201 → KbDataset
GET /api/kb/datasets/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDatasetDetail
PUT /api/kb/datasets/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
PATCH /api/kb/datasets/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): PatchedKbDatasetRequest
Responses: 200 → KbDataset
DELETE /api/kb/datasets/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 204
GET /api/kb/datasets/{id}/export/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDataset
GET /api/kb/datasets/{id}/fields/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/fields/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/fields/reorder/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
PATCH /api/kb/datasets/{id}/fields/{field_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
field_id | path | yes | string | |
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): PatchedKbDatasetRequest
Responses: 200 → KbDataset
DELETE /api/kb/datasets/{id}/fields/{field_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
field_id | path | yes | string | |
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 204
POST /api/kb/datasets/{id}/fields/{field_id}/retype/Change a field's type and run a best-effort cell coercion pass (§4.4/§5#13).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
field_id | path | yes | string | |
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/import/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
GET /api/kb/datasets/{id}/resolve/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDataset
GET /api/kb/datasets/{id}/rows/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/rows/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/rows/bulk/Batch upsert (import/paste). Items: {id?, cells, row_order?} —
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
PATCH /api/kb/datasets/{id}/rows/{row_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
row_id | path | yes | string |
Request body (application/json): PatchedKbDatasetRequest
Responses: 200 → KbDataset
DELETE /api/kb/datasets/{id}/rows/{row_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
row_id | path | yes | string |
Responses: 204
POST /api/kb/datasets/{id}/subscribe/Toggle a subscription to this dataset (spec §6.1) — reuses the KbWatch
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
GET /api/kb/datasets/{id}/views/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Responses: 200 → KbDataset
POST /api/kb/datasets/{id}/views/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
PATCH /api/kb/datasets/{id}/views/{view_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
view_id | path | yes | string |
Request body (application/json): PatchedKbDatasetRequest
Responses: 200 → KbDataset
DELETE /api/kb/datasets/{id}/views/{view_id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
view_id | path | yes | string |
Responses: 204
POST /api/kb/datasets/{id}/views/{view_id}/duplicate/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb dataset. |
view_id | path | yes | string |
Request body (application/json): KbDatasetRequest
Responses: 200 → KbDataset
GET /api/kb/diagram-sources/GET /api/kb/diagram-sources/?type=&q= — list selectable objects for the
Responses: 200
GET /api/kb/events/kb/events/<id>/ — PATCH/DELETE a native event; override a single
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedTimelineEventList
POST /api/kb/events/kb/events/<id>/ — PATCH/DELETE a native event; override a single
Request body (application/json): TimelineEventRequest
Responses: 201 → TimelineEvent
GET /api/kb/events/{id}/kb/events/<id>/ — PATCH/DELETE a native event; override a single
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Responses: 200 → TimelineEvent
PUT /api/kb/events/{id}/Optimistic concurrency (spec §7/§9): a stale base_updated_at returns 409
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Request body (application/json): TimelineEventRequest
Responses: 200 → TimelineEvent
PATCH /api/kb/events/{id}/kb/events/<id>/ — PATCH/DELETE a native event; override a single
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Request body (application/json): PatchedTimelineEventRequest
Responses: 200 → TimelineEvent
DELETE /api/kb/events/{id}/kb/events/<id>/ — PATCH/DELETE a native event; override a single
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Responses: 204
POST /api/kb/events/{id}/override/Create/patch/cancel a single recurrence occurrence (spec §7,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Request body (application/json): TimelineEventRequest
Responses: 200 → TimelineEvent
PATCH /api/kb/events/{id}/override/Create/patch/cancel a single recurrence occurrence (spec §7,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Request body (application/json): PatchedTimelineEventRequest
Responses: 200 → TimelineEvent
DELETE /api/kb/events/{id}/override/Create/patch/cancel a single recurrence occurrence (spec §7,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline event. |
Responses: 204
GET /api/kb/find/GET /api/kb/find/ — ranked, faceted, snippeted search (spec §7).
Responses: 200
POST /api/kb/find/reindex/POST /api/kb/find/reindex/ — rebuild the index for a space or the tenant
Responses: 200
GET /api/kb/find/suggest/GET /api/kb/find/suggest/ — type-ahead titles, ≤8 rows (spec §3 #9).
Responses: 200
GET /api/kb/inline-comments//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbInlineCommentList
POST /api/kb/inline-comments/Create a comment. When an anchor object is supplied on a root
Request body (application/json): KbInlineCommentRequest
Responses: 201 → KbInlineComment
POST /api/kb/inline-comments/reanchor/Re-anchor every open root inline thread on a page against its CURRENT
Request body (application/json): KbInlineCommentRequest
Responses: 200 → KbInlineComment
GET /api/kb/inline-comments/{id}//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Responses: 200 → KbInlineComment
PUT /api/kb/inline-comments/{id}//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): KbInlineCommentRequest
Responses: 200 → KbInlineComment
PATCH /api/kb/inline-comments/{id}//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): PatchedKbInlineCommentRequest
Responses: 200 → KbInlineComment
DELETE /api/kb/inline-comments/{id}//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Responses: 204
POST /api/kb/inline-comments/{id}/convert_to_issue/Promote an inline thread to a Desk Issue (§6). Body ``{project,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): KbInlineCommentRequest
Responses: 200 → KbInlineComment
POST /api/kb/inline-comments/{id}/reopen//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): KbInlineCommentRequest
Responses: 200 → KbInlineComment
POST /api/kb/inline-comments/{id}/resolve//api/kb/inline-comments/ — create an anchored comment from a selection,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page comment. |
Request body (application/json): KbInlineCommentRequest
Responses: 200 → KbInlineComment
GET /api/kb/insights/overview/GET /api/kb/insights/overview/ — tenant-wide rollup across spaces (admin)
Responses: 200
POST /api/kb/insights/rollup/POST /api/kb/insights/rollup/ — run the analytics rollup + popularity
Responses: 200
GET /api/kb/labels/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbLabelList
POST /api/kb/labels/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbLabelRequest
Responses: 201 → KbLabel
POST /api/kb/labels/merge/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbLabelRequest
Responses: 200 → KbLabel
GET /api/kb/labels/popular/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Responses: 200 → KbLabel
GET /api/kb/labels/{slug}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Responses: 200 → KbLabel
PATCH /api/kb/labels/{slug}/PATCH label metadata (description / color / kind / target_ref). Admin
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Request body (application/json): PatchedKbLabelRequest
Responses: 200 → KbLabel
DELETE /api/kb/labels/{slug}/DELETE a label — strips it from every page that carries it, then removes
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Responses: 204
GET /api/kb/labels/{slug}/issues/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Responses: 200 → KbLabel
GET /api/kb/labels/{slug}/pages/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Responses: 200 → KbLabel
GET /api/kb/labels/{slug}/related/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Responses: 200 → KbLabel
POST /api/kb/labels/{slug}/rename/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
slug | path | yes | string |
Request body (application/json): KbLabelRequest
Responses: 200 → KbLabel
GET /api/kb/oncall/rotations/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedOncallRotationList
POST /api/kb/oncall/rotations/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): OncallRotationRequest
Responses: 201 → OncallRotation
GET /api/kb/oncall/rotations/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this oncall rotation. |
Responses: 200 → OncallRotation
PUT /api/kb/oncall/rotations/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this oncall rotation. |
Request body (application/json): OncallRotationRequest
Responses: 200 → OncallRotation
PATCH /api/kb/oncall/rotations/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this oncall rotation. |
Request body (application/json): PatchedOncallRotationRequest
Responses: 200 → OncallRotation
DELETE /api/kb/oncall/rotations/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this oncall rotation. |
Responses: 204
GET /api/kb/oncall/rotations/{id}/whois/Current (or ?at=) on-call member for this rotation (spec §6).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this oncall rotation. |
Responses: 200 → OncallRotation
GET /api/kb/pages/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbPageList
POST /api/kb/pages/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbPageRequest
Responses: 201 → KbPage
GET /api/kb/pages/for_issue/Pages linking a given issue key — powers the issue's 'referenced in' panel.
Responses: 200 → KbPage
GET /api/kb/pages/search/Full-text-ish search over title + rendered body (P1). Optional
Responses: 200 → KbPage
GET /api/kb/pages/templates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Responses: 200 → KbPage
GET /api/kb/pages/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
PUT /api/kb/pages/{id}/Save a new version. Optimistic concurrency (§8): a stale base_version
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
PATCH /api/kb/pages/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): PatchedKbPageRequest
Responses: 200 → KbPage
DELETE /api/kb/pages/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 204
GET /api/kb/pages/{id}/attachments/GET the page's attachments (metadata + download url), or POST a file
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
POST /api/kb/pages/{id}/attachments/GET the page's attachments (metadata + download url), or POST a file
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/pages/{id}/backlinks/Pages that link TO this page (VS-SPEC-WIKI-BACKLINKS) — powers the
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
GET /api/kb/pages/{id}/diff/Line-level diff between two versions (VS-SPEC-WIKI-VERSION-DIFF).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
PUT /api/kb/pages/{id}/draft/Autosave (PUT) or discard (DELETE) the page's unpublished working copy.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
DELETE /api/kb/pages/{id}/draft/Autosave (PUT) or discard (DELETE) the page's unpublished working copy.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 204
GET /api/kb/pages/{id}/export/Export the page as Markdown or HTML (§7/§15). ?format=md|html.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
POST /api/kb/pages/{id}/link_issue/Link a Desk issue to this page (validated); idempotent.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{id}/move/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{id}/publish/Promote the working copy (the posted body, else the stored draft) to a
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{id}/restore/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/pages/{id}/restrictions/GET the page's restrictions, or POST to replace them:
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
POST /api/kb/pages/{id}/restrictions/GET the page's restrictions, or POST to replace them:
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{id}/run_runbook/Launch the page's runbook WorkflowDefinition (a documented runbook
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{id}/set_labels/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/pages/{id}/stats/GET /api/kb/pages/<id>/stats/ — the page's rollup (spec §7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
POST /api/kb/pages/{id}/unlink_issue/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/pages/{id}/versions/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Responses: 200 → KbPage
GET /api/kb/pages/{id}/versions/{number}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
number | path | yes | string |
Responses: 200 → KbPage
POST /api/kb/pages/{id}/view/POST /api/kb/pages/<id>/view/ — record a view (deduped per user/session/
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
POST /api/kb/pages/{id}/watch/Toggle watching this page (§3 #14) — watchers are notified on comments.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb page. |
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pages/{page_id}/ai-diagram/POST /api/kb/pages/uuid:page_id/ai-diagram/ {prompt} — turn a natural-
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/annotations/GET /api/kb/pages/<id>/annotations/ → the active anchor set for the
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
PUT /api/kb/pages/{page_id}/canvas-draft/PUT /api/kb/pages/uuid:page_id/canvas-draft/ — element-delta autosave (§7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/canvas.pngGET /api/kb/pages/uuid:page_id/canvas.png (?fmt=pdf) — rasterised export (§7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/canvas.svgGET /api/kb/pages/uuid:page_id/canvas.svg — inert server-rendered SVG (§7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/deck/GET /api/kb/pages/<id>/deck/ → normalized deck payload (spec §7):
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/deck/GET /api/kb/pages/<id>/deck/ → normalized deck payload (spec §7):
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/deck/export/GET /api/kb/pages/<id>/deck/export/?fmt=html|pdf|png[¬es=1][&persist=1]
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/deck/insert-diagram/POST /api/kb/pages/uuid:page_id/deck/insert-diagram/
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/deck/slides/reorder/POST /api/kb/pages/<id>/deck/slides/reorder/ — body {order:[id,…]}.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/import-drawio/POST /api/kb/pages/uuid:page_id/import-drawio/ {xml} — parse a draw.io /
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/live-card/GET /api/kb/pages/uuid:page_id/live-card/?kind=&id= — resolve one Live Card
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/ai-suggest/POST /api/kb/pages/<id>/live/ai-suggest/ — OPTIONAL: return an AI co-
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/flush/POST /api/kb/pages/<id>/live/flush/ — flush the converged CRDT into the
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/live/journal/GET /api/kb/pages/<id>/live/journal/?since=<seq>&verify=1 — the ordered,
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/live/ops/GET live/ops/?since=<seq> replay; POST live/ops/ submit a batch.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/ops/GET live/ops/?since=<seq> replay; POST live/ops/ submit a batch.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/presence/POST /api/kb/pages/<id>/live/presence/ — cursor/selection heartbeat
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/publish/POST /api/kb/pages/<id>/live/publish/ — flatten the CRDT and promote it
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/live/session/GET /api/kb/pages/<id>/live/session/?from_issue=<KEY>&site=<id> — join.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/session/GET /api/kb/pages/<id>/live/session/?from_issue=<KEY>&site=<id> — join.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/live/snapshot/POST /api/kb/pages/<id>/live/snapshot/ — force compaction (§7). Also run
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/live/stream/GET /api/kb/pages/<id>/live/stream/?since=<seq>&site=<id> — a bounded
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/presence/GET (roster) / PUT (heartbeat) /api/kb/pages/uuid:page_id/presence/ (§7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
PUT /api/kb/pages/{page_id}/presence/GET (roster) / PUT (heartbeat) /api/kb/pages/uuid:page_id/presence/ (§7).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/present/GET /api/kb/pages/<id>/present/ — the full-screen player bundle (spec
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/promote-stickies/POST /api/kb/pages/uuid:page_id/promote-stickies/ {node_ids,[project]} —
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pages/{page_id}/render/GET /api/kb/pages/<id>/render/?highlights=1 → rendered_html produced
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/seed-object/POST /api/kb/pages/uuid:page_id/seed-object/ {source_type, source_id} —
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/seed-topology/POST /api/kb/pages/uuid:page_id/seed-topology/ {ticket_number} — returns
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
POST /api/kb/pages/{page_id}/uploads/POST /api/kb/pages/uuid:page_id/uploads/ — init a resumable session.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
page_id | path | yes | string |
Responses: 200
GET /api/kb/pagetree/audit/GET kb/pagetree/audit/?space=<uuid|key> — the queryable structural
Responses: 200 → KbPage
POST /api/kb/pagetree/bulk_labels/POST kb/pagetree/bulk_labels/ — {ids, labels: [...], mode: add|replace|remove}.
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pagetree/bulk_move/POST kb/pagetree/bulk_move/ — {ids, parent|null, position?, space?}.
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pagetree/bulk_restrict/POST kb/pagetree/bulk_restrict/ — {ids, mode: view|edit, role_slug?,
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pagetree/bulk_status/POST kb/pagetree/bulk_status/ — {ids, status: archived|current,
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pagetree/move/POST kb/pagetree/move/ — transactional single-node move (§5). Body:
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
POST /api/kb/pagetree/move_undo/POST kb/pagetree/move_undo/ — {audit_id}. Replays a KbTreeAudit.before
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/pagetree/tree/GET kb/pagetree/tree/?space=<uuid|key> — the extended node payload
Responses: 200 → KbPage
GET /api/kb/pagetree/tree_pref/GET/PUT kb/pagetree/tree_pref/?space=<uuid> — the caller's per-space
Responses: 200 → KbPage
PUT /api/kb/pagetree/tree_pref/GET/PUT kb/pagetree/tree_pref/?space=<uuid> — the caller's per-space
Request body (application/json): KbPageRequest
Responses: 200 → KbPage
GET /api/kb/reactions/GET ?target_type=&target_id= → the target's reaction aggregate.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbReactionList
POST /api/kb/reactions/toggle/POST {target_type, target_id, emoji} → create-or-remove the caller's
Request body (application/json): KbReactionRequest
Responses: 200 → KbReaction
GET /api/kb/smartlinks/domain-rules/CRUD the tenant's external allow/deny list (spec §7). Reads for any
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedSmartLinkDomainRuleList
POST /api/kb/smartlinks/domain-rules/CRUD the tenant's external allow/deny list (spec §7). Reads for any
Request body (application/json): SmartLinkDomainRuleRequest
Responses: 201 → SmartLinkDomainRule
GET /api/kb/smartlinks/domain-rules/{id}/CRUD the tenant's external allow/deny list (spec §7). Reads for any
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this smart link domain rule. |
Responses: 200 → SmartLinkDomainRule
PUT /api/kb/smartlinks/domain-rules/{id}/CRUD the tenant's external allow/deny list (spec §7). Reads for any
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this smart link domain rule. |
Request body (application/json): SmartLinkDomainRuleRequest
Responses: 200 → SmartLinkDomainRule
PATCH /api/kb/smartlinks/domain-rules/{id}/CRUD the tenant's external allow/deny list (spec §7). Reads for any
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this smart link domain rule. |
Request body (application/json): PatchedSmartLinkDomainRuleRequest
Responses: 200 → SmartLinkDomainRule
DELETE /api/kb/smartlinks/domain-rules/{id}/CRUD the tenant's external allow/deny list (spec §7). Reads for any
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this smart link domain rule. |
Responses: 204
GET /api/kb/smartlinks/preview/GET /api/kb/smartlinks/preview/?target= — metadata-only, no cache write.
Responses: 200
GET /api/kb/smartlinks/providers/GET /api/kb/smartlinks/providers/ — registered providers for the insert menu.
Responses: 200
POST /api/kb/smartlinks/refresh/POST /api/kb/smartlinks/refresh/ — force-revalidate one resolution.
Responses: 200
POST /api/kb/smartlinks/resolve/POST /api/kb/smartlinks/resolve/ — cache-first resolve (paste path).
Responses: 200
GET /api/kb/spaces/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbSpaceList
POST /api/kb/spaces/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbSpaceRequest
Responses: 201 → KbSpace
GET /api/kb/spaces/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb space. |
Responses: 200 → KbSpace
PUT /api/kb/spaces/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb space. |
Request body (application/json): KbSpaceRequest
Responses: 200 → KbSpace
PATCH /api/kb/spaces/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb space. |
Request body (application/json): PatchedKbSpaceRequest
Responses: 200 → KbSpace
DELETE /api/kb/spaces/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb space. |
Responses: 204
GET /api/kb/spaces/{id}/tree/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb space. |
Responses: 200 → KbSpace
GET /api/kb/spaces/{key}/activity/GET /api/kb/spaces/<key>/activity/?limit= — merged recent-activity feed
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200
GET /api/kb/spaces/{key}/insights/GET /api/kb/spaces/<key>/insights/?window=7d|30d|90d — dashboard payload
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
key | path | yes | string |
Responses: 200
GET /api/kb/spaces/{space_id}/access/Read (GET) or set (PATCH) a space's access settings (spec §7). Switching
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
PATCH /api/kb/spaces/{space_id}/access/Read (GET) or set (PATCH) a space's access settings (spec §7). Switching
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
GET /api/kb/spaces/{space_id}/members/List (GET) or add/replace (POST) grants on a space. space_admin gated.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
POST /api/kb/spaces/{space_id}/members/List (GET) or add/replace (POST) grants on a space. space_admin gated.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
DELETE /api/kb/spaces/{space_id}/members/{member_id}/Revoke a single grant (DELETE). space_admin gated.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
member_id | path | yes | string | |
space_id | path | yes | string |
Responses: 204
GET /api/kb/spaces/{space_id}/perm-audit/Paginated audit feed for a space (spec §7/§8). space_admin gated.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
GET /api/kb/spaces/{space_id}/permissions/Effective-permission preview for the settings UI (spec §7):
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
space_id | path | yes | string |
Responses: 200
GET /api/kb/stencils/GET /api/kb/stencils/ — the vendor stencil library (label / brand colour /
Responses: 200
GET /api/kb/templates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedKbTemplateList
POST /api/kb/templates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): KbTemplateRequest
Responses: 201 → KbTemplate
GET /api/kb/templates/field_types/Template-variable type → App Builder FormField field type, so the
Responses: 200 → KbTemplate
POST /api/kb/templates/from_page/Clone a page's current body into a new template, auto-extracting
Request body (application/json): KbTemplateRequest
Responses: 200 → KbTemplate
GET /api/kb/templates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Responses: 200 → KbTemplate
PUT /api/kb/templates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Request body (application/json): KbTemplateRequest
Responses: 200 → KbTemplate
PATCH /api/kb/templates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Request body (application/json): PatchedKbTemplateRequest
Responses: 200 → KbTemplate
DELETE /api/kb/templates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Responses: 204
POST /api/kb/templates/{id}/instantiate/Substitute variables + create a page (or a scaffold tree). Body:
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Request body (application/json): KbTemplateRequest
Responses: 200 → KbTemplate
GET /api/kb/templates/{id}/preview/Server-rendered read-only preview of the body with defaults/dynamic
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this kb template. |
Responses: 200 → KbTemplate
GET /api/kb/timelines/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedTimelineList
POST /api/kb/timelines/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): TimelineRequest
Responses: 201 → Timeline
GET /api/kb/timelines/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 200 → Timeline
PUT /api/kb/timelines/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): TimelineRequest
Responses: 200 → Timeline
PATCH /api/kb/timelines/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): PatchedTimelineRequest
Responses: 200 → Timeline
DELETE /api/kb/timelines/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 204
GET /api/kb/timelines/{id}/events/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 200 → Timeline
POST /api/kb/timelines/{id}/events/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): TimelineRequest
Responses: 200 → Timeline
GET /api/kb/timelines/{id}/export.ics/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 200 → Timeline
GET /api/kb/timelines/{id}/feed-url/Return the caller's tokenized read-only feed URL (authenticated;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 200 → Timeline
GET /api/kb/timelines/{id}/feed.icsUnauthenticated but token-signed, READ-ONLY ICS feed for external calendar
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
POST /api/kb/timelines/{id}/import/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): TimelineRequest
Responses: 200 → Timeline
POST /api/kb/timelines/{id}/rotate-feed-token/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): TimelineRequest
Responses: 200 → Timeline
POST /api/kb/timelines/{id}/subscribe/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Request body (application/json): TimelineRequest
Responses: 200 → Timeline
DELETE /api/kb/timelines/{id}/subscribe/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this timeline. |
Responses: 204
DELETE /api/kb/uploads/{session_id}/DELETE /api/kb/uploads/uuid:session_id/ — abort + GC staging.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
session_id | path | yes | string |
Responses: 204
PUT /api/kb/uploads/{session_id}/chunk/{index}/PUT /api/kb/uploads/uuid:session_id/chunk/int:index/ — upload chunk N.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
index | path | yes | integer | |
session_id | path | yes | string |
Responses: 200
POST /api/kb/uploads/{session_id}/complete/POST /api/kb/uploads/uuid:session_id/complete/ — assemble + publish.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
session_id | path | yes | string |
Responses: 200
Auto-generated from drf-spectacular OpenAPI. Endpoint descriptions come from viewset docstrings/serializers; enriching those improves this page on the next generation.