/painel/ (a raiz / redireciona para ele; o /dashboard/ antigo, da chave de API, continua). Ele tem duas entradas:
- Admin Glow: entra com
ZAPMEOW_ADMIN_KEY. Vê todos os tenants, cria clientes, gera links de acesso, gere sessões, canal do Backoffice, papéis, grupos e, com Cliente GHL, abre qualquer tenant para ver o que o cliente vê. - Cliente: entra com um link de acesso do próprio tenant. Conecta o GoHighLevel e o WhatsApp, ajusta a IA e o áudio, escolhe o modo das ações no CRM, monta o fluxo por estágio e aprova pedidos.
Link de acesso
O link é
https://<servidor>/painel/#t=<token>: o token vai no fragmento, que o navegador não envia ao servidor, e o painel o tira da barra de endereço ao abrir. GET /admin/tenants passa a trazer portalAccess (tem link ativo). GET /admin/sessions lista todas as sessões com o tenantId de cada uma.
/portal: a fatia do cliente
/portal/{rota} com X-Portal-Token (ou Authorization: Bearer) vira /admin/tenants/{tenant do token}/{rota}, depois de passar por uma lista fechada. O token só enxerga o próprio tenant; o caminho nunca carrega o id.
Fica só com a chave admin (
403 no portal): cofre de segredos, criar/alterar/apagar tenant, o decisor do fluxo (PUT /config/flow: a URL dele é chamada pelo servidor; o cliente só lê), o token de portal e as rotas de mensagem (sendText…).
Os mesmos caminhos /s/{sessão}/… existem na API admin, em /admin/tenants/{id}/s/{sessão}/…: o painel usa as duas com o mesmo código.
Instalação do GHL
Para o botão Conectar com GoHighLevel voltar ao painel, definaGHL_POST_INSTALL_URL=https://<servidor>/painel/. Sem GHL_CLIENT_ID/GHL_CLIENT_SECRET o painel oferece o token de integração privada (PIT) no lugar do OAuth.
O que o painel não faz (ainda)
- A calibragem de risco do passo 3 de Conectar é só orientação: o teto de envios é aplicado por quem envia (Backoffice ou fluxo), não pelo ZapMeow.
- Não há botão de ligação de teste:
POST /api/{sessão}/callpede a chave de API, que o painel não guarda. - O segredo e a URL do webhook do Convex são variáveis de ambiente e não aparecem no painel.