Serviço Node/Express que o portal usa para ações que precisam de segredos (token Evolution, senha SMTP). Lê os segredos do Supabase com a service role key (nunca expostos ao navegador).
- WhatsApp (Evolution): criar instância, obter QR, ver status, desconectar.
- E-mail: enviar um rascunho de outreach via o SMTP cadastrado (respeita a constância de canal por lead).
GET /healthPOST /wa/:id/create— cria a instância na EvolutionGET /wa/:id/qr— retorna QR (base64) para conectarGET /wa/:id/status— estado da conexão (atualiza no banco)POST /wa/:id/logout— desconectaPOST /send/email— body{ "outreach_id": "..." }
Todas (exceto /health) exigem Authorization: Bearer <token do usuário logado> e papel admin/equipe.
- Suba este repositório no GitHub (ex:
funilvivo-api). - EasyPanel → projeto
funilvivo→ + Service → App → nomeapi. - Source: GitHub → repo
funilvivo-api, branchmain. Build: Dockerfile. - Environment (aba do serviço) — adicione:
SUPABASE_URL= https://myamzjypptifoxulahvo.supabase.coSUPABASE_SERVICE_ROLE_KEY= (copie em Supabase → Project Settings → API → service_role; é SECRETA)ALLOWED_ORIGINS= https://app.funilvivo.com.brPORT= 3000
- Deploy.
- Domains → adicione
api.funilvivo.com.br(porta 3000). - Cloudflare → DNS
api→ IP do servidor → proxy ligado → SSL Full.
Teste: abra https://api.funilvivo.com.br/health → deve responder {"ok":true}.
⚠️ ASUPABASE_SERVICE_ROLE_KEYdá acesso total ao banco. Ela vive só aqui, nas variáveis de ambiente do servidor — nunca no portal nem no GitHub.