Undo or redo a saved board change
Uses the caller's persisted undo/redo stack, including their AI changes. Rejects edits to affected objects by other writers. Works across reloads and records the resulting board revision.
apiKeyAuthorizationBearer <snoze_sk_…>Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
workspaceId*stringsurfaceId*stringapplication/json- body
direction*string"undo""redo"mutationId*string1 <= length <= 200expectedHistoryGroupId?|nullSuccess
application/json- response
data*curl -X POST 'https://api.snoze.dev/v1/workspaces/string/surfaces/string/canvas/history/revert' \ -H 'Content-Type: application/json' \ -d '{ "direction": "undo", "mutationId": "string"}'{ "data": { "workspaceVersion": 0, "elements": [ { "id": "string", "workspaceId": "string", "surfaceId": "string", "type": "rectangle", "x": 0, "y": 0, "w": 0, "h": 0, "angle": 0, "version": 0, "versionNonce": 0, "index": "string", "isDeleted": true, "props": {}, "createdAt": "string", "updatedAt": "string" } ] }}Restore a board version
Restores a recorded version atomically and records the restoration as a new revision. Requires canvas:write; rejects a changed history head or locked affected objects.
List the calendar sources in a workspace
Returns every calendar the caller can see, including connected provider calendars and database-backed record sources, with each source's sync state. Requires the `workspace:read` permission; for user principals the native Snoze calendar is materialized on first call so it is always offered. Sources the caller has no item access to are omitted rather than erroring.