跳转至

列出授权用户的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.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 未认证

{
  "message": "缺少或无效的访问令牌"
}

400 参数错误

{
  "message": "参数校验失败"
}

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