Skip to content

Get Pull Request settings

GET /api/v5/repos/{owner}/{repo}/pull_request_settings

This endpoint gets the Pull Request settings of the specified repository, including the merge mode, review and approval requirements, Squash merge options, code review and merge behavior, and other configuration information.

Access token support

  • AtomGit user access tokens (AtomGit user access tokens)

Anonymous access allowed?

This endpoint does not allow anonymous access.

Request parameters

Parameter Location Type Required Description
owner path string Yes Address path of the namespace the repository belongs to (the address path of an enterprise, organization, or individual)
repo path string Yes Repository path (path)
access_token query string Yes User authorization code

Response parameters

Field Type Always returned Nullable Description
merge_request_setting object Yes No Merge Request settings details
only_allow_merge_if_all_discussions_are_resolved boolean Yes No Merge only when all review issues are resolved
only_allow_merge_if_pipeline_succeeds boolean Yes No Whether merging is allowed only after the pipeline succeeds
merge_method string Yes No Merge mode (choose one of three): merge (merge via merge commit) / rebase_merge (merge via merge commit, recording a semi-linear history) / ff (fast-forward merge)

merge_request_setting object

Field Type Always returned Nullable Description
merge_request_setting.id integer Yes No Setting ID
merge_request_setting.project_id integer Yes No Project ID
merge_request_setting.disable_merge_by_self boolean Yes No Prohibit merging your own merge requests
merge_request_setting.created_at string Yes Yes Creation time
merge_request_setting.updated_at string Yes Yes Update time
merge_request_setting.can_force_merge boolean Yes No Allow administrators to force merge
merge_request_setting.disable_squash_merge boolean Yes No Prohibit Squash merge
merge_request_setting.approval_required_reviewers integer Yes No Number of reviewers required
merge_request_setting.approval_required_approvers integer Yes No Number of approvers required
merge_request_setting.add_notes_after_merged boolean Yes No Allow continued code review and comments after the merge request is merged
merge_request_setting.merged_commit_author string Yes No Generate the Merge Commit using the MR (merger/creator): merged_by (use the PR merger) / created_by (use the PR creator)
merge_request_setting.mark_auto_merged_mr_as_closed boolean Yes No Whether to mark the state of automatically merged MRs as closed
merge_request_setting.delete_source_branch_when_merged boolean Yes No Whether to delete the source branch when merging
merge_request_setting.auto_squash_merge boolean Yes No Enable Squash merge by default for new merge requests
merge_request_setting.squash_merge_with_no_merge_commit boolean Yes No Squash merge does not create a Merge node
merge_request_setting.close_issue_when_mr_merged boolean Yes No Select "Close related issues after merge" by default when creating a Pull Request
merge_request_setting.can_reopen boolean Yes No Whether a closed merge request can be reopened
merge_request_setting.is_check_cla boolean Yes No Whether to validate CLA
merge_request_setting.approval_approvers object[] Yes Yes Project approver list
merge_request_setting.approval_testers object[] Yes Yes Project tester list
merge_request_setting.approval_required_testers integer Yes No Minimum number of testers that must pass
merge_request_setting.is_allow_lite_merge_request boolean Yes No Whether lightweight Pull Requests are enabled
merge_request_setting.codeowner_merge_count boolean Yes Yes codeowner review counting mode: true uses merge counting (codeowners count as reviewers); false uses separate counting (codeowners do not count as reviewers)
merge_request_setting.forbidden_pr_related_issue_closed string Yes Yes Whether the "Close related issues after merge" option is disabled

merge_request_setting.approval_approvers[] / merge_request_setting.approval_testers[] object

approval_approvers and approval_testers have the same element structure; both are user information objects.

Field Type Always returned Nullable Description
approval_approvers[].id integer Yes No User ID
approval_approvers[].name string Yes Yes User name
approval_approvers[].username string Yes Yes Login name
approval_approvers[].iam_id string Yes Yes IAM user ID
approval_approvers[].state string Yes Yes User state
approval_approvers[].avatar_url string Yes Yes Avatar address
approval_approvers[].name_cn string Yes Yes Chinese name
approval_approvers[].web_url string Yes Yes Personal homepage address
approval_approvers[].nick_name string Yes Yes Nickname

Error response

The following error response examples show common forms; the actual error field names are subject to what the backend returns.

400 Parameter error

{
  "error": "invalid_request",
  "message": "Parameter owner cannot be empty",
  "field": "owner"
}

401 Unauthenticated

{
  "error": "unauthorized",
  "message": "Missing or invalid access token"
}

HTTP response status codes

Status code Description
200 Success (OK)
304 Not modified
401 Authentication required (Requires authentication)
403 Forbidden

Request example

Parameter description

Replace <owner> with the address path of the namespace the repository belongs to (the address path of an enterprise, organization, or individual); replace <repo> with the repository path (path); replace <token> with your AtomGit user access token.

cURL

curl -X GET 'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings?access_token=<token>' \
  -H 'Accept: application/json'

JavaScript

// Native fetch (Node.js 18+ / browser)
const response = await fetch(
  'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings?access_token=<token>',
  {
    headers: {
      'Accept': 'application/json',
    },
  }
);

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python

import requests

resp = requests.get(
    'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/pull_request_settings',
    params={'access_token': '<token>'},
    headers={'Accept': 'application/json'},
    timeout=10,
)
resp.raise_for_status()

print(resp.json())

Response example

Status code: 200

{
  "merge_request_setting": {
    "id": 1431,
    "project_id": 2745002,
    "disable_merge_by_self": false,
    "created_at": "2024-03-28T10:04:13.523+08:00",
    "updated_at": "2024-11-13T21:30:45.261+08:00",
    "can_force_merge": false,
    "disable_squash_merge": true,
    "approval_required_reviewers": 0,
    "approval_required_approvers": 0,
    "add_notes_after_merged": false,
    "merged_commit_author": "merged_by",
    "mark_auto_merged_mr_as_closed": false,
    "delete_source_branch_when_merged": false,
    "auto_squash_merge": false,
    "squash_merge_with_no_merge_commit": false,
    "close_issue_when_mr_merged": false,
    "can_reopen": true,
    "is_check_cla": false,
    "approval_approvers": [],
    "approval_testers": [],
    "approval_required_testers": 0,
    "is_allow_lite_merge_request": false,
    "codeowner_merge_count": true,
    "forbidden_pr_related_issue_closed": null
  },
  "only_allow_merge_if_all_discussions_are_resolved": false,
  "only_allow_merge_if_pipeline_succeeds": false,
  "merge_method": "merge"
}

Error codes

Error code Description
401 Unauthenticated or invalid credentials (missing/invalid access credentials)
400 Parameter error or the request cannot be parsed
404 Request path does not exist
405 Request method not supported
429 Too many requests; rate limit triggered
500 Internal system error

Markdown source: View on AtomGit·Content from the open-source project gitcode-dev/atomgit-api-doc