Публичный APIРепозитории18. GET /repos/{owner}/{repo}/issues/{index}/timeline — получить хронологию событий задачи

18. GET /repos/{owner}/{repo}/issues/{index}/timeline — получить хронологию событий задачи

Описание

Возвращает хронологию всех событий и комментариев, связанных с задачей (issue) или с запросом на слияние (pr), включая:

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

Поддерживается пагинация и фильтрация по временному диапазону.

На данный момент хронология событий доступна только для запросв на слияние (pr). Поддержка для задач (issues) будет добавлена позже.

Параметры URL

ПараметрОбязательныйОписание
ownerДаВладелец репозитория (пользователь или организация)
repoДаНазвание репозитория (без расширения .git)
indexДаИндекс задачи или пул-реквеста в репозитории (целое число)

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

ПараметрТипОбязательныйОписание
pageintegerНетНомер страницы (по умолчанию: 1)
per_pageintegerНетКоличество элементов на странице (максимум: 50, по умолчанию: 30)
sincestringНетТолько события, созданные после указанной даты (в формате RFC3339, например: 2025-01-01T00:00:00Z)
beforestringНетТолько события, созданные до указанной даты (в формате RFC3339)

⚠️ Параметры since и before можно использовать одновременно для ограничения временного диапазона.

Тело запроса

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

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

curl -X GET "https://api.gitverse.ru/public/api/repos/gitverse-team/core-api/issues/42/timeline?since=2025-10-01T00:00:00Z&per_page=20" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

Ответ (200 OK)

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

[
  {
    "id": 1001,
    "type": "commented",
    "user": {
      "login": "developer1",
      "id": 789,
      "avatar_url": "https://gitverse.ru/avatars/789.png",
      "html_url": "https://gitverse.ru/developer1"
    },
    "created_at": "2025-10-01T14:30:00Z",
    "body": "Спасибо за замечание! Исправим в ближайшем релизе.",
    "html_url": "https://gitverse.ru/gitverse-team/core-api/issues/42#issuecomment-1001"
  },
  {
    "id": 1002,
    "type": "labeled",
    "user": {
      "login": "maintainer",
      "id": 456,
      "avatar_url": "https://gitverse.ru/avatars/456.png",
      "html_url": "https://gitverse.ru/maintainer"
    },
    "created_at": "2025-10-01T14:35:00Z",
    "label": {
      "name": "bug",
      "color": "d73a4a"
    }
  },
  {
    "id": 1003,
    "type": "closed",
    "user": {
      "login": "maintainer",
      "id": 456
    },
    "created_at": "2025-10-02T09:00:00Z"
  }
]

💡 Типы событий (type) включают: commented, labeled, unlabeled, assigned, unassigned, closed, reopened, renamed, merged, referenced, milestoned, demilestoned и др.

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

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

Поля каждого события

ПолеТипОписание
idintegerУникальный идентификатор события
typestringТип события (например, commented, labeled, closed)
userobjectАвтор события
created_atstringДата события (RFC3339)
bodystringТекст комментария (только для type: commented)
labelobjectМетка (только для labeled/unlabeled)
assigneeobjectНазначенный пользователь (только для assigned/unassigned)
old_title / new_titlestringСтарый и новый заголовок (для renamed)
html_urlstringСсылка на событие в веб-интерфейсе (если применимо)

📌 Полный список полей зависит от типа события. Неиспользуемые поля отсутствуют в ответе.

Коды ответа

КодСтатусОписание
200OKХронология успешно получена
400Bad RequestНекорректный формат параметров (например, неверная дата)
401UnauthorizedНе передан или недействителен токен авторизации
403ForbiddenНет прав на чтение репозитория
404Not FoundРепозиторий или задача с указанным индексом не найдены
500Internal Server ErrorВнутренняя ошибка сервера