此版本的 GitHub Enterprise 已停止服务 2022-10-12. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持。
组织 web 挂钩
关于组织 Webhook API
利用组织 Webhook 可在组织内发生特定事件时接收 HTTP POST 有效负载。 利用 Webhook REST API,� 可以管理存储库、组织和应用 Webhook。 也可以使用 REST API 来更改 Webhook 的配置。 例如,您可以修改有效负载 URL、内容类型、SSL 验证和机密。 有关详细信息,请参阅:
有关可以订阅的操作的详细信息,请参阅“GitHub 事件类型”。
作用域和限制
对组织 web 挂钩的所有操作都需要经过身份验证的用户是所管理组织的管理员。 此外,OAuth � �记需要 admin:org_hook 作用域。 有关详细信息,请参阅“OAuth 应用的作用域”。
为了保护 web 挂钩配置中可能存在的敏感数据,我们还强制实施以下访问控制规则:
- OAuth 应用程序� 法列出、查看或编辑不是它们创建的 web 挂钩。
- 用户� 法列出、查看或编辑由 OAuth 应用程序创建的 web 挂钩。
接收 web 挂钩
为了让 GitHub Enterprise Server 发送 web 挂钩有效负载,您的服务器需要能够从 Internet 访问。 我们还强烈建议使用 SSL,以便我们可以通过 HTTPS 发送� 密的有效负载。
有关更多最佳做法,请参阅我们的指南。
Web 挂钩� �头
GitHub Enterprise Server 发送时将附带� 个 HTTP � �头,以区分事件类型和有效负载� �识符。 有关详细信息,请参阅 Webhook� �头。
List organization webhooks
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
| Query parameters |
| Name, Type, Description |
per_pageintegerThe number of results per page (max 100). Default: |
pageintegerPage number of the results to fetch. Default: |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
404 | Resource not found |
代� �示例
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooksResponse
Status: 200[
{
"id": 1,
"url": "https://api.github.com/orgs/octocat/hooks/1",
"ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings",
"deliveries_url": "https://api.github.com/orgs/octocat/hooks/1/deliveries",
"name": "web",
"events": [
"push",
"pull_request"
],
"active": true,
"config": {
"url": "http://example.com",
"content_type": "json"
},
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"type": "Organization"
}
]Create an organization webhook
Here's how you can create a hook that posts payloads in JSON format:
参数
| Headers | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Name, Type, Description | ||||||||||
acceptstringSetting to | ||||||||||
| Path parameters | ||||||||||
| Name, Type, Description | ||||||||||
orgstringRequiredThe organization name. The name is not case sensitive. | ||||||||||
| Body parameters | ||||||||||
| Name, Type, Description | ||||||||||
namestringRequiredMust be passed as "web". | ||||||||||
configobjectRequiredKey/value pairs to provide settings for this webhook. These are defined below. | ||||||||||
Properties of config
| ||||||||||
eventsarray of stringsDetermines what events the hook is triggered for. Set to Default: | ||||||||||
activebooleanDetermines if notifications are sent when the webhook is triggered. Set to Default: | ||||||||||
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
201 | Created |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
代� �示例
curl \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks \
-d '{"name":"web","active":true,"events":["push","pull_request"],"config":{"url":"http://example.com/webhook","content_type":"json"}}'Response
Status: 201{
"id": 1,
"url": "https://api.github.com/orgs/octocat/hooks/1",
"ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings",
"deliveries_url": "https://api.github.com/orgs/octocat/hooks/1/deliveries",
"name": "web",
"events": [
"push",
"pull_request"
],
"active": true,
"config": {
"url": "http://example.com",
"content_type": "json"
},
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"type": "Organization"
}Get an organization webhook
Returns a webhook configured in an organization. To get only the webhook config properties, see "Get a webhook configuration for an organization."
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
404 | Resource not found |
代� �示例
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_IDResponse
Status: 200{
"id": 1,
"url": "https://api.github.com/orgs/octocat/hooks/1",
"ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings",
"deliveries_url": "https://api.github.com/orgs/octocat/hooks/1/deliveries",
"name": "web",
"events": [
"push",
"pull_request"
],
"active": true,
"config": {
"url": "http://example.com",
"content_type": "json"
},
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"type": "Organization"
}Update an organization webhook
Updates a webhook configured in an organization. When you update a webhook, the secret will be overwritten. If you previously had a secret set, you must provide the same secret or set a new secret or the secret will be removed. If you are only updating individual webhook config properties, use "Update a webhook configuration for an organization."
参数
| Headers | ||||||||
|---|---|---|---|---|---|---|---|---|
| Name, Type, Description | ||||||||
acceptstringSetting to | ||||||||
| Path parameters | ||||||||
| Name, Type, Description | ||||||||
orgstringRequiredThe organization name. The name is not case sensitive. | ||||||||
hook_idintegerRequiredThe unique identifier of the hook. | ||||||||
| Body parameters | ||||||||
| Name, Type, Description | ||||||||
configobjectKey/value pairs to provide settings for this webhook. These are defined below. | ||||||||
Properties of config
| ||||||||
eventsarray of stringsDetermines what events the hook is triggered for. Default: | ||||||||
activebooleanDetermines if notifications are sent when the webhook is triggered. Set to Default: | ||||||||
namestring | ||||||||
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
404 | Resource not found |
422 | Validation failed, or the endpoint has been spammed. |
代� �示例
curl \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID \
-d '{"active":true,"events":["pull_request"]}'Response
Status: 200{
"id": 1,
"url": "https://api.github.com/orgs/octocat/hooks/1",
"ping_url": "https://api.github.com/orgs/octocat/hooks/1/pings",
"deliveries_url": "https://api.github.com/repos/octocat/Hello-World/hooks/12345678/deliveries",
"name": "web",
"events": [
"pull_request"
],
"active": true,
"config": {
"url": "http://example.com",
"content_type": "json"
},
"updated_at": "2011-09-06T20:39:23Z",
"created_at": "2011-09-06T17:26:27Z",
"type": "Organization"
}Delete an organization webhook
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
204 | No Content |
404 | Resource not found |
代� �示例
curl \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_IDResponse
Status: 204Get a webhook configuration for an organization
Returns the webhook configuration for an organization. To get more information about the webhook, including the active state and events, use "Get an organization webhook ."
Access tokens must have the admin:org_hook scope, and GitHub Apps must have the organization_hooks:read permission.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
代� �示例
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/configResponse
Status: 200{
"content_type": "json",
"insecure_ssl": "0",
"secret": "********",
"url": "https://example.com/webhook"
}Update a webhook configuration for an organization
Updates the webhook configuration for an organization. To update more information about the webhook, including the active state and events, use "Update an organization webhook ."
Access tokens must have the admin:org_hook scope, and GitHub Apps must have the organization_hooks:write permission.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
| Body parameters |
| Name, Type, Description |
urlstringThe URL to which the payloads will be delivered. |
content_typestringThe media type used to serialize the payloads. Supported values include |
secretstringIf provided, the |
insecure_sslstring or numberDetermines whether the SSL certificate of the host for |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
代� �示例
curl \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/config \
-d '{"url":"http://example.com/webhook","content_type":"json","insecure_ssl":"0","secret":"********"}'Response
Status: 200{
"content_type": "json",
"insecure_ssl": "0",
"secret": "********",
"url": "https://example.com/webhook"
}List deliveries for an organization webhook
Returns a list of webhook deliveries for a webhook configured in an organization.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
| Query parameters |
| Name, Type, Description |
per_pageintegerThe number of results per page (max 100). Default: |
cursorstringUsed for pagination: the starting delivery from which the page of deliveries is fetched. Refer to the |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
400 | Bad Request |
422 | Validation failed, or the endpoint has been spammed. |
代� �示例
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/deliveriesResponse
Status: 200[
{
"id": 12345678,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-03T00:57:16Z",
"redelivery": false,
"duration": 0.27,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456
},
{
"id": 123456789,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-04T00:57:16Z",
"redelivery": true,
"duration": 0.28,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456
}
]Get a webhook delivery for an organization webhook
Returns a delivery for a webhook configured in an organization.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
delivery_idintegerRequired |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
200 | OK |
400 | Bad Request |
422 | Validation failed, or the endpoint has been spammed. |
代� �示例
curl \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/deliveries/DELIVERY_IDResponse
Status: 200{
"id": 12345678,
"guid": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"delivered_at": "2019-06-03T00:57:16Z",
"redelivery": false,
"duration": 0.27,
"status": "OK",
"status_code": 200,
"event": "issues",
"action": "opened",
"installation_id": 123,
"repository_id": 456,
"url": "https://www.example.com",
"request": {
"headers": {
"X-GitHub-Delivery": "0b989ba4-242f-11e5-81e1-c7b6966d2516",
"X-Hub-Signature-256": "sha256=6dcb09b5b57875f334f61aebed695e2e4193db5e",
"Accept": "*/*",
"X-GitHub-Hook-ID": "42",
"User-Agent": "GitHub-Hookshot/b8c71d8",
"X-GitHub-Event": "issues",
"X-GitHub-Hook-Installation-Target-ID": "123",
"X-GitHub-Hook-Installation-Target-Type": "repository",
"content-type": "application/json",
"X-Hub-Signature": "sha1=a84d88e7554fc1fa21bcbc4efae3c782a70d2b9d"
},
"payload": {
"action": "opened",
"issue": {
"body": "foo"
},
"repository": {
"id": 123
}
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=utf-8"
},
"payload": "ok"
}
}Redeliver a delivery for an organization webhook
Redeliver a delivery for a webhook configured in an organization.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
delivery_idintegerRequired |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
202 | Accepted |
400 | Bad Request |
422 | Validation failed, or the endpoint has been spammed. |
代� �示例
curl \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/deliveries/DELIVERY_ID/attemptsAccepted
Status: 202Ping an organization webhook
This will trigger a ping event to be sent to the hook.
参数
| Headers |
|---|
| Name, Type, Description |
acceptstringSetting to |
| Path parameters |
| Name, Type, Description |
orgstringRequiredThe organization name. The name is not case sensitive. |
hook_idintegerRequiredThe unique identifier of the hook. |
HTTP 响应状态代� �
| 状态代� � | 说明 |
|---|---|
204 | No Content |
404 | Resource not found |
代� �示例
curl \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
http(s)://HOSTNAME/api/v3/orgs/ORG/hooks/HOOK_ID/pingsResponse
Status: 204