Создание запроса на слияниеBeta
Описание
Этот раздел документации описывает конечную точку для создания запроса на слияние в репозитории. Запрос на слияние позволяет предложить изменения из одной ветки в другую, например, из рабочей ветки (head
) в основную ветку (base
). После успешного создания PR возвращается объект с информацией о созданном запросе.
Общие замечания
- Для версий API указывайте заголовок
Accept
с соответствующей версией:
Accept: application/vnd.gitverse+json;version=1
- Для работы с приватными ресурсами требуется авторизация через
Bearer
токен:
Authorization: Bearer \{user_token}
- Базовый URL для всех конечных точек:
https://api.gitverse.ru
- Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением.
Описание метода
POST /repos/{owner}/{repo}/pulls
Параметры пути
{owner}
— имя владельца репозитория (пользователя или организации);{repo}
— название репозитория.
Заголовки запроса
Content-Type: application/json
: указывает, что тело запроса будет в формате JSON;Accept: application/vnd.gitverse+json;version=1
: указывает версию API. В данном случае используется версия1
;Authorization: Bearer {user_token}
: токен авторизации пользователя, который создает запрос на слияние.
Тело запроса
Тело запроса должно содержать следующие поля:
{
"title": "Amazing new feature",
"body": "Please pull these awesome changes in!",
"head": "task13",
"base": "main"
}
Описание полей
Поле | Тип | Обязательное | Описание |
---|---|---|---|
title | string | Да | Заголовок запроса на слияние. |
body | string | Нет | Описание изменений, предлагаемых в PR. |
head | string | Да | Имя ветки, из которой предлагаются изменения (например, task13 ). |
base | string | Да | Имя ветки, в которую будут внесены изменения (например, main ). |
Параметры ответа
Статус 201 Created
: запрос на слияние успешно создан. В теле ответа возвращается объект с информацией о созданном PR;Статус 400 Bad Request
: неверные параметры запроса (например, отсутствуют обязательные поля);Статус 404 Not Found
: веткаhead
илиbase
не существует в репозитории;Статус 403 Forbidden
: у пользователя нет прав на создание PR в этом репозитории.
Пример успешного ответа
{
"id": 22,
"url": "http://localhost:3000/qweqwe1/russia/pulls/22",
"number": 22,
"user": {
"id": 1,
"login": "qweqwe1",
"type": "User",
"avatar_url": "https://secure.gravatar.com/avatar/4cd22c90d4643ede3516ee4578157f7c?d=identicon",
"html_url": "qweqwe1",
"site_admin": false
},
"title": "Amazing new feature",
"body": "Please pull these awesome changes in!",
"labels": [],
"milestone": null,
"assignee": null,
"assignees": null,
"state": "open",
"locked": false,
"comments": 0,
"html_url": "http://localhost:3000/qweqwe1/russia/pulls/22",
"diff_url": "http://localhost:3000/qweqwe1/russia/pulls/22.diff",
"patch_url": "http://localhost:3000/qweqwe1/russia/pulls/22.patch",
"mergeable": true,
"merged": false,
"merged_at": null,
"merge_commit_sha": null,
"merged_by": null,
"maintainer_can_modify": false,
"base": {
"label": "main",
"ref": "main",
"sha": "eaf894a5ebd8e5a75aa2eecac4965ea86d2d571e",
"repo_id": 1,
"repo": {
"id": 1,
"name": "russia",
"full_name": "qweqwe1/russia",
"private": false,
"default_branch": "main"
}
},
"head": {
"label": "task13",
"ref": "task13",
"sha": "cc33bd2dd8f0812eafd7e4fd64998139169c6b05",
"repo_id": 1,
"repo": {
"id": 1,
"name": "russia",
"full_name": "qweqwe1/russia",
"private": false,
"default_branch": "main"
}
},
"created_at": "2025-04-14T16:37:35+03:00",
"updated_at": "2025-04-14T16:37:36+03:00",
"closed_at": null
}
Пример ответа при ошибке
{
"error": "Bad Request",
"message": "The 'head' and 'base' branches must be specified.",
"status": 400
}
Пример запроса
POST https://api.gitverse.ru/repos/qweqwe1/russia/pulls
Content-Type: application/json
Accept: application/vnd.gitverse+json;version=1
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"title": "Amazing new feature",
"body": "Please pull these awesome changes in!",
"head": "task13",
"base": "main"
}
Обработка ошибок
Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением.
Пример ошибки
{
"error": "Unauthorized",
"message": "Authentication is required to access this resource.",
"status": 401
}
Возможные коды ошибок
400 Bad Request
: неверные параметры запроса (например, отсутствуют обязательные поля);401 Unauthorized
: необходима авторизация;403 Forbidden
: у пользователя нет прав на выполнение действия;404 Not Found
: веткаhead
илиbase
не существует в репозитории;500 Internal Server Error
: внутренняя ошибка сервера.
Дополнительная информация
- Для выполнения операции создания запроса на слияние требуется авторизация через
Bearer
токен. - Если пользователь не авторизован, запрос завершится ошибкой
401 Unauthorized
. - Если репозиторий является приватным и пользователь не имеет доступа к нему, запрос завершится ошибкой
403 Forbidden
. - Перед созданием запроса на слияние убедитесь, что ветки
head
иbase
существуют в репозитории. - Если ветка
head
находится в форке, убедитесь, что у вас есть права на создание PR в родительский репозиторий.
Если у вас возникнут вопросы или потребуется дополнительная информация, пожалуйста, обратитесь к документации API или свяжитесь с поддержкой.