REST API endpoints for repository pre-receive hooks
Use the REST API to view and modify enforcement of the pre-receive hooks that are available to a repository.
About repository pre-receive hooks
Note
These endpoints only support authentication using a personal access token (classic). For more information, see "Managing your personal access tokens."
Name | Type | Description |
---|---|---|
name | string | The name of the hook. |
enforcement | string | The state of enforcement for the hook on this repository. |
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 repository, it's organization owner or global configuration. Authorization to access the endpoint at configuration_url
is determined at the owner or site admin level.
List pre-receive hooks for a repository
List all pre-receive hooks that are enabled or testing for this repository as well as any disabled hooks that are allowed to be enabled at the repository level. Pre-receive hooks that are disabled at a higher level and are not configurable will not be listed.
Fine-grained access tokens for "List pre-receive hooks for a repository"
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:
- "Pre-receive hooks" repository permissions (read)
Parameters for "List pre-receive hooks for a repository"
Name, Type, Description |
---|
accept string Setting to |
Name, Type, Description |
---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
Name, Type, Description |
---|
per_page integer The number of results per page (max 100). For more information, see "Using pagination in the REST API." Default: |
page integer The page number of the results to fetch. For more information, see "Using pagination in the REST API." Default: |
direction string The direction to sort the results by. Default: Can be one of: |
sort string Default: Can be one of: |
HTTP response status codes for "List pre-receive hooks for a repository"
Status code | Description |
---|---|
200 | OK |
Code samples for "List pre-receive hooks for a repository"
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/repos/OWNER/REPO/pre-receive-hooks
Response
Status: 200
[
{
"id": 42,
"name": "Check Commits",
"enforcement": "disabled",
"configuration_url": "https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42"
}
]
Get a pre-receive hook for a repository
Fine-grained access tokens for "Get a pre-receive hook for a repository"
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:
- "Pre-receive hooks" repository permissions (read)
Parameters for "Get a pre-receive hook for a repository"
Name, Type, Description |
---|
accept string Setting to |
Name, Type, Description |
---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
pre_receive_hook_id integer RequiredThe unique identifier of the pre-receive hook. |
HTTP response status codes for "Get a pre-receive hook for a repository"
Status code | Description |
---|---|
200 | OK |
Code samples for "Get a pre-receive hook for a repository"
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/repos/OWNER/REPO/pre-receive-hooks/PRE_RECEIVE_HOOK_ID
Response
Status: 200
{
"id": 42,
"name": "Check Commits",
"enforcement": "disabled",
"configuration_url": "https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42"
}
Update pre-receive hook enforcement for a repository
For pre-receive hooks which are allowed to be configured at the repo level, you can set enforcement
Fine-grained access tokens for "Update pre-receive hook enforcement for a repository"
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:
- "Pre-receive hooks" repository permissions (write)
Parameters for "Update pre-receive hook enforcement for a repository"
Name, Type, Description |
---|
accept string Setting to |
Name, Type, Description |
---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
pre_receive_hook_id integer RequiredThe unique identifier of the pre-receive hook. |
Name, Type, Description |
---|
enforcement string The state of enforcement for the hook on this repository. Can be one of: |
HTTP response status codes for "Update pre-receive hook enforcement for a repository"
Status code | Description |
---|---|
200 | OK |
Code samples for "Update pre-receive hook enforcement for a repository"
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/repos/OWNER/REPO/pre-receive-hooks/PRE_RECEIVE_HOOK_ID \
-d '{"enforcement":"enabled"}'
Response
Status: 200
{
"id": 42,
"name": "Check Commits",
"enforcement": "enabled",
"configuration_url": "https://github.example.com/api/v3/repos/octocat/hello-world/pre-receive-hooks/42"
}
Remove pre-receive hook enforcement for a repository
Deletes any overridden enforcement on this repository for the specified hook.
Responds with effective values inherited from owner and/or global level.
Fine-grained access tokens for "Remove pre-receive hook enforcement for a repository"
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:
- "Pre-receive hooks" repository permissions (write)
Parameters for "Remove pre-receive hook enforcement for a repository"
Name, Type, Description |
---|
accept string Setting to |
Name, Type, Description |
---|
owner string RequiredThe account owner of the repository. The name is not case sensitive. |
repo string RequiredThe name of the repository without the |
pre_receive_hook_id integer RequiredThe unique identifier of the pre-receive hook. |
HTTP response status codes for "Remove pre-receive hook enforcement for a repository"
Status code | Description |
---|---|
200 | Responds with effective values inherited from owner and/or global level. |
Code samples for "Remove pre-receive hook enforcement for a repository"
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/repos/OWNER/REPO/pre-receive-hooks/PRE_RECEIVE_HOOK_ID
Responds with effective values inherited from owner and/or global level.
Status: 200
{
"id": 42,
"name": "Check Commits",
"enforcement": "disabled",
"configuration_url": "https://github.example.com/api/v3/orgs/octocat/pre-receive-hooks/42"
}