如何通过Bitbucket API创建拉取请求?

时间:2019-05-22 13:44:14

标签: json groovy bitbucket bitbucket-server bitbucket-api

TL; DR :在哪里可以找到有关传递给POST请求以创建请求请求的文档? (要放在JSON中的内容)


我正在使用Groovy脚本来自动化一些任务,其中包括在多个项目上执行tmp分支的提交/推送。我想在脚本末尾在所有这些项目的tmp分支和prod分支之间自动创建拉取请求。为了做到这一点,我尝试使用BitBucket REST API。

我发现this documentation为我提供了以下端点,可用于POST请求:/rest/api/1.0/projects/{projectKey}/repos/{repositorySlug}/pull-requests。 为此需要以下JSON:

{
    "title": "Talking Nerdy",
    "description": "It’s a kludge, but put the tuple from the database in the cache.",
    "state": "OPEN",
    "open": true,
    "closed": false,
    "fromRef": {
        "id": "refs/heads/feature-ABC-123",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "toRef": {
        "id": "refs/heads/master",
        "repository": {
            "slug": "my-repo",
            "name": null,
            "project": {
                "key": "PRJ"
            }
        }
    },
    "locked": false,
    "reviewers": [
        {
            "user": {
                "name": "charlie"
            }
        }
    ]
}

但是,我找不到有关如何构建此JSON的任何信息... 我可以猜测titledescription是什么,但是stateopenclosed等又是什么呢?如何建立正确的fromRef.id?为什么回购名称设置为null?哪个属性是最优的?如果我将我的BitBucket登录名放在reviewers[0].user.name中,它将起作用吗?等

我在该主题上找到的每个答案都只是复制/粘贴相同的JSON,而且每个人似乎都在不作任何解释的情况下理解了它的工作原理……我错过了什么吗?

无论如何,这是我真正的问题:在哪里可以找到有关此Pull Request JSON对象的文档?

谢谢。


EDIT:这不是this post的重复项,因为这不是相同的问题。我对权限/身份验证没有问题,甚至通过摆弄请求就可以使请求正常工作。我只要求提供文档,因为我想了解自己在做什么,以便最好地自定义请求。 the other post的答案中有一些(非常简短的)解释,但实际上并不能完全回答我的问题(请参阅评论)。

1 个答案:

答案 0 :(得分:0)

使用文档 found here,我能够从 PowerShell 脚本成功创建具有最小属性(因此推断什么是可选属性)的拉取请求。< /p>

我的示例使用 master 作为 merge to 的分支,foo 作为 merge from 的分支,Project1Repository1 分别作为 BitBucket 项目和存储库。 uri 如下(替换根、项目和存储库):https://bitbucket.example.com/rest/api/1.0/projects/Project1/repos/Repository1/pull-requests

发送以下 JSON(使用正确的 Content-TypeAuthorization 标头)会创建拉取请求:

{
            "title" : "This is the title of my pull request",
            "description" : "This is the description of my pull request",
            "fromRef" : {
                "id" : "refs/heads/foo",
                "repository" : "Repository1",
                "project" : {
                    "key" : "Project1"
                }
            },
            "toRef" : {
                "id" : "refs/heads/master",
                "repository" : "Repository1",
                "project" : {
                    "key" : "Project1"
                }
            }
        }

statereviewers 是可选的,在本示例中被省略。