# Phase 2: Backup API Endpoints **Status:** ⬜ Not Started **Parent plan:** [PLAN.md](./PLAN.md) **Domain:** backend ## Objective Expose backup operations via REST API and wire autobackup scheduling. ## Tasks - [ ] Task 1: Create `internal/api/backups.go` with handlers - `POST /api/backups` — trigger manual backup - `GET /api/backups` — list all backups - `GET /api/backups/{id}/download` — download backup file - `DELETE /api/backups/{id}` — delete backup - `POST /api/backups/{id}/restore` — restore from backup - [ ] Task 2: Register routes in router.go (admin-only) - [ ] Task 3: Add backup engine to Server struct - SetBackupEngine method (same pattern as SetProxyManager) - [ ] Task 4: Wire autobackup cron in main.go - Create backup engine on startup - If backup_enabled, schedule cron job - Graceful shutdown: stop cron - [ ] Task 5: Update settings handler to restart autobackup cron on settings change - [ ] Task 6: Add GET /api/settings response fields for backup settings ## Files to Modify/Create - `internal/api/backups.go` — new handler file - `internal/api/router.go` — register routes, add engine field - `cmd/server/main.go` — wire engine, schedule cron - `internal/api/settings.go` — include backup fields in GET/PUT ## Acceptance Criteria - All CRUD endpoints work for backups - Manual backup creates file and returns metadata - Download streams the backup file - Restore replaces DB (may require restart) - Autobackup runs on configured interval - Settings change updates cron schedule ## Handoff to Next Phase