Patch site node
patch_site_nodePatch one node (several: patch_site_bulk, one atomic write). classNamePatch merges Tailwind classes; propsPatch sets other props; typePatch swaps the component type. propsPatch deep-merges seo/root/background/overflow/design/inject/relation/richText/theme/company, but strings and arrays REPLACE (get_site_node returns the current value); unsetProps ["seo.jsonLd"] drops a branch. Image: src shadows content, so a new image needs both. ROOT inject.head/footer holds third-party code, not page content. Children are not accepted. More: get_style_reference({ topic: "editing" }).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Site id. Pass it on every call. | |
| name | No | Optional site rename. | |
| nodeId | Yes | Node id, e.g. ROOT, page_home. | |
| typePatch | No | New type.resolvedName, e.g. "Text". isCanvas follows. | |
| nodesPatch | No | REORDER ONLY: the exact same child ids in a new order. Anything else blanks the canvas. | |
| propsPatch | No | Non-class props (text, src, href, alt, tagName, action, root, …). | |
| unsetProps | No | Dotted prop paths to delete, e.g. "seo.jsonLd". | |
| unsetClasses | No | Classes or prefixes to remove; "gap-" also removes md:gap-*. | |
| classNamePatch | No | Classes merged via twMerge. Mobile-first: unprefixed = mobile, md:/lg: up. | |
| buttonValidation | No | off | warn | fix (default) | strict, for touched Buttons. | |
| designValidation | No | off | warn (default) | strict token checks on touched nodes. |