Project push rules API

  • Tier: Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

You can manage push rules for projects by using the REST API.

Get project push rules

Get the push rules of a project.

GET /projects/:id/push_rule

Supported attributes:

AttributeTypeRequiredDescription
idinteger or stringYesThe ID or URL-encoded path of the project

Example response:

{
  "id": 1,
  "project_id": 3,
  "commit_message_regex": "Fixes \\d+\\..*",
  "commit_message_negative_regex": "ssh\\:\\/\\/",
  "branch_name_regex": "",
  "deny_delete_tag": false,
  "created_at": "2012-10-12T17:04:47Z",
  "member_check": false,
  "prevent_secrets": false,
  "author_email_regex": "",
  "file_name_regex": "",
  "max_file_size": 5,
  "commit_committer_check": false,
  "commit_committer_name_check": false,
  "reject_unsigned_commits": false,
  "reject_non_dco_commits": false
}

Add a project push rule

Add a push rule to a specified project.

POST /projects/:id/push_rule

Supported attributes:

AttributeTypeRequiredDescription
idinteger or stringYesThe ID or URL-encoded path of the project.
author_email_regexstringNoAll commit author emails must match this regular expression.
branch_name_regexstringNoAll branch names must match this regular expression.
commit_message_negative_regexstringNoNo commit message is allowed to match this regular expression.
commit_message_regexstringNoAll commit messages must match this regular expression.
deny_delete_tagbooleanNoDeny deleting a tag.
file_name_regexstringNoAll committed filenames must not match this regular expression.
max_file_sizeintegerNoMaximum file size (MB).
member_checkbooleanNoRestrict commits by author (email) to existing GitLab users.
prevent_secretsbooleanNoGitLab rejects any files that are likely to contain secrets.
commit_committer_checkbooleanNoUsers can only push commits to this repository if the committer email is one of their own verified emails.
commit_committer_name_checkbooleanNoUsers can only push commits to this repository if the commit author name is consistent with their GitLab account name.
reject_unsigned_commitsbooleanNoReject commit when it’s not signed.
reject_non_dco_commitsbooleanNoReject commit when it’s not DCO certified.

Edit project push rule

Edit a push rule for a specified project.

PUT /projects/:id/push_rule

Supported attributes:

AttributeTypeRequiredDescription
idinteger or stringYesThe ID or URL-encoded path of the project.
author_email_regexstringNoAll commit author emails must match this regular expression.
branch_name_regexstringNoAll branch names must match this regular expression.
commit_message_negative_regexstringNoNo commit message is allowed to match this regular expression.
commit_message_regexstringNoAll commit messages must match this regular expression.
deny_delete_tagbooleanNoDeny deleting a tag.
file_name_regexstringNoAll committed filenames must not match this regular expression.
max_file_sizeintegerNoMaximum file size (MB).
member_checkbooleanNoRestrict commits by author (email) to existing GitLab users.
prevent_secretsbooleanNoGitLab rejects any files that are likely to contain secrets.
commit_committer_checkbooleanNoUsers can only push commits to this repository if the committer email is one of their own verified emails.
commit_committer_name_checkbooleanNoUsers can only push commits to this repository if the commit author name is consistent with their GitLab account name.
reject_unsigned_commitsbooleanNoReject commits when they are not signed.
reject_non_dco_commitsbooleanNoReject commit when it’s not DCO certified.

Delete project push rule

Delete a push rule from a project.

DELETE /projects/:id/push_rule

Supported attributes:

AttributeTypeRequiredDescription
idinteger or stringYesThe ID or URL-encoded path of the project.