GitHub can also serve as a PubSubHubbub hub for all repositories. PSHB is a simple publish/subscribe protocol that lets servers register to receive updates when a topic is updated. The updates are sent with an HTTP POST request to a callback URL. Topic URLs for a GitHub repository's pushes are in this format:
https://github.com/:owner/:repo/events/:event
The event can be any event string that is listed at the top of this document.
The default format is what existing post-receive hooks should
expect: A JSON body sent as the payload parameter in a
POST. You can also specify to receive the raw JSON body with either an
Accept header, or a .json extension.
Accept: application/json
https://github.com/:owner/:repo/events/push.json
Callback URLs can use the http:// protocol.
# Send updates to postbin.org
http://postbin.org/123
The GitHub PubSubHubbub endpoint is: https://api.github.com/hub. A successful request with curl looks like:
curl -u "user" -i \ https://api.github.com/hub \ -F "hub.mode=subscribe" \ -F "hub.topic=https://github.com/:owner/:repo/events/push" \ -F "hub.callback=http://postbin.org/123"
PubSubHubbub requests can be sent multiple times. If the hook already exists, it will be modified according to the request.
| Name | Type | Description |
|---|---|---|
hub.mode |
string |
Required. Either subscribe or unsubscribe. |
hub.topic |
string |
Required. The URI of the GitHub repository to subscribe to. The path must be in the format of /:owner/:repo/events/:event. |
hub.callback |
string |
The URI to receive the updates to the topic. |
hub.secret |
string |
A shared secret key that generates a SHA1 HMAC of the outgoing body content. You can verify a push came from GitHub by comparing the raw request body with the contents of the X-Hub-Signature header. You can see the PubSubHubbub documentation for more details. |