Массовое обновление задач

POST /repos/{owner}/{repo}/issues/bulk/update

Описание

Метод POST обновляет поля задач, выбранных явным списком идентификаторов и/или query-фильтрами списка задач.

Выбор задач задается в теле запроса (список идентификаторов) и/или query-фильтрами списка задач.

Ответ содержит только задачи, которые не были полностью обработаны, и список ошибок по полям. Если все задачи обработаны успешно, data — пустой массив.

Метод применяется для массового изменения атрибутов задач: состояния, типа, исполнителей, меток, проекта и контрольного срока.

Важно: учитывается приватность репозитория. Если репозиторий приватный, а запрос выполняется не владельцем, соавтором или участником команды с доступом к репозиторию, возвращается ошибка 404.

Токен

Требуется токен с правами на Запись для Репозитория.

Заголовки

ПараметрОбязательныйОписание
AcceptНетТип содержимого ответа. Рекомендуется установить значение application/vnd.gitverse.object+json;version=1
AuthorizationДаТокен доступа. Формат: Bearer <YOUR-TOKEN> или token <YOUR-TOKEN>
Content-TypeДаapplication/vnd.gitverse.object+json;version=1

Параметры

ПараметрГде передатьТипОбязательныйОписание
owner, repoпутьstringДаВладелец и имя репозитория.
statequerystringНетСостояние задач, по которому отбираются задачи.
qquerystringНетСтроковый фильтр по задачам.
labelsquerystringНетФильтр по меткам.
milestonesquerystringНетФильтр по вехам.
created_byquerystringНетФильтр по создателям задач.
assigned_byquerystringНетФильтр по исполнителям задач.
mentioned_byquerystringНетФильтр по упомянутым в задачах пользователям.
typequerystringНетФильтр по типу задачи.
sincequerystringНетФильтр по дате обновления (с этой даты).
beforequerystringНетФильтр по дате обновления (до этой даты).

Тело запроса

Тело запроса обязательно. В нем задается выбор задач и действия обновления по полям.

Note

В текущей версии спецификации API поля тела запроса не описаны. Редактируемые в массовом режиме поля и их доступные значения можно получить методом Получить значения полей для массового обновления задач: состояние, тип задачи, исполнители, метки, проект, контрольный срок. Для каждого поля можно выбрать режим редактирования: заменить, добавить или снять выбранное.

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

curl -X POST "https://api.gitverse.ru/repos/user/my-repo/issues/bulk/update?labels=bug" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1" \
  -H "Content-Type: application/vnd.gitverse.object+json;version=1" \
  -d '{ ... }'

Замените YOUR_TOKEN на ваш личный токен доступа, а тело запроса заполните в соответствии с редактируемыми полями.

Пример ответа (200 OK)

При успешном выполнении сервер возвращает список задач, при обработке которых возникли ошибки. Если все задачи обработаны успешно, возвращается объект с пустым массивом:

{
    "data": []
}

При частичной ошибке обработки:

{
    "data": [
        {
            "issue": {
                "id": 1759,
                "number": 42,
                "title": "Исправить баг"
            },
            "errors": [
                {
                    "field": "labels",
                    "message": "Метка с таким именем не найдена",
                    "reason": "LABEL_NOT_FOUND"
                }
            ]
        }
    ]
}

Структура ответа

Ответ — объект IssueBulkResult. Полная структура описана в графе объектов, раздел 24.4.

ПолеТипОписание
dataarrayМассив объектов IssueBulkFailure: задачи, при обработке которых возникли ошибки

Каждый элемент массива data:

ПолеТипОписание
issueobjectКраткая информация о задаче: id, number, title (объект IssueBulkSummary)
errorsarrayСписок ошибок по полям: field, message, reason (объекты IssueBulkFieldError)

Коды ответа

КодСтатусОписание
200OKМассовое обновление выполнено; в ответе — необработанные задачи (при наличии).
400Bad RequestНекорректные параметры запроса.
401UnauthorizedНе передан или невалиден токен авторизации.
403ForbiddenНет прав на доступ к репозиторию.
404Not FoundРепозиторий не найден или нет доступа.
422Unprocessable EntityОшибка валидации данных запроса.
500Internal Server ErrorВнутренняя ошибка сервера GitVerse.

Пример тела ошибки

При ответе 401 тело ответа имеет следующий вид:

{
  "error": {
    "code": "UNAUTHORIZED",
    "documentation_url": "https://gitverse.ru/docs/developers/public-api/",
    "message": "Authorization is required",
    "status": 401
  }
}