跳转至

获取保护分支规则列表

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

该接口用于获取指定仓库的保护分支规则列表,返回每条规则的分支名称、更新时间、允许推送与合并的用户列表,以及各角色(开发者、提交者、管理员等)的推送和合并权限开关。

访问令牌支持说明

  • AtomGit 用户访问令牌(AtomGit user access tokens)

是否允许匿名访问

此接口不允许匿名访问

请求参数

参数名 位置 类型 必填 说明
owner path string 是 仓库所属空间地址(组织或个人的地址 path)
repo path string 是 仓库路径(path)
access_token query string 是 用户授权码
view query string 否 查询视图模式(如 simple)
match query string 否 匹配关键字
search query string 否 搜索关键字,长度不超过 100
page query integer 否 页码,须为正整数
per_page query integer 否 每页条数,须为正整数

响应参数

响应体为保护分支规则对象数组,每个对象描述一条保护分支规则及其各角色推送/合并权限开关。

字段 类型 必返 可为空 说明
name string 是 否 保护分支名称
updated_at string 是 是 规则更新时间
push_users object[] 是 是 允许推送的用户列表
merge_users object[] 是 是 允许合并的用户列表
merged boolean 是 否 是否已合并
developers_can_push boolean 是 否 开发人员是否可以推送
developers_can_merge boolean 是 否 开发人员是否可以合并
committer_can_push boolean 是 否 提交者(Committer)是否可以推送
committer_can_merge boolean 是 否 提交者(Committer)是否可以合并
master_can_push boolean 是 否 仓库管理员(Master)是否可以推送
master_can_merge boolean 是 否 仓库管理员(Master)是否可以合并
maintainer_can_push boolean 是 否 维护者(Maintainer)是否可以推送
maintainer_can_merge boolean 是 否 维护者(Maintainer)是否可以合并
owner_can_push boolean 是 否 仓库所有者(Owner)是否可以推送
owner_can_merge boolean 是 否 仓库所有者(Owner)是否可以合并
no_one_can_push boolean 是 否 是否禁止任何人推送
no_one_can_merge boolean 是 否 是否禁止任何人合并

push_users 对象

字段 类型 必返 可为空 说明
push_users.state string 是 是 用户状态
push_users.avatar_url string 是 是 用户头像地址
push_users.avatar_path string 是 是 用户头像路径
push_users.name string 是 是 用户名称
push_users.email string 是 是 用户邮箱
push_users.name_cn string 是 是 用户中文名称
push_users.web_url string 是 是 用户主页地址
push_users.nick_name string 是 是 用户昵称
push_users.tenant_name string 是 是 租户名称
push_users.is_codeowner boolean 是 是 是否为 code owner
push_users.user_id integer 是 是 用户 ID
push_users.is_member boolean 是 是 是否为仓库成员
push_users.enterprise_name string 是 是 所属企业名称

merge_users 对象

merge_users 元素结构同 push_users,字段前缀改为 merge_users.。

失败响应

该接口在未认证或未授权时返回失败响应;错误响应字段名以后端实际返回为准。

401 未认证

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

403 禁止访问

{
  "error": "forbidden",
  "message": "无权限访问该仓库的保护分支规则"
}

HTTP 响应状态码

状态码 说明
200 成功(OK)
401 需要认证(Requires authentication)
403 禁止访问(Forbidden)
404 仓库或资源不存在(Not Found)

请求示例

参数说明

示例与本文档其余部分保持一致,照抄即可调用成功:access_token 为必填;owner 为仓库所属空间地址 path,repo 为仓库路径 path。

<owner> 替换为仓库所属空间地址(组织或个人的地址 path); <repo> 替换为仓库路径(path); <token> 替换为你的 AtomGit 用户访问令牌。

cURL

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

JavaScript

// 原生 fetch (Node.js 18+ / 浏览器)
const owner = '<owner>';
const repo = '<repo>';
const token = '<token>';

const response = await fetch(
  `https://api.atomgit.com/api/v5/repos/${owner}/${repo}/protect_branches?access_token=${token}`,
  {
    headers: {
      "Accept": "application/json",
    },
  }
);

if (!response.ok) {
  throw new Error(`请求失败: ${response.status}`);
}

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

Python

import requests

owner = '<owner>'
repo = '<repo>'
token = '<token>'

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

print(resp.json())

响应示例

状态码: 200

[
  {
    "name": "main",
    "updated_at": "2024-09-18T10:15:48.471+08:00",
    "push_users": [],
    "merge_users": [],
    "merged": false,
    "developers_can_push": false,
    "developers_can_merge": false,
    "committer_can_push": false,
    "committer_can_merge": false,
    "master_can_push": true,
    "master_can_merge": true,
    "maintainer_can_push": true,
    "maintainer_can_merge": true,
    "owner_can_push": true,
    "owner_can_merge": true,
    "no_one_can_push": false,
    "no_one_can_merge": false
  }
]

错误码

错误码 说明
401 未认证或凭证无效(缺少/无效的访问凭证)
403 禁止访问,无权限
404 请求路径不存在
405 请求方法不支持
429 请求过于频繁,触发限流
500 系统内部错误

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc