3. GET /repos/{owner}/{repo}/issues/{issue_number}/comments — получить комментарии задачи

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

Метод GET возвращает список всех комментариев к задаче (issue) или запросу на слияние (pull request). Поддерживается пагинация для получения большого количества комментариев.

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

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

Базовый 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>. Для публичных репозиториев заголовок не обязателен, но повышает лимиты скорости

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

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

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

Query-параметры

Для пагинации результатов можно использовать следующие параметры:

ПараметрТипОбязательныйОписаниеПо умолчанию
pageintegerНетНомер страницы пагинации (начиная с 1)1
per_pageintegerНетКоличество результатов на странице (макс. 100)30
sincestringНетТолько комментарии, обновленные после указанной даты (формат ISO 8601)

Пример запроса с пагинацией

curl -X GET "https://api.gitverse.ru/repos/user123/repo123/issues/18/comments?page=2&per_page=50" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

Тело запроса

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

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

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

curl -X GET "https://api.gitverse.ru/repos/user123/repo123/issues/18/comments" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

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

Ответ при успешном получении (200 OK)

Если задача найдена и у токена есть права на чтение репозитория, сервер вернет ответ с кодом 200 OK и телом в формате 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"
  },
  {
    "id": 457,
    "node_id": null,
    "url": "https://api.gitverse.ru/repos/user123/repo123/issues/comments/457",
    "html_url": "https://gitverse.ru/user123/repo123/issues/18#issuecomment-457",
    "body": "Спасибо за информацию! Посмотрю логи.",
    "user": {
      "id": 202,
      "login": "developer42",
      "avatar_url": "https://gitverse.ru/avatars/developer42.png",
      "html_url": "https://gitverse.ru/developer42"
    },
    "created_at": "2026-06-30T15:10:22.654321Z",
    "updated_at": "2026-06-30T15:10:22.654321Z",
    "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-статусу:

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

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

200 OK — список комментариев получен

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

200 OK — комментариев нет (пустой массив)

[]

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

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

403 Forbidden — нет прав на доступ к репозиторию

{
  "message": "Forbidden: you do not have access to this repository",
  "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"
}

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.