24. GET /repos/{username}/{reponame}/git/ref/{ref} — получить git-ссылку по имени

Описание

Возвращает одну конкретную git-ссылку репозитория по ее полному имени. Используется когда вы точно знаете имя ветки, тега или кастомной ссылки и хотите получить SHA коммита, на который она указывает.

Если ссылки с таким именем не существует — возвращается 404 Not Found. В отличие от GET /git/matching-refs/{ref}, этот эндпоинт не выполняет поиск по префиксу: имя должно совпасть точно.

Параметры URL

ПараметрОбязательныйОписание
usernameДаИмя владельца репозитория (пользователь или организация)
reponameДаНазвание репозитория без расширения .git
refДаПолное имя ссылки без префикса refs/. Примеры: heads/main, tags/v1.0.0, custom/my-ref

Параметры запроса

Данный метод не принимает параметров в строке запроса.

Тело запроса

Не требуется.

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

# Получить ветку main
curl -X GET "https://api.gitverse.ru/repos/user/APInewTestRepo/git/ref/heads/main" \
  -H "Authorization: Bearer YOUR_TOKEN"
 
# Получить тег v1.0.0
curl -X GET "https://api.gitverse.ru/repos/user/APInewTestRepo/git/ref/tags/v1.0.0" \
  -H "Authorization: Bearer YOUR_TOKEN"
 
# Получить ветку с символом "/" в имени
curl -X GET "https://api.gitverse.ru/repos/user/APInewTestRepo/git/ref/heads/feature/auth" \
  -H "Authorization: Bearer YOUR_TOKEN"
 
# Получить кастомную ссылку
curl -X GET "https://api.gitverse.ru/repos/user/APInewTestRepo/git/ref/custom/my-ref" \
  -H "Authorization: Bearer YOUR_TOKEN"

Ответ (200 OK)

{
  "ref": "refs/heads/main",
  "url": "https://api.gitverse.ru/repos/user/APInewTestRepo/git/refs/heads/main",
  "object": {
    "type": "commit",
    "sha": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2",
    "url": "https://api.gitverse.ru/repos/user/APInewTestRepo/commits/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
  }
 

Формат ответа

application/vnd.gitverse.object+json;version=latest

Поля ответа

ПолеТипОписание
refstringПолное имя ссылки, начиная с refs/
urlstring (uri)URL ссылки в Public API
object.typestringТип git-объекта: commit для веток и обычных тегов; tag для аннотированных тегов
object.shastringSHA-хеш git-объекта (40 символов)
object.urlstring (uri)URL коммита: /repos/{username}/{reponame}/commits/{sha}

Коды ответа

КодСтатусОписание
200OKСсылка найдена и возвращена
404Not FoundПараметр ref пуст или указанная ссылка не существует в репозитории
409ConflictРепозиторий пуст или git-репозиторий недоступен
500Internal Server ErrorВнутренняя ошибка при получении ссылки

Примечания

  1. Эндпоинт требует точного указания имени ссылки. Запрос GET /git/ref/heads/feat вернет 404, даже если в репозитории есть refs/heads/feature/auth. Для поиска по префиксу используйте GET /git/matching-refs/{ref}.
  2. Параметр ref передается без префикса refs/: пишите heads/main, не refs/heads/main.
  3. Имя ветки может содержать символы / — они передаются как есть: heads/feature/auth.
  4. В возвращаемом объекте поле ref всегда приходит с префиксом refs/.