Introdução
A API do BuhDrive permite que você integre o armazenamento de imagens e arquivos diretamente em suas aplicações. Com ela, você pode enviar imagens remotamente, listar seus uploads e obter links diretos para usar em seus apps.
Domínio Oficial do Sistema: https://buh2.infinitdaw.site
Este é o domínio onde a BuhApp está hospedada. Suas requisições de API devem ser enviadas para este endereço.
Nota: Não confunda este domínio com o seu próprio domínio (onde seu app está rodando), que deve ser cadastrado na seção de "Domínios Permitidos".
V BuhApp Vault (Cofre de Segredos)
O maior risco de sites estáticos é expor chaves sensíveis (como o Token do Mercado Pago ou Stripe) no código JavaScript. O **BuhApp Vault** resolve isso permitindo que você guarde qualquer variável de ambiente em nossos servidores seguros.
Sem Exposição
Suas chaves ficam guardadas no banco de dados da BuhApp e nunca são enviadas para o navegador do seu cliente.
Variáveis Ilimitadas
Você pode salvar chaves de bancos de dados, integrações com Firebase, APIs de frete ou qualquer segredo personalizado.
Como usar o Vault no seu código:
// Em vez de colocar sua KEY real no JS, voce usa o endpoint de Functions:
fetch('https://buh2.infinitdaw.site/api/functions/pay', {
method: 'POST',
headers: { 'x-api-key': 'SUA_CHAVE_DE_APLICATIVO' },
body: JSON.stringify({ produto: 'Exemplo' })
})
O servidor receberá a chamada, buscará a MP_ACCESS_TOKEN no Vault e fará a ponte segura com o Mercado Pago por você.
Esta documentação detalha os endpoints disponíveis, o formato das requisições e como garantir que suas chamadas sejam seguras.
Autenticação
Para integrações externas, você deve usar o header x-api-key com sua chave gerada no painel. A API também suporta autenticação via Authorization: Bearer para compatibilidade.
x-api-key: bk_SUA_CHAVE_AQUI
x-api-secret: SUA_SENHA_AQUI
Segurança de Domínio: Além da chave, a API valida o domínio de origem (Origin/Referer). O sistema ignora protocolos (http/https). Se você cadastrar meusite.com, a API aceitará chamadas tanto de http://meusite.com quanto de https://meusite.com e seus subdomínios.
Upload Remoto (Múltiplos Arquivos)
Permite enviar até 10 arquivos simultaneamente. Formatos suportados: Imagens, Áudios e Vídeos.
Corpo (Multipart/Form-Data):
files: Array de um ou mais arquivos (até 10 por vez).
Exemplo JS (Fetch):
const formData = new FormData(); formData.append('files', file1); formData.append('files', file2); fetch('https://buh2.infinitdaw.site/api/drive/remote-upload', { method: 'POST', headers: { 'x-api-key': 'SUA_CHAVE' }, body: formData }) .then(res => res.json()) .then(data => console.log(data));
Resposta Sucesso:
{
"success": true,
"uploaded": [
{
"id": "uuid",
"url": "https://buh2.infinitdaw.site/api/drive/view/buh_123.png",
"name": "image.png",
"type": "image/png"
}
]
}
Visualização e Proteção
Os arquivos do Drive não são expostos publicamente em pastas estáticas. Todo acesso é mediado por uma rota de visualização segura que valida domínios e senhas.
Como acessar:
- Embed em sites autorizados: Se o domínio estiver na lista de sua chave, a imagem carregará em
<img src="...">. - Acesso Direto / Browser: Caso não tenha referer autorizado, passe a senha via query string:
.../api/drive/view/ARQUIVO.png?pwd=SUA_SENHA - Apps Mobile / SDK: Envie o header
x-api-secret.
Listar Arquivos
Retorna os arquivos enviados pelo usuário autenticado.
[
{
"id": "uuid",
"originalName": "audio.mp3",
"fileName": "buh_123.mp3",
"fileSize": 2048576,
"mimeType": "audio/mpeg",
"created_at": "..."
}
]
Excluir Arquivos
Remove permanentemente um arquivo do servidor.
Limites e Quotas
Os limites dependem do seu plano ativo:
| Plano | Capacidade Total | Qtd. Arquivos |
|---|---|---|
| LITE (Grátis) | 50 MB | 10 |
| BASIC | 500 MB | 100 |
| PRO | 2 GB | 1000 |
Resolução de Erros Comuns
Este erro ocorre quando o banco de dados do servidor ainda não foi atualizado com as novas tabelas do BuhDrive.
Como Resolver:
- O sistema agora possui um script de auto-inicialização que corrige isso ao iniciar.
- Reinicie o servidor: Apenas pare e inicie o processo novamente (ex:
pm2 restart all). - Ao iniciar, o arquivo
db.jsverificará a existência das tabelasdrive_filesedrive_api_keyse as criará automaticamente se estiverem faltando. - Verifique os logs de inicialização para confirmar a mensagem:
SQLite Database Initialized.
database.sqlite tem permissões de escrita para o usuário que executa o Node.js.