REST API endpoints for organization pre-receive hooks
Use the REST API to view and modify enforcement of the pre-receive hooks that are available to an organization.
About organization pre-receive hooks
Note
These endpoints only support authentication using a personal access token (classic). For more information, see Managing your personal access tokens.
Object attributes
| Name | Type | Description | 
|---|---|---|
| name | string | The name of the hook. | 
| enforcement | string | The state of enforcement for the hook on this repository. | 
| allow_downstream_configuration | boolean | Whether repositories can override enforcement. | 
| configuration_url | string | URL for the endpoint where enforcement is set. | 
Possible values for enforcement are enabled, disabled andtesting. disabled indicates the pre-receive hook will not run. enabled indicates it will run and reject any pushes that result in a non-zero status. testing means the script will run but will not cause any pushes to be rejected.
configuration_url may be a link to this endpoint or this hook's global configuration. Only site admins are able to access the global configuration.
List pre-receive hooks for an organization
List all pre-receive hooks that are enabled or testing for this organization as well as any disabled hooks that can be configured at the organization level. Globally disabled pre-receive hooks that do not allow downstream configuration are not listed.
Fine-grained access tokens for "List pre-receive hooks for an organization"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Organization pre-receive hooks" organization permissions (read)
Parameters for "List pre-receive hooks for an organization"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| Name, Type, Description | 
|---|
| per_pageintegerThe number of results per page (max 100). For more information, see "Using pagination in the REST API." Default:  | 
| pageintegerThe page number of the results to fetch. For more information, see "Using pagination in the REST API." Default:  | 
| directionstringThe direction to sort the results by. Default:  Can be one of:  | 
| sortstringThe sort order for the response collection. Default:  Can be one of:  | 
HTTP response status codes for "List pre-receive hooks for an organization"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "List pre-receive hooks for an organization"
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  http(s)://HOSTNAME/api/v3/orgs/ORG/pre-receive-hooksResponse
Status: 200[
  {
    "id": 42,
    "name": "Check Commits",
    "enforcement": "disabled",
    "configuration_url": "https://github.example.com/api/v3/admin/pre-receive-hooks/42",
    "allow_downstream_configuration": true
  }
]Get a pre-receive hook for an organization
Fine-grained access tokens for "Get a pre-receive hook for an organization"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Organization pre-receive hooks" organization permissions (read)
Parameters for "Get a pre-receive hook for an organization"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| pre_receive_hook_idinteger RequiredThe unique identifier of the pre-receive hook. | 
HTTP response status codes for "Get a pre-receive hook for an organization"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "Get a pre-receive hook for an organization"
Request example
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  http(s)://HOSTNAME/api/v3/orgs/ORG/pre-receive-hooks/PRE_RECEIVE_HOOK_IDResponse
Status: 200{
  "id": 42,
  "name": "Check Commits",
  "enforcement": "disabled",
  "configuration_url": "https://github.example.com/api/v3/admin/pre-receive-hooks/42",
  "allow_downstream_configuration": true
}Update pre-receive hook enforcement for an organization
For pre-receive hooks which are allowed to be configured at the org level, you can set enforcement and allow_downstream_configuration
Fine-grained access tokens for "Update pre-receive hook enforcement for an organization"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Organization pre-receive hooks" organization permissions (write)
Parameters for "Update pre-receive hook enforcement for an organization"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| pre_receive_hook_idinteger RequiredThe unique identifier of the pre-receive hook. | 
| Name, Type, Description | 
|---|
| enforcementstringThe state of enforcement for the hook on this repository. | 
| allow_downstream_configurationbooleanWhether repositories can override enforcement. | 
HTTP response status codes for "Update pre-receive hook enforcement for an organization"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "Update pre-receive hook enforcement for an organization"
Request example
curl -L \
  -X PATCH \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  http(s)://HOSTNAME/api/v3/orgs/ORG/pre-receive-hooks/PRE_RECEIVE_HOOK_ID \
  -d '{"enforcement":"enabled","allow_downstream_configuration":false}'Response
Status: 200{
  "id": 42,
  "name": "Check Commits",
  "enforcement": "enabled",
  "configuration_url": "https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42",
  "allow_downstream_configuration": false
}Remove pre-receive hook enforcement for an organization
Removes any overrides for this hook at the org level for this org.
Fine-grained access tokens for "Remove pre-receive hook enforcement for an organization"
This endpoint works with the following fine-grained token types:
- GitHub App user access tokens
- GitHub App installation access tokens
- Fine-grained personal access tokens
The fine-grained token must have the following permission set:
- "Organization pre-receive hooks" organization permissions (write)
Parameters for "Remove pre-receive hook enforcement for an organization"
| Name, Type, Description | 
|---|
| acceptstringSetting to  | 
| Name, Type, Description | 
|---|
| orgstring RequiredThe organization name. The name is not case sensitive. | 
| pre_receive_hook_idinteger RequiredThe unique identifier of the pre-receive hook. | 
HTTP response status codes for "Remove pre-receive hook enforcement for an organization"
| Status code | Description | 
|---|---|
| 200 | OK | 
Code samples for "Remove pre-receive hook enforcement for an organization"
Request example
curl -L \
  -X DELETE \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  http(s)://HOSTNAME/api/v3/orgs/ORG/pre-receive-hooks/PRE_RECEIVE_HOOK_IDResponse
Status: 200{
  "id": 42,
  "name": "Check Commits",
  "enforcement": "disabled",
  "configuration_url": "https://github.example.com/api/v3/admin/pre-receive-hooks/42",
  "allow_downstream_configuration": true
}