Restore a surface to an earlier version
Rewrites the surface's blocks back to the state reconstructed at the given version in one transaction, emitting ordinary block delete and create events so the restore is itself a revision and can be undone by restoring forward. Requires `surfaces:write` on the surface. A version outside the plan's history window, or one whose replay is only approximate, is refused.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/workspaces/string/surfaces/string/history/string/restore" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "workspaceVersion": 0, "blocks": [ { "id": "string", "workspaceId": "string", "surfaceId": "string", "parentBlockId": "string", "kind": "paragraph", "orderKey": "string", "manifest": {}, "layout": { "x": 0, "y": 0, "w": 0, "h": 0, "tab": "string" }, "plainText": "string", "createdAt": "string", "updatedAt": "string" } ] }}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Read a surface as it was at a version
Replays the workspace event log to reconstruct the surface's title and block tree at the given version. Requires `blocks:read` on the surface, since a historical version exposes the same content as the live one. The version must be a positive integer inside the plan's history window, and `approximate` comes back true when the replay hit its event cap and the reconstruction may be incomplete.
List the workspace offers waiting for the caller
Returns the caller's pending workspace invites and, when the legacy-restore feature is enabled for them, the legacy workspace claims matched to their verified email address, ordered for the onboarding screen. Any authenticated caller with a synced profile may read their own offers; a caller with no verified email gets an empty list. Listing a stale offer is harmless, because accepting one re-checks strictly and rejects.