API Revenda White Label
Endpoints REST pra integrar sistemas próprios da revenda ao painel Katalog.
🔐 Autenticação
Todos os endpoints /api/revenda/* exigem JWT no header:
Authorization: Bearer <jwt-do-login>Pra obter o JWT: POST /api/revenda/autenticacao/entrar com {email, senha, revendaId?}.
🏪 Lojas (clientes da revenda)
GET/api/revenda/lojasLista lojas da revenda com filtro por status
POST/api/revenda/lojasCria loja + trial 7d. Body: { slug, nome, planoId, modoDebito, dono: {nome,email,senha} }
GET/api/revenda/lojas/:idDetalhe da loja
PATCH/api/revenda/lojas/:idEdita: nome/telefone/whatsapp/email/ativa/modoDebitoRevenda/planoId
DELETE/api/revenda/lojas/:id?estornarProporcional=true&motivo=...Cancela loja (soft delete) com estorno proporcional opcional
POST/api/revenda/lojas/:id/liberarDebita 1 mês do saldo e adiciona 30d à assinatura
POST/api/revenda/lojas/:id/impersonarRetorna JWT como ADMIN_LOJA (pra suporte)
POST/api/revenda/lojas/bulkBody: { acao, lojaIds[], planoId? }. Ações: liberar, suspender, reativar, trocarPlano
💰 Saldo & Recargas
GET/api/revenda/saldo/extrato?tipo=&de=&ate=&page=Extrato paginado + totalizadores
GET/api/revenda/recargasÚltimas 100 recargas
POST/api/revenda/recargasBody: { valorCentavos, metodo: 'PIX'|'CARTAO' }. Retorna QR/link
GET/api/revenda/recargas/:idPolling do status da recarga
DELETE/api/revenda/recargas/:idCancela recarga pendente
GET/api/revenda/auto-rechargeConfig atual de recarga automática
PATCH/api/revenda/auto-rechargeBody: { ativo, minReais, valorReais, cartaoRef }
📊 Planos & Preços
GET/api/revenda/planos-disponiveisPlanos ativos com o custo mensal que ESTA revenda paga
GET/api/revenda/planos-brandedTodos planos + branding próprio (nome/preço custom)
PATCH/api/revenda/planos-brandedBody: { planos: [...] }. Só DONO
👥 Usuários & Domínios
GET/POST/api/revenda/usuariosLista + convidar OPERADOR/DONO. Só DONO invita
PATCH/DELETE/api/revenda/usuarios/:idTrocar papel / desativar
GET/POST/api/revenda/dominiosLista domínios + cadastra CUSTOM (subdomínio grátis criado auto)
DELETE/api/revenda/dominios/:idRemove custom (também limpa tenant CloudFront)
POST/api/revenda/dominios/:id/verificarConsulta DNS e marca verificado
🎯 CRM & Comunicação
GET/api/revenda/leads?status=Leads recebidos pela landing pública
PATCH/DELETE/api/revenda/leads/:idAtualiza status/notas
GET/api/revenda/notificacoesSino do header (in-app)
PATCH/api/revenda/notificacoesBody: { id?, marcarTodasComoLidas? }
GET/POST/PATCH/api/revenda/mensagensChat com super-admin
GET/POST/api/revenda/anunciosAnúncios do super-admin (POST dispensa)
⚙️ Config, Compliance & LGPD
GET/api/revenda/perfilDados + saldo + branding
PATCH/api/revenda/perfilEdita branding/config. Só DONO
GET/POST/api/revenda/complianceEstado + aceite DPA/termos/2FA obrigatório
GET/api/revenda/indicacaoCódigo de indicação + link + contagem de sub-revendas
GET/api/revenda/export?tipo=lojas|extrato|recargasCSV pra download
GET/api/revenda/backup-lgpdJSON com TODOS os dados (LGPD Art. 20). Só DONO
🌐 Endpoints Públicos (sem auth)
GET/api/revenda/publico/:slugDados públicos da revenda + planos visíveis
POST/api/revenda/publico/:slug/leadEnvia lead pela landing pública
GET/api/revenda/slug-disponivel?slug=Checa se slug está livre no cadastro
📋 Códigos HTTP
200— sucesso400— validação (mensagem em{ erro: string })401— token ausente/inválido/expirado402— saldo insuficiente403— sem permissão (não é DONO, revenda não ATIVA)404— recurso não encontrado ou não pertence à revenda409— conflito (slug em uso, documento duplicado)429— rate limit excedido
🚦 Rate Limits
Por default: 300 req/min read, 300 req/min write, 10 req/min login. Requests autenticadas de revenda usam a chave por revendaId (não IP) — uma revenda não afeta a cota de outra.