Изменить задачу: привязка к проекту

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 запроса необходимо передать следующие идентификаторы ресурса:

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

Тело запроса

ПараметрТипОбязательныйОписание
project_idinteger / nullНетИдентификатор проекта, в который перемещается задача. null — убрать задачу из текущего проекта
project_status_idintegerНетИдентификатор целевой колонки. Должен принадлежать проекту, переданному в project_id

Сочетания полей и поведение метода:

project_idproject_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-статусу:

КодСтатусОписание
200OKЗадача успешно обновлена
400Bad RequestНекорректное тело запроса (некорректный JSON или пустое тело)
401UnauthorizedНе передан или невалиден токен авторизации
403ForbiddenНет прав на изменение задачи в репозитории
404Not FoundРепозиторий, задача или проект не найдены
500Internal 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.