2. POST /repos/{owner}/{repo}/issues/{issue_number}/comments — создать комментарий в задаче
Описание метода
Метод POST создает новый комментарий в задаче или запросе на слияние. Комментарий добавляется к обсуждению задачи и становится видимым всем участникам репозитория.
Метод применяется для:
- добавления комментариев к задачам и запросам на слияние;
- интеграции с внешними системами (автоматические уведомления, боты);
- автоматизации рабочих процессов (комментарии от CI/CD, код-ревью);
- ведения истории обсуждений по задачам.
Базовый URL:
https://api.gitverse.ru/repos/{owner}/{repo}/issues/{issue_number}/comments
Заголовки запроса
| Заголовок | Тип | Обязательный | Описание |
|---|---|---|---|
Accept | string | Рекомендуется | Тип представления. Значение: application/vnd.gitverse.object+json;version=1 |
Authorization | string | Да | Личный токен доступа (personal access token). Формат: Bearer <YOUR_TOKEN> или token <YOUR_TOKEN> |
Content-Type | string | Да | Тип содержимого запроса. Значение: application/json |
Path-параметры URL
В URL запроса необходимо передать следующие идентификаторы ресурса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
owner | string | Да | Владелец репозитория (пользователь или организация) |
repo | string | Да | Название репозитория (без расширения .git) |
issue_number | integer | Да | Порядковый номер задачи или запроса на слияние |
Query-параметры
Метод не поддерживает query-параметры.
Тело запроса
Тело запроса должно содержать JSON-объект с текстом комментария.
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
body | string | Да | Текст комментария. Поддерживается 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"
}Структура объекта ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | Уникальный идентификатор комментария |
node_id | string / null | Глобальный ID узла GraphQL. Всегда null |
url | string | Полный URL к API для получения комментария. Пример: https://api.gitverse.ru/repos/user123/repo123/issues/comments/456 |
html_url | string | URL для просмотра комментария в веб-интерфейсе GitVerse. Пример: https://gitverse.ru/user123/repo123/issues/18#issuecomment-456 |
body | string | Текст комментария |
user | object | Объект с информацией об авторе комментария (см. раздел «Объект User») |
created_at | string | Временная метка создания в формате ISO 8601 |
updated_at | string | Временная метка последнего обновления в формате ISO 8601 |
issue_url | string | URL задачи, к которой принадлежит комментарий |
Коды HTTP-ответов
Результат выполнения запроса определяется по HTTP-статусу:
| Код | Статус | Описание |
|---|---|---|
201 | Created | Комментарий успешно создан |
400 | Bad Request | Некорректные параметры запроса |
401 | Unauthorized | Не передан или невалиден токен авторизации |
403 | Forbidden | Нет прав на добавление комментариев в репозиторий |
404 | Not Found | Задача не найдена либо нет доступа к ней |
422 | Unprocessable Entity | Ошибка валидации (например, пустое тело комментария) |
429 | Too Many Requests | Превышен лимит запросов |
500 | Internal 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.