Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Поддержка этой версии GitHub Enterprise была прекращена 2023-03-15. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Недавно мы перенесли некоторые из документации по REST API. Если вам не удается найти нужный объект, попробуйте использовать новые страницы REST API Branches, Collaborators, Commits, Deploy Keys, Deployments, GitHub Pages, Releases, Metrics, Webhooks.

Веб-перехватчики репозитория

Используйте REST API для создания веб-перехватчиков для репозиториев и управления ими.

Сведения о веб-перехватчиках репозитория

Веб-перехватчики репозитория позволяют получать полезные данные HTTP-запроса POST всякий раз, когда в репозитории происходят определенные события. REST API можно использовать для управления веб-перехватчиками репозитория, организации и приложения. Вы можете перечислить доставку веб-перехватчиков для веб-перехватчика или получить и повторно получить отдельную доставку для веб-перехватчика, которую можно интегрировать во внешнее приложение или службу. Вы также можете использовать REST API для изменения конфигурации веб-перехватчика. Например, можно изменить URL-адрес полезных данных, тип контента, проверку SSL и секрет. Дополнительные сведения см. в разделе:

Если вы хотите настроить один веб-перехватчик для получения событий из всех репозиториев вашей организации, ознакомьтесь с нашей документацией по REST API для веб-перехватчиков организации.

Помимо REST API, GitHub также может служить центром PubSubHubbub для репозиториев.

Получение веб-перехватчиков

Для отправки полезных данных веб-перехватчика из GitHub Enterprise Server требуется доступ к серверу через Интернет. Также настоятельно рекомендуется использовать SSL для передачи зашифрованных полезных данных по протоколу HTTPS.

Заголовки веб-перехватчиков

GitHub Enterprise Server может отправлять несколько разных заголовков HTTP, которые позволяют различать типы событий и идентификаторы полезных данных. Дополнительные сведения см. разделе Заголовки веб-перехватчика.

PubSubHubbub

GitHub также может служить центром PubSubHubbub для всех репозиториев. PSHB — это простой протокол публикации и подписки, который позволяет серверам регистрироваться для получения обновлений при обновлении раздела. Обновления отправляются с HTTP-запросом POST на URL-адрес обратного вызова. URL-адреса разделов для отправок GitHub репозитория представлены в следующем формате:

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

Событие может быть любым доступным событием веб-перехватчика. Дополнительные сведения см. в разделе События и полезные данные веб-перехватчика.

Формат ответа

Формат по умолчанию — это то, что должны ожидать существующие перехватчики после получения: текста JSON, отправленного в качестве параметра payload в POST. Можно также указать получение необработанного текста JSON с заголовком Accept или расширением .json.

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

URL-адреса обратных вызовов

URL-адреса обратного вызова могут использовать протокол HTTP.

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

Подписка

Конечной точкой GitHub PubSubHubbub является http(s)://HOSTNAME/api/v3/hub, которая принимает следующие параметры.

ИмяТипОбязательноОписание
hub.modestringsubscribe или unsubscribe.
hub.topicstringУниверсальный код ресурса (URI) репозитория GitHub для подписки. Этот путь должен иметь следующий формат: /{owner}/{repo}/events/{event}.
hub.callbackstringУниверсальный код ресурса (URI) для получения обновлений раздела.
hub.secretstringОбщий секретный ключ, который создает хэш-подпись исходящего содержимого текста. Вы можете убедиться, что отправка поступила из GitHub, сравнивая необработанный текст запроса с содержимым заголовков X-Hub-Signature или X-Hub-Signature-256. Дополнительные сведения см. в документации по PubSubHubbub.

Пример запроса с 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"

Запросы PubSubHubbub можно отправлять несколько раз. Если перехватчик уже существует, он будет изменен в соответствии с запросом.