2. POST /repos/{owner}/{repo}/issues/{issue_number}/comments — создать комментарий в задаче

Описание метода

Метод POST создает новый комментарий в задаче или запросе на слияние. Комментарий добавляется к обсуждению задачи и становится видимым всем участникам репозитория.

Метод применяется для:

  • добавления комментариев к задачам и запросам на слияние;
  • интеграции с внешними системами (автоматические уведомления, боты);
  • автоматизации рабочих процессов (комментарии от CI/CD, код-ревью);
  • ведения истории обсуждений по задачам.

Базовый URL:

https://api.gitverse.ru/repos/{owner}/{repo}/issues/{issue_number}/comments

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

ЗаголовокТипОбязательныйОписание
AcceptstringРекомендуетсяТип представления. Значение: application/vnd.gitverse.object+json;version=1
AuthorizationstringДаЛичный токен доступа (personal access token). Формат: Bearer <YOUR_TOKEN> или token <YOUR_TOKEN>
Content-TypestringДаТип содержимого запроса. Значение: application/json

Path-параметры URL

В URL запроса необходимо передать следующие идентификаторы ресурса:

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

Query-параметры

Метод не поддерживает query-параметры.

Тело запроса

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

ПолеТипОбязательноеОписание
bodystringДаТекст комментария. Поддерживается Markdown-разметка

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

{
  "body": "Проблема воспроизводится на версии 2.1.0. Логи во вложении."
}

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

Ниже приведен пример использования curl для создания комментария в задаче с номером 18 в репозитории repo123.

curl -X POST "https://api.gitverse.ru/repos/user123/repo123/issues/18/comments" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Проблема воспроизводится на версии 2.1.0. Логи во вложении."
  }'

Замените YOUR_TOKEN на ваш личный токен доступа.

Ответ при успешном создании (201 Created)

Если комментарий успешно создан, сервер вернет ответ с кодом 201 Created и телом в формате JSON, содержащим объект созданного комментария.

Пример ответа

{
  "id": 456,
  "node_id": null,
  "url": "https://api.gitverse.ru/repos/user123/repo123/issues/comments/456",
  "html_url": "https://gitverse.ru/user123/repo123/issues/18#issuecomment-456",
  "body": "Проблема воспроизводится на версии 2.1.0. Логи во вложении.",
  "user": {
    "id": 101,
    "login": "user123",
    "avatar_url": "https://gitverse.ru/avatars/user123.png",
    "html_url": "https://gitverse.ru/user123"
  },
  "created_at": "2026-06-30T14:23:45.123456Z",
  "updated_at": "2026-06-30T14:23:45.123456Z",
  "issue_url": "https://api.gitverse.ru/repos/user123/repo123/issues/18"
}

Структура объекта ответа

ПолеТипОписание
idintegerУникальный идентификатор комментария
node_idstring / nullГлобальный ID узла GraphQL. Всегда null
urlstringПолный URL к API для получения комментария. Пример: https://api.gitverse.ru/repos/user123/repo123/issues/comments/456
html_urlstringURL для просмотра комментария в веб-интерфейсе GitVerse. Пример: https://gitverse.ru/user123/repo123/issues/18#issuecomment-456
bodystringТекст комментария
userobjectОбъект с информацией об авторе комментария (см. раздел «Объект User»)
created_atstringВременная метка создания в формате ISO 8601
updated_atstringВременная метка последнего обновления в формате ISO 8601
issue_urlstringURL задачи, к которой принадлежит комментарий

Коды HTTP-ответов

Результат выполнения запроса определяется по HTTP-статусу:

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

Примеры ответов с разными кодами

201 Created — комментарий создан

{
  "id": 456,
  "body": "Проблема воспроизводится на версии 2.1.0.",
  "user": {
    "id": 101,
    "login": "user123"
  },
  "created_at": "2026-06-30T14:23:45.123456Z"
}

401 Unauthorized — токен не передан или невалиден

{
  "message": "Requires authentication",
  "documentation_url": "https://gitverse.ru/docs/public-api/errors"
}

403 Forbidden — нет прав на добавление комментариев

{
  "message": "Forbidden: you do not have permission to comment on this issue",
  "documentation_url": "https://gitverse.ru/docs/public-api/errors"
}

404 Not Found — задача не существует

{
  "message": "Issue not found",
  "documentation_url": "https://gitverse.ru/docs/public-api/errors"
}

422 Unprocessable Entity — пустое тело комментария

{
  "message": "Validation failed",
  "errors": [
    {
      "resource": "Comment",
      "field": "body",
      "code": "missing_field"
    }
  ],
  "documentation_url": "https://gitverse.ru/docs/public-api/errors"
}

429 Too Many Requests — превышен лимит запросов

{
  "message": "API rate limit exceeded",
  "documentation_url": "https://gitverse.ru/docs/public-api/rate-limit"
}

Формат ответа и заголовки

Метод возвращает ответ в формате JSON. Заголовок Content-Type в ответе устанавливается в application/vnd.gitverse.object+json;version=1.