Обновить веху репозитория

PATCH /repos/{owner}/{repo}/milestones/{id}

Описание

Метод PATCH обновляет существующую веху в указанном репозитории по ее идентификатору. В теле запроса можно передать новые значения для названия, описания, состояния и срока выполнения. С помощью параметра state веху можно закрыть (closed) или открыть повторно (open). Передавать все поля необязательно — обновятся только те, что указаны в теле запроса. Метод применяется для корректировки плана релизов, завершения вех и синхронизации состояния вех с внешними системами управления задачами.

Токен

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

Заголовки

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

Параметры пути

В URL запроса необходимо передать следующие идентификаторы ресурса:

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

Тело запроса

ПараметрТипОбязательныйОписание
titlestringНетНовое название вехи
descriptionstringНетНовое описание вехи
statestringНетСостояние вехи. Допустимые значения: open (открыть), closed (закрыть)
due_onstring (date-time)НетНовый срок выполнения

Можно отправить только те поля, которые нужно изменить.

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

{
  "title": "Версия 3.0",
  "description": "Выпуск третий",
  "state": "closed",
  "due_on": "2026-12-01T00:00:00Z"
}

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

Ниже приведен пример использования curl для закрытия вехи с идентификатором 1.

curl -X PATCH "https://api.gitverse.ru/repos/myorg/backend-api/milestones/1" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "Accept: application/vnd.gitverse.object+json;version=latest" \
  -H "Content-Type: application/json" \
  -d '{
    "state": "closed"
  }'

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

Ответ при успешном выполнении (200 OK)

При успешном обновлении вехи сервер вернет ответ с кодом 200 OK и телом в формате JSON, содержащим обновленный объект вехи:

{
  "id": 1,
  "title": "Версия 3.0",
  "description": "Выпуск третий",
  "state": "closed",
  "open_issues": 0,
  "closed_issues": 8,
  "due_on": "2026-12-01T00:00:00Z",
  "created_at": "2026-10-01T09:00:00Z",
  "updated_at": "2026-11-20T09:15:00Z",
  "closed_at": "2026-11-20T09:15:00Z"
}

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

Ответ — объект Milestone (обновленная веха). Полная структура описана в графе объектов, раздел «Объект Milestone».

На корневом уровне объект содержит:

ПолеТипОписание
idintegerУникальный идентификатор вехи
title, descriptionstring / nullНазвание и описание вехи
statestringСостояние вехи (open, closed)
open_issues, closed_issuesintegerКоличество открытых и закрытых задач в вехе
due_onstring (date-time) / nullСрок выполнения
created_at, updated_atstring (date-time)Даты создания и последнего обновления
closed_atstring (date-time) / nullДата закрытия вехи (если открыта — null)

Коды ответа

Результат выполнения запроса определяется по HTTP-статусу:

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

Особенности метода

  • обновляются только поля, переданные в теле запроса. Остальные поля сохраняют прежние значения;
  • при закрытии вехи (state: "closed") полю closed_at присваивается текущее время; при повторном открытии (state: "open") поле closed_at сбрасывается в null;
  • закрытие вехи не удаляет ее и не отвязывает задачи: привязанные задачи сохраняют связь с вехой, веха остается доступной для чтения.

Формат ответа и заголовки

Метод возвращает ответ в формате JSON. Заголовок Content-Type в ответе устанавливается в application/vnd.gitverse.object+json;version=latest.