botbook/src/10-rest/backup-api.md
Rodrigo Rodriguez cb84ad2b56 docs: Add JWT secret rotation and security considerations
- Add JWT to available rotation components
- Document security limitations and manual steps
- Add component table with service restart requirements
- Include verification and best practices documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-19 19:42:15 +00:00

3 KiB

Backup API

The Backup API provides endpoints for creating, managing, and restoring backups of bot data and configurations.

Status: Roadmap

This API is on the development roadmap. The endpoints documented below represent the planned interface design.

Base URL

http://localhost:9000/api/v1/backup

Authentication

Uses the standard botserver authentication mechanism with administrator-level permissions required.

Endpoints

Backup Operations

Method Endpoint Description
POST /api/v1/backup/create Create a new backup
GET /api/v1/backup/list List all backups
GET /api/v1/backup/{backup_id} Get backup details
DELETE /api/v1/backup/{backup_id} Delete a backup

Restore Operations

Method Endpoint Description
POST /api/v1/backup/restore/{backup_id} Restore from backup
GET /api/v1/backup/restore/{job_id}/status Check restore status

Scheduling

Method Endpoint Description
POST /api/v1/backup/schedule Create backup schedule
GET /api/v1/backup/schedule List backup schedules
PUT /api/v1/backup/schedule/{schedule_id} Update schedule
DELETE /api/v1/backup/schedule/{schedule_id} Delete schedule

Request Examples

Create Backup

backup_options = NEW OBJECT
backup_options.type = "full"
backup_options.include_files = true
backup_options.include_database = true

result = POST "/api/v1/backup/create", backup_options
TALK "Backup created: " + result.backup_id

List Backups

backups = GET "/api/v1/backup/list"
FOR EACH backup IN backups
    TALK backup.id + " - " + backup.created_at + " (" + backup.size + ")"
NEXT

Restore from Backup

restore_options = NEW OBJECT
restore_options.target = "staging"

result = POST "/api/v1/backup/restore/backup-123", restore_options
TALK "Restore job started: " + result.job_id

Schedule Automated Backup

schedule = NEW OBJECT
schedule.cron = "0 2 * * *"
schedule.type = "incremental"
schedule.retention_days = 30

POST "/api/v1/backup/schedule", schedule
TALK "Backup schedule created"

Backup Types

Type Description
full Complete backup of all data
incremental Only changes since last backup
differential Changes since last full backup

Response Codes

Code Description
200 Success
201 Backup created
202 Restore job accepted
400 Bad Request
401 Unauthorized
403 Forbidden
404 Backup not found
409 Restore already in progress
500 Internal Server Error

Required Permissions

Operation Required Role
Create backup admin or backup_operator
List backups admin or backup_operator
Restore backup admin
Manage schedules admin
Delete backup admin