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

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.

// Obrigatório em todas as chamadas
x-api-key: bk_SUA_CHAVE_AQUI
// Obrigatório se configurado (Camada Extra)
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.

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('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.

GET /api/drive/view/:filename

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.

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.