| mode | Yes | Required — there is no default. create: a NEW record; contentId must be absent. The other three act on an existing contentId. add: `blocks` are ADDED AFTER the body already there — this is how a record ends up holding two copies of itself when replace was meant. replace: the body becomes exactly `blocks`. edit: change part of the body through `edits`, without re-sending every block. | |
| slug | No | URL slug. Omitted: derived from the title on create, kept on update. Give it when the address matters. Also when the title is not Latin: a Cyrillic title becomes a percent-encoded URL. Changing it on a published record moves that page. | |
| edits | No | mode "edit" only. Applied in order to the body get-content returned; all or none. | |
| title | No | Title for the new record; on update (contentId set) renames it when given. | |
| blocks | No | Ordered list of blocks to insert. EMPTY creates an empty record — what the posts-index page needs, since WordPress replaces its content with the loop. | |
| parent | No | Parent record id — hierarchical types only (list-post-types `hierarchical`: pages, and custom types made hierarchical). The record then lives at /parent-slug/its-slug/. Same type, not in the trash, not the record itself or one of its children. 0 = top level. Create: default 0. Update: absent = kept. | |
| excerpt | No | Short plain-text summary for cards, archives and search — a body of Fabrement blocks yields NO automatic excerpt, so set it whenever the record will be listed. On update: given = replaced, "" = cleared, absent = kept. | |
| postType | No | Type for the NEW record — any public type from list-post-types; default "page". | |
| contentId | No | Existing record id (list-content) to UPDATE. Omit to create a new one. | |
| menuOrder | No | Place among records with the same parent (WordPress "Order"): lower first, ties by title. Page lists and list-content {orderby:"menuOrder"} follow it. Create: default 0. Update: absent = kept. | |
| expectedHash | No | mode "edit": `hash` from get-content. If the body changed since, nothing is saved. | |
| featuredImage | No | Attachment id (upload-media / list-media) for the featured image — the thumbnail cards and archives show. Must be an image; on update absent = kept. | |