Справка по объектам публичного API задач, проектов и запросов на слияние
Данный документ описывает объекты (структуры ответов) публичного API GitVerse, которые встречаются в примерах ответов документации четырех разделов:
-
общие методы для задач и запросов на слияние (issues, PR, комментарии, реакции, метки, таймлайн, вложения);
-
методы, применяемые только к задачам (types, родительская задача, подзадачи, метки задачи, реакции, вложения, связанная разработка);
-
методы работы с запросами на слияние (files, commits, reviews, комментарии в PR, status merge);
-
методы работы с проектами (Kanban-доски: проекты, колонки, привязка задач к проектам).
Объекты взаимно переиспользуются между файлами: одна и та же логическая сущность (например, пользователь, метка, репозиторий, комментарий) появляется в ответах разных методов и в разных вложенных контекстах. Ниже построен граф этих объектов и приведено описание каждого из них.
1. User (Пользователь)
Один из самых переиспользуемых объектов. Появляется как:
- автор задачи
issue.userи исполнителиassignee/assignees; - автор комментария
comment.user; - автор реакции
reaction.user; - автор/исполнитель/ревьюер/«сливший» PR (
user,assignees,requested_reviewers,merged_by); - автор и коммиттер коммита (
author,committer); - автор ревью
review.user; - владелец комментария/резолвер в
ReviewComment; - пользователь в событии таймлайна.
В документации встречаются три варианта структуры.
1.1. Базовая структура (используется в issue, комментариях)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор пользователя |
name | string | Отображаемое имя |
login | string | Логин (username) |
type | string | Тип аккаунта (User, Organization и т.п.) |
bio | string | Биография |
email | string / null | |
avatar_url | string | Ссылка на аватар |
html_url | string | Ссылка на профиль в веб-интерфейсе |
url | string | API-ссылка на пользователя |
followers_url | string | Ссылка на список подписчиков |
following_url | string | Ссылка на список подписок |
repos_url | string | Ссылка на список репозиториев |
organizations_url | string | Ссылка на список организаций |
site_admin | boolean | Является ли администратором GitVerse |
location | string / null | Местоположение |
is_verified | boolean | Проверенный ли аккаунт |
followers | integer | Количество подписчиков |
following | integer | Количество подписок |
public_repos | integer | Количество публичных репозиториев |
stars_count | integer | Количество звезд |
created_at | string (date-time) | Дата регистрации (RFC 3339) |
updated_at | string (date-time) | Дата последнего обновления |
1.2. Расширенная структура (вместо location/name использует full_name, website; используется в PR-объектах и ревью)
| Поле | Описание |
|---|---|
login | Логин пользователя |
id | Уникальный идентификатор |
avatar_url | Ссылка на аватар |
html_url | Ссылка на профиль |
url | API-ссылка |
type | Тип аккаунта |
name / full_name | Имя пользователя |
bio, email, location, website | Контактные данные |
followers, following, public_repos, stars_count | Счетчики |
followers_url, following_url, organizations_url, repos_url, starred_url, subscriptions_url | Ссылки на подразделы |
site_admin, is_verified | Флаги |
created_at, updated_at | Даты |
Примечание: в ряде компактных ответов (например, в событии таймлайна типа
commentили в сокращенных вложениях) объектuserприводится сокращенно — только{ "id": ..., "login": ... }.
2. Repository (Репозиторий)
В документации встречаются три варианта вложенности.
2.1. Базовая структура (в issue.repository)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор репозитория |
name | string | Название репозитория |
owner | string | Логин владельца |
full_name | string | Полное имя owner/name |
2.2. Вариант «ref» (в base.repo / head.repo PR)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор репозитория |
name | string | Название |
full_name | string | owner/name |
owner | object | Краткий объект владельца (id, login, avatar_url, html_url, type) |
private | boolean | Приватность |
description | string / null | Описание |
default_branch | string | Ветка по умолчанию |
html_url | string | Ссылка в веб-интерфейсе |
url | string | API-ссылка |
2.3. Расширенная структура (в development веток и PR, в ответе создания PR)
Содержит все поля варианта «ref», а также:
| Поле | Тип | Описание |
|---|---|---|
fork | boolean | Является ли форком |
forks, forks_count | integer | Количество форков |
language | string / null | Основной язык |
stargazers_count | integer | Звезды |
watchers, watchers_count | integer | Наблюдатели |
size | integer | Размер |
open_issues, open_issues_count | integer | Открытые задачи |
is_template | boolean | Шаблонный ли |
topics | array | Темы |
archived, disabled | boolean | Флаги состояния |
visibility | string | Видимость (public/private) |
pushed_at | string | Дата последнего push |
has_issues, has_wiki, has_projects, has_pages, has_downloads, allow_forking | boolean | Возможности репозитория |
homepage | string / null | Домашняя страница |
license | object / null | Лицензия (key, name, spdx_id, url) |
created_at, updated_at | string | Даты |
allow_merge_commit, allow_squash_merge, allow_rebase_merge, delete_branch_on_merge | boolean | Настройки слияния |
clone_url, ssh_url, mirror_url | string | URL клонирования |
contents_url, forks_url, hooks_url, issue_comment_url, issues_url, languages_url, pulls_url | string | API-ссылки на подразделы |
permissions | object | Права (pull, push, admin, maintain, triage) |
role_name | string | Роль текущего пользователя |
template_repository, parent | object / null | Связанные репозитории |
3. Milestone (Веха)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор вехи |
title | string | Название |
description | string / null | Описание |
state | string | Состояние (open / closed) |
due_on | string (date-time) / null | Срок выполнения |
created_at | string (date-time) | Дата создания |
updated_at | string (date-time) | Дата обновления |
closed_at | string (date-time) / null | Дата закрытия |
open_issues | integer | Открытые задачи |
closed_issues | integer | Закрытые задачи |
На данном этапе поле
milestoneвсегдаnull(не заполняется).
4. Label (Метка)
Появляется в: задаче (labels[]), PR (labels[]), подзадаче, событии таймлайна, а также как корневой объект методов работы с метками (/labels, /labels/{name}).
4.1. Базовая структура (в составе задач/PR)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор метки |
name | string | Название |
description | string | Описание |
color | string | Цвет (hex без #) |
exclusive | boolean | Признак исключительности метки |
is_archived | boolean | Заархивирована ли |
url | string | API-ссылка на метку |
4.2. Расширенная структура (ответ создания/редактирования метки)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор метки |
node_id | string | Глобальный ID узла (всегда null) |
url | string | API-ссылка |
name | string | Название |
description | string | Описание |
color | string | Цвет (hex без #) |
default | boolean / null | Создана ли по умолчанию (всегда null) |
exclusive | boolean | Признак исключительности |
5. IssueType (Тип задачи)
Появляется как корневой объект /orgs/{org}/issue-types и как вложенный type в задаче.
5.1. Базовая структура (в объекте задачи)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор типа |
code | string | Код типа |
name | string | Название |
color | string | Цвет |
5.2. Расширенная структура (эндпоинт типов)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор типа |
node_id | string | Глобальный ID узла (всегда null) |
code | string | Код типа (task, bug, story, epic) |
name | string | Название типа |
description | string / null | Описание (всегда null) |
color | string | Цвет типа |
6. Attachment (Вложение / Файл)
Появляется в: задаче (assets[], attachments[]), комментарии (attachments[]), а также как корневой объект методов вложений и удаления файлов.
6.1. Базовая структура
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор вложения |
name | string | Имя файла |
size | integer | Размер в байтах |
created_at | string (date-time) | Дата загрузки |
uuid | string | Уникальный идентификатор файла |
browser_download_url | string | Прямая ссылка на скачивание |
6.2. Вариант «asset» (в задаче assets[])
Дополнительно содержит поле download_count (integer) — количество скачиваний.
7. SubIssuesSummary (Сводка по подзадачам)
Появляется в объекте задачи, у которой есть подзадачи (parent), а также в ответах методов /sub_issues.
| Поле | Тип | Описание |
|---|---|---|
total | integer | Общее количество дочерних задач |
completed | integer | Количество завершенных дочерних задач |
percent_completed | integer | Процент выполненных задач |
Поле возвращается только для задач. Для запросов на слияние это поле не добавляется.
8. RepositoryRef (ветки base и head в PR)
Представляет пару «ветка + репозиторий» для целевой (base) и исходной (head) ветки запроса на слияние.
| Поле | Тип | Описание |
|---|---|---|
label | string | Метка в формате owner:ref |
ref | string | Имя ветки |
sha | string | SHA последнего коммита в ветке |
repo_id | integer | Идентификатор репозитория |
repo | object | Объект репозитория |
9. Branch и BranchCommit (Ветка и коммит ветки)
Используется в массиве development.branches (связанная разработка).
9.1. Branch (Ветка)
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя ветки |
commit | object | Ссылка на коммит (см. ниже) |
protected | boolean | Защищена ли ветка |
repository | object | Репозиторий ветки |
9.2. BranchCommit
| Поле | Тип | Описание |
|---|---|---|
url | string | API-ссылка на коммит |
sha | string | SHA коммита |
html_url | string | Ссылка на просмотр коммита |
created | string (date-time) | Дата создания |
10. Development (Связанная разработка)
Возвращается в объекте задачи (поле development) и как корневой объект методов /issues/{issue_number}/development.
| Поле | Тип | Описание |
|---|---|---|
pulls | array | Массив связанных запросов на слияние (объекты PR) |
branches | array | Массив связанных веток (объекты Branch) |
В кратких ответах методов привязки (
POST/DELETE) массивpullsможет приводиться сокращенно (толькоnumberи/илиtitle), аbranches— толькоname,owner_name,repo_name.
11. Объекты Git-коммита (CommitMeta, GitUser, Tree)
Вложенная часть объекта Commit.
11.1. CommitMeta (поле commit)
| Поле | Тип | Описание |
|---|---|---|
author | object | Автор из Git-коммита (name, email, date) |
committer | object | Коммиттер из Git-коммита (name, email, date) |
message | string | Сообщение коммита |
tree | object | Дерево Git (sha, url, created) |
url | string | API-ссылка |
commit.author/commit.committer— метаданные, указанные в самом Git-коммите (имя и email). Могут отличаться от объектовauthor/committerверхнего уровня.
11.2. GitUser (автор/коммиттер внутри commit)
| Поле | Тип | Описание |
|---|---|---|
name | string | Имя |
email | string | |
date | string (date-time) | Дата |
11.3. Tree (дерево)
| Поле | Тип | Описание |
|---|---|---|
sha | string | SHA дерева |
url | string | API-ссылка |
created | string (date-time) | Дата создания |
12. Commit (Коммит)
Корневой объект массива в /pulls/{pull_number}/commits.
| Поле | Тип | Описание |
|---|---|---|
sha | string | SHA коммита |
commit | object | Метаданные коммита |
commit.author | object | Автор из Git |
commit.committer | object | Коммиттер из Git |
commit.message | string | Сообщение |
commit.tree | object | Дерево Git |
author | object / null | Пользователь-автор в GitVerse (по email); null, если не найден |
committer | object / null | Пользователь-коммиттер в GitVerse |
parents | array | Список родительских коммитов (sha, url, html_url) |
html_url | string | Веб-ссылка на коммит |
url | string | API-ссылка |
created | string (date-time) | Дата создания |
branch | string | Ветка (при наличии) |
files | array | Измененные файлы (объекты File) |
stats | object | Статистика (additions, deletions, total) |
verification | object | Проверка подписи (verified, reason, signature, payload, verified_at) |
13. File (Измененный файл)
Корневой объект массива /pulls/{pull_number}/files и вложенный элемент commit.files.
| Поле | Тип | Описание |
|---|---|---|
filename | string | Путь к файлу |
previous_filename | string / null | Прежний путь (для renamed) |
status | string | Статус: added, modified, removed, renamed |
additions | integer | Добавлено строк |
deletions | integer | Удалено строк |
changes | integer | Всего изменено строк (additions + deletions) |
blob_url | string | Ссылка на просмотр файла |
raw_url | string | Прямая ссылка на содержимое |
contents_url | string | API-ссылка на содержимое |
sha | string | SHA файла |
patch | string | Отличия в формате unified diff (может отсутствовать для бинарных) |
14. Issue (Задача)
Корневой объект методов работы с задачами (/issues, /issues/{issue_number}, POST /issues, /parent, /sub_issues). Несколько составных полей переиспользуют описанные выше объекты.
Поля
state_reason,pinned_comment,active_lock_reason,closed_by,author_association,draft,body_html,body_text,reactions,issue_dependencies_summary,issue_field_valuesв ответе не возвращаются.
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор задачи |
node_id | string | Глобальный ID узла (всегда null) |
url | string | API-ссылка на задачу |
repository_url | string | API-ссылка на репозиторий |
labels_url | string | URL-шаблон меток (.../labels{/name}) |
comments_url | string | URL комментариев |
events_url | string / null | URL событий (всегда null) |
html_url | string | Ссылка в веб-интерфейсе |
number | integer | Порядковый номер задачи в репозитории |
state | string | Состояние: open (Открыто/Запланировано/В работе) или closed (Готово) |
title | string | Заголовок |
body | string / null | Содержимое (Markdown) |
user | object | Автор |
original_author | string | Исходный автор |
original_author_id | integer | ID исходного автора |
ref | string | Ссылка |
assets | array | Вложения-ассеты |
attachments | array | Вложения |
labels | array | Метки |
milestone | object / null | Веха (всегда null в задачах) |
assignee | object / null | Исполнитель |
assignees | array | Исполнители |
type | object / null | Тип задачи |
locked | boolean | Заблокирована ли |
comments | integer | Количество комментариев |
created_at | string (date-time) | Дата создания (RFC 3339) |
updated_at | string (date-time) | Дата обновления |
closed_at | string (date-time) / null | Дата закрытия |
due_date | string / null | Контрольный срок |
timeline_url | string | URL таймлайна |
pull_request | object / null | Метаданные, если это PR |
draft | boolean | Является ли черновиком (для задач всегда false) |
repository | object | Репозиторий |
development | object | Связанная разработка |
sub_issues_summary | object | Сводка по подзадачам (только для задач) |
parent_issue_url | string / null | URL родительской задачи (для подзадач) |
15. PullRequest (Запрос на слияние)
Корневой объект методов /pulls, /pulls/{pull_number}, POST /pulls, PATCH /pulls/{number}, а также вложенный элемент development.pulls.
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор PR |
number | integer | Номер PR в репозитории |
state | string | Состояние: open, closed |
title | string | Заголовок |
body | string | Описание |
user | object | Автор |
html_url | string | Ссылка в веб-интерфейсе |
url | string | API-ссылка |
diff_url | string | Ссылка на diff |
patch_url | string | Ссылка на patch |
created_at | string (date-time) | Дата создания |
updated_at | string (date-time) | Дата обновления |
closed_at | string / null | Дата закрытия |
merged_at | string / null | Дата слияния |
merged | boolean | Слит ли |
mergeable | boolean | Можно ли слить без конфликтов |
merge_commit_sha | string / null | SHA коммита слияния |
merged_by | object / null | Кто слил |
is_draft / draft | boolean | Является ли черновиком |
locked | boolean | Заблокирован ли от комментариев |
maintainer_can_modify | boolean | Могут ли мейнтейнеры менять ветку автора |
comments | integer | Количество комментариев |
review_comments | integer | Количество ревью-комментариев |
additions | integer | Добавлено строк |
deletions | integer | Удалено строк |
changed_files | integer | Изменено файлов |
labels | array | Метки |
assignee | object / null | Исполнитель |
assignees | array | Исполнители |
milestone | object / null | Веха |
requested_reviewers | array | Запрошенные ревьюеры |
requested_teams | array | Запрошенные команды |
base | object | Целевая ветка |
head | object | Исходная ветка |
16. IssueComment (Комментарий)
Корневой объект методов комментариев к задачам/PR (/issues/{n}/comments, /issues/comments/{id}, POST/PATCH комментариев).
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор комментария |
node_id | string / null | Глобальный ID узла (всегда null) |
url | string | API-ссылка на комментарий |
html_url | string | Ссылка в веб-интерфейсе |
body | string | Текст (Markdown) |
body_text | string | Текст без форматирования |
body_html | string | Текст в HTML |
user | object / null | Автор |
attachments | array | Вложения |
created_at | string (date-time) | Дата создания |
updated_at | string (date-time) | Дата обновления |
issue_url | string | API-ссылка на задачу/PR |
author_association | string | Роль автора: OWNER, MEMBER, CONTRIBUTOR, NONE |
В ряде ответов встречается дополнительное поле
reactions(обобщенная статистика реакций на комментарий). Поляbody_text,body_html,author_association,performed_via_github_app,pinмогут не возвращаться в зависимости от метода.
17. ReviewComment (Инлайн-комментарий к PR)
Корневой объект метода POST /pulls/{pull_number}/comments (комментарий к файлу/строке в diff).
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор комментария |
body | string | Текст |
commit_id | string | SHA коммита, к которому относится комментарий |
path | string | Путь к файлу |
position | integer | Позиция в diff |
original_position | integer | Исходная позиция |
line | integer | Номер строки |
side | string | Сторона diff |
diff_hunk | string | Фрагмент diff |
html_url | string | Ссылка в веб-интерфейсе |
pull_request_url | string | Ссылка на PR |
pull_request_review_id | integer | ID ревью, в рамках которого создан комментарий |
in_reply_to_id | integer / null | ID комментария, ответом на который он является |
original_commit_id | string | SHA исходного коммита |
user | object | Автор |
resolver | object / null | Пользователь, закрывший (резолвнувший) комментарий |
created_at | string (date-time) | Дата создания |
updated_at | string (date-time) | Дата обновления |
18. Reaction (Реакция)
Корневой объект методов реакций (POST /issues/{n}/reactions, POST .../comments/{id}/reactions).
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор реакции |
content | string | Тип реакции (например, emoji-код) |
user | object | Пользователь, поставивший реакцию |
created_at | string (date-time) | Дата создания |
19. TimelineEvent (Событие таймлайна)
Корневой объект массива /issues/{issue_number}/timeline. Набор заполненных полей зависит от type события.
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор события |
type | string | Тип события (comment, change_title, label, assigned, referenced и др.) |
html_url | string | Ссылка на событие |
pull_request_url | string | Ссылка на PR (для связанных событий) |
issue_url | string | Ссылка на задачу |
user | object | Инициатор события |
body | string | Текст события |
created_at | string (date-time) | Дата создания |
updated_at | string (date-time) | Дата обновления |
old_project_id, project_id | integer | Идентификаторы проекта |
old_milestone, milestone | object / null | Веха до/после |
tracked_time | string / null | Затраченное время |
old_title, new_title | string | Старый/новый заголовок |
old_ref, new_ref | string | Старая/новая ссылка |
ref_issue | object / null | Связанная задача |
ref_comment | object / null | Связанный комментарий |
ref_action | string | Действие ссылки (none и др.) |
ref_commit_sha | string | SHA коммита |
review_id | integer | Идентификатор ревью |
label | object / null | Метка |
assignee | object / null | Исполнитель |
assignee_team | object / null | Команда-исполнитель |
removed_assignee | boolean | Был ли исполнитель снят |
resolve_doer | object / null | Кто закрыл |
dependent_issue | object / null | Зависимая задача |
20. Review (Ревью)
Корневой объект методов ревью (/pulls/{n}/reviews, POST .../reviews, POST .../reviews/{id}/events).
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор ревью |
state | string | Состояние: COMMENTED, APPROVED, CHANGES_REQUESTED и др. |
body | string | Текст ревью |
user | object | Автор |
commit_id | string | SHA коммита, к которому относится ревью |
comments_count | integer | Количество комментариев в ревью |
submitted_at | string (date-time) | Дата отправки ревью |
updated_at | string (date-time) | Дата обновления |
html_url | string | Ссылка в веб-интерфейсе |
pull_request_url | string | Ссылка на PR |
dismissed | boolean | Отклонено ли |
stale | boolean | Устарело ли |
official | boolean | Официальное ли |
team | object / null | Команда |
21. Team и Organization (Команда и Организация)
Используются в поле requested_teams объекта PR.
21.1. Team (Команда)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор команды |
name | string | Название |
slug | string | Slug команды |
description | string | Описание |
html_url | string | Ссылка |
members_url | string | Ссылка на участников |
members_count | integer | Количество участников |
repos_count | integer | Количество репозиториев |
permission | string | Право |
privacy | string | Приватность |
can_create_org_repo | boolean | Может ли создавать репозитории организации |
includes_all_repositories | boolean | Включает все репозитории |
notification_setting | string | Настройка уведомлений |
organization | object | Организация (см. ниже) |
21.2. Organization (краткая)
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор |
login | string | Логин |
avatar_url | string | Аватар |
html_url | string | Ссылка |
type | string | Тип (Organization) |
22. Project (Проект)
Корневой объект методов работы с проектами (GET/POST /repos/{owner}/{repo}/projects, GET/PATCH /repos/{owner}/{repo}/projects/{project_id}); в ответе списка — элемент массива.
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор проекта |
title | string | Название проекта |
description | string | Описание проекта |
private | boolean | Флаг приватности проекта (true — приватный, false — публичный) |
state | string | Состояние проекта (open, closed) |
created_at | string (date-time) | Дата создания проекта |
updated_at | string (date-time) | Дата последнего обновления |
closed_at | string (date-time) / null | Дата закрытия проекта (если открыт — null) |
columns | array | Список колонок проекта (массив объектов ProjectColumn) |
23. ProjectColumn (Колонка проекта)
Появляется как корневой объект методов работы с колонками (POST/PATCH /repos/{owner}/{repo}/projects/{project_id}/columns/...) и как вложенный columns[] в объекте Project.
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор колонки |
title | string | Название колонки |
color | string | Цвет колонки в формате HEX (например, #0969DA) |
default | boolean | Является ли колонка колонкой по умолчанию |
sorting | integer | Порядковый номер колонки для сортировки |
created_at | string (date-time) | Дата создания колонки |
updated_at | string (date-time) | Дата последнего обновления колонки |