Публичный API

Общая информация

Публичный API можно использовать для создания скриптов и приложений, которые автоматизируют процессы, интегрируются с GitVerse, а также расширяют функциональность GitVerse.

Начало работы с публичным API

Интеграция с публичным API — это первый шаг к автоматизации, расширению возможностей и построению собственных решений на основе функциональности GitVerse. В этом руководстве вы узнаете, как получить доступ к API, авторизоваться, выполнить первый запрос и начать работать с репозиториями, настройками и другими сущностями.

Для начала работы вам потребуется настроить токен аутентификации: для этого перейдите в раздел Управления токенами. Создайте токен и сразу сохраните его, так как после того, как вы покинете страницу, он перестанет быть доступен. После этого вы можете взаимодействовать с публичным API, используя токен в качестве параметра HTTP-заголовка Authorization.

Authorization: Bearer YOUR_TOKEN 

HTTP Заголовки

Для работы с Public API GitVerse необходимо передавать обязательные HTTP-заголовки — они позволяют серверу корректно обработать запрос. В ответах API также могут присутствовать служебные заголовки для навигации, пагинации и управления данными.

Заголовки запроса

Authorization: Bearer YOUR_TOKEN

  1. Обязательный заголовок.
  2. Используется для аутентификации.
  3. Вместо YOUR_TOKEN подставляется токен, полученный в настройках профиля.

Warning

Токен необходимо хранить в безопасном месте и не передавать его случайным образом. Он предоставляет доступ к вашему аккаунту GitVerse через API.

Accept: application/vnd.gitverse.object+json;version=1

  1. Обязательный заголовок.
  2. Указывает, что клиент ожидает JSON-ответ в формате, совместимом с GitVerse Public API.
  3. Позволяет серверу правильно определить версию ответа.

Info

Мы используем кастомный MIME-тип application/vnd.gitverse+json, чтобы явно отделить ответы API от стандартных JSON-запросов. Это помогает избежать несовместимости при изменении формата данных.

Заголовки ответа

Заголовок Link используется для навигации по пагинированным ответам. Он позволяет удобно переходить между страницами результатов по сформированным URL-адресам.

Заголовок присутствует, если:

  1. Присутствует в ответах эндпоинтов, поддерживающих пагинацию (параметры page и per_page).
  2. Появляется только при успешном ответе (2xx).
  3. Общее количество результатов превышает per_page.

Пример:

Link: <https://api.gitverse.ru/repos/owner/repo/issues?page=2>; rel="next",
      <https://api.gitverse.ru/repos/owner/repo/issues?page=1>; rel="first",
      <https://api.gitverse.ru/repos/owner/repo/issues?page=10>; rel="last"
relОписание
rel="prev"Предыдущая страница (отсутствует на первой странице)
rel="next"Следующая страница (отсутствует на последней странице)
rel="first"Первая страница
rel="last"Последняя страница

Tip

Для перехода между страницами рекомендуется использовать URL из заголовка Link, а не формировать параметры запроса вручную.

HTTP-методы

HTTP-метод эндпоинта определяет тип действия, которое он выполняет над указанным ресурсом. Некоторые из наиболее распространенных HTTP-методов: GET, POST, DELETE, PATCH и PUT. В документации к REST API для каждого эндпоинта указан используемый HTTP-метод.

Например, для эндпоинта «Список задач репозитория» используется метод GET.

В своих API мы стремимся использовать подходящие HTTP-методы для каждого действия.

Поддерживаемые HTTP-методы и их назначение:

МетодОписание
GETИспользуется для получения данных о ресурсах.
POSTИспользуется для создания новых ресурсов.
PATCHИспользуется для частичного обновления свойств ресурса.
PUTИспользуется для полного замещения ресурса или коллекции ресурсов.
DELETEИспользуется для удаления ресурсов.

Список разделов

Настоящий подраздел документации предоставляет обзор всех доступных методов API GitVerse, сгруппированных по функциональности.

Использование Публичного API

Этот раздел API позволяет узнать, как работать с REST API GitVerse.

Политики стабильности API

  1. Версионирование Этот механизм позволяет управлять изменениями в API, обеспечивая стабильность интеграций и предсказуемость поведения для всех пользователей.

  2. Rate Limits Этот механизм защищает инфраструктуру от перегрузки и обеспечивает стабильную работу API для всех пользователей.

Пользователи

Этот раздел API позволяет управлять данными аутентифицированного пользователя.

Получение информации о пользователе

  1. GET /user Возвращает информацию о текущем аутентифицированном пользователе.

  2. GET /users/{username} Позволяет получить информацию о любом пользователе по его логину.

Работа с email-адресами

  1. GET /user/emails Возвращает список email-адресов текущего пользователя.

  2. POST /user/emails Добавляет один или несколько новых email-адресов текущему пользователю.

  3. DELETE /user/emails Удаляет указанные email-адреса.

Получение списка репозиториев

  1. GET /user/repos Возвращает все репозитории, доступные пользователю (личные и организации).

Поиск пользователей

  1. GET /search/users Поиск пользователей по строке запроса (логину).

  2. GET /user/{account_id} Возвращает информацию о пользователе по его числовому идентификатору (ID).

Команды

Этот раздел API позволяет работать с командами GitVerse.

Управление участниками и командами

  1. GET /orgs/{org}/teams Возвращает список всех команд в указанной организации, которые видны авторизованному пользователю.

  2. GET /orgs/{org}/teams/{team}/members Возвращает список всех участников указанной команды в организации.

  3. GET /orgs/{org}/members/{username} Проверяет, состоит ли указанный пользователь в организации.

  4. PUT /orgs/{org}/teams/{team}/repos/{owner}/{repo} Назначает или обновляет права команды на доступ к репозиторию.

Репозитории

Этот раздел API позволяет работать с репозиториями GitVerse.

Работа с репозиториями

  1. GET /repos/{owner}/{repo}
    Возвращает основные данные о репозитории: название, владельца, настройки, права пользователя и т.д.

  2. PATCH /repos/{owner}/{repo}
    Позволяет изменять ключевые параметры репозитория, такие как название, описание, приватность и поведение при слиянии веток.

  3. POST /user/repos
    Создает новый репозиторий для пользователя.

  4. GET /user/repos
    Получает список репозиториев пользователя.

  5. DELETE /repos/{owner}/{repo}
    Удаляет указанный репозиторий.

Управление содержимым

  1. GET /repos/{owner}/{repo}/branches
    Возвращает список всех веток репозитория с информацией о последнем коммите и защите веток.

  2. GET /repos/{owner}/{repo}/contents/{path}
    Позволяет получить содержимое файла (в Base64) или список файлов внутри папки.

  3. PUT /repos/{owner}/{repo}/contents/{filename}
    Создает новый файл или обновляет существующий в указанной ветке.

  4. DELETE /repos/{owner}/{repo}/contents/{filename}
    Удаляет указанный файл из репозитория.

  5. GET /repos/{owner}/{repo}/git/trees/{tree_sha}
    Возвращает структуру файлов и папок, связанную с указанным деревом Git.

Работа с коммитами

  1. GET /repos/{username}/{reponame}/commits
    Возвращает список коммитов репозитория с возможностью фильтрации по ветке, пути, автору, дате и другим параметрам.

  2. GET /repos/{username}/{reponame}/commits/{sha}
    Возвращает полную информацию о конкретном коммите, включая автора, сообщение, статистику изменений и список затронутых файлов.

  3. GET /repos/{username}/{reponame}/compare/{basehead}
    Сравнивает две ветки, тега или коммита и возвращает разницу между ними (аналог git diff). Полезно для анализа изменений перед созданием запроса на слияние.

  4. POST /repos/{username}/{reponame}/git/refs
    Создает новую git-ссылку (ветку, тег или кастомную ссылку) в репозитории.

  5. GET /repos/{username}/{reponame}/git/matching-refs/{ref} Возвращает git-ссылку (ветку, тег или кастомную ссылку) по префиксу.

  6. GET /repos/{username}/{reponame}/git/ref/{ref} Получает git-ссылку (ветку, тег или кастомную ссылку) по имени.

  7. DELETE /repos/{username}/{reponame}/git/refs/{ref} Удаляет git-ссылку (ветку, тег или кастомную ссылку) .

Дополнительные методы

  1. GET /repos/{owner}/{repo}/languages
    Возвращает список языков, используемых в репозитории, с указанием количества строк кода на каждом.

  2. POST /repos/{owner}/{repo}/forks
    Создает форк репозитория для текущего пользователя.

  3. PUT /repos/{owner}/{repo}/collaborators/{username}
    Добавляет пользователя как соавтора репозитория или обновляет его уровень доступа.

  4. GET /orgs/{org}/repos
    Возвращает список репозиториев указанной организации с фильтрацией, сортировкой и пагинацией.

  5. POST /orgs/{org}/repos Создает новый репозиторий в указанной организации от имени аутентифицированного пользователя.

Задачи и запросы на слияние

Общие методы

Методы, работающие через эндпоинт /issues/ и применимые как к задачам, так и к запросам на слияние.

  1. GET /repos/{owner}/{repo}/issues/{index}.

Возвращает подробную информацию о задаче или запросе на слияние по его номеру.

  1. GET /repos/{owner}/{repo}/issues/{index}/comments Возвращает список всех комментариев к задаче или запросу на слияние.

  2. GET /repos/{owner}/{repo}/issues/comments/{id} Возвращает детали отдельного комментария по его уникальному идентификатору.

  3. POST /repos/{owner}/{repo}/issues/{index}/comments Создает новый комментарий в задаче или запросе на слияние.

  4. PATCH /repos/{owner}/{repo}/issues/{index}/comments/{comment_id} Редактирует комментарий в задаче или запросе на слияние.

  5. DELETE /repos/{owner}/{repo}/issues/{index}/comments/{comment_id} Удаляет комментарий в задаче или запросе на слияние.

  6. POST /repos/{owner}/{repo}/issues/{index}/comments/{comment_id}/reactions Добавляет реакцию на комментарий к задаче или запросу на слияние.

  7. DELETE /repos/{owner}/{repo}/issues/{index}/comments/{comment_id}/reactions/{reaction_id} Удаляет реакцию на комментарий в задаче или запросе на слияние.

Запросы

Методы, работающие через эндпоинт /pulls/ и предназначенные исключительно для запросов на слияние.

  1. GET /repos/{owner}/{repo}/pulls/{pull_number}/files Возвращает список файлов, измененных в указанном запросе на слияние.

  2. GET /repos/{owner}/{repo}/pulls/{pull_number}/commits Возвращает список коммитов, включенных в указанный запрос на слияние.

  3. POST /repos/{owner}/{repo}/pulls Создает новый запрос на слияние из указанной ветки в целевую.

  4. PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch Обновляет ветку запроса на слияние до актуального состояния целевой ветки.

  5. PATCH /repos/{owner}/{repo}/pulls/{pull_number} Обновляет параметры существующего запроса на слияние: заголовок, описание, целевую ветку и разрешение на изменение ветки мейнтейнерами.

  6. GET /repos/{owner}/{repo}/pulls Возвращает список запросов на слияние в указанном репозитории.

  7. GET /repos/{owner}/{repo}/pulls/{pull_number} Возвращает подробную информацию о конкретном запросе на слияние по его номеру (pull_number).

  8. GET /repos/{owner}/{repo}/pulls/{pull_number}/merge Проверяет статус слияния с базовой веткой.

Релизы

Этот раздел API позволяет работать с релизами GitVerse.

Работа с релизами

  1. GET /repos/{owner}/{repo}/releases Возвращает список релизов в указанном репозитории с поддержкой пагинации и фильтрации по статусу (черновики, предварительные релизы).

  2. POST /repos/{owner}/{repo}/releases Создает новый релиз на основе тега.

  3. GET /repos/{owner}/{repo}/releases/{release_id} Возвращает информацию о релизе по его идентификатору.

  4. DELETE /repos/{owner}/{repo}/releases/{release_id} Удаляет релиз по его идентификатору.

  5. PATCH /repos/{owner}/{repo}/releases/{release_id} Редактирует информацию о релизе по его идентификатору.

  6. GET /repos/{owner}/{repo}/releases/tags/{tag} Возвращает информацию о релизе по его тегу.

  7. DELETE /repos/{owner}/{repo}/releases/tags/{tag} Удаляет релиз по его тегу.

Работа с ассетами

  1. GET /repos/{owner}/{repo}/releases/{release_id}/assets Возвращает список ассетов релиза.

  2. POST /repos/{owner}/{repo}/releases/{release_id}/assets Загружает ассет в релиз.

  3. DELETE /repos/{owner}/{repo}/releases/{release_id}/assets/{asset_id} Удаляет ассет из релиза.

Избранное

Этот раздел API позволяет отмечать репозитории как избранные, а также проверять, добавлен ли репозиторий в список звезд у текущего пользователя.

Управление избранными репозиториями

  1. GET /user/starred Возвращает список репозиториев, добавленных текущим пользователем в избранное. Поддерживается пагинация, сортировка и фильтрация результатов.

  2. PUT /user/starred/{owner}/{repo} Добавляет указанный репозиторий в список отслеживаемых пользователем («ставит звезду»).

  3. GET /user/starred/{owner}/{repo} Позволяет проверить, добавлен ли указанный репозиторий в список отслеживаемых у текущего пользователя.

  4. DELETE /user/starred/{username}/{reponame} Удаляет указанный репозиторий из избранного текущего пользователя. При успешном удалении возвращается статус 204.

CI/CD

Этот раздел API позволяет работать с CI/CD GitVerse.

Ручной запуск потоков

  1. GET /repos/{owner}/{repo}/actions/workflows/{workflow}/dispatches Возвращает список входных параметров, необходимых для ручного запуска указанного потока в репозитории.

  2. POST /repos/{owner}/{repo}/actions/workflows/{workflow}/dispatches Запускает указанный поток вручную в репозитории.

Воркфлоу

  1. GET /repos/{owner}/{repo}/actions/workflows Возвращает список всех воркфлоу в репозитории.

  2. GET /repos/{owner}/{repo}/actions/workflows/{workflow_id} Возвращает информацию о конкретном воркфлоу в репозитории.

  3. GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs Возвращает список всех запусков указанного воркфлоу.

Запуски воркфлоу

  1. GET /repos/{owner}/{repo}/actions/runs Возвращает список запусков действий в репозитории.

  2. GET /repos/{owner}/{repo}/actions/runs/{run_id} Получает информацию о конкретном запуске действия.

  3. GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs Возвращает список заданий для указанного запуска.

  4. GET /repos/{owner}/{repo}/actions/runs/index/{run_index} Получает информацию о запуске по индексу.

  5. GET /repos/{owner}/{repo}/actions/runs/index/{run_index}/jobs Возвращает список заданий для запуска по индексу.

Воркфлоу задания

  1. GET /repos/{owner}/{repo}/actions/jobs/{job_id} Получает информацию о задании.

  2. GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs Получает логи задания.

Переменные организации

  1. GET /orgs/{org}/actions/variables Возвращает список переменных организации.

  2. POST /orgs/{org}/actions/variables Создает новую переменную в организации.

  3. GET /orgs/{org}/actions/variables/{name} Получает конкретную переменную организации по ее имени.

  4. DELETE /orgs/{org}/actions/variables/{name} Удаляет переменную организации по ее имени.

  5. PATCH /orgs/{org}/actions/variables/{name} Обновляет переменную организации по ее имени.

Переменные репозитория

  1. GET /repos/{owner}/{repo}/actions/variables Возвращает список переменных репозитория.

  2. POST /repos/{owner}/{repo}/actions/variables Создает новую переменную в репозитории.

  3. GET /repos/{owner}/{repo}/actions/variables/{name} Получает конкретную переменную репозитория по ее имени.

  4. DELETE /repos/{owner}/{repo}/actions/variables/{name} Удаляет переменную репозитория по ее имени.

  5. PATCH /repos/{owner}/{repo}/actions/variables/{name} Обновляет переменную репозитория по ее имени.

Секреты организации

  1. GET /orgs/{org}/actions/secrets Получить список секретов организации.

  2. GET /orgs/{org}/actions/secrets/{secretname} Получить информацию о секрете организации.

  3. PUT /orgs/{org}/actions/secrets/{secretname} Создать или обновить секрет в организации.

  4. DELETE /orgs/{org}/actions/secrets/{secretname} Удалить секрет из организации.

Секреты репозитория

  1. GET /repos/{owner}/{repo}/actions/secrets Получить список секретов репозитория.

  2. GET /repos/{owner}/{repo}/actions/secrets/{secretname} Получить информацию о секрете репозитория.

  3. PUT /repos/{owner}/{repo}/actions/secrets/{secretname} Создать или обновить секрет в репозитории.

  4. DELETE /repos/{owner}/{repo}/actions/secrets/{secretname} Удалить секрет из репозитория.

Локальные раннеры для организации

  1. GET /orgs/{org}/actions/runners Получает список self-hosted раннеров для организации.

  2. POST /orgs/{org}/actions/runners/registration-token Создает токен регистрации для раннера в организации.

  3. GET /orgs/{org}/actions/runners/{runner_id} Получает информацию о конкретном раннере в организации.

  4. DELETE /orgs/{org}/actions/runners/{runner_id} Удаляет раннер из организации.

Локальные раннеры для репозитория

  1. GET /repos/{owner}/{repo}/actions/runners Получает список self-hosted раннеров для репозитория.

  2. POST /repos/{owner}/{repo}/actions/runners/registration-token Создает токен регистрации для раннера в репозитории.

  3. GET /repos/{owner}/{repo}/actions/runners/{runner_id} Получает информацию о конкретном раннере в репозитории.

  4. DELETE /repos/{owner}/{repo}/actions/runners/{runner_id} Удаляет раннер из репозитория.

Артефакты

  1. GET /repos/{owner}/{repo}/actions/artifacts Возвращает список артефактов (например, выходные данные сборки, пакеты или файлы развертывания) для указанного репозитория. Поддерживает пагинацию.

  2. GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id} Получает информацию о конкретном артефакте по его ID.

  3. DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id} Удаляет артефакт по его ID.

  4. GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/zip Перенаправляет на прямую ссылку для скачивания артефакта в виде ZIP-архива.

Вебхуки

Этот раздел API позволяет работать с вебхуками GitVerse.

Работа с вебхуками

  1. GET /repos/{owner}/{repo}/hooks Получить список всех вебхуков для указанного репозитория.

  2. POST /repos/{owner}/{repo}/hooks Создать новый вебхук для указанного репозитория.

  3. GET /repos/{owner}/{repo}/hooks/{hook_id} Получить информацию о конкретном вебхуке.

  4. PATCH /repos/{owner}/{repo}/hooks/{hook_id} Обновить информацию о вебхуке.

  5. DELETE /repos/{owner}/{repo}/hooks/{hook_id} Удалить вебхук из репозитория.

Пакеты

Этот раздел API позволяет работать с пакетами GitVerse.

Пакеты пользователя

  1. GET /users/{username}/packages/{package_type}/{package_name}/versions Получить список версий пакета пользователя.

  2. DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id} Удалить конкретную версию пакета пользователя.

  3. DELETE /users/{username}/packages/{package_type}/{package_name} Удалить пакет пользователя.

Пакеты организации

  1. GET /orgs/{org}/packages/{package_type}/{package_name}/versions Получить список версий пакета организации.

  2. DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id} Удалить конкретную версию пакета организации.

  3. DELETE /orgs/{org}/packages/{package_type}/{package_name} Удалить пакет организации.

Соавторы

Работа с соавторами

Этот раздел API позволяет работать с соавторами репозитория.

  1. GET/repos/{owner}/{repo}/collaborators Возвращает список всех соавторов (участников с доступом к репозиторию) указанного репозитория.

База данных Git

Этот раздел API позволяет узнать, как работать с низкоуровневыми методами для взаимодействия с внутренними объектами Git.

Деревья

  1. POST /repos/{owner}/{repo}/git/trees Создает новое дерево (структуру файлов) в репозитории.

Коммиты

  1. POST /repos/{owner}/{repo}/git/commits Создает новый объект коммита в репозитории.

GitVerse Lab

Этот раздел API описывает метод работы с GitVerse Lab.

Получение информации о задании GitVerse Lab

  1. GET /assignments/{assignment_id}.

Возможные ошибки

КодОписание
400 Bad RequestНекорректный формат запроса или параметров
401 UnauthorizedНеобходима авторизация
403 ForbiddenНедостаточно прав
404 Not FoundЗапрошенный ресурс не найден
406 Not AcceptableТип контента не поддерживается
409 ConflictКонфликт (ресурс уже существует)
422 Unprocessable EntityОшибка валидации данных
429 Too Many RequestsПревышен лимит запросов
500 Internal Server ErrorВнутренняя ошибка сервера
503 Service UnavailableСервис временно недоступен