WorldForge Studio

05 — Wiki & notes

The world wiki (shared markdown pages) and private per-user notes.

Wiki — /wiki

Canonical storage is the wiki_pages table (ADR-0008 D4); the json.wiki document block is gone from read paths.

MethodPathNotes
GET/wiki/pages?worldId=&includeDeleted=List pages (id, title, version, atlas refs, timestamps)
POST/wiki/pagesCreate { worldId, title, body?, kind?, audience? }
GET/wiki/pages/:idFull page incl. markdown body
PATCH/wiki/pages/:idUpdate (versioned)
DELETE/wiki/pages/:idSoft delete
POST/wiki/pages/:id/restoreUndo a soft delete
GET/wiki/pages/:id/versionsVersion history
GET/wiki/pages/:id/backlinksPages linking here
GET/wiki/search?q=&worldId=Full-text search

Scopes: wiki:read for GET, world:write for mutations. Wiki reads go through the world's audience model — readWorldFor decides which pages a player-visible request sees.

Notes — /notes

Private, per-user: notes are never shared through the world's audience model.

MethodPathNotes
GET/notesList the caller's notes
POST/notesCreate
GET/notes/:idFetch
PATCH/notes/:idUpdate
DELETE/notes/:idDelete
GET/notes/anchorsCanvas anchors
POST/notes/:id/anchorsAttach an anchor to a map position
DELETE/notes/:id/anchors/:nodeIdDetach

Agent proposals into wiki

The AI agent's wiki.create / wiki.update tools do not write directly — they create entries in the proposals inbox (07 — Proposals); the owner or a GM commits them.