You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Endpoints expostos pelo serviço api (FastAPI). Toda mutação publica um evento
canônico em stream:events (ver EVENTS.md). Docs interativas em
http://localhost:8000/docs quando o serviço está no ar.
Convenções:
Autenticação: Authorization: Bearer <token> obtido em /api/auth/login ou /api/onboarding/signup.
Com AUTH_REQUIRED=false (dev) as rotas funcionam sem token (caem na agência de dev).
agency_id é multi-tenant. No MVP ainda vem no corpo/query nas rotas de negócio (hardening: derivar do token).
Dinheiro em value_cents (inteiro). Datas em ISO-8601 UTC.
Tokens de social nunca são retornados em respostas.
platform ∈ {meta, tiktok, linkedin, youtube}. O token é cifrado em repouso (pgcrypto)
no insert. A publicação real é feita pelo worker-social lendo posts_queue.
Módulo E — BI (leitura só do ClickHouse)
Método
Rota
Retorna
GET
/api/bi/summary
?agency_id → KPIs (eventos, tipos, valor em deals, posts, msgs)
GET
/api/bi/timeseries
?agency_id&days → eventos por dia
GET
/api/bi/breakdown
?agency_id&limit → contagem por tipo de evento
GET
/api/bi/funnel
?agency_id → eventos crm.*
GET
/api/bi/health
liveness do ClickHouse
GET
/dashboard/
dashboard ECharts (HTML estático)
Módulo C — Mensageria (read-API + write-path por eventos)
O processamento é dirigido por eventos (POST /webhooks/meta → workers). A leitura para a
UI tem endpoints REST:
(Social já expõe GET /api/social-accounts e GET /api/posts.)
Pendente antes de produção
Autenticação/autorização: hoje a API confia no agency_id do payload. Antes de expor
publicamente: middleware de auth (OIDC/JWT) + resolução webhook → agency_id no ingest
(hoje cai no DEFAULT_AGENCY_ID).
Rate limit de entrada e validação de tamanho de mídia.