Удаление файлов

Удаление файла в репозитории
Beta

Описание

Этот раздел документации описывает процесс удаления файла из репозитория через публичное API. Этот метод позволяет удалять файлы, указывая SHA хеш файла и ветку, в которой находится файл.

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

  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 и сообщением.

  2. Все даты возвращаются в формате ISO 8601.

Описание метода: удаление файла

DELETE /public/api/repos/{username}/{reponame}/contents/{filename}

Параметры пути

  • {username} — имя владельца репозитория;
  • {reponame} — название репозитория;
  • {filename} — путь к файлу, который будет удален (например, README.md, src/main.go).

Заголовки запроса

  • Content-Type: application/json: указывает, что тело запроса будет в формате JSON;
  • Accept: application/vnd.gitverse+json;version=1: указывает версию API. В данном случае используется версия 1;
  • Authorization: Bearer {user_token}: токен авторизации пользователя, который удаляет файл.

Тело запроса

Тело запроса должно содержать JSON-объект с параметрами для удаления файла:

  • sha (string, обязательно): SHA хеш текущего содержимого файла. Требуется для проверки, что файл не был изменён другим пользователем;
  • branch (string, опционально): имя существующей ветки, в которой находится файл. Если не указано, используется ветка по умолчанию (обычно main или master);
  • message (string, опционально): сообщение коммита для удаления файла;
  • new_branch (string, опционально): имя новой ветки, которая будет создана для этого изменения. Если указано, изменение будет выполнено в новой ветке;
  • signoff (boolean, опционально): добавлять ли подпись (Signed-off-by) в коммит. По умолчанию false.

Пример тела запроса

{
	"sha": "1a6731dcd606ebe6723a703d7f3e663bf0e35403",
	"branch": "main",
	"message": "Delete README.md",
	"new_branch": "",
	"signoff": true
}

Ответ сервера

Ответ содержит информацию об удалённом файле и связанном коммите.

Пример успешного ответа

{
	"content": null,
	"commit": {
		"sha": "cc33bd2dd8f0812eafd7e4fd64998139169c6b05",
		"node_id": "MDY6Q29tbWl0MTIzNDU2Nzg5OA==",
		"url": "https://api.gitverse.ru/public/api/repos/example_user/russia/git/commits/cc33bd2dd8f0812eafd7e4fd64998139169c6b05",
		"html_url": "https://gitverse.ru/example_user/russia/commit/cc33bd2dd8f0812eafd7e4fd64998139169c6b05",
		"author": {
			"name": "example_user",
			"email": "qwe@mail.com",
			"date": "2025-04-14T16:37:35+03:00"
		},
		"committer": {
			"name": "example_user",
			"email": "qwe@mail.com",
			"date": "2025-04-14T16:37:35+03:00"
		},
		"message": "Delete README.md",
		"tree": {
			"sha": "eaf894a5ebd8e5a75aa2eecac4965ea86d2d571e",
			"url": "https://api.gitverse.ru/public/api/repos/example_user/russia/git/trees/eaf894a5ebd8e5a75aa2eecac4965ea86d2d571e"
		},
		"parents": [
			{
				"sha": "abc123def456ghi789jkl012mno345pqr678stu901",
				"url": "https://api.gitverse.ru/public/api/repos/example_user/russia/git/commits/abc123def456ghi789jkl012mno345pqr678stu901",
				"html_url": "https://gitverse.ru/example_user/russia/commit/abc123def456ghi789jkl012mno345pqr678stu901"
			}
		]
	}
}

Обработка ошибок

Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением.

Пример ошибки

{
	"error": "Unauthorized",
	"message": "Authentication is required to access this resource.",
	"status": 401
}

Возможные коды ошибок

  • 400 Bad Request: неверные параметры запроса (например, отсутствуют обязательные поля);
  • 401 Unauthorized: необходима авторизация;
  • 403 Forbidden: у пользователя нет прав на выполнение действия;
  • 404 Not Found: репозиторий или файл не найдены;
  • 409 Conflict: SHA хеш не совпадает с текущим состоянием файла;
  • 500 Internal Server Error: внутренняя ошибка сервера.

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

  1. Для удаления файла требуется авторизация через токен.
  2. Если параметр branch не указан, используется ветка по умолчанию (обычно main или master).
  3. Если параметр new_branch указан, изменение будет выполнено в новой ветке.
  4. Если SHA хеш файла не совпадает с текущим состоянием файла, запрос завершится ошибкой 409 Conflict.

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