replace_schema
Generates a complete schema from a textual description. REPLACES all the current data. Reserved for the case where the user wants to recreate everything from scratch. The layout is recomputed automatically on the server (positions/sizes optional in the payload); the payload carries the structure, the contentBlocks (notes/actions/links) and the people/assignments. dryRun:true PREVIEWS the diff (added/modified/deleted) of a full replacement — nothing is written.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Complete SchemaData object: { meta, cells, people, assignments, dependencies }. EACH cell can carry cells[].contentBlocks[] — the rich content is the heart of the product, NOT an optional decoration: the detail goes HERE, and not in desc (truncated to 2 lines). Shape of a contentBlock: { id, type: 'list'|'text'|'actions'|'links', title, colorKey?, entries?, text?, note? }. Entry (entries[]): { text, badge?, badgeType?: 'active'|'pending'|'future'|'ref', done?, status?: 'todo'|'doing'|'done'|'blocked', priority?: 'urgent'|'high'|'normal'|'low', assignee?, due?, url? }. cells[].scopeId / cells[].embedKind: REFUSED. A payload that carries any is rejected ahead of any write, naming the offending blocks. This mechanism (a nested level inside the SAME project) has been abandoned since 2026-08-13 and the column no longer exists. A sub-view under a block is started with create_nested_project. No x/y coordinates: the layout is computed on the server side. Canonical shapes + examples: `get_playbook(kind, 'contenu')`. | |
| label | Yes | Description of the change for versioning | |
| dryRun | No | `true` PREVIEWS what this replacement would change — a diff (added/modified/deleted) between the current schema and `data`, computed on the SAME normalized data as the real write. NOTHING IS WRITTEN: neither schema nor version. Useful before a full replacement, the most destructive operation of the registry. | |
| expectedProjectId | No | UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted. |