Skip to main content
The REST API is now versioned. For more information, see "About API versioning."

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

NameTypeDescription
namestringThe name of the hook.
enforcementstringThe state of enforcement for the hook on this repository.
allow_downstream_configurationbooleanWhether repositories can override enforcement.
configuration_urlstringURL 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:

The fine-grained token must have the following permission set:

  • "Pre-receive hooks" organization permissions (read)

Parameters for "List pre-receive hooks for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

Query parameters
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: 30

page integer

The page number of the results to fetch. For more information, see "Using pagination in the REST API."

Default: 1

direction string

The direction to sort the results by.

Default: desc

Can be one of: asc, desc

sort string

The sort order for the response collection.

Default: created

Can be one of: created, updated, name

HTTP response status codes for "List pre-receive hooks for an organization"

Status codeDescription
200

OK

Code samples for "List pre-receive hooks for an organization"

Request example

get/orgs/{org}/pre-receive-hooks
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

Response

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:

The fine-grained token must have the following permission set:

  • "Pre-receive hooks" organization permissions (read)

Parameters for "Get a pre-receive hook for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

pre_receive_hook_id integer Required

The unique identifier of the pre-receive hook.

HTTP response status codes for "Get a pre-receive hook for an organization"

Status codeDescription
200

OK

Code samples for "Get a pre-receive hook for an organization"

Request example

get/orgs/{org}/pre-receive-hooks/{pre_receive_hook_id}
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_ID

Response

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:

The fine-grained token must have the following permission set:

  • "Pre-receive hooks" organization permissions (write)

Parameters for "Update pre-receive hook enforcement for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

pre_receive_hook_id integer Required

The unique identifier of the pre-receive hook.

Body parameters
Name, Type, Description
enforcement string

The state of enforcement for the hook on this repository.

allow_downstream_configuration boolean

Whether repositories can override enforcement.

HTTP response status codes for "Update pre-receive hook enforcement for an organization"

Status codeDescription
200

OK

Code samples for "Update pre-receive hook enforcement for an organization"

Request example

patch/orgs/{org}/pre-receive-hooks/{pre_receive_hook_id}
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:

The fine-grained token must have the following permission set:

  • "Pre-receive hooks" organization permissions (write)

Parameters for "Remove pre-receive hook enforcement for an organization"

Headers
Name, Type, Description
accept string

Setting to application/vnd.github+json is recommended.

Path parameters
Name, Type, Description
org string Required

The organization name. The name is not case sensitive.

pre_receive_hook_id integer Required

The unique identifier of the pre-receive hook.

HTTP response status codes for "Remove pre-receive hook enforcement for an organization"

Status codeDescription
200

OK

Code samples for "Remove pre-receive hook enforcement for an organization"

Request example

delete/orgs/{org}/pre-receive-hooks/{pre_receive_hook_id}
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_ID

Response

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 }