Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Recentemente, movemos algumas das documentações da API REST. Se você não conseguir encontrar o que está procurando, tente as novas páginas da API REST Branches, Collaborators, Commits, Deploy Keys, Deployments, GitHub Pages, Releases, Metrics, Webhooks}.

Webhooks do repositório

Use a API REST para criar e gerenciar webhooks para seus repositórios.

Sobre webhooks de repositório

Os webhooks de repositório permitem que você receba conteúdo POST HTTP sempre que determinados eventos acontecem em um repositório. Você pode usar a API REST para gerenciar o repositório, a organização e os webhooks de aplicativo. Você pode listar entregas de webhook para um webhook ou obter e reenviar uma entrega individual para um webhook, que pode ser integrado a um aplicativo ou serviço externo. Você também pode usar a API REST para alterar a configuração do webhook. Por exemplo, você pode modificar a URL da carga, tipo de conteúdo, verificação de SSL e segredo. Para obter mais informações, consulte:

Se você deseja configurar um único webhook para receber eventos de todos os repositórios de sua organização, confira nossa documentação da API REST para Webhooks de organização.

Além da API REST, o GitHub também pode servir como um hub PubSubHubbub para repositórios.

Receber Webhooks

Para que GitHub Enterprise Server envie cargas de webhook, seu servidor deve ser acessível pela internet. É altamente recomendável o uso de SSL para que possamos enviar cargas criptografadas por HTTPS.

Cabeçalhos de webhook

GitHub Enterprise Server enviará ao longo de vários cabeçalhos de HTTP para diferenciar entre tipos de evento e identificadores de carga. Confira Cabeçalhos de webhook para ver detalhes.

PubSubHubbub

O GitHub também pode servir como um hub PubSubHubbub para todos os repositórios. O PSHB é um simples protocolo de publicação/assinatura que permite o registro de servidores para receber atualizações quando um tópico é atualizado. As atualizações são enviadas com uma solicitação HTTP do tipo POST para uma URL de chamada de retorno. As URLs dos tópicos dos pushes de um repositório do GitHub estão neste formato:

https://github.com/{owner}/{repo}/events/{event}

O evento pode ser qualquer evento de webhook disponível. Para obter mais informações, confira "Eventos e cargas de webhook".

Formato da resposta

O formato padrão é o que os ganchos de pós-recebimento existentes devem esperar: um corpo JSON enviado como o parâmetro payload em um POST. Você também pode especificar o recebimento do corpo JSON bruto com um cabeçalho Accept ou uma extensão .json.

Accept: application/json
https://github.com/{owner}/{repo}/events/push.json

URLs de chamada de retorno

As URLs de retorno de chamada podem usar o protocolo HTTP.

# Send updates to a PostBin bin
https://www.toptal.com/developers/postbin/123

Assinar

O ponto de extremidade do GitHub PubSubHubbub é http(s)://HOSTNAME/api/v3/hub e usa os parâmetros a seguir.

NomeTipoObrigatórioDescrição
hub.modestringsubscribe ou unsubscribe.
hub.topicstringA URI do repositório do GitHub a ser assinada. O caminho precisa estar no formato /{owner}/{repo}/events/{event}.
hub.callbackstringA URI para receber as atualizações do tópico.
hub.secretstringUma chave de segredo compartilhado que gera uma assinatura de hash do conteúdo de saída do texto. Você pode verificar se um push veio do GitHub comparando o corpo bruto da solicitação com o conteúdo de X-Hub-Signature ou X-Hub-Signature-256 cabeçalhos. Veja a documentação do PubSubHubbub para obter mais detalhes.

Veja a seguinte solicitação de exemplo com curl:

curl -u "user" -i \
  http(s)://HOSTNAME/api/v3/hub \
  -F "hub.mode=subscribe" \
  -F "hub.topic=https://github.com/{owner}/{repo}/events/push" \
  -F "hub.callback=https://www.toptal.com/developers/postbin/123"

Solicitações do PubSubHubbub podem ser enviadas várias vezes. Se o hook já existe, ele será modificado de acordo com a solicitação.