Snapshots
Both operations need the project asleep. → Snapshots and restore
Sleep in the project header, then Snapshots → Create snapshot. Each row shows Native’s visible_csn and root_digest; Show opens the full record (backup report included); Restore… asks for confirmation and leaves the project asleep. While the engine runs, both are refused with 409 tenant_running and the Studio tells you to sleep first.
hcloud project sleep prj_…hcloud snapshot create prj_… --label before-migrationhcloud snapshot list prj_…hcloud snapshot show prj_… snap_…hcloud restore prj_… snap_… # replaces the data directory; tenant stays asleephcloud project wakeup prj_…curl -X POST $ORIGIN/v0/projects/$PRJ/sleep -H "Authorization: Bearer $TOKEN"curl -X POST $ORIGIN/v0/projects/$PRJ/snapshots -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' -d '{"label":"before-migration"}'curl $ORIGIN/v0/projects/$PRJ/snapshots -H "Authorization: Bearer $TOKEN"curl -X POST $ORIGIN/v0/projects/$PRJ/restore -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' -d '{"snapshot_id":"snap_…"}'await cloud.projects.sleep(project.id);const snap = await cloud.snapshots.create(project.id, { label: "before-migration" });const { snapshots } = await cloud.snapshots.list(project.id);await cloud.restore(project.id, snap.id);A snapshot contains the Native directory only — not storage objects, functions or secrets. Retention is manual.