Documentação Oficial

BuhDrive API

v1.0.0
Public Access

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 e Segurança

Para realizar requisições à API, você deve utilizar sua Chave de API. Se você configurou uma Senha/Segredo para sua chave no painel, ela também será obrigatória para visualização direta ou caso o domínio não esteja na lista permitida.

// Obrigatório em todas as chamadas
x-api-key: bk_SUA_CHAVE_AQUI
// Obrigatório se configurado
x-api-secret: SUA_SENHA_AQUI

Segurança de Domínio: Além da chave, a API valida o Referer ou Origin. O sistema aceita o domínio exato ou subdomínios (ex: meusite.com permite app.meusite.com).

Importante: Foram removidas permissões genéricas por inclusão de string para evitar falhas graves de segurança. Agora, a correspondência deve ser exata ou por sufixo de domínio.

Upload Remoto (Múltiplos Arquivos)

Permite enviar até 10 arquivos simultaneamente. Formatos suportados: Imagens, Áudios e Vídeos.

POST /api/drive/remote-upload

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('/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://...", "name": "image.png", "type": "image/png" } ] }

Visualização e Proteção

Os arquivos do Drive não são mais expostos publicamente na pasta /uploads/drive/. Todo acesso agora é mediado por uma rota de visualização segura.

GET /api/drive/view/:filename

Como acessar:

  • Embed em sites autorizados: Se o domínio estiver na lista de domínios permitidos da sua chave, a imagem carregará normalmente em <img src="...">.
  • Acesso Direto / Browser: Para abrir o link diretamente no navegador (sem Referer de site autorizado), você deve passar a senha via query string:
    https://.../api/drive/view/ARQUIVO.png?pwd=SUA_SENHA
  • Apps Mobile / SDK: Envie o header x-api-secret na requisição.
// Exemplo de URL gerada no upload { "url": "https://buh2.infinitdaw.site/api/drive/view/buh_123456.jpg" }

Listar Arquivos

Retorna os arquivos enviados pelo usuário autenticado.

GET /api/drive/files
[ { "id": "uuid", "originalName": "audio.mp3", "fileName": "buh_123.mp3", "fileSize": 2048576, "mimeType": "audio/mpeg", "created_at": "..." } ]

Excluir Arquivos

Remove permanentemente um arquivo do servidor.

DELETE /api/drive/files/:id

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

Error: SQLITE_ERROR: no such table: drive_files

Este erro ocorre quando o banco de dados do servidor ainda não foi atualizado com as novas tabelas do BuhDrive.

Como Resolver:

  1. O sistema agora possui um script de auto-inicialização que corrige isso ao iniciar.
  2. Reinicie o servidor: Apenas pare e inicie o processo novamente (ex: pm2 restart all).
  3. Ao iniciar, o arquivo db.js verificará a existência das tabelas drive_files e drive_api_keys e as criará automaticamente se estiverem faltando.
  4. Verifique os logs de inicialização para confirmar a mensagem: SQLite Database Initialized.
Dica: Se o erro persistir após o restart, verifique se o arquivo database.sqlite tem permissões de escrita para o usuário que executa o Node.js.