Changelog
Política de versionamento da API Pública V1.
Regras
- Mudanças incompatíveis entram em uma nova versão de URL (
/v2,/v3...). A V1 permanece disponível por pelo menos 12 meses após/v2sair. - Mudanças compatíveis podem entrar na V1 a qualquer momento:
- novos campos anuláveis em resposta;
- novos códigos de erro documentados;
- novas rotas;
- novos parâmetros opcionais em query.
- Mudanças não documentadas são consideradas bug e corrigidas sem aviso prévio.
- Cada release sai como entry neste arquivo e como tag Git.
2026-08-19 — Guia público
Guia em HTML em /docs, no formato de documentação de produto (menu, início rápido, recursos e referência das 63 rotas).
2026-08-12 — V1.0.0 (lançamento controlado)
Lançamento da V1 em piloto com duas clínicas. Escopos e recursos iniciais.
Adicionado
- Account: leitura e escrita dos dados cadastrais allowlistados.
- Subscription: leitura do plano/status/período.
- Users: lista, convite (somente
usuario), rename, desativa/reativa. - Contacts: lista paginada, detalhe, criar, editar, excluir (com scope separado), mover de etapa, pausar/retomar follow-up.
- Kanban: CRUD de etapas, reordenação, exclusão com destino.
- Follow-ups: campanhas e templates CRUD, arquivamento, ativação/pausa separadas; execuções e métricas somente leitura.
- Ads: contatos por
leads.anuncio, CRUD de regrascustom_ads. - Links: CRUD de
custom_linksetracking_links, contatos e métricas de link. - Tags: CRUD, substituição em transação, vínculo por contato.
- Services: CRUD com desativação lógica.
- Appointments: CRUD com cancelamento lógico.
- 63 operações OpenAPI 3.1 com
clinicApiKeyex-required-scope. - Edge Functions:
clinic-api-keys(gestão JWT) epublic-api-v1(kernel autenticado). - Frontend: aba API em Configurações, só para perfil
clinicaativo. - Headers de rate limit (
X-RateLimit-*,Retry-After) eX-Request-Id.
Limitações conhecidas
- Atribuição Meta aparece com campos
nullenquanto a ingestão CTWA não está validada em produção. Fonte atual éleads.anuncio. - Sem upload de arquivos. Mídia de follow-up é somente leitura.
- Sem envio de WhatsApp/Instagram pela API.
- Sem gerenciar Stripe, plano, webhook ou credenciais de integração.
Segurança
- Credenciais hash-only (SHA-256 + prefixo), scopes explícitos, expiração 1–365 dias.
contacts:deleteefollowups:executeexigem confirmação extra.- Rate limit: 120 read/min, 30 write/min, 10 key-management/min por credencial.
- Auditoria de mutação em
activity_logs(açãoapi_*, retenção 30 dias). - Idempotência 24h, body persistido até 2 KiB.
- Funções críticas legadas (
test_rls_bypass*,update_clinica_evolution_key,upsert_lead, rotinas administrativas) tiveramEXECUTErevogado deanon/authenticated. - Todas as RPCs
api_v1_*sãoSECURITY DEFINER,SET search_path = public, pg_temp, eEXECUTEexclusivo deservice_role.
Pendências operacionais
- Instalar Docker/WSL para validação local das migrations (Tasks 2-11 não rodaram
db reset --localno Windows do desenvolvedor). - Alinhar 8 migrations remotas que constam aplicadas mas não existem no worktree antes de qualquer
db pushde produção. - Piloto de 7 dias com 2 clínicas, depois expansão gradual conforme pré-flight.
2026-08-12 — Atualização da documentação (pós-Task 12)
Adicionado
docs/api/authentication.md,errors.md,pagination-idempotency.md,resources.md,security-and-lgpd.mde este changelog.scripts/publish-public-api-contract.mjs: publicadocs/api/openapi.jsonempublic/api/openapi.jsondurante o build, com validação anti-drift prévia.src/components/settings/api/ApiQuickstartCard.tsx: card de quickstart dentro da aba API com exemplos PowerShell e Node, aviso server-to-server e botão de download do OpenAPI.- Script
npm run api:docs:publishencadeado emnpm run build. /public/api/openapi.jsonno.gitignore(asset reproduzível, não segunda fonte versionada).scripts/test-public-api-smoke.ps1: smoke test server-to-server que validaX-Request-Idsem imprimir a chave.
Alterado
scripts/validate-public-api-contract.mjsrejeita nomes reservados a segredos no contrato publicado.docs/api/README.mdganhou índice dos guias detalhados.docs/security/public-api-preflight.mdganhou seção "Status após implementação" com gates atualizados.
Pendência
- Ampliar o validador para exigir
X-Request-Idem responses eIdempotency-Keyem mutações após regenerar oopenapi.jsoncom esses headers por operação.