Wiki
Concepts

Pages

The document model — hierarchy, lifecycle, slugs, links, and revisions.

A page is a document inside a space. Pages are the core unit of content in Wiki.

Hierarchy

Pages form a tree: any page can have children, nested to any depth. Ordering within a level uses fractional (LexoRank) keys, so inserting or moving a page only touches that page's key — its siblings never need renumbering.

Moving a page (pages.move) re-parents it and recomputes a single order key.

Lifecycle

Every page has a status:

draft  →  published  →  archived
  • draft — a work in progress. Drafts are stored separately from the published content, so you can edit without affecting what readers see.
  • published — the live version.
  • archived — retired but not deleted; can be restored.

Status is not an access control. A draft is not "private" — visibility governs who can see a page. Use a page's visibility for access, not its status.

Slugs

Each page has a slug, unique within its space and de-duplicated automatically — creating two pages titled "Runbook" yields distinct slugs rather than a collision.

Drafts and revisions

Pages keep a draft alongside the published content and a history of revisions. The API exposes:

  • pages.getDraft / pages.saveDraft / pages.deleteDraft
  • pages.listRevisions and pages.restoreRevision — roll a page back to an earlier version.

Page content can link to other pages with internal /pages/<id> links. These links are tracked, so each page knows what points at it — its backlinks. The relationship stays consistent because rich-text content, the extracted search text, and internal links are all derived from the same page document.

Alongside the body, a page keeps a curated list of external links — the specs, tickets and vendor docs that belong next to an article without living inside it. They are metadata: editable without touching the document, visible while the page is still a draft, and unaffected by a body rewrite. Editors add, edit, reorder and remove them (externalLinks.*); anyone who can read the page sees the list.

Every URL — whether it enters through this list or through the editor's "Externer Link" dialog — passes the same normalizer:

  • only http: and https: are accepted (an allowlist, so no javascript:, data: or file: URL can ever become a rendered href),
  • a hand-typed example.com/docs is completed to https://example.com/docs,
  • embedded credentials (https://user:pw@host) are stripped.

The read view enforces the same rule a second time when it serializes a stored document, because page content can also be written straight through the API. External links there render with target="_blank" and rel="noopener noreferrer", marked with an ↗ arrow; internal /pages/<id> links keep navigating in place.

Enrichment

  • Tags — categorize pages; filter and group by them.
  • External links — a curated list of references outside the wiki.
  • Attachments — attach files to a page.
  • Comments — discuss inline; resolve and moderate.
  • Favorites — a personal pin.
  • Subscriptions — watch a page for changes.

On this page