Esta página lista todos os endpoints HTTP que o sistema expõe externamente — webhooks, cron jobs, health checks. Para devs integrando, parceiros avaliando segurança, ou auditores verificando superfície de ataque.
Importante: não há API REST pública para terceiros consumirem dados de tenant. Todo acesso a dados clínicos é via interface web autenticada com sessão Supabase + defesa em 3 camadas. Os endpoints abaixo são apenas para integração com provedores (Asaas, Meta) e operação interna.
Endpoints de saúde para uso de uptime monitors externos (UptimeRobot, BetterUptime, etc.) e do nosso /status interno.
/api/healthRetorna 200 se a aplicação está respondendo e o banco está acessível. Não testa serviços externos (Asaas, OpenAI) — esses são monitorados separadamente em /status.
Resposta:
{ "status": "ok", "ts": "2026-05-03T12:00:00Z" }Endpoints que recebem notificações da Asaas quando pagamentos mudam de status. Idempotentes — recebem mesma notificação múltiplas vezes sem duplicar efeitos.
/api/webhooks/asaasWebhook Asaas do TENANT — chamado quando cliente do terapeuta paga PIX/cartão/boleto. Atualiza status em pagamentos da tabela e dispara confirmação WhatsApp/email.
Payload:
{
"event": "PAYMENT_CONFIRMED",
"payment": { "id": "pay_xxx", "value": 200.00, ... }
}Resposta:
{ "ok": true, "pagamento_id": "uuid" }💡 Configurado em https://www.asaas.com/webhooks no painel do tenant. URL deve ser exatamente esta com HTTPS.
/api/webhooks/asaas-masterWebhook Asaas da CONTA MASTER do Atenda — recebe pagamentos das mensalidades dos próprios tenants do SaaS. Diferente do anterior: cliente aqui é o terapeuta, não o paciente.
Payload:
Mesmo formato do /api/webhooks/asaasResposta:
{ "ok": true }Recebe notificações de mensagens (entrega, leitura, resposta) e validação de webhook do provider configurado pelo tenant.
/api/webhooks/whatsapp?hub.mode=subscribe&hub.verify_token=...Verificação de webhook (Meta/Cloud API). Comparado com WHATSAPP_VERIFY_TOKEN, retorna o hub.challenge se OK.
Resposta:
Echo do hub.challenge como text/plain./api/webhooks/whatsappRecebe eventos de mensagens (mensagem recebida do paciente, status de entrega/leitura, falha). Persiste em whatsapp_mensagens_recebidas e em whatsapp_envios_api conforme tipo.
💡 Mesmo endpoint serve provider 360dialog (BSP oficial Meta) e provider Evolution (self-hosted). O formato do payload é compatível porque Evolution emula o protocolo.
Endpoints chamados pelo browser do tenant para registrar/desregistrar subscription Web Push (VAPID).
/api/push/subscribeRegistra uma nova subscription Web Push para o tenant logado. Salva em push_subscriptions com endpoint, p256dh e auth keys.
Payload:
{
"endpoint": "https://fcm.googleapis.com/...",
"keys": { "p256dh": "...", "auth": "..." },
"userAgent": "Mozilla/5.0 ..."
}Resposta:
{ "ok": true, "id": "uuid" }/api/push/unsubscribeRemove subscription pelo endpoint. Chamado quando tenant desativa push em /configuracoes/notificacoes.
Payload:
{ "endpoint": "https://fcm.googleapis.com/..." }Jobs agendados (Vercel Cron) que rodam tarefas periódicas. Protegidos por header CRON_SECRET — não devem ser chamados externamente sem essa chave.
/api/cron/lembretesCria tarefas de lembrete (véspera + dia) para agendamentos das próximas 48h. Quando provider WhatsApp do tenant é 360dialog ou Evolution, envia automaticamente.
Resposta:
{ "criadas": 12, "enviadas": 8 }/api/cron/snapshotsGera snapshot LGPD de cada tenant ativo: dump JSON de todas as tabelas filtradas por tenant_id, sobe no Supabase Storage e (se configurado) replica para Backblaze B2.
Resposta:
{ "snapshots": 50, "erros": [] }/api/inngestEndpoint de funções Inngest (jobs assíncronos): processamento de áudio, geração de relatório IA, cleanup de sessões, alertas de trial.
Endpoints de manutenção e operações sensíveis. Protegidos por chave de admin separada do CRON_SECRET.
/api/admin/reencrypt-secretsRe-criptografa todas as credenciais de tenant (chaves Asaas, 360dialog, etc.) com a nova SECRET_ENCRYPTION_KEY. Usar após rotacionar a chave master.
💡 Operação pode levar minutos em produção. Processo é idempotente (re-rodar não corrompe dados já migrados).
Endpoints sem auth tradicional, mas protegidos por token único na URL.
/agenda.ics?token={token}Calendar feed iCalendar do tenant. Cada tenant tem token único permanente em tenant_configuracoes.agenda_ics_token. Importável no Google Calendar, Apple Calendar, Outlook como subscrição (atualiza automaticamente).
Resposta:
text/calendar (RFC 5545)/portal/{token}Portal do cliente (token-based, sem login). Cliente confirma agendamento, paga, vê histórico. Token gerado por cliente ou agendamento.
Por razões de sigilo profissional (dados clínicos), não oferecemos hoje uma API REST para terceiros lerem dados de cliente, agendamento ou prontuário do tenant. Se você tem caso de uso legítimo (ex: integração com sistema contábil), escreva para contato@meuconsultorio.app.br descrevendo o que precisa — avaliamos caso a caso.
Para portabilidade de dados (LGPD), use os snapshots exportáveis em /configuracoes/lgpd — geram CSV/JSON criptografados que você baixa diretamente.
Se você descobriu vulnerabilidade em algum endpoint, escreva para seguranca@meuconsultorio.app.br. Pesquisadores que reportam responsavelmente são reconhecidos publicamente após o fix (com sua permissão).