列出授权用户的Pull Request列表¶
GET /api/v5/user/pulls
用户调用此接口,进行列出授权用户的 Pull Request 列表操作。
访问令牌支持说明¶
- AtomGit 用户访问令牌(AtomGit user access tokens)
是否允许匿名访问¶
此接口不允许匿名访问
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
access_token |
query | string | 是 | 用户授权码 |
state |
query | string | 否 | 返回已打开、已关闭、已锁定、已合并或所有合并请求;枚举:open(已打开)/ closed(已关闭)/ locked(已锁定)/ merged(已合并)/ all(所有);默认返回所有(all) |
sort |
query | string | 否 | 返回按字段排序的合并请求;枚举:created(创建时间)/ updated(更新时间)/ merged_at(合并时间);默认按照创建时间(created)排序 |
direction |
query | string | 否 | 返回按照排序字段升序或者降序的合并请求;枚举:desc(降序)/ asc(升序) |
labels |
query | string | 否 | 逗号分隔的标签名称 |
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 |
scope |
query | string | 否 | 返回给定范围的合并请求;枚举:need_my_approve(需要我审查的)/ created_by_me(由我创建的)/ assigned_to_me(分配给我的)/ need_my_review(需要我评审的);默认返回我创建的(created_by_me) |
source_branch |
query | string | 否 | 返回具有给定源分支的合并请求 |
target_branch |
query | string | 否 | 返回具有给定目标分支的合并请求 |
per_page |
query | string | 否 | 每页的数量,最大为 100,默认 20 |
page |
query | string | 否 | 当前的页码 |
响应参数¶
响应体为 PullRequest 对象的数组,下表列出数组中每个元素的字段。
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
number |
integer | 是 | — | 序号 |
html_url |
string | 是 | — | 页面地址 |
url |
string | 是 | — | 资源地址 |
close_related_issue |
integer | 是 | — | 合并后关闭关联的 issue |
draft |
boolean | 是 | — | 是否草稿状态 |
labels |
object[] | 是 | — | 标签列表 |
user |
object | 是 | — | 作者 |
assignees |
object[] | 是 | — | 评审人列表 |
testers |
object[] | 是 | — | 测试人列表 |
head |
object | 是 | — | 源分支提交信息 |
base |
object | 是 | — | 目标分支信息 |
id |
integer | 是 | — | 合并请求 ID |
iid |
integer | 是 | — | 合并请求序号 |
project_id |
integer | 是 | — | 归属项目 id |
title |
string | 是 | — | 标题 |
body |
string | 是 | — | 描述 |
state |
string | 是 | — | 状态,open / closed / merged |
assignees_number |
integer | 是 | — | 评审人数量 |
testers_number |
integer | 是 | — | 测试人数量 |
created_at |
string | 是 | — | 创建时间 |
updated_at |
string | 是 | — | 更新时间 |
merged_at |
string | 是 | — | 合并时间 |
closed_at |
string | 是 | — | 关闭时间 |
target_branch |
string | 是 | — | 目标分支 |
source_branch |
string | 是 | — | 源分支 |
source_project_id |
integer | 是 | — | 源项目 id |
web_url |
string | 是 | — | 网页地址 |
merge_request_type |
string | 是 | — | 合并请求类型 |
added_lines |
integer | 是 | — | 新增的行数 |
removed_lines |
integer | 是 | — | 删除的行数 |
diff_refs |
object | 是 | — | 差异引用 |
notes |
integer | 是 | — | 评论数量 |
source_git_url |
string | 是 | — | 源仓库 Git 地址 |
mergeable |
boolean | 是 | — | 是否可合并 |
locked |
boolean | 是 | — | 是否锁定 |
closed_by |
object | 是 | — | 关闭人信息 |
visibility_reason |
string | 否 | — | 可见性,public:公开可见,other:仅项目成员可见 |
merged_by |
object | 否 | — | 合并人信息 |
labels 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
labels.id |
integer | 是 | — | 标签 ID |
labels.name |
string | 是 | — | 标签名称 |
labels.color |
string | 是 | — | 标签颜色 |
labels.created_at |
string | 是 | — | 标签添加时间 |
labels.updated_at |
string | 是 | — | 标签更新时间 |
user 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
user.id |
string | 是 | — | 用户 ID |
user.user_id |
string | 是 | — | 用户唯一标识 |
user.object_id |
string | 是 | — | 对象 ID |
user.login |
string | 是 | — | 登录名 |
user.name |
string | 是 | — | 姓名 |
user.state |
string | 是 | — | 状态 |
user.avatar_url |
string | 是 | — | 头像地址 |
user.email |
string | 是 | — | 邮箱 |
user.name_cn |
string | 是 | — | 中文姓名 |
user.html_url |
string | 是 | — | 页面地址 |
assignees 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
assignees.user_id |
string | 是 | — | 用户唯一标识 |
assignees.object_id |
string | 是 | — | 对象 ID |
assignees.id |
string | 是 | — | 用户 ID |
assignees.login |
string | 是 | — | 登录名 |
assignees.name |
string | 是 | — | 姓名 |
assignees.state |
string | 是 | — | 状态 |
assignees.avatar_url |
string | 是 | — | 头像地址 |
assignees.email |
string | 是 | — | 邮箱 |
assignees.name_cn |
string | 是 | — | 中文姓名 |
assignees.html_url |
string | 是 | — | 页面地址 |
assignees.assignee |
boolean | 是 | — | 是否为评审人 |
assignees.code_owner |
boolean | 是 | — | 是否为代码所有者 |
assignees.accept |
boolean | 是 | — | 是否接受评审 |
testers 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
testers.user_id |
string | 是 | — | 用户唯一标识 |
testers.object_id |
string | 是 | — | 对象 ID |
testers.id |
string | 是 | — | 用户 ID |
testers.login |
string | 是 | — | 登录名 |
testers.name |
string | 是 | — | 姓名 |
testers.state |
string | 是 | — | 状态 |
testers.avatar_url |
string | 是 | — | 头像地址 |
testers.email |
string | 是 | — | 邮箱 |
testers.name_cn |
string | 是 | — | 中文姓名 |
testers.html_url |
string | 是 | — | 页面地址 |
testers.assignee |
boolean | 是 | — | 是否为评审人 |
testers.accept |
boolean | 是 | — | 是否接受评审 |
head 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
head.label |
string | 是 | — | 分支标签 |
head.ref |
string | 是 | — | 分支引用 |
head.user |
object | 是 | — | 提交用户 |
head.repo |
object | 是 | — | 源仓库信息 |
head.user 对象¶
结构同 user 对象(字段含 id、login、name、state、avatar_url、email、name_cn、html_url)。
head.repo 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
head.repo.id |
integer | 是 | — | 仓库 ID |
head.repo.full_path |
string | 是 | — | 完整路径 |
head.repo.full_name |
string | 是 | — | 完整名称 |
head.repo.human_name |
string | 是 | — | 显示名称 |
head.repo.name |
string | 是 | — | 仓库名称 |
head.repo.path |
string | 是 | — | 仓库路径 |
head.repo.description |
string | 是 | — | 仓库描述 |
head.repo.owner |
object | 是 | — | 仓库所有者 |
head.repo.assigner |
object | 是 | — | 仓库负责人 |
head.repo.internal |
boolean | 是 | — | 是否内部仓库 |
head.repo.html_url |
string | 是 | — | 页面地址 |
head.repo.owner 与 head.repo.assigner 对象结构同 head.user(字段含 id、login、name、state、avatar_url、email、name_cn、html_url)。
base 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
base.label |
string | 是 | — | 分支标签 |
base.ref |
string | 是 | — | 分支引用 |
base.user |
object | 是 | — | 提交用户 |
base.repo |
object | 是 | — | 目标仓库信息 |
base.user 对象结构同 head.user;base.repo 对象结构同 head.repo。
diff_refs 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
diff_refs.base_sha |
string | 是 | — | 基础提交 SHA |
diff_refs.head_sha |
string | 是 | — | 最新提交 SHA |
diff_refs.start_sha |
string | 是 | — | 起始提交 SHA |
closed_by 对象¶
| 字段 | 类型 | 必返 | 可为空 | 说明 |
|---|---|---|---|---|
closed_by.id |
integer | 是 | — | 用户 ID |
closed_by.name |
string | 是 | — | 姓名 |
closed_by.username |
string | 是 | — | 用户名 |
closed_by.iam_id |
string | 是 | — | IAM 用户 ID |
closed_by.nick_name |
string | 是 | — | 昵称 |
closed_by.state |
string | 是 | — | 状态 |
closed_by.avatar_url |
string | 是 | — | 头像地址 |
closed_by.email |
string | 是 | — | 邮箱 |
closed_by.name_cn |
string | 是 | — | 中文姓名 |
closed_by.web_url |
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 | 是 | — | 页面地址 |
失败响应¶
该接口需要用户访问令牌,以下为常见失败响应。错误响应的字段名与消息以后端实际返回为准,此处仅为示例形态。
401 未认证
400 参数错误
HTTP 响应状态码¶
| 状态码 | 说明 |
|---|---|
200 |
成功(OK) |
400 |
参数错误(Bad request) |
401 |
需要认证(Requires authentication) |
403 |
禁止访问(Forbidden) |
请求示例¶
参数说明¶
<token>替换为你的 AtomGit 用户访问令牌;<page>替换为页码(默认 1);<per_page>替换为每页数量(最大 100,默认 20)。
cURL¶
curl -X GET 'https://api.atomgit.com/api/v5/user/pulls?access_token=<token>&page=1&per_page=20' \
-H 'Accept: application/json'
JavaScript¶
// 原生 fetch (Node.js 18+ / 浏览器)
const response = await fetch(
"https://api.atomgit.com/api/v5/user/pulls?access_token=<token>&page=1&per_page=20",
{
headers: {
"Accept": "application/json",
},
},
);
if (!response.ok) {
throw new Error(`请求失败: ${response.status}`);
}
const data = await response.json();
console.log(data);
Python¶
import requests
resp = requests.get(
"https://api.atomgit.com/api/v5/user/pulls",
params={
"access_token": "<token>",
"page": 1,
"per_page": 20,
},
headers={"Accept": "application/json"},
timeout=10,
)
resp.raise_for_status()
print(resp.json())
响应示例¶
状态码: 200
[
{
"number": 1,
"html_url": "https://api.atomgit.com/octocat/Hello-World/pulls/1",
"url": "https://api.atomgit.com/api/v5/repos/octocat/Hello-World/pulls/1",
"close_related_issue": 0,
"draft": false,
"labels": [
{
"id": 1,
"name": "bug",
"color": "#d73a4a",
"created_at": "2024-11-20T13:00:21+08:00",
"updated_at": "2024-11-20T13:00:21+08:00"
}
],
"user": {
"id": "1",
"user_id": "1",
"object_id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"assignees": [
{
"user_id": "2",
"object_id": "2",
"id": "2",
"login": "octopus",
"name": "octopus",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octopus@atomgit.com",
"name_cn": "octopus",
"html_url": "https://api.atomgit.com/octopus",
"assignee": true,
"code_owner": false,
"accept": true
}
],
"testers": [],
"head": {
"label": "octocat:feature",
"ref": "feature",
"user": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"repo": {
"id": 1,
"full_path": "octocat/Hello-World",
"full_name": "octocat/Hello-World",
"human_name": "Hello World",
"name": "Hello-World",
"path": "Hello-World",
"description": "My first repository",
"owner": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"assigner": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"internal": false,
"html_url": "https://api.atomgit.com/octocat/Hello-World"
}
},
"base": {
"label": "octocat:main",
"ref": "main",
"user": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"repo": {
"id": 1,
"full_path": "octocat/Hello-World",
"full_name": "octocat/Hello-World",
"human_name": "Hello World",
"name": "Hello-World",
"path": "Hello-World",
"description": "My first repository",
"owner": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"assigner": {
"id": "1",
"login": "octocat",
"name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"html_url": "https://api.atomgit.com/octocat"
},
"internal": false,
"html_url": "https://api.atomgit.com/octocat/Hello-World"
}
},
"id": 1,
"iid": 1,
"project_id": 1,
"title": "Fix a bug",
"body": "This pull request fixes a bug.",
"state": "merged",
"assignees_number": 1,
"testers_number": 0,
"created_at": "2024-11-20T13:00:21+08:00",
"updated_at": "2024-12-01T10:00:00+08:00",
"merged_at": "2024-12-01T10:00:00+08:00",
"closed_at": "2024-12-01T10:00:00+08:00",
"target_branch": "main",
"source_branch": "feature",
"source_project_id": 1,
"web_url": "https://api.atomgit.com/octocat/Hello-World/pulls/1",
"merge_request_type": "normal",
"added_lines": 10,
"removed_lines": 2,
"diff_refs": {
"base_sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e",
"head_sha": "c5f7f8e7f6f7f8e7f6f7f8e7f6f7f8e7f6f7f8e7",
"start_sha": "6dcb09b5b57875f334f61aebed695e2e4193db5e"
},
"notes": 3,
"source_git_url": "https://api.atomgit.com/octocat/Hello-World.git",
"mergeable": true,
"locked": false,
"closed_by": {
"id": 1,
"name": "octocat",
"username": "octocat",
"iam_id": "1",
"nick_name": "octocat",
"state": "active",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"email": "octocat@atomgit.com",
"name_cn": "octocat",
"web_url": "https://api.atomgit.com/octocat"
},
"visibility_reason": "public",
"merged_by": {
"id": "1",
"login": "octocat",
"name": "octocat",
"avatar_url": "https://api.atomgit.com/assets/logo.png",
"html_url": "https://api.atomgit.com/octocat"
}
}
]
错误码¶
| 错误码 | 说明 |
|---|---|
400 |
参数错误或请求无法解析 |
401 |
未认证或凭证无效(缺少/无效的访问凭证) |
403 |
禁止访问 |
404 |
请求路径不存在 |
429 |
请求过于频繁,触发限流 |
500 |
系统内部错误 |
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc