ProjectCanvas
Saved dashboard canvas layout and manifest drift status.
Fields
Section titled “Fields”| Field | Type | Description |
|---|---|---|
project_id * |
string | |
environment_id * |
string or null | |
scope * |
project, environment, default |
|
canvas * |
CanvasLayout | |
etag * |
string | |
managed_by_manifest * |
boolean | |
drift * |
object | |
warnings * |
array of CanvasWarning | |
source |
api, manifest, default |
|
updated_at |
string (date-time) or null | |
updated_by |
Actor or any or null |
* always present
Example
Section titled “Example”{ "project_id": "string", "environment_id": "string", "scope": "project", "canvas": { "layout": "manual", "direction": "LR", "nodes": { "services.web": { "x": 0, "y": 0 } }, "viewport": { "x": 0, "y": 0, "zoom": 1 } }, "etag": "\"1\"", "managed_by_manifest": false, "drift": { "detected": false, "reason": "none", "manifest_canvas": { "layout": "manual", "direction": "LR", "nodes": { "services.web": { "x": 0, "y": 0 } }, "viewport": { "x": 0, "y": 0, "zoom": 1 } } }, "warnings": [ { "path": "/canvas/nodes/services.web", "code": "canvas_node_unknown", "message": "Canvas node is not declared.", "fix": "Remove this canvas node or declare the resource." } ], "source": "api", "updated_at": "2026-10-22T13:05:00Z", "updated_by": { "type": "agent", "id": "tok_01jbx2m9k7q4r8t5v6w3y0z1tk", "display": "Stewart Webb via agent claude-code-on-stewart-laptop", "via_agent": { "id": "tok_01jbx2m9k7q4r8t5v6w3y0z1tk", "name": "claude-code-on-stewart-laptop" }, "on_behalf_of": { "id": "usr_01jbx2m9k7q4r8t5v6w3y0z1us", "display": "Stewart Webb" } }}