Page

Page — user-authored MDX document that embeds Elements. Same primitive for docs, runbooks, knowledge base entries (kind "page", tree-structured via `parentId`), and dashboards (kind "dashboard", flat list on the workspace home). Only `kind` and surface differ; the data model does not. `body` is MDX text. Element tags (`<Table …/>`, `<Chart …/>`) resolve to the workspace's Element registry at render time; unknown tags render as inline error cards, not crashes.

Definition

TypeScript
interface Page {
  id: string;
  workspaceId: string;
  parentId: string | null;
  title: string;
  slug: string;
  body: string;
  kind: "dashboard" | "page";
  position: number;
  createdBy: string | null;
  createdAt: string;
  updatedAt: string;
}

Fields

FieldTypeNotes
idstringreadonly required
workspaceIdstringrequired — Workspace that owns this page.
parentIdstring | nullrequired — Parent page in the tree; null for top-level pages and all dashboards.
titlestringrequired — Display title shown in the UI and tabs.
slugstringrequired — Kebab-case URL identifier, unique among siblings sharing the same parent.
bodystringrequired — MDX source. Element tags render via the workspace's Element registry; unknown tags render as inline error cards.
kind"dashboard" | "page"requiredpage for tree-structured documents; dashboard for flat entries on the workspace home.
positionnumberrequired — Sibling order within (workspace, kind, parent). Lower values appear first.
createdBystring | nullrequired — User who created the page; null if they later deleted the account.
createdAtstringreadonly required — ISO-8601 timestamp of creation.
updatedAtstringreadonly required — ISO-8601 timestamp of the last update.