Cоздать коммит

POST /repos/{owner}/{repo}/git/commits

Описание

Создает новый объект коммита в репозитории на основе указанного дерева (tree), сообщения и родительских коммитов. Этот метод не обновляет ветки и не создает ссылок — он лишь формирует новый коммит в истории Git, который впоследствии можно использовать, например, для обновления ветки через /git/refs.

Заголовки

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

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

ПараметрТипОбязательныйОписание
ownerstringДаВладелец репозитория (пользователь или организация)
repostringДаНазвание репозитория

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

Данный метод не использует параметры запроса.

Тело запроса

Формат: application/json Обязательные поля:

{
  "message": "feat: add new config file",
  "tree": "d3adb33f1234567890abcdef1234567890abcdef",
  "parents": ["a1b2c3d4e5f6789012345678901234567890abcd"],
  "author": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "committer": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  }
}
ПолеТипОбязательныйОписание
messagestringДаСообщение коммита
treestringДаSHA дерева, которое представляет состояние файлов в этом коммите
parentsarrayНет*Список SHA родительских коммитов (обычно один; для корневого коммита — пустой массив или отсутствует)
authorobjectНетИнформация об авторе (если не указан — используется текущий пользователь)
committerobjectНетИнформация о коммитере (если не указан — используется текущий пользователь)

💡 Если author или committer не указаны, GitVerse использует данные авторизованного пользователя и текущее время.

Поля объектов author / committer

ПолеТипОбязательныйОписание
namestringДаИмя автора/коммитера
emailstringДаEmail
datestringНетДата в формате ISO 8601 (например, 2025-10-23T12:00:00Z)

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

curl -X POST "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -H "Content-Type: application/json" \
  -d '{
        "message": "docs: update changelog",
        "tree": "d3adb33f1234567890abcdef1234567890abcdef",
        "parents": ["a1b2c3d4e5f6789012345678901234567890abcd"]
      }'

Ответ (201 Created)

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

{
  "sha": "f00dcafe1234567890abcdef1234567890abcdef",
  "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits/f00dcafe1234567890abcdef1234567890abcdef",
  "html_url": "https://gitverse.ru/gitverse/example-repo/commit/f00dcafe1234567890abcdef1234567890abcdef",
  "author": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "committer": {
    "name": "Alice Developer",
    "email": "alice@example.com",
    "date": "2025-10-23T12:00:00Z"
  },
  "message": "docs: update changelog",
  "tree": {
    "sha": "d3adb33f1234567890abcdef1234567890abcdef",
    "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/trees/d3adb33f1234567890abcdef1234567890abcdef"
  },
  "parents": [
    {
      "sha": "a1b2c3d4e5f6789012345678901234567890abcd",
      "url": "https://api.gitverse.ru/repos/gitverse/example-repo/git/commits/a1b2c3d4e5f6789012345678901234567890abcd",
      "html_url": "https://gitverse.ru/gitverse/example-repo/commit/a1b2c3d4e5f6789012345678901234567890abcd"
    }
  ],
  "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

Поля ответа

ПолеТипОписание
shastringSHA нового коммита
urlstringAPI-ссылка на коммит
html_urlstringСсылка на коммит в веб-интерфейсе
authorobjectАвтор коммита
committerobjectКоммитер
messagestringСообщение коммита
treeobjectИнформация о дереве
parentsarrayСписок родительских коммитов
verificationobjectИнформация о подписи коммита (обычно verified: false)

Подполе tree

ПолеТипОписание
shastringSHA дерева
urlstringAPI-ссылка на дерево

Подполе verification

ПолеТипОписание
verifiedbooleanПодтверждена ли подпись
reasonstringПричина (например, unsigned)
signaturestringnullПодпись (если есть)
payloadstringnullПодписанные данные
verified_atstringДата и время проверки подписиПодписанные данные

Коды ответа

КодСтатусОписание
201CreatedКоммит успешно создан
400Bad RequestНекорректные данные в теле запроса
403ForbiddenНедостаточно прав для записи в репозиторий
404Not FoundРепозиторий не найден
422Unprocessable EntityОшибка валидации (например, недопустимый SHA дерева)
429Too Many RequestsПревышен лимит запросов
500Internal Server ErrorВнутренняя ошибка сервера