API e webhooks para integrar GitHub ao DevLog AI.
Esta referência cobre endpoints públicos, headers esperados, validação de assinatura e respostas principais para configurar ou automatizar integrações.
Receba eventos em um endpoint isolado por workspace.
POST /webhooks/github/{workspaceUuid}
Content-Type: application/json
X-GitHub-Event: push
X-GitHub-Delivery: 8189e9a8-43cc-11f1-8719-a9d9d4b439df
X-Hub-Signature-256: sha256=...
workspaceUuid
Identificador público do workspace, exibido no painel do usuário autenticado.
Secret
Configure o Secret do workspace no GitHub para gerar a assinatura HMAC SHA-256.
Payload
O corpo JSON é armazenado de forma sanitizada e aparece no histórico privado do workspace.
Uma assinatura inválida deve falhar antes de salvar o evento.
expected = "sha256=" + HMAC_SHA256(rawBody, workspaceSecret) valid = hash_equals(expected, X-Hub-Signature-256)
Se a assinatura estiver ausente ou não corresponder, o endpoint retorna 401 e o payload não entra no workspace.
200 OK
{"ok": true, "id": 123}Evento aceito, validado e salvo.
401 Unauthorized
{"error": "Assinatura GitHub invalida."}Secret incorreto ou assinatura ausente.
429 Too Many Requests
{"error": "Limite mensal de eventos atingido."}O workspace atingiu o limite do plano.
O caminho de produção usa GitHub App.
POST /webhooks/github-app X-GitHub-Event: push X-Hub-Signature-256: sha256=...
O endpoint do GitHub App valida o Secret global do app, encontra a instalação por installation.id e salva o evento no workspace vinculado.
Billing recebe notificações assinadas do provedor.
POST /webhooks/mercado-pago x-signature: ... x-request-id: ...
Esse endpoint processa pagamentos, assinaturas e faturas de uso quando o Secret do webhook está configurado.
Use HTTPS
Webhooks de produção devem apontar para o domínio oficial com TLS ativo.
Rotacione Secrets
Se houver suspeita de exposição, gere um novo Secret no painel e atualize o GitHub.
Evite dados desnecessários
Revise eventos e repositórios para não enviar payloads além do necessário.
Exemplos de código, nomes de cabeçalhos, nomes de eventos e assinaturas permanecem literais nos dois idiomas.