API additions for plan editing and repository detail.
Plans
GET /api/v1/clients/{id}/plansreturns each plan's attachedpluginsin execution order (plugin_config_id,plugin_id,name,slug,execution_order), so a client can show and edit the current set instead of replacing it blind.POST …/plansaccepts the10min,15minand30minfrequencies the web form offers.PUT …/plans/{planId}now validatesfrequencyagainst the same list and answers 400 before writing anything.POST /api/v1/clients/{id}/browseandGET …/browse/{taskId}— the filesystem browser under token auth. Same body and answers as the web: a cached tree, or a task id to poll; 409 when the client is offline.
Repositories and archives
GET …/repositoriesaddsborg_version_last(falling back to the client's borg version),storage_location_name,s3_config_idands3_config_name.GET …/repositories/{repoId}/archivesaddsplan_nameandduration_secondsper archive.GET …/repositories/{repoId}/archives/{archiveId}is new: plan, timings, sizes, lock state, the plan's directories, files grouped by borg status, the twenty largest files, and the catalog state when the catalog isn't there.- Offsite mirror:
POST /api/v1/repositories/{id}/s3-syncattaches a destination,DELETEdetaches one or all, andPOST …/s3-restorequeues a replace or copy restore (202 with the job id). The web page and the API now share oneS3RestoreService.