Удалить файл

DELETE /repos/{owner}/{repo}/contents/{filename}

Описание

Удаляет указанный файл из репозитория. Операция выполняется через создание нового коммита. Поддерживается указание ветки, сообщения коммита и других параметров.

⚠️ Для удаления файла обязательно указывать SHA-хеш текущей версии файла (поле sha в теле запроса).

Токен

Требуется токен с правами на Запись для Репозитория.

Заголовки

ПараметрОбязательныйОписание
acceptНетТип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=latest

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

ПараметрОбязательныйОписание
ownerДаВладелец репозитория (пользователь или организация)
repoДаНазвание репозитория (без расширения .git)
filenameДаПуть к файлу в репозитории (например, docs/README.md)

Параметры запроса

Данный метод не принимает параметров в строке запроса.

Тело запроса

Тело запроса обязательно и должно быть в формате JSON. Поддерживаемые поля:

ПолеТипОбязательныйОписание
messagestringНетСообщение коммита (по умолчанию: "Delete file via API")
branchstringНетЦелевая ветка (по умолчанию — ветка по умолчанию репозитория)
shastringДаSHA-хеш текущей версии удаляемого файла
new_branchstringНетЕсли указано — создается новая ветка на основе branch и в нее вносится изменение
signoffbooleanНетДобавить подпись Signed-off-by в коммит

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

curl -X DELETE "https://api.gitverse.ru/repos/alice/my-project/contents/docs/README.md" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -d '{
    "message": "Remove outdated documentation",
    "branch": "main",
    "sha": "a1b2c3d4e5f67890..."
  }'

Ответ (200 OK)

Пример JSON-ответа:

{
  "content": null,
  "commit": {
    "sha": "d4c3b2a1...",
    "html_url": "https://gitverse.ru/alice/my-project/commit/d4c3b2a1...",
    "author": {
      "name": "Alice",
      "email": "alice@example.com",
      "date": "2025-10-15T12:00:00Z"
    },
    "committer": {
      "name": "Alice",
      "email": "alice@example.com",
      "date": "2025-10-15T12:00:00Z"
    },
    "message": "Remove outdated documentation",
    "verification": {
      "verified": false,
      "reason": "gpg.error.not_signed_commit",
      "signature": null,
      "payload": null,
      "verified_at": null
    }
  }
}

Проверка подписи коммита

Объект verification содержит результат проверки криптографической подписи коммита.

ПолеТипОписание
verifiedbooleanПризнак успешной проверки подписи. Возвращает true, если подпись подтверждена, иначе — false.
reasonstringТехническая причина результата проверки. Например, gpg.error.not_signed_commit означает, что коммит не содержит подписи.
signaturestring или nullПодпись, извлеченная из коммита. Возвращает null, если подпись отсутствует.
payloadstring или nullДанные, для которых была создана подпись. Возвращает null, если подписанные данные отсутствуют.
verified_atstring или nullДата и время проверки подписи в формате ISO 8601. Возвращает null, если время проверки отсутствует.

Формат ответа

application/vnd.gitverse.object+json;version=1

Коды ответа

КодСтатусОписание
200OKФайл успешно удален
400Bad RequestНекорректное тело запроса или отсутствует sha
401UnauthorizedНе передан или недействителен токен авторизации
403ForbiddenНет прав на запись в репозиторий
404Not FoundРепозиторий, файл или указанная ветка не найдены
409ConflictSHA не совпадает с текущей версией файла
422Unprocessable EntityОшибка валидации (например, попытка удалить несуществующий файл)
429Too Many RequestsПревышен лимит запросов
500Internal Server ErrorВнутренняя ошибка сервера