Webhooks
A CATDI pode notificar sistemas externos automaticamente quando eventos significativos ocorrem na plataforma.
Envelope do payload
{
"id": "9c3b6f2e-....-....-....-............",
"type": "enrollment.created",
"version": 1,
"occurred_at": "2026-07-26T10:15:00+00:00",
"payload": { "...": "dados específicos do evento" }
}
id é estável em todas as tentativas de reenvio do mesmo
evento — use-o para deduplicar. O payload é gerado uma única vez e nunca regenerado entre tentativas,
pelo que uma assinatura calculada uma vez é válida para todas as tentativas dessa entrega.
Verificação de assinatura
X-CATDI-Signature | HMAC-SHA256 (hex) do corpo do pedido, usando o segredo do seu endpoint |
X-CATDI-Event | O tipo do evento |
X-CATDI-Version | A versão do envelope |
X-CATDI-Event-Id | O identificador do evento |
Calcule hash_hmac('sha256', $corpo, $segredo) e compare-o
(em tempo constante) com X-CATDI-Signature — sobre os
bytes exatos do corpo do pedido, não uma cópia reserializada.
Reenvio
Uma entrega que não recebe uma resposta 2xx é reenviada
automaticamente — 5 tentativas no total, com atraso crescente (10s, 60s, 5m, 15m, 1h). Após todas as
tentativas se esgotarem, a entrega fica permanentemente marcada como falhada e não é reenviada novamente.
| Nova matrícula Um estudante é matriculado numa turma. | enrollment.created |
| Matrícula concluída Uma matrícula é marcada como concluída ou desistência. | enrollment.completed |
| Matrícula promovida da lista de espera Uma matrícula em lista de espera é promovida a confirmada. | enrollment.promoted |
| Certificado emitido Um certificado de conclusão é emitido. | certificate.issued |
| Curso publicado Um curso transita de não publicado para publicado. | course.published |
| Curso arquivado Um curso transita para o estado arquivado. | course.archived |
| Inscrições da turma abertas Uma turma transita para o estado de inscrições abertas. | course_intake.registration_opened |
| Turma concluída Uma turma transita para o estado concluída. | course_intake.completed |
| Turma cancelada Uma turma transita para o estado cancelada. | course_intake.cancelled |
| Importação de candidaturas concluída Uma importação de candidaturas em lote (CSV) termina. | course_application.imported |
| Exportação concluída Uma exportação em segundo plano (estudantes, matrículas ou candidaturas) termina. | export.completed |
| Trabalho falhou Um trabalho em segundo plano (importação ou exportação) falha. | job.failed |
| Alerta operacional enviado Um alerta operacional (agendamento falhado, fila estagnada, inatividade do agendador) é enviado aos administradores. | alert.sent |