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
401 Unauthenticated
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