Files
dashback/docs/api/routes/backup.md
2026-10-14 03:07:21 +02:00

5.8 KiB

GET /backup

Protected. Requires a valid session cookie (credentials: 'include').

List backups and service status

Retrieves the current status of the internal backup service and lists available hourly, daily, and monthly backups.

Response 200

Backup service status and listing

{
  "status": {
    "enabled": true,
    "isRunning": true,
    "dbProvider": "…",
    "mssqlWarning": true,
    "backupDir": "…",
    "retention": {
      "hourlyMax": 1,
      "dailyMax": 1,
      "monthly": "…"
    },
    "counts": {
      "hourly": 1,
      "daily": 1,
      "monthly": 1
    },
    "latestHourly": {
      "name": "…",
      "path": "…",
      "totalSizeBytes": 1,
      "timestamp": "2026-08-10T00:00:00.000Z",
      "manifest": {
        "id": "…",
        "timestamp": "2026-08-10T00:00:00.000Z",
        "dateKey": "…",
        "monthKey": "…",
        "dbProvider": "…",
        "files": {
          "vfs": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "storage": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "database": {
            "name": "…",
            "sizeBytes": 1,
            "backedUp": true,
            "reason": "…"
          }
        },
        "totalSizeBytes": 1,
        "durationMs": 1
      }
    },
    "latestDaily": {
      "name": "…",
      "path": "…",
      "totalSizeBytes": 1,
      "timestamp": "2026-08-10T00:00:00.000Z",
      "manifest": {
        "id": "…",
        "timestamp": "2026-08-10T00:00:00.000Z",
        "dateKey": "…",
        "monthKey": "…",
        "dbProvider": "…",
        "files": {
          "vfs": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "storage": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "database": {
            "name": "…",
            "sizeBytes": 1,
            "backedUp": true,
            "reason": "…"
          }
        },
        "totalSizeBytes": 1,
        "durationMs": 1
      }
    },
    "latestMonthly": {
      "name": "…",
      "path": "…",
      "totalSizeBytes": 1,
      "timestamp": "2026-08-10T00:00:00.000Z",
      "manifest": {
        "id": "…",
        "timestamp": "2026-08-10T00:00:00.000Z",
        "dateKey": "…",
        "monthKey": "…",
        "dbProvider": "…",
        "files": {
          "vfs": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "storage": {
            "name": "…",
            "sizeBytes": 1,
            "sourceExists": true
          },
          "database": {
            "name": "…",
            "sizeBytes": 1,
            "backedUp": true,
            "reason": "…"
          }
        },
        "totalSizeBytes": 1,
        "durationMs": 1
      }
    }
  },
  "backups": {
    "counts": {
      "hourly": 1,
      "daily": 1,
      "monthly": 1
    },
    "hourly": [
      {
        "name": "…",
        "path": "…",
        "totalSizeBytes": 1,
        "timestamp": "2026-08-10T00:00:00.000Z",
        "manifest": {
          "id": "…",
          "timestamp": "2026-08-10T00:00:00.000Z",
          "dateKey": "…",
          "monthKey": "…",
          "dbProvider": "…",
          "files": {
            "vfs": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "storage": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "database": {
              "name": "…",
              "sizeBytes": 1,
              "backedUp": true,
              "reason": "…"
            }
          },
          "totalSizeBytes": 1,
          "durationMs": 1
        }
      }
    ],
    "daily": [
      {
        "name": "…",
        "path": "…",
        "totalSizeBytes": 1,
        "timestamp": "2026-08-10T00:00:00.000Z",
        "manifest": {
          "id": "…",
          "timestamp": "2026-08-10T00:00:00.000Z",
          "dateKey": "…",
          "monthKey": "…",
          "dbProvider": "…",
          "files": {
            "vfs": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "storage": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "database": {
              "name": "…",
              "sizeBytes": 1,
              "backedUp": true,
              "reason": "…"
            }
          },
          "totalSizeBytes": 1,
          "durationMs": 1
        }
      }
    ],
    "monthly": [
      {
        "name": "…",
        "path": "…",
        "totalSizeBytes": 1,
        "timestamp": "2026-08-10T00:00:00.000Z",
        "manifest": {
          "id": "…",
          "timestamp": "2026-08-10T00:00:00.000Z",
          "dateKey": "…",
          "monthKey": "…",
          "dbProvider": "…",
          "files": {
            "vfs": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "storage": {
              "name": "…",
              "sizeBytes": 1,
              "sourceExists": true
            },
            "database": {
              "name": "…",
              "sizeBytes": 1,
              "backedUp": true,
              "reason": "…"
            }
          },
          "totalSizeBytes": 1,
          "durationMs": 1
        }
      }
    ]
  }
}

Errors

Status Description
500 Internal error — {"error":"…"}

Generated from @openapi JSDoc. Do not edit by hand — run npm run docs:api.