---
title: "The editor's whole-tab save: create or replace one tab and its elements, merged with every changeset the editor had not seen (`X-Changeset-Seen`). An API token is refused with 405 `use_changesets`: scripts and agents write tabs with changesets. A new or changed tab name is stored shortened to 60 characters."
method: PUT
path: "/documents/{id}/tabs/{tabId}"
tags: ["Documents"]
---

# The editor's whole-tab save: create or replace one tab and its elements, merged with every changeset the editor had not seen (\`X-Changeset-Seen\`). An API token is refused with 405 \`use_changesets\`: scripts and agents write tabs with changesets. A new or changed tab name is stored shortened to 60 characters.

`PUT /documents/{id}/tabs/{tabId}`

## Request

- Base URL: `https://www.livediagram.app/api`
- URL: `https://www.livediagram.app/api/documents/{id}/tabs/{tabId}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Owner-Id`

## Path parameters

- `id` string, required
- `tabId` string, required

## Request body

- Tab
  - `articles` object
  - `backgroundAnimationSpeed` number
  - `backgroundColor` string
  - `backgroundOpacity` number
  - `backgroundPattern` 'grid' | 'blank' | 'lines' | 'crosshatch' | 'graph' | 'confetti' | 'stripes' | 'diagonal' | 'waves' | 'bricks' | 'isometric' | 'hexagonal' | 'engineering' | 'checkerboard' | 'sparkles' | 'eggs' | 'cobwebs' | 'snowflakes' | 'candy-stripes' | 'flow' | 'drift' | 'aurora' | 'ripple' | 'ribbons'
  - `backgroundPatternScale` number
  - `customColours` string[]
  - `dashboard` DashboardLayout
    - `background` 'tint'
    - `rows` DashboardRow[], required
      - `fill` true
      - `height` number, required
      - `id` string, required
      - `slots` DashboardSlot[], required
        - `content` union
          - object
            - `of` 'board' | 'sheet' | 'diagram'
            - `tabId` string, required
            - `type` 'tab', required
          - object
            - `elementId` string, required
            - `type` 'element', required
          - object
            - `style` DashboardCardStyle
              - …
            - `text` string, required
            - `title` string, required
            - `type` 'note', required
          - object
            - `style` DashboardCardStyle
              - …
            - `text` string, required
            - `title` string, required
            - `type` 'title', required
          - DashboardCardContent (unresolved $ref)
        - `id` string, required
        - `span` number, required
  - `defaultTextSize` union
    - 'scale' | 'sm' | 'md' | 'lg'
    - number
  - `elements` Element[], required
    - union
      - union
        - ShapeElement
          - `accentEdge` 'left' | 'top' | 'bottom'
          - `accentEdgeColor` string
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `actions` ElementAction[]
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `agendaCurrent` number
          - `agendaItems` AgendaItem[]
            - `label` string, required
            - `minutes` number, required
          - `agendaTimerStartedAt` number
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `attachAt` 'top-left' | 'top' | 'top-right' | 'right' | 'bottom-right' | 'bottom' | 'bottom-left' | 'left'
          - `attachedTo` string
          - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
          - `boundaryStyle` 'tab' | 'inset' | 'c4'
          - `cardHeader` boolean
          - `cardMedia` 'badge' | 'tile' | 'initial'
          - `cellComments` CellCommentThreads
          - `chairFacing` 'n' | 'e' | 's' | 'w'
          - `chartAxis` boolean
          - `chartLegend` boolean
          - `chartLegendPosition` 'top' | 'right' | 'bottom' | 'left'
          - `chartPalette` 'vivid' | 'ocean' | 'forest' | 'sunset' | 'berry' | 'earth' | 'grey' | 'contrast'
          - `chartSource` ChartSource
            - `cols` string[]
            - `range` object, required
              - …
            - `sheetId` string, required
          - `chartValues` boolean
          - `chartVariant` 'horizontal' | 'area' | 'scatter' | 'doughnut'
          - `checklistItems` ChecklistItem[]
            - `done` boolean, required
            - `text` string, required
          - `chipLook` 'solid' | 'ink' | 'outline' | 'tinted' | 'quiet'
          - `code` string
          - `codeLanguage` 'plain' | 'ts' | 'js' | 'python' | 'json' | 'bash' | 'sql' | 'html' | 'css' | 'yaml'
          - `codeTheme` 'midnight' | 'graphite' | 'ocean' | 'forest' | 'plum' | 'contrast' | 'paper' | 'parchment'
          - `codeWrap` boolean
          - `collabRound` string
          - `colorPreset` string
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `conceptAnim` 'build' | 'pulse' | 'flow'
          - `conceptAnimRepeat` boolean
          - `conceptAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `conceptRows` ConceptRow[]
            - `label` string, required
            - `note` string
          - `decisionDate` string
          - `decisionDrivers` string[]
          - `decisionStatus` 'proposed' | 'accepted' | 'rejected' | 'superseded'
          - `entityFields` EntityField[]
            - `key` 'pk' | 'fk' | 'pk-fk' | 'uk'
            - `name` string, required
            - `type` string
          - `estimateScale` 'fibonacci' | 'tshirt' | 'powers'
          - `fillColor` string
          - `fillSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
          - `fixedSize` boolean
          - `flowDirection` 'down' | 'right'
          - `flowLaneId` string
          - `flowchartId` string
          - `font` string
          - `headerFill` string
          - `headerSize` number
          - `height` number, required
          - `hubSpokes` boolean
          - `iconAnimation` 'spin' | 'beat' | 'pulse' | 'glow' | 'ping' | 'breathe' | 'shimmer' | 'bounce' | 'wiggle' | 'flash' | 'tada' | 'flip' | 'jump' | 'swing' | 'float'
          - `iconAnimationRepeat` boolean
          - `iconAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `iconId` string
          - `iconPosition` 'left' | 'right' | 'above' | 'below'
          - `iconSize` 'sm' | 'md' | 'lg' | 'xl'
          - `iconWeight` 'thin' | 'regular' | 'bold'
          - `id` string, required
          - `ideaCardIds` string[]
          - `ideaCards` string[]
          - `ideasRevealed` boolean
          - `keyMeanings` object
          - `keyRows` KeyRow[]
            - `color` string
            - `id` string, required
            - `kind` 'line' | 'tag', required
            - `style` string
            - `tag` string
          - `label` string
          - `layerId` string
          - `legendItems` LegendItem[]
            - `color` string
            - `label` string, required
          - `lineCategories` string[]
          - `lineSeries` LineSeries[]
            - `axis` 'right'
            - `color` string
            - `name` string, required
            - `values` number[], required
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `marker` 'green-circle' | 'orange-circle' | 'red-circle' | 'checkbox-unchecked' | 'checkbox-checked'
          - `markerSize` 'scale' | 'sm' | 'md' | 'lg'
          - `mindFlow` 'tree' | 'leftward' | 'balanced' | 'downward' | 'upward' | 'bubble'
          - `mindLook` 'person'
          - `mindParentId` string
          - `mindSpacing` 'tight' | 'compact' | 'comfortable' | 'wide': How far apart a map's nodes sit (docs/specs/009-elements/mind-node.md "Spacing").
          - `mode` 'select' | 'pan' | 'laser' | 'spotlight' | 'avatar' | 'eraser' | 'format' | 'isometric'
          - `navLinks` string[]
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `pageSubtitle` string
          - `pageTitle` string
          - `penColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `penTextColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `pickerOptions` string[]
          - `pickerResult` string
          - `pickerSource` 'participants' | 'options'
          - `pieAnim` 'grow' | 'pop' | 'spin' | 'pulse'
          - `pieAnimRepeat` boolean
          - `pieAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `pieSlices` PieSlice[]
            - `color` string
            - `label` string, required
            - `value` number, required
          - `planBoard` PlanBoardSetup
            - `addTypes` string[]
            - `allCards` boolean
            - `archive` boolean
            - `cardFields` CardField[], required
              - …
            - `cardSize` 'minimal' | 'compact' | 'detailed'
            - `collects` 'actions'
            - `columns` PlanColumn[], required
              - …
            - `doneColumnId` string
            - `fillTab` boolean
            - `hideWriting` boolean, required
            - `swimlaneBy` 'none' | 'assignee' | 'type' | 'priority' | 'status' | 'field', required
            - `swimlaneField` string
            - `title` string, required
            - `widgets` BoardWidgetKind[]
          - `planCard` PlanCardRef
            - `itemId` string, required
            - `size` 'minimal' | 'compact' | 'detailed'
          - `planSheet` PlanSheetRef
            - `copyOf` string
            - `fillTab` true
            - `sheetId` string, required
            - `start` string
          - `planView` PlanViewRef
            - `filters` CardSearchFilter[]
              - …
            - `namesWidth` number
            - `rowOrder` string[]
            - `statuses` string[]
            - `swimlaneBy` 'none' | 'assignee' | 'type' | 'priority' | 'status' | 'field'
            - `swimlaneField` string
            - `title` string
            - `types` string[]
            - `view` union, required
              - …
          - `pointerTip` object
            - `x` number, required
            - `y` number, required
          - `portalTarget` string
          - `processSteps` string[]
          - `progress` number
          - `progressAnim` 'fill' | 'pulse' | 'stripes'
          - `progressAnimRepeat` boolean
          - `progressAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `pyramidVariant` 'pyramid' | 'inverted' | 'funnel'
          - `qaNotes` QaNote[]
            - `at` number, required
            - `author` object
              - …
            - `doneAt` number
            - `id` string, required
            - `state` 'discussing' | 'done'
            - `text` string, required
            - `voters` string[], required
          - `qaRev` number
          - `quizCorrect` number
          - `quizLockedAt` number
          - `quizOptions` string[]
          - `quizRevealed` boolean
          - `quizSeconds` number
          - `quizStartedAt` number
          - `railCount` number
          - `railLabels` string[]
          - `rating` number
          - `ratingAnim` 'pop' | 'twinkle' | 'pulse' | 'rock'
          - `ratingAnimRepeat` boolean
          - `ratingAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `reaction` 'confetti' | 'sparkles' | 'hearts' | 'applause' | 'fireworks'
          - `responses` ParticipantResponse[]
            - `at` number, required
            - `participantId` string, required
            - `value` string, required
          - `responsesRevealed` boolean
          - `revealed` boolean
          - `richText` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `rollCall` RollCallEntry[]
            - `at` number, required
            - `color` string, required
            - `name` string, required
          - `roomDoor` 'n' | 'e' | 's' | 'w' | 'none'
          - `rotation` number
          - `sankeyAlign` 'justify' | 'left': Where the end nodes sit: every end node in the last column, or each node at its own step from the start.
          - `sankeyAnim` 'grow' | 'flow' | 'cascade' | 'pulse' | 'rise': Grow sweeps the diagram in from the left; Flow runs a current along every band; Cascade brings the columns in one after another; Pulse sends a slow wave of light across the bands; Rise grows each column's nodes, then fades their bands in. Flow and Pulse loop; the rest play once.
          - `sankeyAnimRepeat` boolean
          - `sankeyAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `sankeyFlows` SankeyFlow[]
            - `from` string, required
            - `to` string, required
            - `value` number, required
          - `sankeyLeftover` 'show' | 'hide': Whether a node that sends on less than it receives draws the difference as a band to a Leftover node.
          - `sankeyLeftoverName` string
          - `sankeyLinkColor` 'source' | 'target' | 'gradient' | 'neutral': How a flow's band is coloured: its source node, its target node, a blend of both, or one quiet grey.
          - `sankeyNodes` SankeyNodeStyle[]
            - `color` string
            - `leftover` boolean
            - `name` string, required
          - `sankeyUnit` string
          - `sankeyValueLabel` 'value' | 'percent' | 'none': What a node's label says under its name.
          - `sequenceAnim` 'play'
          - `sequenceAnimRepeat` boolean
          - `sequenceAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `sequenceMessages` SequenceElementMessage[]
            - `from` string, required
            - `kind` 'call' | 'async' | 'reply', required
            - `label` string, required
            - `to` string, required
          - `sequenceNumbered` boolean
          - `sequenceParticipants` SequenceElementParticipant[]
            - `actor` boolean
            - `id` string, required
            - `label` string, required
          - `session` SessionButtonConfig
            - `dots` number
            - `minutes` number
            - `options` string[]
            - `question` string
            - `style` 'yesNo' | 'yesNoAbstain' | 'choice' | 'collaborators' | 'rating' | 'text'
            - `tool` 'timer' | 'stopwatch' | 'vote' | 'poll', required
          - `shadow` ElementShadow
            - `blur` number, required
            - `offsetX` number, required
            - `offsetY` number, required
            - `opacity` number, required
          - `shape` 'square' | 'circle' | 'diamond' | 'cylinder' | 'parallelogram' | 'hexagon' | 'document' | 'page' | 'mind-node' | 'lane' | 'entity' | 'banner' | 'callout' | 'card' | 'badge' | 'step' | 'pointer-note' | 'diagram-key' | 'stack' | 'sequence' | 'boundary' | 'layer-stack' | 'pyramid' | 'cycle' | 'hub' | 'onion' | 'chevrons' | 'stat-row' | 'process' | 'site-header' | 'mode-button' | 'portal' | 'tab-window' | 'session-button' | 'reveal' | 'picker' | 'reaction-pad' | 'comment-pin' | 'action-card' | 'done-check' | 'chair' | 'fence' | 'avatar-pad' | 'desk' | 'sofa' | 'room' | 'meeting-table' | 'plant' | 'bookshelf' | 'water-cooler' | 'coffee-machine' | 'rug' | 'estimate' | 'temperature' | 'idea-box' | 'qa-board' | 'agenda' | 'decision' | 'roll-call' | 'quiz' | 'stadium' | 'actor' | 'final-state' | 'cloud' | 'triangle' | 'trapezoid' | 'star' | 'speech-bubble' | 'frame' | 'browser' | 'monitor' | 'laptop' | 'phone' | 'tablet' | 'foldable' | 'smartwatch' | 'progress-bar' | 'progress-ring' | 'timeline-rail' | 'rating' | 'pie-chart' | 'bar-chart' | 'line-chart' | 'code-block' | 'checklist' | 'legend' | 'sankey' | 'focus-button' | 'icon' | 'sticker' | 'plan-board' | 'plan-card' | 'plan-view' | 'plan-sheet', required
          - `sheetAnchor` SheetAnchor
            - `x` number, required
            - `y` number, required
          - `stackAlign` 'start' | 'center' | 'end'
          - `stackColumns` number
          - `stackDirection` 'row' | 'column' | 'grid'
          - `stackGap` number
          - `stackPadding` number
          - `stats` StatItem[]
            - `caption` string, required
            - `value` string, required
          - `stepSequence` boolean
          - `stickerId` string
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
          - `tags` string[]
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
          - `textAnimationRepeat` boolean
          - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `themeLockFill` boolean
          - `titleOrientation` 'upright'
          - `type` 'shape', required
          - `width` number, required
          - `windowTabId` string
          - `x` number, required
          - `y` number, required
        - TextElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `addedBy` string
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
          - `font` string
          - `fontWeight` 400 | 500 | 700
          - `headerFill` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `letterSpacing` number
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `penTextColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `richText` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `rotation` number
          - `sizing` 'fit' | 'wrap'
          - `strokeColor` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
          - `textAnimationRepeat` boolean
          - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `textArc` number
          - `textBold` boolean
          - `textCase` 'upper' | 'lower'
          - `textColor` string
          - `textItalic` boolean
          - `textScale` number
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `textUnderline` boolean
          - `type` 'text', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - StickyElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `addedBy` string
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `esDraft` true
          - `esKind` 'domain-event' | 'command' | 'actor' | 'policy' | 'read-model' | 'external-system' | 'aggregate' | 'hotspot'
          - `fillColor` string
          - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
          - `fixedSize` boolean
          - `font` string
          - `headerFill` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `penTextColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `richText` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `rotation` number
          - `shadow` ElementShadow
            - `blur` number, required
            - `offsetX` number, required
            - `offsetY` number, required
            - `opacity` number, required
          - `strokeColor` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
          - `textAnimationRepeat` boolean
          - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'sticky', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - ImageElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `alt` string
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `credit` ImageCredit
            - `licenseUrl` string
            - `sourceUrl` string, required
            - `text` string, required
          - `fillColor` string
          - `font` string
          - `height` number, required
          - `heroCaption` HeroCaption
            - `subtitle` string, required
            - `title` string, required
          - `id` string, required
          - `imageId` string, nullable, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `naturalHeight` number
          - `naturalWidth` number
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `objectFit` 'cover' | 'contain'
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `rotation` number
          - `shadow` ElementShadow
            - `blur` number, required
            - `offsetX` number, required
            - `offsetY` number, required
            - `opacity` number, required
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'image', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - FreehandElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
          - `closed` boolean, required
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `font` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `packedPoints` string, byte, required: The stroke's points, normalised into its box, and a pen's pressure at each when it reported one, packed into one block: base64 of a version byte, a flags byte and a little-endian record per point (x u16, y u16, optional pressure u8). See docs/specs/006-document/stroke-points.md.
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `pen` 'highlighter'
          - `penColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `penWidth` number
          - `rotation` number
          - `straightEdges` boolean
          - `streamline` number
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `themeLockFill` boolean
          - `type` 'freehand', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - PathElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
          - `closed` boolean, required
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `fillSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `font` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `nodes` PathNode[], required
            - `handleIn` PathPoint
              - …
            - `handleOut` PathPoint
              - …
            - `mode` 'corner' | 'mirrored' | 'aligned', required
            - `nx` number, required
            - `ny` number, required
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `penColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `rotation` number
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
          - `subpaths` array[]
            - PathNode[]
              - …
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'path', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - TableElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `cellStyles` array[]
            - TableCellStyle[]
              - …
          - `cells` array[], required
            - string[]
          - `colWidths` number[]
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
          - `font` string
          - `headerColumn` boolean
          - `headerFill` string
          - `headerRow` boolean
          - `headerTextColor` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `rotation` number
          - `rowHeights` number[]
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
          - `tablePreset` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
          - `textAnimationRepeat` boolean
          - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'table', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
          - `zebra` boolean
        - AnnotationElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `articleNote` 'comment' | 'action'
          - `aspectLocked` boolean
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `font` string
          - `headerFill` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `rotation` number
          - `strokeColor` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'annotation', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - LinkCardElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `fillColor` string
          - `font` string
          - `headerFill` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `meta` LinkCardMeta
            - `favicon` string
            - `image` string
            - `title` string
            - `url` string, required
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `rotation` number
          - `shadow` ElementShadow
            - `blur` number, required
            - `offsetX` number, required
            - `offsetY` number, required
            - `opacity` number, required
          - `strokeColor` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'link-card', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
        - VideoElement
          - `action` ElementAction
            - `assignee` ElementActionAssignee, required
              - …
            - `assignerId` string, required
            - `assignerName` string, nullable, required
            - `createdAt` number, required
            - `description` string, required
            - `id` string, required
            - `name` string, required
            - `status` 'open' | 'done' | 'wont-do', required
            - `teamId` string, nullable, required
            - `updatedAt` number, required
          - `animation` union
            - 'pulse' | 'blink' | 'glow' | 'trace' | 'gradient' | 'heartbeat' | 'breathe' | 'shimmer' | 'highlight' | 'bounce' | 'wobble' | 'shake' | 'jelly' | 'float' | 'swing'
            - 'flutter' | 'sway' | 'peel' | 'lift' | 'wiggle' | 'drop' | 'slap' | 'pulse' | 'glow' | 'highlight'
            - 'draw' | 'trace' | 'dash' | 'boil' | 'ink' | 'glow' | 'shimmer'
            - 'kenburns' | 'zoom' | 'pan' | 'tilt' | 'develop' | 'focus' | 'wipe' | 'iris' | 'sheen'
            - 'rows' | 'columns' | 'cells' | 'scan' | 'sweep' | 'header' | 'pulse' | 'glow'
          - `animationRepeat` boolean
          - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `aspectLocked` boolean
          - `commentThread` CommentThread
            - `comments` Comment[], required
              - …
            - `resolved` boolean, required
          - `embedProvider` 'youtube' | 'vimeo' | 'loom' | 'figma' | 'gdocs' | 'website'
          - `fillColor` string
          - `font` string
          - `headerFill` string
          - `height` number, required
          - `id` string, required
          - `label` string
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `note` string
          - `noteRich` TextRun[]
            - `bold` boolean
            - `color` string
            - `heading` 1 | 2 | 3
            - `italic` boolean
            - `link` string
            - `muted` boolean
            - `size` 'xs' | 'sm' | 'md' | 'lg'
            - `strikethrough` boolean
            - `text` string, required
            - `underline` boolean
          - `opacity` number
          - `padding` 'none' | 'sm' | 'md' | 'lg'
          - `rotation` number
          - `shadow` ElementShadow
            - `blur` number, required
            - `offsetX` number, required
            - `offsetY` number, required
            - `opacity` number, required
          - `strokeColor` string
          - `textAlignX` 'left' | 'center' | 'right'
          - `textAlignY` 'top' | 'middle' | 'bottom'
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `type` 'video', required
          - `width` number, required
          - `x` number, required
          - `y` number, required
      - ArrowElement
        - `arrowEnds` 'from' | 'to' | 'both' | 'none'
        - `arrowStyle` 'straight' | 'curved' | 'angled'
        - `arrowheadColor` string
        - `arrowheadShape` 'triangle' | 'triangle-hollow' | 'line' | 'circle' | 'circle-hollow' | 'diamond' | 'diamond-hollow' | 'one' | 'zero-or-one' | 'many' | 'zero-or-many' | 'one-or-many'
        - `arrowheadSize` 'small' | 'medium' | 'large' | 'extra-large'
        - `arrowheadStartShape` 'triangle' | 'triangle-hollow' | 'line' | 'circle' | 'circle-hollow' | 'diamond' | 'diamond-hollow' | 'one' | 'zero-or-one' | 'many' | 'zero-or-many' | 'one-or-many'
        - `curveOffset` object
          - `dx` number, required
          - `dy` number, required
        - `curvePoints` object[]
          - `dx` number, required
          - `dy` number, required
        - `elbowOffset` object
          - `dx` number, required
          - `dy` number, required
        - `exactEnd` boolean
        - `exactStart` boolean
        - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
        - `flow` 'dashes' | 'dots' | 'beads' | 'pulse' | 'grow' | 'glow' | 'heartbeat' | 'breathe' | 'shimmer' | 'signal' | 'draw' | 'comet' | 'rainbow' | 'strobe' | 'wind'
        - `flowRepeat` boolean
        - `flowSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
        - `font` string
        - `from` union, required
          - object
            - `kind` 'free', required
            - `x` number, required
            - `y` number, required
          - object
            - `anchor` 'n' | 'nne' | 'ne' | 'ene' | 'e' | 'ese' | 'se' | 'sse' | 's' | 'ssw' | 'sw' | 'wsw' | 'w' | 'wnw' | 'nw' | 'nnw', required
            - `elementId` string, required
            - `field` number
            - `kind` 'pinned', required
          - object
            - `arrowId` string, required
            - `kind` 'on-arrow', required
            - `t` number, required
        - `id` string, required
        - `label` string
        - `labelFill` string
        - `labelMaxWidth` number
        - `labelOffset` object
          - `offset` number, required
          - `t` number, required
        - `layerId` string
        - `link` union
          - object
            - `kind` 'tab', required
            - `tabId` string, required
          - object
            - `elementId` string, required
            - `kind` 'element', required
            - `tabId` string, required
          - object
            - `documentId` string, required
            - `kind` 'document', required
            - `name` string, required
          - object
            - `kind` 'url', required
            - `url` string, required
        - `locked` boolean
        - `opacity` number
        - `penColour` union
          - 'ink'
          - 'grey'
          - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
        - `penTextColour` union
          - 'ink'
          - 'grey'
          - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
        - `routeBehind` boolean
        - `strokeColor` string
        - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
        - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
        - `strokeWidth` number
        - `textBold` boolean
        - `textColor` string
        - `textItalic` boolean
        - `textSize` union
          - 'scale' | 'sm' | 'md' | 'lg'
          - number
        - `textStrikethrough` boolean
        - `textUnderline` boolean
        - `to` union, required
          - object
            - `kind` 'free', required
            - `x` number, required
            - `y` number, required
          - object
            - `anchor` 'n' | 'nne' | 'ne' | 'ene' | 'e' | 'ese' | 'se' | 'sse' | 's' | 'ssw' | 'sw' | 'wsw' | 'w' | 'wnw' | 'nw' | 'nnw', required
            - `elementId` string, required
            - `field` number
            - `kind` 'pinned', required
          - object
            - `arrowId` string, required
            - `kind` 'on-arrow', required
            - `t` number, required
        - `type` 'arrow', required
  - `esLanesSettled` boolean
  - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
  - `folder` string
  - `font` string
  - `form` FormDefinition
    - `closedMessage` string
    - `closesAt` number
    - `confirmation` string
    - `cover` FormCover
      - `fill` union
        - object
          - `color` string, required
          - `kind` 'solid', required
        - object
          - `angle` number, required
          - `from` string, required
          - `kind` 'gradient', required
          - `motion` 'flow' | 'drift' | 'aurora' | 'ripple' | 'ribbons' | 'mesh' | 'starfield' | 'retro-grid' | 'bokeh' | 'waves' | 'spotlight' | 'beams' | 'sunburst' | 'fireflies' | 'snowfall' | 'lava' | 'dot-wave' | 'clouds' | 'warp' | 'orbits' | 'radar' | 'equaliser' | 'confetti' | 'threads'
          - `speed` number
          - `to` string, required
      - `pattern` 'dots' | 'grid' | 'lines'
    - `description` string
    - `destination` FormDestination
      - `status` string, required
      - `tabId` string, required
      - `typeId` string, required
    - `heading` string, required
    - `limit` number
    - `sections` FormSection[], required
      - `description` string
      - `id` string, required
      - `questions` FormQuestion[], required
        - `dropdown` true
        - `goesTo` union
          - object
            - `to` 'description', required
          - object
            - `to` 'title', required
          - object
            - `fieldId` string, required
            - `to` 'field', required
        - `help` string
        - `highLabel` string
        - `id` string, required
        - `lowLabel` string
        - `max` number
        - `min` number
        - `options` string[]
        - `other` true
        - `placeholder` string
        - `prompt` string, required
        - `required` true
        - `scale` number
        - `style` 'stars' | 'numbers'
        - `type` 'short' | 'paragraph' | 'number' | 'email' | 'link' | 'date' | 'single' | 'multi' | 'rating' | 'checkbox', required
        - `whole` true
      - `showIf` SectionRule
        - `anyOf` string[], required
        - `questionId` string, required
      - `title` string, required
    - `sheet` FormSheetDestination
      - `sheetId` string, required
      - `tabId` string, required
    - `starter` 'blank' | 'bug-report' | 'feedback' | 'feature-request' | 'rsvp' | 'job-application' | 'contact'
    - `v` 1, required
  - `id` string, required
  - `kind` 'diagram' | 'event-storming' | 'board' | 'sheet' | 'dashboard' | 'form'
  - `layers` Layer[]
    - `id` string, required
    - `locked` boolean
    - `name` string, required
    - `opacity` number
    - `visible` boolean
  - `locked` boolean
  - `name` string, required
  - `opensIn` 'diagram' | 'draw' | 'workshop' | 'pages' | 'plan'
  - `pageOrientation` 'portrait' | 'landscape'
  - `pages` Page[]
    - `background` PageBackground
      - `fill` union
        - union
          - object
            - `color` string, required
            - `kind` 'solid', required
          - object
            - `angle` number, required
            - `from` string, required
            - `kind` 'gradient', required
            - `motion` 'flow' | 'drift' | 'aurora' | 'ripple' | 'ribbons' | 'mesh' | 'starfield' | 'retro-grid' | 'bokeh' | 'waves' | 'spotlight' | 'beams' | 'sunburst' | 'fireflies' | 'snowfall' | 'lava' | 'dot-wave' | 'clouds' | 'warp' | 'orbits' | 'radar' | 'equaliser' | 'confetti' | 'threads'
            - `speed` number
            - `to` string, required
        - PageImageFill
          - `credit` ImageCredit
            - `licenseUrl` string
            - `sourceUrl` string, required
            - `text` string, required
          - `imageId` string, required
          - `kind` 'image', required
          - `overlay` PageImageOverlay
            - `color` string
            - `kind` 'light' | 'dark' | 'tint' | 'fade', required
            - `strength` number, required
          - `position` 'top' | 'bottom'
          - `preview` string
          - `tone` string
      - `pattern` 'dots' | 'grid' | 'lines'
    - `fit` PageSides
      - `height` number, required
      - `width` number, required
    - `flow` string
    - `id` string, required
    - `kind` 'infographic' | 'article' | 'slide' | 'logo'
    - `locked` true
    - `name` string
    - `orientation` 'portrait' | 'landscape', required
    - `rowAt` RowAt
      - `x` number, required
      - `y` number, required
    - `size` 'a4' | 'letter' | 'a3' | 'square' | 'social' | 'wide' | 'slide' | 'slide-classic' | 'logo' | 'fit'
    - `startedBlank` true
  - `patternColor` string
  - `tagColours` TagColour[]
    - `color` string, required
    - `tag` string, required
  - `templateChosen` boolean
  - `theme` string
  - `timer` TabTimer
    - `anchorAt` number
    - `durationMs` number
    - `frozenMs` number
    - `mode` 'countdown' | 'stopwatch', required
    - `running` boolean, required
    - `startedAt` number
  - `vote` TabVote
    - `active` boolean, required
    - `hideCounts` boolean
    - `hideCursors` boolean
    - `onePerElement` boolean
    - `revealed` boolean, required
    - `reviewIndex` number
    - `round` string
    - `startedBy` string
    - `voteLayerId` string
    - `votes` object, required
    - `votesPerPerson` number, required

## Response `200`

Success.

- object
  - `tab` TabRecord, required
    - `articles` object
    - `backgroundAnimationSpeed` number
    - `backgroundColor` string
    - `backgroundOpacity` number
    - `backgroundPattern` 'grid' | 'blank' | 'lines' | 'crosshatch' | 'graph' | 'confetti' | 'stripes' | 'diagonal' | 'waves' | 'bricks' | 'isometric' | 'hexagonal' | 'engineering' | 'checkerboard' | 'sparkles' | 'eggs' | 'cobwebs' | 'snowflakes' | 'candy-stripes' | 'flow' | 'drift' | 'aurora' | 'ripple' | 'ribbons'
    - `backgroundPatternScale` number
    - `customColours` string[]
    - `dashboard` DashboardLayout
      - `background` 'tint'
      - `rows` DashboardRow[], required
        - `fill` true
        - `height` number, required
        - `id` string, required
        - `slots` DashboardSlot[], required
          - `content` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - DashboardCardContent (unresolved $ref)
          - `id` string, required
          - `span` number, required
    - `defaultTextSize` union
      - 'scale' | 'sm' | 'md' | 'lg'
      - number
    - `documentId` string, required
    - `elements` Element[], required
      - union
        - union
          - ShapeElement
            - `accentEdge` 'left' | 'top' | 'bottom'
            - `accentEdgeColor` string
            - `action` ElementAction
              - …
            - `actions` ElementAction[]
              - …
            - `agendaCurrent` number
            - `agendaItems` AgendaItem[]
              - …
            - `agendaTimerStartedAt` number
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `attachAt` 'top-left' | 'top' | 'top-right' | 'right' | 'bottom-right' | 'bottom' | 'bottom-left' | 'left'
            - `attachedTo` string
            - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
            - `boundaryStyle` 'tab' | 'inset' | 'c4'
            - `cardHeader` boolean
            - `cardMedia` 'badge' | 'tile' | 'initial'
            - `cellComments` CellCommentThreads
            - `chairFacing` 'n' | 'e' | 's' | 'w'
            - `chartAxis` boolean
            - `chartLegend` boolean
            - `chartLegendPosition` 'top' | 'right' | 'bottom' | 'left'
            - `chartPalette` 'vivid' | 'ocean' | 'forest' | 'sunset' | 'berry' | 'earth' | 'grey' | 'contrast'
            - `chartSource` ChartSource
              - …
            - `chartValues` boolean
            - `chartVariant` 'horizontal' | 'area' | 'scatter' | 'doughnut'
            - `checklistItems` ChecklistItem[]
              - …
            - `chipLook` 'solid' | 'ink' | 'outline' | 'tinted' | 'quiet'
            - `code` string
            - `codeLanguage` 'plain' | 'ts' | 'js' | 'python' | 'json' | 'bash' | 'sql' | 'html' | 'css' | 'yaml'
            - `codeTheme` 'midnight' | 'graphite' | 'ocean' | 'forest' | 'plum' | 'contrast' | 'paper' | 'parchment'
            - `codeWrap` boolean
            - `collabRound` string
            - `colorPreset` string
            - `commentThread` CommentThread
              - …
            - `conceptAnim` 'build' | 'pulse' | 'flow'
            - `conceptAnimRepeat` boolean
            - `conceptAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `conceptRows` ConceptRow[]
              - …
            - `decisionDate` string
            - `decisionDrivers` string[]
            - `decisionStatus` 'proposed' | 'accepted' | 'rejected' | 'superseded'
            - `entityFields` EntityField[]
              - …
            - `estimateScale` 'fibonacci' | 'tshirt' | 'powers'
            - `fillColor` string
            - `fillSwatch` 1 | 2 | 3 | 4 | 5 | 6
            - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
            - `fixedSize` boolean
            - `flowDirection` 'down' | 'right'
            - `flowLaneId` string
            - `flowchartId` string
            - `font` string
            - `headerFill` string
            - `headerSize` number
            - `height` number, required
            - `hubSpokes` boolean
            - `iconAnimation` 'spin' | 'beat' | 'pulse' | 'glow' | 'ping' | 'breathe' | 'shimmer' | 'bounce' | 'wiggle' | 'flash' | 'tada' | 'flip' | 'jump' | 'swing' | 'float'
            - `iconAnimationRepeat` boolean
            - `iconAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `iconId` string
            - `iconPosition` 'left' | 'right' | 'above' | 'below'
            - `iconSize` 'sm' | 'md' | 'lg' | 'xl'
            - `iconWeight` 'thin' | 'regular' | 'bold'
            - `id` string, required
            - `ideaCardIds` string[]
            - `ideaCards` string[]
            - `ideasRevealed` boolean
            - `keyMeanings` object
            - `keyRows` KeyRow[]
              - …
            - `label` string
            - `layerId` string
            - `legendItems` LegendItem[]
              - …
            - `lineCategories` string[]
            - `lineSeries` LineSeries[]
              - …
            - `link` union
              - …
            - `locked` boolean
            - `marker` 'green-circle' | 'orange-circle' | 'red-circle' | 'checkbox-unchecked' | 'checkbox-checked'
            - `markerSize` 'scale' | 'sm' | 'md' | 'lg'
            - `mindFlow` 'tree' | 'leftward' | 'balanced' | 'downward' | 'upward' | 'bubble'
            - `mindLook` 'person'
            - `mindParentId` string
            - `mindSpacing` 'tight' | 'compact' | 'comfortable' | 'wide': How far apart a map's nodes sit (docs/specs/009-elements/mind-node.md "Spacing").
            - `mode` 'select' | 'pan' | 'laser' | 'spotlight' | 'avatar' | 'eraser' | 'format' | 'isometric'
            - `navLinks` string[]
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `pageSubtitle` string
            - `pageTitle` string
            - `penColour` union
              - …
            - `penTextColour` union
              - …
            - `pickerOptions` string[]
            - `pickerResult` string
            - `pickerSource` 'participants' | 'options'
            - `pieAnim` 'grow' | 'pop' | 'spin' | 'pulse'
            - `pieAnimRepeat` boolean
            - `pieAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `pieSlices` PieSlice[]
              - …
            - `planBoard` PlanBoardSetup
              - …
            - `planCard` PlanCardRef
              - …
            - `planSheet` PlanSheetRef
              - …
            - `planView` PlanViewRef
              - …
            - `pointerTip` object
              - …
            - `portalTarget` string
            - `processSteps` string[]
            - `progress` number
            - `progressAnim` 'fill' | 'pulse' | 'stripes'
            - `progressAnimRepeat` boolean
            - `progressAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `pyramidVariant` 'pyramid' | 'inverted' | 'funnel'
            - `qaNotes` QaNote[]
              - …
            - `qaRev` number
            - `quizCorrect` number
            - `quizLockedAt` number
            - `quizOptions` string[]
            - `quizRevealed` boolean
            - `quizSeconds` number
            - `quizStartedAt` number
            - `railCount` number
            - `railLabels` string[]
            - `rating` number
            - `ratingAnim` 'pop' | 'twinkle' | 'pulse' | 'rock'
            - `ratingAnimRepeat` boolean
            - `ratingAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `reaction` 'confetti' | 'sparkles' | 'hearts' | 'applause' | 'fireworks'
            - `responses` ParticipantResponse[]
              - …
            - `responsesRevealed` boolean
            - `revealed` boolean
            - `richText` TextRun[]
              - …
            - `rollCall` RollCallEntry[]
              - …
            - `roomDoor` 'n' | 'e' | 's' | 'w' | 'none'
            - `rotation` number
            - `sankeyAlign` 'justify' | 'left': Where the end nodes sit: every end node in the last column, or each node at its own step from the start.
            - `sankeyAnim` 'grow' | 'flow' | 'cascade' | 'pulse' | 'rise': Grow sweeps the diagram in from the left; Flow runs a current along every band; Cascade brings the columns in one after another; Pulse sends a slow wave of light across the bands; Rise grows each column's nodes, then fades their bands in. Flow and Pulse loop; the rest play once.
            - `sankeyAnimRepeat` boolean
            - `sankeyAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `sankeyFlows` SankeyFlow[]
              - …
            - `sankeyLeftover` 'show' | 'hide': Whether a node that sends on less than it receives draws the difference as a band to a Leftover node.
            - `sankeyLeftoverName` string
            - `sankeyLinkColor` 'source' | 'target' | 'gradient' | 'neutral': How a flow's band is coloured: its source node, its target node, a blend of both, or one quiet grey.
            - `sankeyNodes` SankeyNodeStyle[]
              - …
            - `sankeyUnit` string
            - `sankeyValueLabel` 'value' | 'percent' | 'none': What a node's label says under its name.
            - `sequenceAnim` 'play'
            - `sequenceAnimRepeat` boolean
            - `sequenceAnimSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `sequenceMessages` SequenceElementMessage[]
              - …
            - `sequenceNumbered` boolean
            - `sequenceParticipants` SequenceElementParticipant[]
              - …
            - `session` SessionButtonConfig
              - …
            - `shadow` ElementShadow
              - …
            - `shape` 'square' | 'circle' | 'diamond' | 'cylinder' | 'parallelogram' | 'hexagon' | 'document' | 'page' | 'mind-node' | 'lane' | 'entity' | 'banner' | 'callout' | 'card' | 'badge' | 'step' | 'pointer-note' | 'diagram-key' | 'stack' | 'sequence' | 'boundary' | 'layer-stack' | 'pyramid' | 'cycle' | 'hub' | 'onion' | 'chevrons' | 'stat-row' | 'process' | 'site-header' | 'mode-button' | 'portal' | 'tab-window' | 'session-button' | 'reveal' | 'picker' | 'reaction-pad' | 'comment-pin' | 'action-card' | 'done-check' | 'chair' | 'fence' | 'avatar-pad' | 'desk' | 'sofa' | 'room' | 'meeting-table' | 'plant' | 'bookshelf' | 'water-cooler' | 'coffee-machine' | 'rug' | 'estimate' | 'temperature' | 'idea-box' | 'qa-board' | 'agenda' | 'decision' | 'roll-call' | 'quiz' | 'stadium' | 'actor' | 'final-state' | 'cloud' | 'triangle' | 'trapezoid' | 'star' | 'speech-bubble' | 'frame' | 'browser' | 'monitor' | 'laptop' | 'phone' | 'tablet' | 'foldable' | 'smartwatch' | 'progress-bar' | 'progress-ring' | 'timeline-rail' | 'rating' | 'pie-chart' | 'bar-chart' | 'line-chart' | 'code-block' | 'checklist' | 'legend' | 'sankey' | 'focus-button' | 'icon' | 'sticker' | 'plan-board' | 'plan-card' | 'plan-view' | 'plan-sheet', required
            - `sheetAnchor` SheetAnchor
              - …
            - `stackAlign` 'start' | 'center' | 'end'
            - `stackColumns` number
            - `stackDirection` 'row' | 'column' | 'grid'
            - `stackGap` number
            - `stackPadding` number
            - `stats` StatItem[]
              - …
            - `stepSequence` boolean
            - `stickerId` string
            - `strokeColor` string
            - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
            - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
            - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
            - `tags` string[]
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
            - `textAnimationRepeat` boolean
            - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `themeLockFill` boolean
            - `titleOrientation` 'upright'
            - `type` 'shape', required
            - `width` number, required
            - `windowTabId` string
            - `x` number, required
            - `y` number, required
          - TextElement
            - `action` ElementAction
              - …
            - `addedBy` string
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
            - `font` string
            - `fontWeight` 400 | 500 | 700
            - `headerFill` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `letterSpacing` number
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `penTextColour` union
              - …
            - `richText` TextRun[]
              - …
            - `rotation` number
            - `sizing` 'fit' | 'wrap'
            - `strokeColor` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
            - `textAnimationRepeat` boolean
            - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `textArc` number
            - `textBold` boolean
            - `textCase` 'upper' | 'lower'
            - `textColor` string
            - `textItalic` boolean
            - `textScale` number
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textSwatch` 1 | 2 | 3 | 4 | 5 | 6
            - `textUnderline` boolean
            - `type` 'text', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - StickyElement
            - `action` ElementAction
              - …
            - `addedBy` string
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `commentThread` CommentThread
              - …
            - `esDraft` true
            - `esKind` 'domain-event' | 'command' | 'actor' | 'policy' | 'read-model' | 'external-system' | 'aggregate' | 'hotspot'
            - `fillColor` string
            - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
            - `fixedSize` boolean
            - `font` string
            - `headerFill` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `penTextColour` union
              - …
            - `richText` TextRun[]
              - …
            - `rotation` number
            - `shadow` ElementShadow
              - …
            - `strokeColor` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
            - `textAnimationRepeat` boolean
            - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'sticky', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - ImageElement
            - `action` ElementAction
              - …
            - `alt` string
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
            - `commentThread` CommentThread
              - …
            - `credit` ImageCredit
              - …
            - `fillColor` string
            - `font` string
            - `height` number, required
            - `heroCaption` HeroCaption
              - …
            - `id` string, required
            - `imageId` string, nullable, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `naturalHeight` number
            - `naturalWidth` number
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `objectFit` 'cover' | 'contain'
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `rotation` number
            - `shadow` ElementShadow
              - …
            - `strokeColor` string
            - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
            - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'image', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - FreehandElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
            - `closed` boolean, required
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `font` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `packedPoints` string, byte, required: The stroke's points, normalised into its box, and a pen's pressure at each when it reported one, packed into one block: base64 of a version byte, a flags byte and a little-endian record per point (x u16, y u16, optional pressure u8). See docs/specs/006-document/stroke-points.md.
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `pen` 'highlighter'
            - `penColour` union
              - …
            - `penWidth` number
            - `rotation` number
            - `straightEdges` boolean
            - `streamline` number
            - `strokeColor` string
            - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
            - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `themeLockFill` boolean
            - `type` 'freehand', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - PathElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `borderRadius` 'none' | 'sm' | 'md' | 'lg' | 'full'
            - `closed` boolean, required
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `fillSwatch` 1 | 2 | 3 | 4 | 5 | 6
            - `font` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `nodes` PathNode[], required
              - …
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `penColour` union
              - …
            - `rotation` number
            - `strokeColor` string
            - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
            - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
            - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
            - `subpaths` array[]
              - …
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'path', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - TableElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `cellStyles` array[]
              - …
            - `cells` array[], required
              - …
            - `colWidths` number[]
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
            - `font` string
            - `headerColumn` boolean
            - `headerFill` string
            - `headerRow` boolean
            - `headerTextColor` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `rotation` number
            - `rowHeights` number[]
            - `strokeColor` string
            - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
            - `strokeWidth` 'none' | 'thin' | 'medium' | 'thick' | 'extra-thick'
            - `tablePreset` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textAnimation` 'typewriter' | 'words' | 'cascade' | 'focus' | 'scramble' | 'highlighter' | 'underline' | 'wave' | 'shine' | 'flicker' | 'rainbow' | 'glow' | 'bounce' | 'float'
            - `textAnimationRepeat` boolean
            - `textAnimationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'table', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
            - `zebra` boolean
          - AnnotationElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `articleNote` 'comment' | 'action'
            - `aspectLocked` boolean
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `font` string
            - `headerFill` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `rotation` number
            - `strokeColor` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'annotation', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - LinkCardElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `commentThread` CommentThread
              - …
            - `fillColor` string
            - `font` string
            - `headerFill` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `meta` LinkCardMeta
              - …
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `rotation` number
            - `shadow` ElementShadow
              - …
            - `strokeColor` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'link-card', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
          - VideoElement
            - `action` ElementAction
              - …
            - `animation` union
              - …
            - `animationRepeat` boolean
            - `animationSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
            - `aspectLocked` boolean
            - `commentThread` CommentThread
              - …
            - `embedProvider` 'youtube' | 'vimeo' | 'loom' | 'figma' | 'gdocs' | 'website'
            - `fillColor` string
            - `font` string
            - `headerFill` string
            - `height` number, required
            - `id` string, required
            - `label` string
            - `layerId` string
            - `link` union
              - …
            - `locked` boolean
            - `note` string
            - `noteRich` TextRun[]
              - …
            - `opacity` number
            - `padding` 'none' | 'sm' | 'md' | 'lg'
            - `rotation` number
            - `shadow` ElementShadow
              - …
            - `strokeColor` string
            - `textAlignX` 'left' | 'center' | 'right'
            - `textAlignY` 'top' | 'middle' | 'bottom'
            - `textBold` boolean
            - `textColor` string
            - `textItalic` boolean
            - `textSize` union
              - …
            - `textStrikethrough` boolean
            - `textUnderline` boolean
            - `type` 'video', required
            - `width` number, required
            - `x` number, required
            - `y` number, required
        - ArrowElement
          - `arrowEnds` 'from' | 'to' | 'both' | 'none'
          - `arrowStyle` 'straight' | 'curved' | 'angled'
          - `arrowheadColor` string
          - `arrowheadShape` 'triangle' | 'triangle-hollow' | 'line' | 'circle' | 'circle-hollow' | 'diamond' | 'diamond-hollow' | 'one' | 'zero-or-one' | 'many' | 'zero-or-many' | 'one-or-many'
          - `arrowheadSize` 'small' | 'medium' | 'large' | 'extra-large'
          - `arrowheadStartShape` 'triangle' | 'triangle-hollow' | 'line' | 'circle' | 'circle-hollow' | 'diamond' | 'diamond-hollow' | 'one' | 'zero-or-one' | 'many' | 'zero-or-many' | 'one-or-many'
          - `curveOffset` object
            - `dx` number, required
            - `dy` number, required
          - `curvePoints` object[]
            - `dx` number, required
            - `dy` number, required
          - `elbowOffset` object
            - `dx` number, required
            - `dy` number, required
          - `exactEnd` boolean
          - `exactStart` boolean
          - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
          - `flow` 'dashes' | 'dots' | 'beads' | 'pulse' | 'grow' | 'glow' | 'heartbeat' | 'breathe' | 'shimmer' | 'signal' | 'draw' | 'comet' | 'rainbow' | 'strobe' | 'wind'
          - `flowRepeat` boolean
          - `flowSpeed` 'slowest' | 'slow' | 'normal' | 'fast'
          - `font` string
          - `from` union, required
            - object
              - …
            - object
              - …
            - object
              - …
          - `id` string, required
          - `label` string
          - `labelFill` string
          - `labelMaxWidth` number
          - `labelOffset` object
            - `offset` number, required
            - `t` number, required
          - `layerId` string
          - `link` union
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `locked` boolean
          - `opacity` number
          - `penColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `penTextColour` union
            - 'ink'
            - 'grey'
            - 'blue' | 'red' | 'orange' | 'yellow' | 'green' | 'teal' | 'violet' | 'pink': The eight hued stock colours, each tuned per board.
          - `routeBehind` boolean
          - `strokeColor` string
          - `strokeStyle` 'solid' | 'dashed' | 'dotted' | 'dash-dot' | 'long-dash' | 'dash-dot-dot'
          - `strokeSwatch` 1 | 2 | 3 | 4 | 5 | 6
          - `strokeWidth` number
          - `textBold` boolean
          - `textColor` string
          - `textItalic` boolean
          - `textSize` union
            - 'scale' | 'sm' | 'md' | 'lg'
            - number
          - `textStrikethrough` boolean
          - `textUnderline` boolean
          - `to` union, required
            - object
              - …
            - object
              - …
            - object
              - …
          - `type` 'arrow', required
    - `esLanesSettled` boolean
    - `finish` 'flexible' | 'professional' | 'sketch' | 'marker'
    - `folder` string
    - `font` string
    - `form` FormDefinition
      - `closedMessage` string
      - `closesAt` number
      - `confirmation` string
      - `cover` FormCover
        - `fill` union
          - object
            - `color` string, required
            - `kind` 'solid', required
          - object
            - `angle` number, required
            - `from` string, required
            - `kind` 'gradient', required
            - `motion` 'flow' | 'drift' | 'aurora' | 'ripple' | 'ribbons' | 'mesh' | 'starfield' | 'retro-grid' | 'bokeh' | 'waves' | 'spotlight' | 'beams' | 'sunburst' | 'fireflies' | 'snowfall' | 'lava' | 'dot-wave' | 'clouds' | 'warp' | 'orbits' | 'radar' | 'equaliser' | 'confetti' | 'threads'
            - `speed` number
            - `to` string, required
        - `pattern` 'dots' | 'grid' | 'lines'
      - `description` string
      - `destination` FormDestination
        - `status` string, required
        - `tabId` string, required
        - `typeId` string, required
      - `heading` string, required
      - `limit` number
      - `sections` FormSection[], required
        - `description` string
        - `id` string, required
        - `questions` FormQuestion[], required
          - `dropdown` true
          - `goesTo` union
            - object
              - …
            - object
              - …
            - object
              - …
          - `help` string
          - `highLabel` string
          - `id` string, required
          - `lowLabel` string
          - `max` number
          - `min` number
          - `options` string[]
          - `other` true
          - `placeholder` string
          - `prompt` string, required
          - `required` true
          - `scale` number
          - `style` 'stars' | 'numbers'
          - `type` 'short' | 'paragraph' | 'number' | 'email' | 'link' | 'date' | 'single' | 'multi' | 'rating' | 'checkbox', required
          - `whole` true
        - `showIf` SectionRule
          - `anyOf` string[], required
          - `questionId` string, required
        - `title` string, required
      - `sheet` FormSheetDestination
        - `sheetId` string, required
        - `tabId` string, required
      - `starter` 'blank' | 'bug-report' | 'feedback' | 'feature-request' | 'rsvp' | 'job-application' | 'contact'
      - `v` 1, required
    - `id` string, required
    - `kind` 'diagram' | 'event-storming' | 'board' | 'sheet' | 'dashboard' | 'form'
    - `layers` Layer[]
      - `id` string, required
      - `locked` boolean
      - `name` string, required
      - `opacity` number
      - `visible` boolean
    - `locked` boolean
    - `name` string, required
    - `opensIn` 'diagram' | 'draw' | 'workshop' | 'pages' | 'plan'
    - `orderIndex` number, required
    - `pageOrientation` 'portrait' | 'landscape'
    - `pages` Page[]
      - `background` PageBackground
        - `fill` union
          - union
            - object
              - …
            - object
              - …
          - PageImageFill
            - `credit` ImageCredit
              - …
            - `imageId` string, required
            - `kind` 'image', required
            - `overlay` PageImageOverlay
              - …
            - `position` 'top' | 'bottom'
            - `preview` string
            - `tone` string
        - `pattern` 'dots' | 'grid' | 'lines'
      - `fit` PageSides
        - `height` number, required
        - `width` number, required
      - `flow` string
      - `id` string, required
      - `kind` 'infographic' | 'article' | 'slide' | 'logo'
      - `locked` true
      - `name` string
      - `orientation` 'portrait' | 'landscape', required
      - `rowAt` RowAt
        - `x` number, required
        - `y` number, required
      - `size` 'a4' | 'letter' | 'a3' | 'square' | 'social' | 'wide' | 'slide' | 'slide-classic' | 'logo' | 'fit'
      - `startedBlank` true
    - `patternColor` string
    - `rev` number, required
    - `tagColours` TagColour[]
      - `color` string, required
      - `tag` string, required
    - `templateChosen` boolean
    - `theme` string
    - `timer` TabTimer
      - `anchorAt` number
      - `durationMs` number
      - `frozenMs` number
      - `mode` 'countdown' | 'stopwatch', required
      - `running` boolean, required
      - `startedAt` number
    - `updatedAt` number, required
    - `vote` TabVote
      - `active` boolean, required
      - `hideCounts` boolean
      - `hideCursors` boolean
      - `onePerElement` boolean
      - `revealed` boolean, required
      - `reviewIndex` number
      - `round` string
      - `startedBy` string
      - `voteLayerId` string
      - `votes` object, required
      - `votesPerPerson` number, required

## Other responses

- `400`: Error.
- `401`: Error.
- `403`: Error.
- `404`: Error.
- `405`: Error.
- `409`: Error.
- `410`: Error.
- `413`: Error.
- `429`: Rate limited. Back off and retry.

---

[API](https://skmtc.dev/livediagram/apis/livediagram-api.md) · [All operations](https://skmtc.dev/livediagram/apis/livediagram-api/llms.txt) · [OpenAPI document](https://skmtc.dev/livediagram/apis/livediagram-api/revisions/f286d27acfd2?raw)
