Documentação / API

API de contactos (leads)

O formulário da landing envia pedidos para o mesmo host, sob o prefixo /api/. Em produção o nginx encaminha estes pedidos para um serviço Node à escuta em 127.0.0.1 (ver Deploy). Em desenvolvimento local, o Vite faz proxy de /api para 127.0.0.1:3847.

GET /api/health

Verificação simples de disponibilidade do serviço.

  • 200 — corpo JSON: {"ok":true}
curl -sS https://bitreport.pt/api/health

POST /api/leads

Cria um registo de lead em SQLite. Cabeçalho obrigatório: Content-Type: application/json.

Corpo JSON

Campo Obrigatório Notas
nameSimMáx. 200 caracteres (após trim)
emailSimFormato email simples; normalizado para minúsculas
companyNãoMáx. 200 caracteres
messageNãoMáx. 5000 caracteres
_company_extraNãoHoneypot anti-spam: se não vazio, resposta 200 sem gravar

Respostas de sucesso

  • 201 — lead criado: {"ok":true,"id":<número>}
  • 200 — honeypot preenchido (silencioso): {"ok":true}

Erros (JSON error)

HTTP error Significado
400invalid_jsonCorpo não é JSON válido
400name_requiredNome em falta
400email_invalidEmail em falta ou inválido
413payload_too_largeCorpo > 32 KiB
429rate_limitedDemasiados pedidos por IP (janela deslizante)
404not_foundMétodo ou caminho não suportado
500server_errorFalha interna (ex.: base de dados)

Limitação de taxa

Por endereço IP (primeiro valor de X-Forwarded-For quando presente, caso contrário o IP da ligação). Por defeito: 30 pedidos por 60 segundos à rota POST /api/leads.

OPTIONS /api/leads

Resposta 204 com cabeçalhos CORS limitados (POST, OPTIONS; Content-Type).

Exemplo

curl -sS -X POST https://bitreport.pt/api/leads \
  -H 'Content-Type: application/json' \
  -d '{"name":"Demo","email":"[email protected]","company":"ACME","message":"Olá","_company_extra":""}'

Código-fonte (Gitea)

Os únicos caminhos expostos por este serviço são os documentados acima. A implementação vive no repositório bitreport-website (sem outros endpoints públicos inventados aqui).

Variáveis de ambiente (serviço Node)

Variável Predefinição Descrição
LEADS_API_PORT / PORT3847Porta em 127.0.0.1
LEADS_DB_PATHdata/leads.sqlite no repoCaminho absoluto recomendado em produção

← Índice da documentação