Запросы на слияние

Создание запроса на слияние
Beta

Описание

Этот раздел документации описывает конечную точку для создания запроса на слияние в репозитории. Запрос на слияние позволяет предложить изменения из одной ветки в другую, например, из рабочей ветки (head) в основную ветку (base). После успешного создания PR возвращается объект с информацией о созданном запросе.

Общие замечания

  1. Для версий API указывайте заголовок Accept с соответствующей версией:
Accept: application/vnd.gitverse+json;version=1
  1. Для работы с приватными ресурсами требуется авторизация через Bearer токен:
Authorization: Bearer \{user_token}
  1. Базовый URL для всех конечных точек:
https://api.gitverse.ru
  1. Если запрос завершается неудачно, 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"
}

Описание полей

ПолеТипОбязательноеОписание
titlestringДаЗаголовок запроса на слияние.
bodystringНетОписание изменений, предлагаемых в PR.
headstringДаИмя ветки, из которой предлагаются изменения (например, task13).
basestringДаИмя ветки, в которую будут внесены изменения (например, 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: внутренняя ошибка сервера.

Дополнительная информация

  1. Для выполнения операции создания запроса на слияние требуется авторизация через Bearer токен.
  2. Если пользователь не авторизован, запрос завершится ошибкой 401 Unauthorized.
  3. Если репозиторий является приватным и пользователь не имеет доступа к нему, запрос завершится ошибкой 403 Forbidden.
  4. Перед созданием запроса на слияние убедитесь, что ветки head и base существуют в репозитории.
  5. Если ветка head находится в форке, убедитесь, что у вас есть права на создание PR в родительский репозиторий.

Если у вас возникнут вопросы или потребуется дополнительная информация, пожалуйста, обратитесь к документации API или свяжитесь с поддержкой.