import api from "./client"; export interface BackupSchedule { id: number; /** The chosen stacks; empty when all_stacks is set. */ stack_ids: string[]; /** Every stack, including ones added later. */ all_stacks: boolean; destination_id: number; destination_name: string | null; frequency: "hourly" | "daily" | "weekly"; hour: number; minute: number; weekday: number; /** IANA zone the time is in, e.g. "Europe/Berlin". */ timezone: string; include_volumes: boolean; stop_first: boolean; keep: number; enabled: boolean; last_run: string | null; last_status: string | null; /** Per stack, from the last run. */ stack_status: Record; /** A run is in progress. */ running: boolean; next_run: string | null; created_at: string; } export interface ScheduleInput { stack_ids: string[]; all_stacks: boolean; destination_id: number; frequency: string; hour: number; minute: number; weekday: number; timezone: string; include_volumes: boolean; stop_first: boolean; keep: number; enabled: boolean; } export const schedulesApi = { list: () => api.get("/api/backups/schedules").then((r) => r.data), create: (body: ScheduleInput) => api.post("/api/backups/schedules", body).then((r) => r.data), update: (id: number, body: Partial) => api.put(`/api/backups/schedules/${id}`, body).then((r) => r.data), remove: (id: number) => api.delete(`/api/backups/schedules/${id}`).then((r) => r.data), /** Starts the run in the background; the list then shows `running`. */ run: (id: number) => api.post<{ started: boolean }>(`/api/backups/schedules/${id}/run`).then((r) => r.data), };