{"items":[{"id":"restore_1","tenant_id":"tenant_1","source_site_id":"site_1","server_id":"server_1","collision_policy":"rename","requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true},"status":"ready_for_execution","current_step":"ready_for_execution","progress":40,"manifest":{"tenant_id":"tenant_1","source_site_id":"site_1","server_id":"server_1","source_domain":"acme.example.com","resolved_domain":"acme.example.com-restored-1","database_names":["acme_wp-restored-1"],"runtime_profile_id":"php81-compat","php_fallback_profile":"php81-compat","collision_policy":"rename","requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true}},"plan":{"steps":[{"id":"step_01","name":"Scan source archive","action":"scan","status":"pending"},{"id":"step_02","name":"Restore site files","action":"site.create","target":"acme.example.com","status":"pending"},{"id":"step_03","name":"Restore databases","action":"db.create","target":"acme_wp-restored-1","status":"pending"},{"id":"step_04","name":"Render nginx config","action":"nginx.render","status":"pending"},{"id":"step_05","name":"Issue SSL certificate","action":"ssl.issue","status":"pending"},{"id":"step_06","name":"Apply cron jobs","action":"cron.apply","status":"pending"},{"id":"step_07","name":"Validate restored application","action":"validate","status":"pending"}]},"preview":{"summary":"Restore preview ready for acme.example.com-restored-1.","source_domain":"acme.example.com","resolved_domain":"acme.example.com-restored-1","database_names":["acme_wp-restored-1"],"warnings":["site collision detected; renaming target to acme.example.com-restored-1.","database collision detected; renaming target to acme_wp-restored-1.","Mail restore is disabled by default.","DNS restore is disabled by default."],"unsupported_items":["mailbox data","dns zone data"],"requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true},"estimated_action_count":7,"estimated_duration_seconds":105,"current_step":"ready_for_execution"},"checkpoints":[{"step_id":"step_1","step_name":"Scan source archive","at":"2026-04-09T20:14:56Z","status":"completed"},{"step_id":"step_2","step_name":"Restore site files","at":"2026-04-09T20:19:56Z","status":"completed"}],"events":[{"id":"event_1","at":"2026-04-09T20:09:56Z","level":"info","type":"analysis.started","message":"Restore analysis started."},{"id":"event_2","at":"2026-04-09T20:11:56Z","level":"info","type":"analysis.completed","message":"Restore preview is ready."},{"id":"event_13","at":"2026-04-09T21:27:15Z","level":"info","type":"analysis.started","message":"Restore analysis started."},{"id":"event_14","at":"2026-04-09T21:27:15Z","level":"info","type":"analysis.completed","message":"Restore preview is ready.","details":{"estimated_actions":7,"resolved_domain":"acme.example.com-restored-1"}}],"created_at":"2026-04-09T20:04:56Z","updated_at":"2026-04-09T21:27:15Z"},{"id":"restore_2","tenant_id":"tenant_2","source_site_id":"site_2","server_id":"server_2","collision_policy":"rename","requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true},"status":"partial_success","current_step":"validation","progress":100,"manifest":{"tenant_id":"tenant_2","source_site_id":"site_2","server_id":"server_2","source_domain":"orchard.example.net","resolved_domain":"orchard.example.net","database_names":["orchard_app"],"mailbox_addresses":["hello@orchard.example.net"],"runtime_profile_id":"php81-compat","php_fallback_profile":"php81-compat","collision_policy":"rename","requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true}},"plan":{"steps":[{"id":"step_1","name":"Scan source archive","action":"scan","status":"completed"},{"id":"step_2","name":"Restore site files","action":"site.create","target":"orchard.example.net","status":"completed"},{"id":"step_3","name":"Restore database","action":"db.create","target":"orchard_app","status":"completed"},{"id":"step_4","name":"Validate restored application","action":"validate","status":"failed","message":"Post-restore validation found a non-blocking mismatch."}]},"preview":{"summary":"Demo restore completed with a validation warning.","source_domain":"orchard.example.net","resolved_domain":"orchard.example.net","database_names":["orchard_app"],"mailbox_addresses":["hello@orchard.example.net"],"warnings":["Mail restore is disabled by default.","DNS restore is disabled by default.","Validation will remain partial_success if restore output differs from source."],"unsupported_items":["mailbox hello@orchard.example.net","dns zone for orchard.example.net"],"requested_features":{"cron":true,"databases":true,"dns":false,"mailboxes":false,"sites":true,"ssl":true},"estimated_action_count":4,"estimated_duration_seconds":60,"current_step":"validation"},"checkpoints":[{"step_id":"step_1","step_name":"Scan source archive","at":"2026-04-09T19:34:56Z","status":"completed"},{"step_id":"step_2","step_name":"Restore site files","at":"2026-04-09T19:39:56Z","status":"completed"},{"step_id":"step_3","step_name":"Restore database","at":"2026-04-09T19:41:56Z","status":"completed"}],"events":[{"id":"event_3","at":"2026-04-09T19:29:56Z","level":"info","type":"analysis.started","message":"Restore analysis started."},{"id":"event_4","at":"2026-04-09T19:31:56Z","level":"info","type":"analysis.completed","message":"Restore preview is ready."},{"id":"event_5","at":"2026-04-09T19:37:56Z","level":"info","type":"restore.started","message":"Restore execution started."},{"id":"event_6","at":"2026-04-09T19:42:56Z","level":"warn","type":"validation.failed","message":"Validation completed with a warning."}],"validation_report":{"status":"partial_success","message":"Web and database restore succeeded, but validation reported a mismatch.","warnings":["Validation reported one mismatch after successful restore."],"failures":["Application checksum mismatch on restored site assets."]},"created_at":"2026-04-09T19:24:56Z","updated_at":"2026-04-09T19:44:56Z","completed_at":"2026-04-09T19:49:56Z"}],"total":2}
