Pular para o conteúdo principal

API de Backup

Gerencie backups do banco de dados de forma programática.

Endpoints

Listar backups

GET /api/backup

Auth: Obrigatória

Resposta (200):

[
{
"id": "backup-uuid",
"filename": "patchone_backup_2026-05-11_02-00.db",
"size_bytes": 4194304,
"type": "scheduled",
"created_at": "2026-05-11T02:00:00Z"
},
{
"id": "backup-uuid-2",
"filename": "patchone_backup_2026-05-11_11-30.db",
"size_bytes": 4198400,
"type": "manual",
"created_at": "2026-05-11T11:30:00Z"
}
]

Acionar um backup manual

POST /api/backup

Auth: Obrigatória

Corpo da requisição: Nenhum

Resposta (201):

{
"id": "backup-uuid-new",
"filename": "patchone_backup_2026-05-11_11-30.db",
"size_bytes": 4198400,
"type": "manual",
"created_at": "2026-05-11T11:30:00Z"
}

Auditoria: Registrado como backup_created.


Baixar um arquivo de backup

GET /api/backup/{backup_id}/download

Auth: Obrigatória

Resposta: Download de arquivo binário.

  • On-premises: arquivo SQLite .db
  • Modo nuvem: arquivo de dump do PostgreSQL

Use este endpoint para automatizar o arquivamento de backups fora do site:

BACKUP_ID=$(curl -s -b cookies.txt http://server:8000/api/backup | jq -r '.[0].id')
curl -b cookies.txt http://server:8000/api/backup/$BACKUP_ID/download \
-o /offsite/backup_$(date +%Y%m%d).db

Excluir um backup

DELETE /api/backup/{backup_id}

Auth: Obrigatória

Resposta (204): Sem conteúdo. O arquivo de backup é excluído permanentemente.

Respostas de erro:

CódigoCausa
404Backup não encontrado

Auditoria: Registrado como backup_deleted.

Exemplo de arquivamento automatizado fora do site

import requests

session = requests.Session()
session.post("http://server:8000/api/admin/login", json={
"username": "admin", "password": "password"
})

backups = session.get("http://server:8000/api/backup").json()
latest = max(backups, key=lambda b: b["created_at"])

content = session.get(f"http://server:8000/api/backup/{latest['id']}/download").content

with open(f"/offsite/{latest['filename']}", "wb") as f:
f.write(content)