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
| Field | Type | Notes |
|---|---|---|
id | string | readonly required |
workspaceId | string | required — Workspace that owns this page. |
parentId | string | null | required — Parent page in the tree; null for top-level pages and all dashboards. |
title | string | required — Display title shown in the UI and tabs. |
slug | string | required — Kebab-case URL identifier, unique among siblings sharing the same parent. |
body | string | required — MDX source. Element tags render via the workspace's Element registry; unknown tags render as inline error cards. |
kind | "dashboard" | "page" | required — page for tree-structured documents; dashboard for flat entries on the workspace home. |
position | number | required — Sibling order within (workspace, kind, parent). Lower values appear first. |
createdBy | string | null | required — User who created the page; null if they later deleted the account. |
createdAt | string | readonly required — ISO-8601 timestamp of creation. |
updatedAt | string | readonly required — ISO-8601 timestamp of the last update. |