API Backup
O plugin Accelero API Backup (apibackup) expõe um endpoint HTTP que dispara um backup completo do banco de dados do ACCELERO e o envia, como arquivo, para uma URL de callback informada na própria requisição. É uma ferramenta de infraestrutura/automação, usada por rotinas externas da IONGRADE para coletar backups sob demanda.
Este plugin não tem interface de usuário, telas de configuração nem itens de menu. Ele apenas registra uma rota HTTP que executa um dump do banco e o entrega a um endpoint externo. É instalado pela equipe técnica da IONGRADE quando há necessidade de automatizar a coleta de backups — não é um recurso voltado ao cliente final.
Disponibilizado como plugin (apibackup), instalado e habilitado pela equipe técnica da IONGRADE.
Versão atual do plugin: 0.0.1 — compatível com ACCELERO 2.16.5, 2.16.6, 2.16.7 e 2.16.8 (conforme manifest.json).
O que o plugin faz
| Funcionalidade | O que acontece no ACCELERO |
|---|---|
| Endpoint de backup | Registra a rota POST external/apibackup/create, que recebe uma callbackUrl e enfileira o backup |
| Geração do backup | Um job assíncrono carrega as credenciais do banco e gera um dump completo via BackupDatabase |
| Entrega via callback | O arquivo de backup é enviado por POST multipart (campo file) para a callbackUrl informada |
| Limpeza | Após o envio bem-sucedido, o arquivo temporário é removido do servidor |
Permite que uma rotina externa solicite um backup do banco e o receba automaticamente, sem acesso direto ao servidor do ACCELERO.
Endpoint
| Item | Valor |
|---|---|
| Método | POST |
| Caminho | external/apibackup/create |
Corpo da requisição
O corpo deve ser um JSON com um único campo:
| Campo | Tipo | Descrição |
|---|---|---|
callbackUrl | string (URL) | URL para a qual o arquivo de backup será enviado após a geração. Validada com FILTER_VALIDATE_URL — URLs inválidas são rejeitadas |
Exemplo de corpo:
{
"callbackUrl": "https://exemplo.iongrade.com/recebe-backup"
}
Respostas
| Situação | Status HTTP | Corpo |
|---|---|---|
| Requisição aceita e enfileirada | 200 | { "message": "Backup request created successfully" } |
callbackUrl ausente, inválida ou JSON malformado | 400 | { "error": "<mensagem>" } |
O 200 indica que a solicitação foi aceita e enfileirada — não que o backup já foi gerado e entregue. A geração e o envio ocorrem de forma assíncrona, depois da resposta.
A rota está registrada sob o prefixo external/. O hardcode do plugin não contém verificação de autenticação/token dentro do controller — qualquer controle de acesso depende da configuração do roteador external do núcleo do ACCELERO.
Confirmar com o núcleo (plugins/accelero) como as rotas sob external/ são protegidas (token, IP allowlist, rede interna) e documentar o requisito de autenticação real desta rota.
Como o backup é processado
O endpoint apenas enfileira o trabalho; toda a geração e a entrega acontecem em um job assíncrono (AcceleroApiBackupDatabaseJob), executado pelo runner assíncrono do ACCELERO.
Fluxo do job:
- Valida a
callbackUrlnovamente; se ausente ou inválida, aborta sem gerar backup. - Carrega as credenciais do banco (
CredentialManager→ credencialdatabase); se não encontradas, aborta. - Gera o backup do banco via
BackupDatabase, gravando o arquivo em um diretório temporário privado do servidor. - Envia o arquivo por
POSTmultipart (campofile) para acallbackUrl. Se a resposta não for200, registra erro e lança exceção. - Remove o arquivo temporário após o envio bem-sucedido.
Se o destino (callbackUrl) responder com status diferente de 200, o job lança exceção. Não há, no hardcode, lógica de retry própria nem limpeza do arquivo nesse caminho de erro — o tratamento depende do runner assíncrono do núcleo.
Verificar no runner assíncrono do ACCELERO se jobs que lançam exceção são reagendados/retentados e documentar o comportamento real em caso de falha de entrega.
Instalação
Após instalar/atualizar o plugin, o post_install.php executa:
Accelero::restartServices()— reinicia os serviços do ACCELERO para registrar a nova rota.- Limpeza do cache (
CacheInterface::clear()).
Não há migrations, permissões nem configuração inicial — o plugin não cria tabelas nem campos.
Casos de uso
Coletar um backup sob demanda a partir de uma rotina externa
- A rotina externa expõe um endpoint capaz de receber um upload multipart (campo
file). - A rotina chama
POST external/apibackup/createno ACCELERO com acallbackUrlapontando para esse endpoint. - O ACCELERO responde
200confirmando o enfileiramento. - De forma assíncrona, o ACCELERO gera o dump do banco e o envia para a
callbackUrl. - O endpoint externo recebe e armazena o arquivo de backup.
Boas práticas
- Destino confiável: a
callbackUrlrecebe um dump completo do banco — aponte apenas para endpoints controlados pela IONGRADE, idealmente em rede privada ou com transporte criptografado (HTTPS). - Endpoint receptor pronto antes de disparar: a rotina receptora precisa responder
200ao upload; caso contrário o job falha e o backup não é entregue. - Instalar sob demanda: por se tratar de uma rota que exporta o banco inteiro, mantenha o plugin instalado apenas enquanto a automação de backup estiver em uso.
Troubleshooting
A requisição retorna 400
Possíveis causas:
- Corpo não é um JSON válido.
- Campo
callbackUrlausente. callbackUrlnão é uma URL válida.
Solução: envie um JSON bem-formado contendo callbackUrl com uma URL válida.
Requisição retorna 200 mas o backup não chega ao destino
Possíveis causas:
- Credenciais do banco (
database) não encontradas peloCredentialManager— o job aborta antes de gerar o dump. - O endpoint da
callbackUrlnão respondeu200ao receber o arquivo. - Falha durante a geração do dump (
BackupDatabase).
Solução:
- Verifique os logs do ACCELERO — o job registra mensagens em cada etapa (
Starting backup process,Backup process completed successfully, ou os erros correspondentes). - Confirme que o endpoint receptor aceita upload multipart e responde
200. - Confirme que a credencial
databaseestá configurada no servidor.
Integração com outros módulos
- Rotas HTTP — como o plugin registra a rota
external/apibackup/create. - Asyncprocessor - geral — execução dos jobs assíncronos que geram e enviam o backup.
- LongRunningJobs — contexto sobre jobs de longa duração no ACCELERO.
Próximos Passos
- Rotas HTTP — entenda o roteamento HTTP do ACCELERO
- Asyncprocessor - geral — entenda o processamento assíncrono
- Logger de mensagens de facial — outra ferramenta interna sem UI