Webhooks
Listar webhooks
Paginação keyset. Filtros são query params tipados (`campo=valor`, `campo[op]=valor`); filtros desconhecidos, campos não ordenáveis e valores malformados são rejeitados com 400 `validation_failed`.
Criar webhook
Criar webhook
Criar ou atualizar webhook
Upsert. Recebe o mesmo corpo do POST mais as chaves de busca `id` e `external_id`, casadas nessa ordem. Um match é atualizado in place e responde 200 — campos ausentes do corpo mantêm o valor armazenado. Sem chave, ou sem match, cria o webhook exatamente como o POST faria e responde 201.
Obter webhook
Aceita tanto o UUID interno quanto o `external_id` do recurso.
Atualizar webhook
Aceita tanto o UUID interno quanto o `external_id` do recurso.
Excluir webhook
Aceita tanto o UUID interno quanto o `external_id` do recurso.
Enviar um evento webhook.ping
Aceita tanto o UUID interno quanto o `external_id` do recurso.
Rotacionar o signing secret
Substitui o signing secret e retorna o novo valor **uma única vez**. Por padrão o secret anterior continua assinando entregas por 24 horas (`previous_secret_grace_hours`), período em que cada entrega carrega uma assinatura por secret, para que o receptor troque a chave sem perder eventos. Informe `0` para revogar o secret anterior imediatamente (secret vazado). Aceita tanto o UUID interno quanto o `external_id` do recurso.