2.5 KiB
2.5 KiB
CanvasOperationPlan reference
Required envelope
Every request passed to yedir_apply_canvas_operation has this shape:
{
"canvasId": "canvas UUID",
"operationPlan": {
"version": 1,
"operationId": "stable unique ID",
"operation": "create_text_node",
"projectId": "same canvas UUID",
"baseCanvasRevision": "updatedAt from yedir_get_canvas",
"baseCanvasUpdatedAt": "updatedAt from yedir_get_canvas",
"textContent": "Example"
}
}
operationId is the idempotency key. Keep it stable across retries of the same logical write.
Operations
| Operation | Required fields | Notes |
|---|---|---|
create_agent_slot |
slot |
slotType is image, video, or ui-screen. |
create_text_node |
textContent |
Optional targetPosition or placement fields. |
fill_slot |
targetSlotId, media or mediaItems |
Media type must match the slot. |
insert_beside |
anchorNodeId, media or mediaItems |
Preserves the source. |
append_revision |
sourceNodeIds, media or mediaItems |
Preferred for revised media. |
replace_node_media |
target, media, confirmed: true |
Destructive; require explicit confirmation. |
add_annotation |
target and textContent or annotations |
Annotation types: text-note, arrow-note, box, freehand, crop-box. |
link_nodes |
at least two targetNodeIds |
Optional edgeType. |
move_nodes |
targets, targetPosition, confirmed: true |
Require explicit confirmation. |
delete_nodes |
targets, confirmed: true |
Require explicit confirmation. |
rename_node |
target and textContent |
Changes the node title. |
update_note |
target and textContent |
Updates note content. |
update_text |
target and textContent |
Updates a text node. |
Use targetNodeIds for mutations, sourceNodeIds for provenance, and anchorNodeId for relative placement. A request may reference at most 20 nodes or media items.
Placement
placement:right,left,below,above, orviewport-center.placementStrategy:single,row,grid,overlay, orbeside_each_source.layoutStrategy:row,column, orgrid.spacing: positive number up to 240.
Media item
{
"mediaItemId": "stable item ID",
"type": "image",
"url": "https://public-or-signed-media-url",
"assetId": "optional UUID",
"width": 1024,
"height": 1024,
"title": "Result",
"prompt": "source prompt",
"sourceNodeIds": ["source node ID"]
}
Only HTTP and HTTPS media URLs are accepted.