Публичный APIРепозитории8. GET /repos/{owner}/{repo}/git/trees/{tree_sha} — получить содержимое дерева Git по SHA или ветке (включая рекурсию

8. GET /repos/{owner}/{repo}/git/trees/{tree_sha} — получить содержимое дерева Git по SHA

Описание

Возвращает структуру файлов и папок (дерево Git) по указанному SHA-хешу коммита или дерева.
Поддерживается пагинация и рекурсивный обход вложенных директорий.

⚠️ Для приватных репозиториев требуется авторизация с правами на чтение.

Параметры URL

ПараметрОбязательныйОписание
ownerДаВладелец репозитория (пользователь или организация)
repoДаНазвание репозитория (без расширения .git)
tree_shaДаSHA-хеш коммита или дерева Git

Параметры запроса (query)

ПараметрТипОбязательныйОписаниеПо умолчанию
pageintegerНетНомер страницы результатов1
per_pageintegerНетКоличество элементов на странице (максимум — 100)30
recursivebooleanНетВключить ли вложенные поддиректории в ответfalse

💡 При recursive=true возвращаются все файлы и папки во всем дереве (до лимита пагинации).

Тело запроса

Данный метод не требует тела запроса.

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

Получить корневое дерево

curl -X GET "https://api.gitverse.ru/repos/alice/my-project/git/trees/a1b2c3d4" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

Получить полное дерево рекурсивно

curl -X GET "https://api.gitverse.ru/repos/alice/my-project/git/trees/a1b2c3d4?recursive=true&per_page=100" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/vnd.gitverse.object+json;version=1"

Ответ (200 OK)

Пример JSON-ответа:

{
  "sha": "a1b2c3d4...",
  "url": "https://api.gitverse.ru/public/api/repos/alice/my-project/git/trees/a1b2c3d4",
  "truncated": false,
  "tree": [
    {
      "path": "README.md",
      "mode": "100644",
      "type": "blob",
      "sha": "f1e2d3c4...",
      "size": 123,
      "url": "https://api.gitverse.ru/public/api/repos/alice/my-project/git/blobs/f1e2d3c4..."
    },
    {
      "path": "src",
      "mode": "040000",
      "type": "tree",
      "sha": "9a8b7c6d...",
      "size": 0,
      "url": "https://api.gitverse.ru/public/api/repos/alice/my-project/git/trees/9a8b7c6d..."
    }
  ],
  "total_count": 2,
  "page": 1
}

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

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

Поля ответа

ПолеТипОписание
shastringSHA-хеш запрошенного дерева
urlstringAPI-ссылка на это дерево
truncatedbooleanБыл ли результат обрезан из-за ограничений (например, слишком большое дерево)
treearrayСписок элементов (файлов и папок)
tree[].pathstringПуть элемента относительно корня дерева
tree[].modestringРежим доступа (например, 100644 — обычный файл, 040000 — директория)
tree[].typestringТип: blob (файл), tree (директория), commit (отдельный коммит в другом репозитории)
tree[].shastringSHA объекта
tree[].sizeintegerРазмер в байтах (для файлов; 0 для директорий)
tree[].urlstringСсылка на объект в API
total_countintegerОбщее количество элементов в дереве
pageintegerТекущая страница пагинации

Коды ответа

КодСтатусОписание
200OKДерево успешно получено
400Bad RequestНекорректный формат SHA или параметров пагинации
401UnauthorizedТокен отсутствует или недействителен
403ForbiddenНет прав на чтение репозитория
409ConflictSHA не соответствует дереву (например, передан SHA коммита без поддержки разрешения)
422Unprocessable EntityНевозможно обработать дерево (например, слишком глубокая рекурсия)
500Internal Server ErrorВнутренняя ошибка сервера