import { requestJson } from "@/shared/api/http-client" export type BackupItem = { id: string serverId: string serverName: string filename: string sizeBytes: number createdAt: string kind: "manual" notes?: string } type CreateBackupResponse = { created: BackupItem[] failures: Array<{ serverId: string; error: string }> } export type CreateBackupJobResponse = { jobId: string status: "queued" | "running" | "done" | "failed" total: number completed: number } export type BackupJobStatusResponse = { id: string status: "queued" | "running" | "done" | "failed" requestedAt: string startedAt?: string finishedAt?: string total: number completed: number created: BackupItem[] failures: Array<{ serverId: string; error: string }> } export async function listBackups(baseUrl: string): Promise { return requestJson(baseUrl, "/api/backups") } export async function createBackups( baseUrl: string, payload: { serverIds: string[]; notes?: string }, ): Promise { return requestJson(baseUrl, "/api/backups/create", { method: "POST", body: JSON.stringify(payload), }) } export async function createBackupsAsync( baseUrl: string, payload: { serverIds: string[]; notes?: string }, ): Promise { return requestJson(baseUrl, "/api/backups/create", { method: "POST", body: JSON.stringify(payload), }) } export async function getBackupJob(baseUrl: string, jobId: string): Promise { return requestJson(baseUrl, `/api/backups/jobs/${jobId}`) } export async function deleteBackup(baseUrl: string, id: string): Promise { await requestJson(baseUrl, `/api/backups/${id}`, { method: "DELETE" }) }