组织 Pull Request列表
GET /api/v5/org/{org}/pull_requests
该接口用于查询指定组织下的 Pull Request 列表,支持按仓库、状态、目标分支、作者、标签、创建与更新时间范围及查询范围等条件筛选,同时支持分页和按标题、描述进行模糊搜索,并返回包含源目标分支、合并信息、里程碑、评审人等在内的完整列表数据。
访问令牌支持说明
- AtomGit 用户访问令牌(AtomGit user access tokens)
是否允许匿名访问
此接口允许匿名访问
请求参数
| 参数名 |
位置 |
类型 |
必填 |
说明 |
org |
path |
string |
是 |
组织的路径(path/login) |
repo |
query |
string |
否 |
仓库路径(path) |
issue_number |
query |
integer |
否 |
Issue 的全局 id |
state |
query |
string |
否 |
Pull Request 状态。枚举:all(所有)/ open(开启)/ closed(关闭)/ merged(合并) |
sort |
query |
string |
否 |
排序字段,默认按创建时间。枚举:created(创建时间)/ updated(更新时间) |
direction |
query |
string |
否 |
排序方向。枚举:asc(升序)/ desc(降序) |
page |
query |
integer |
否 |
当前的页码,默认 1,须为正整数 |
per_page |
query |
integer |
否 |
每页的数量,默认 20,最大 100 |
base |
query |
string |
否 |
目标分支 |
author |
query |
string |
否 |
Pull Request 作者 |
search |
query |
string |
否 |
根据 title、description 模糊查询 |
created_after |
query |
string |
否 |
返回在指定时间之后创建的合并请求,时间格式为 ISO 8601,例如 2024-11-20T13:00:21+08:00 |
created_before |
query |
string |
否 |
返回在指定时间之前创建的合并请求,时间格式为 ISO 8601,例如 2024-11-20T13:00:21+08:00 |
updated_after |
query |
string |
否 |
返回在指定时间之后更新的合并请求,时间格式为 ISO 8601,例如 2024-11-20T13:00:21+08:00 |
updated_before |
query |
string |
否 |
返回在指定时间之前更新的合并请求,时间格式为 ISO 8601,例如 2024-11-20T13:00:21+08:00 |
labels |
query |
string |
否 |
根据指定的 label 名称进行筛选,多个使用英文逗号相隔 |
scope |
query |
string |
否 |
查询范围。枚举:all(所有)/ created_by_me(我创建的)/ assigned_to_me(分配给我的)/ need_my_approve(需要我审查的)/ need_my_review(需要我评审的) |
响应参数
响应为 Pull Request 对象数组,每个元素结构如下。
| 字段 |
类型 |
必返 |
可为空 |
说明 |
id |
integer |
是 |
否 |
Pull Request 的 id |
title |
string |
是 |
否 |
Pull Request 标题 |
url |
string |
是 |
否 |
接口访问地址 |
html_url |
string |
是 |
否 |
页面访问地址 |
number |
integer |
是 |
否 |
Pull Request 序号 |
state |
string |
是 |
否 |
状态。枚举:open / closed / merged |
assignees_number |
integer |
是 |
否 |
评审人数量 |
testers_number |
integer |
是 |
否 |
测试人数量 |
assignees |
object[] |
是 |
是 |
评审人列表 |
testers |
object[] |
是 |
是 |
测试人列表 |
mergeable |
boolean |
是 |
是 |
是否可合并 |
can_merge_check |
boolean |
是 |
是 |
是否可进行合并检查 |
head |
object |
是 |
是 |
源分支信息 |
base |
object |
是 |
是 |
目标分支信息 |
created_at |
string |
是 |
是 |
创建时间 |
updated_at |
string |
是 |
是 |
更新时间 |
merged_at |
string |
否 |
是 |
合并时间 |
merged_by |
object |
否 |
是 |
合并人信息 |
milestone |
object |
否 |
是 |
关联的里程碑 |
labels |
object[] |
是 |
是 |
标签列表 |
author |
object |
否 |
是 |
作者信息 |
visibility_reason |
string |
否 |
是 |
可见性。public:公开可见,other:仅项目成员可见 |
assignees / testers 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
assignees.id |
string |
是 |
否 |
用户 id |
assignees.login |
string |
是 |
否 |
登录名 |
assignees.name |
string |
是 |
否 |
用户名 |
head 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
head.ref |
string |
是 |
否 |
源分支名称 |
head.sha |
string |
是 |
否 |
源分支提交 SHA |
head.repo |
object |
是 |
否 |
源仓库信息 |
head.repo 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
head.repo.path |
string |
是 |
否 |
仓库路径 |
head.repo.name_space |
object |
是 |
否 |
仓库所属空间信息 |
head.repo.assigner |
object |
否 |
是 |
仓库负责人 |
head.repo.name_space 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
head.repo.name_space.path |
string |
是 |
否 |
空间路径 |
head.repo.assigner 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
head.repo.assigner.id |
string |
是 |
否 |
用户 id |
head.repo.assigner.login |
string |
是 |
否 |
登录名 |
head.repo.assigner.name |
string |
是 |
否 |
用户名 |
base 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
base.ref |
string |
是 |
是 |
目标分支名称 |
base.sha |
string |
是 |
是 |
目标分支提交 SHA |
base.repo |
object |
是 |
否 |
目标仓库信息 |
base.repo 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
base.repo.path |
string |
是 |
否 |
仓库路径 |
base.repo.name_space |
object |
是 |
否 |
仓库所属空间信息 |
base.repo.name_space 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
base.repo.name_space.path |
string |
是 |
否 |
空间路径 |
merged_by 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
merged_by.id |
string |
是 |
否 |
用户 id |
merged_by.login |
string |
是 |
否 |
登录名 |
merged_by.name |
string |
是 |
否 |
用户名 |
merged_by.avatar_url |
string |
是 |
否 |
头像地址 |
merged_by.html_url |
string |
是 |
否 |
主页地址 |
merged_by.type |
string |
是 |
否 |
用户类型 |
merged_by.url |
string |
是 |
否 |
用户接口地址 |
merged_by.object_id |
string |
是 |
否 |
对象 id |
merged_by.email |
string |
是 |
否 |
邮箱 |
milestone 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
milestone.id |
integer |
是 |
否 |
里程碑 id |
milestone.number |
integer |
是 |
否 |
里程碑编号 |
milestone.title |
string |
是 |
否 |
标题 |
milestone.description |
string |
是 |
否 |
描述 |
milestone.state |
string |
是 |
否 |
状态 |
milestone.url |
string |
是 |
否 |
接口地址 |
milestone.html_url |
string |
是 |
否 |
页面地址 |
milestone.repository_id |
integer |
是 |
否 |
仓库 id |
milestone.closed_issues |
integer |
是 |
否 |
关闭的 issue 数量 |
milestone.open_issues |
integer |
是 |
否 |
打开的 issue 数量 |
milestone.created_at |
string |
是 |
否 |
创建时间 |
milestone.updated_at |
string |
是 |
否 |
更新时间 |
milestone.due_on |
string |
是 |
否 |
截止时间 |
labels 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
labels.id |
integer |
是 |
否 |
标签 id |
labels.name |
string |
是 |
否 |
标签名称 |
labels.color |
string |
是 |
否 |
标签颜色 |
labels.repository_id |
integer |
是 |
否 |
仓库 id |
labels.url |
string |
是 |
否 |
标签接口地址 |
labels.created_at |
string |
是 |
否 |
创建时间 |
labels.updated_at |
string |
是 |
否 |
更新时间 |
labels.description |
string |
是 |
否 |
标签描述 |
author 对象
| 字段 |
类型 |
必返 |
可为空 |
说明 |
author.id |
string |
是 |
否 |
用户 id |
author.login |
string |
是 |
否 |
登录名 |
author.name |
string |
是 |
否 |
用户名 |
失败响应
接口失败时返回统一错误结构 error_code / error_code_name / error_message / trace_id,字段名以实际返回为准。
400 参数错误
{
"error_code": 400,
"error_code_name": "PARAMETER_ERROR",
"error_message": "参数错误",
"trace_id": "xxx"
}
401 未认证
{
"error_code": 401,
"error_code_name": "UNAUTHORIZED",
"error_message": "未认证或凭证无效",
"trace_id": "xxx"
}
404 用户未找到
{
"error_code": 404,
"error_code_name": "USER_NOT_FOUND",
"error_message": "user not found",
"trace_id": "xxx"
}
HTTP 响应状态码
| 状态码 |
说明 |
200 |
成功(OK) |
304 |
未修改(Not modified) |
401 |
需要认证(Requires authentication) |
403 |
禁止访问(Forbidden) |
404 |
未找到(Not found) |
429 |
请求过于频繁(Too many requests) |
请求示例
参数说明
<org> 替换为组织的路径(path/login);本接口允许匿名访问,也可以携带 access_token(AtomGit 用户访问令牌)进行认证。
cURL
curl -X GET 'https://api.atomgit.com/api/v5/org/<org>/pull_requests?state=open&page=1&per_page=20' \
-H 'Accept: application/json'
JavaScript
// 原生 fetch (Node.js 18+ / 浏览器)
const org = "<org>";
const params = new URLSearchParams({ state: "open", page: "1", per_page: "20" });
const response = await fetch(`https://api.atomgit.com/api/v5/org/${org}/pull_requests?${params}`, {
headers: {
"Accept": "application/json",
},
});
if (!response.ok) {
throw new Error(`请求失败: ${response.status}`);
}
const data = await response.json();
console.log(data);
Python
import requests
org = "<org>"
resp = requests.get(
f"https://api.atomgit.com/api/v5/org/{org}/pull_requests",
params={"state": "open", "page": 1, "per_page": 20},
headers={"Accept": "application/json"},
timeout=10,
)
resp.raise_for_status()
print(resp.json())
响应示例
状态码: 200
[
{
"id": 71020,
"title": "Fix: update the login flow",
"url": "https://api.atomgit.com/api/v5/repos/test/test/1",
"html_url": "https://api.atomgit.com/test/test/1",
"number": 1,
"state": "merged",
"assignees_number": 0,
"testers_number": 0,
"assignees": [],
"testers": [],
"mergeable": null,
"can_merge_check": true,
"head": {
"ref": "main",
"sha": "d874402d259744a00121c2cff0febc8554339aef",
"repo": {
"path": "test",
"name_space": {
"path": "repo-dev"
},
"assigner": {
"id": "uuid",
"login": "Lzm_0916",
"name": "Lzm_0916"
}
}
},
"base": {
"ref": null,
"sha": null,
"repo": {
"path": "test",
"name_space": {
"path": "repo-dev"
}
}
},
"created_at": "2024-04-15T18:33:01+08:00",
"updated_at": "2024-04-15T18:33:01+08:00",
"merged_at": "2024-04-15T18:33:01+08:00",
"merged_by": {
"id": "uuid",
"login": "Lzm_0916",
"name": "Lzm_0916",
"avatar_url": "https://api.atomgit.com/avatar.png",
"html_url": "https://api.atomgit.com/Lzm_0916"
},
"labels": [],
"visibility_reason": "public"
}
]
错误码
| 错误码 |
说明 |
401 |
未认证或凭证无效(缺少/无效的访问凭证) |
400 |
参数错误或请求无法解析 |
404 |
请求路径不存在 |
405 |
请求方法不支持 |
429 |
请求过于频繁,触发限流 |
500 |
系统内部错误 |