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

问题描述 投票:0回答:3

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

rest pull-request bitbucket-server
3个回答
10
投票

对于默认审阅者功能,没有记录的 REST API,至少对于我们正在使用的 Stash 版本 (4.8.x) 以及可能是当前版本来说是这样。我所说的“没有记录的 API”不仅指官方 REST API 文档,还指网络上的任何地方。幸运的是,该插件使用了一个秘密 API。

长话短说,这是您需要拨打的电话。它们是简单的 url 上的 GET、POST 和 DELETE。为了简洁起见,我将使用curl作为示例:


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

在以下链接上执行 GET:

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

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


  • 添加默认审阅者:

对以下内容进行 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(用户名、电子邮件或全名不起作用)。您可以使用标准 REST API 获取用户的 ID。又名执行 GET:(base_url)/rest/api/1.0/users?filter=(用户名、电子邮件或全名)


  • 删除默认审阅者:

对以下内容进行删除

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

其中 YYY 是默认审阅者列表中的条目 ID(不是用户 ID)。如果您知道要删除的用户的用户 ID、电子邮件、用户名或全名,您可以获取所有默认评论者(见上文),找到您想要的用户,然后您可以获取该用户的条目 ID列出项目。


还有一件事:您可以使用 Chrome Inspector(“网络”选项卡)使用 POST 和 DELETE 命令来观察默认审阅者插件,但插件(面向用户的部分)不直接使用 GET 命令,并且无法用 Chrome 观察到(我发表这篇文章的原因是因为这个 GET 命令可能很难弄清楚 - 它对我来说)



1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.