Изменить задачу: привязка к проекту
PATCH /repos/{owner}/{repo}/issues/{index}
Описание
Метод PATCH изменяет привязку задачи к проекту: перемещает задачу в другой проект или колонку либо убирает ее из проекта. Метод поддерживает частичное обновление: меняются только поля, переданные в теле запроса.
В данной секции описаны только поля, связанные с проектами. Стандартные поля задачи (title, body, type, labels, assignees, state и другие) — см. раздел «Задачи».
Токен
Требуется токен с правами на Запись для Репозитория.
Заголовки
| Параметр | Обязательный | Описание |
|---|---|---|
| Accept | Нет | Тип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=latest |
| Authorization | Да | Токен доступа. Формат: Bearer <YOUR-TOKEN> или token <YOUR-TOKEN> |
| Content-Type | Да | Тип содержимого запроса: application/json |
Параметры пути
В URL запроса необходимо передать следующие идентификаторы ресурса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| owner | string | Да | Владелец репозитория (логин пользователя или имя организации) |
| repo | string | Да | Название репозитория (без расширения .git) |
| index | integer | Да | Номер задачи (сквозная нумерация задач в репозитории) |
Тело запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| project_id | integer / null | Нет | Идентификатор проекта, в который перемещается задача. null — убрать задачу из текущего проекта |
| project_status_id | integer | Нет | Идентификатор целевой колонки. Должен принадлежать проекту, переданному в project_id |
Сочетания полей и поведение метода:
| project_id | project_status_id | Результат |
|---|---|---|
<id проекта> | <id колонки> | Задача перемещается в указанную колонку указанного проекта |
<id проекта> | не передан | Задача добавляется в указанный проект |
null | не передан | Задача убирается из текущего проекта |
| не передан | <id колонки> | Задача перемещается в указанную колонку текущего проекта |
Пример тела запроса
{
"project_id": 42,
"project_status_id": 9
}Пример запроса
Ниже приведен пример использования curl для перемещения задачи с номером 156 в колонку «Done» (идентификатор 9) проекта 42.
curl -X PATCH "https://api.gitverse.ru/repos/myorg/backend-api/issues/156" \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/vnd.gitverse.object+json;version=latest" \
-H "Content-Type: application/json" \
-d '{
"project_id": 42,
"project_status_id": 9
}'Замените YOUR_TOKEN на ваш личный токен доступа.
Ответ при успешном выполнении (200 OK)
При успешном обновлении сервер вернет ответ с кодом 200 OK и телом в формате JSON, содержащим обновленный объект задачи:
{
"id": 163200,
"number": 156,
"title": "Добавить пагинацию в список проектов",
"state": "open",
"updated_at": "2026-09-17T11:05:00Z",
"html_url": "https://gitverse.ru/myorg/backend-api/issues/156"
}Структура ответа
Ответ — объект Issue (обновленная задача). Полная структура описана в графе объектов, раздел «Объект Issue».
Коды ответа
Результат выполнения запроса определяется по HTTP-статусу:
| Код | Статус | Описание |
|---|---|---|
| 200 | OK | Задача успешно обновлена |
| 400 | Bad Request | Некорректное тело запроса (некорректный JSON или пустое тело) |
| 401 | Unauthorized | Не передан или невалиден токен авторизации |
| 403 | Forbidden | Нет прав на изменение задачи в репозитории |
| 404 | Not Found | Репозиторий, задача или проект не найдены |
| 500 | Internal Server Error | Внутренняя ошибка сервера GitVerse |
Пример ответа с ошибкой
Пример некорректного запроса: project_id указывает на несуществующий проект.
{
"project_id": 999,
"project_status_id": 9
}Сервер вернет ответ 404 Not Found:
{
"message": "Not Found",
"documentation_url": "https://gitverse.ru/docs/developers/public-api/errors"
}Прочие коды ошибки возвращают ответ той же структуры, например 400 Bad Request:
{
"message": "Bad Request",
"documentation_url": "https://gitverse.ru/docs/developers/public-api/errors"
}Особенности метода
- чтобы убрать задачу из проекта, передайте
project_id: null. Сама задача не удаляется: она остается в репозитории и продолжает быть доступной; - одновременно задача может принадлежать только одному проекту. Перемещение в новый проект автоматически разрывает привязку к предыдущему;
- можно ли переместить задачу в удаленную колонку? Нет. Если
project_status_idуказывает на несуществующую колонку (в том числе ранее удаленную), запрос завершится ошибкой — колонку нужно выбрать из числа текущих колонок проекта; - перемещение задачи не изменяет ее номер (
number), состояние и остальные стандартные поля; - события перемещения задачи между проектами отражаются в таймлайне задачи с полями
project_id/old_project_id.
Формат ответа и заголовки
Метод возвращает ответ в формате JSON. Заголовок Content-Type в ответе устанавливается в application/vnd.gitverse.object+json;version=latest.