如何:[REST] 使用 REST API 以编程方式获取和设置 Atlassian Stash (Bitbucket Server) 中存储库的默认审阅者

How to: [REST] Get and Set Default Reviewers for a repository in Atlassian Stash (Bitbucket Server) programmatically using REST API

所以...我当前的项目包括制作一个脚本,该脚本将在我们的 Stash 服务器(又名 BitBucket 服务器)上以编程方式配置存储库。这包括为每个存储库设置默认审阅者。有 REST API 吗?

默认审阅者功能有 no documented REST API,至少对于我们使用的 Stash 版本 (4.8.x) 以及可能是当前版本。 "no documented API" 我的意思不仅是在官方 REST API 文档中,而是在网络上的任何地方。幸运的是,插件使用了一个秘密API。

长话短说,这是您需要执行的调用。它们是普通的 GET、POST 和 url 上的 DELETE。为简洁起见,我将使用 curl 作为示例:


  • 获取存储库的所有默认审阅者:

对以下内容执行 GET link:

curl -X GET -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/conditions

结果将是一个 JSON 列表。列表中的每个项目都包含列表中条目的 ID(不同于用户 ID),后跟有关默认审阅者规则的信息。


  • 添加默认审阅者:

使用 headers 和显示的数据对以下内容进行 POST:

curl -X POST -H 'Content-Type: application/json' -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition --data-binary '{"sourceMatcher":{"id":"any","type":{"id":"ANY_REF"}},"targetMatcher":{"id":"refs/heads/master","type":{"id":"BRANCH"}},"reviewers":[{"id":XXXX}],"requiredApprovals":"0"}' 

其中 XXXX 是用户 ID(用户名,e-mail 或全名无效)。您可以使用标准 REST API 获取用户 ID。也可以在 (base_url)/rest/api/1.0/users?filter=(username, email or full name)

上执行 GET
  • 删除默认审阅者:

删除以下内容

curl -X DELETE -u (username):(password) (base_url)/rest/default-reviewers/latest/projects/(project_name)/repos/(repo_name)/condition/YYY

其中 YYY 是默认审阅者列表中的条目 ID(不是用户 ID)。如果知道要删除的用户的用户id、email、用户名或全名,就可以得到所有默认的reviewer(见上文),找到你要删除的用户,然后就可以得到该用户的entry id列表项。


还有一件事:您可以使用 POST 观察 default-reviewers 插件,使用 Chrome 检查器("Network" 选项卡)使用 DELETE 命令观察,但是 GET 命令是不直接被插件使用(它的 user-facing 部分)并且不能用 Chrome 观察到(我之所以做这个 post 是因为这个 GET 命令可能很难理解- 是给我的)

添加到 user1942541 的综合答案中,我可以确认这是目前唯一的方法。我们计划在某个时候为默认审阅者提供适当的、有记录的 API。请观看 https://jira.atlassian.com/browse/BSERV-8988 更新。

我知道这是一个老问题,但只是想指出,从 Bitbucket Server 5.1 开始,默认审阅者 REST API 已成为 public:https://developer.atlassian.com/static/rest/bitbucket-server/latest/bitbucket-default-reviewers-rest.html