Revisions and publishing
Every design save appends a revision. Restores add a revision instead of rewinding history, and public HTML can lag a save by about a minute.
Revision history
Pages, page components, and site chrome keep revision history. The email chrome does not: it is a single document with no revisionId or versions.
versionslists stored revisions, newest first, up to 100.revisionIdreads one stored revision instead of the live document.publishStatusreports whether that revision is the one currently served for a path.
Restoring
Restoring a revision writes it back through the normal save path. That appends a new revision and leaves older rows in place, so a restore is itself undoable. Omit the revision id to undo the most recent change, optionally for one content locale.
Following changes
get_changes reads revision rows since an ISO timestamp or a cursor. Pass the cursor back to continue. Each row carries the revision batch id and the locale version id, which is what a diff or audit view needs.
Cache window
A save is durable immediately, but public HTML can keep the previous data-request result until expectedLiveBy, about 60 seconds later. If a page looks stale after a save, this window is almost always the reason.