Contrato da API
Respostas de sucesso incluem data; erros incluem error e code. Autenticação por Authorization: Bearer Clerk JWT.
- GET /api/health — público, status 200
- GET /api/me — perfil da conta autenticada, 200/401/403
- PATCH /api/me — displayName entre 2 e 80 caracteres; onboardingCompleted opcional, 200/400/401/403
- POST /api/webhooks/clerk — assinatura Svix obrigatória e processamento idempotente
- GET /api/cron/health — Bearer CRON_SECRET obrigatório
- POST /api/uploads — JPEG/PNG/WebP até 5 MiB; retorna URL assinada
- POST /api/push — registra uma subscription Web Push para a conta autenticada
- DELETE /api/push — desativa uma subscription da conta autenticada