Как создать запрос на вытягивание через Bitbucket API?

TL;DR: где я могу найти документацию о том, что нужно передать в POST-запрос, чтобы создать запрос на слияние? (Что вставить в JSON)


Используя сценарий Groovy, я пытаюсь автоматизировать некоторые задачи, включающие фиксацию/передачу ветки tmp в несколько проектов. Я хочу автоматически создать запрос на вытягивание между веткой tmp и веткой prod всех этих проектов в конце моего скрипта. Для этого я попытался использовать REST API BitBucket.

Я нашел эту документацию, которая дала мне следующую конечную точку для использования с запросом 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 ... Я могу догадаться, что такое title и description, но для чего нужны state, open, closed и т. д.? Как построить правильный fromRef.id ? Почему для имени репо установлено значение null? какой атрибут не является обязательным? Если я поставлю свой логин BitBucket в reviewers[0].user.name, будет ли он работать? и т.п.

Все ответы, которые я нашел на эту тему, - это просто копия / прошлый тот же JSON, и все, кажется, понимают, как это работает без каких-либо объяснений ... Я что-то пропустил?

В любом случае, вот мой настоящий вопрос: где я могу найти документацию по этому объекту JSON запроса на вытягивание?

Спасибо.


РЕДАКТИРОВАТЬ: это не дубликат этот пост, так как это не то же самое проблема. У меня нет проблем с разрешением/аутентификацией, и мне даже удалось заставить запрос работать, повозившись с ним. Я прошу документацию только потому, что хочу понять, что я делаю, чтобы наилучшим образом настроить запрос. Хотя в ответах другого поста есть некоторые (очень легкие) пояснения , на самом деле это вообще не отвечает на мой вопрос (см. комментарии).


person Cook    schedule 22.05.2019    source источник
comment
Найдите bitbucket.org/api/swagger.json для создания нового запроса на вытягивание, в котором находится целевой репозиторий. есть -- мне было проще выгрузить это в пользовательский интерфейс чванства и перемещаться по нему там. Если оставить это как комментарий, а не ответ b / c, он почти наверняка поддастся линковке.   -  person thehole    schedule 23.05.2019
comment
Спасибо. Это определенно хорошее начало. Однако он очень похож на параметр облачного эквивалента запроса, который я использую (у меня есть Bitbucket Server). Параметры не те, вроде. (ссылка для документации по облачному API)   -  person Cook    schedule 24.05.2019
comment
Возможный дубликат запроса на извлечение с использованием Stash rest API   -  person thehole    schedule 25.05.2019
comment
Вы можете связаться с Atlassian напрямую и ответить здесь, если их ответ является чем-то общедоступным.   -  person thehole    schedule 25.05.2019
comment
@thehole Я не думаю, что это дубликат: это совсем не та же проблема (у него проблема с аутентификацией), и хотя в ответах есть небольшое объяснение JSON, на самом деле это не отвечает ни на один из моих вопросов. .   -  person Cook    schedule 27.05.2019
comment
Я создал такой же пост на форуме Atlassian Community, но там тоже не получил ответов... Поигравшись с запросом самостоятельно, мне удалось заставить его работать и понять большинство параметров, но я все же не могу добавлять рецензентов... Я отвечу на свой вопрос тем, что узнал однажды. Это будет работать именно так, как я хочу. (И если никто не ответит раньше)   -  person Cook    schedule 27.05.2019
comment
согласен, пытаюсь понять как убрать флаг   -  person thehole    schedule 27.05.2019
comment
У меня также были некоторые попытки с ним. Для рецензентов я узнал, что вы не можете добавить себя в качестве рецензента и что рецензенту нужно как минимум разрешение на чтение репозитория.   -  person TheFRedFox    schedule 08.07.2019


Ответы (1)


Используя документацию найдено здесь мне удалось успешно создать запрос на вытягивание с минимальными свойствами (что, следовательно, является необязательными свойствами) из сценария PowerShell.

В моем примере используется master в качестве ветки для слияния, foo в качестве ветки для слияния из, Project1 и Repository1 в качестве проекта BitBucket и репозитория соответственно. uri выглядит следующим образом (замена рута, проекта и репозитория): https://bitbucket.example.com/rest/api/1.0/projects/Project1/repos/Repository1/pull-requests.

Отправка следующего JSON (с использованием правильных заголовков Content-Type и Authorization) создает запрос на извлечение:

{
            "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"
                }
            }
        }

state и reviewers являются необязательными и не учитываются в этом примере.

person Aage    schedule 29.03.2021