Basalt docs
GitHub

Outlines

Lithic’s outliner documents (ADR-0018): a structure block like a page, with its node tree inside its own document rather than in the page tree.

6 operations. Every path is relative to the instance origin; every response body is JSON unless stated. See API for authentication, errors and pagination.

GET /api/v1/workspaces/{workspaceId}/outlines

List the outlines of a collection (flat, newest first). Requires read on the collection.

listOutlines · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required

Query parameters

  • collectionId · string (uuid) — required

Response 200application/json

  • items · object[] — required
    • id · string (uuid) — required
    • workspaceId · string (uuid) — required
    • collectionId · string (uuid) — required
    • title · string — required
    • icon · string | null — required
    • createdAt · string (date-time) — required
    • updatedAt · string (date-time) — required
    • deletedAt · string (date-time) | null — required

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required

POST /api/v1/workspaces/{workspaceId}/outlines

Create an outline at the collection root. Requires edit on the collection; the body doc is created lazily on first collab connect.

createOutline · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required

Request bodyapplication/json, required

  • collectionId · string (uuid) — required
  • title · string — required, length 1–500
  • icon · string — length 0–2048

Response 200application/json

  • id · string (uuid) — required
  • workspaceId · string (uuid) — required
  • collectionId · string (uuid) — required
  • title · string — required
  • icon · string | null — required
  • createdAt · string (date-time) — required
  • updatedAt · string (date-time) — required
  • deletedAt · string (date-time) | null — required

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required

GET /api/v1/workspaces/{workspaceId}/outlines/{outlineId}

Fetch one outline (structure plane only). Requires read.

getOutline · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required
  • outlineId · string (uuid) — required

Response 200application/json

  • id · string (uuid) — required
  • workspaceId · string (uuid) — required
  • collectionId · string (uuid) — required
  • title · string — required
  • icon · string | null — required
  • createdAt · string (date-time) — required
  • updatedAt · string (date-time) — required
  • deletedAt · string (date-time) | null — required

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required

PATCH /api/v1/workspaces/{workspaceId}/outlines/{outlineId}

Rename an outline or change its icon. Requires edit.

updateOutline · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required
  • outlineId · string (uuid) — required

Request bodyapplication/json, required

  • title · string — length 1–500
  • icon · string | null

Response 200application/json

  • id · string (uuid) — required
  • workspaceId · string (uuid) — required
  • collectionId · string (uuid) — required
  • title · string — required
  • icon · string | null — required
  • createdAt · string (date-time) — required
  • updatedAt · string (date-time) — required
  • deletedAt · string (date-time) | null — required

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required

DELETE /api/v1/workspaces/{workspaceId}/outlines/{outlineId}

Move an outline to the trash (soft delete). Requires full.

trashOutline · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required
  • outlineId · string (uuid) — required

Response 200application/json

  • ok · true — required

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required

GET /api/v1/workspaces/{workspaceId}/outlines/{outlineId}/markdown

Fetch the outline's node tree as canonical outline Markdown (text/markdown with a strong ETag over the canonical bytes; ADR-0018, mirroring the ADR-0012 page surface). Requires read.

getOutlineMarkdown · token scope: session only

Path parameters

  • workspaceId · string (uuid) — required
  • outlineId · string (uuid) — required

Response 200application/json

  • string

Response defaultapplication/json

  • error · object — required
    • code · "bad_request" | "validation_failed" | "unauthorized" | "forbidden" | "not_found" | "conflict" | "rate_limited" | "internal" — required
    • message · string — required