PilotFoxDocs

Restore a backup

POST
/api/v1/admin/backups/restore

Replaces the instance's data with a backup from R2, named twice: confirm must equal name (400 otherwise). Queued imports hold a restore off unless cancelQueuedImports cancels them. 404 for an unknown backup; 409 for an incomplete one, or while something else holds it off (another run, a copy left by an earlier restore, a pending erase, purge or import); 503 when R2 is not configured.

Requires a signed-in system administrator (session cookie). API keys and share links: 401; other signed-in users: 403.

Authorization

session
cookie__Secure-pilotfox.session_token<token>

The web app's sign-in session, acting with the user's role; named pilotfox.session_token on an instance whose PUBLIC_URL is plain http. Under /api/v1, a POST, PUT, PATCH or DELETE carrying a cookie must come from the instance's own origin (Origin: PUBLIC_URL or a DASHBOARD_ORIGINS entry; else 403), and a body it carries must be JSON or multipart (else 415).

Request Body

application/json
  1. body
name*string
Lengthlength <= 64
confirm*string
Lengthlength <= 64
cancelQueuedImports?boolean

Response Body

Accepted

application/json
  1. response
data*
Example Request
curl -X POST 'https://pilotfox.app/api/v1/admin/backups/restore' \  -H 'Content-Type: application/json' \  -d '{  "name": "string",  "confirm": "string"}'
Example Response202
{  "data": {    "id": "string",    "kind": "backup",    "trigger": "manual",    "status": "queued",    "name": "string",    "parentRunId": "string",    "scheduledFor": "string",    "queuedAt": "string",    "startedAt": "string",    "finishedAt": "string",    "postgres": {      "key": "string",      "bytes": 0    },    "clickhouse": {      "prefix": "string",      "bytes": 0    },    "error": "string",    "details": {      "retention": "applied",      "drill": {        "postgres": [          {            "table": "string",            "live": 0,            "restored": 0          }        ],        "clickhouse": [          {            "table": "string",            "before": 0,            "restored": 0,            "after": 0          }        ],        "problems": [          "string"        ]      },      "safetyBackup": "string",      "preRestoreDatabase": "string",      "pgMigrationsApplied": 0,      "chMigrationsApplied": [        "string"      ],      "pgCommitted": true    },    "triggeredBy": {      "id": "string",      "email": "string"    }  }}