Получение файла/директории

Получение папки или файла в репозитории
Beta

Описание

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

Общие замечания

  1. Для версий API указывайте заголовок Accept с соответствующей версией:
Accept: application/vnd.gitverse+json;version=1
  1. Базовый URL для всех конечных точек:
https://api.gitverse.ru
  1. Все даты возвращаются в формате ISO 8601.
  2. Если запрос завершается неудачно, API возвращает объект ошибки с кодом состояния HTTP и сообщением.

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

GET /public/api/repos/{username}/{reponame}/contents/{path}

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

  • {username} — имя владельца репозитория (пользователя или организации);
  • {reponame} — название репозитория;
  • {path} — путь к папке или файлу в репозитории.

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

  • Content-Type: application/json: указывает, что тело ответа будет в формате JSON;
  • Accept: application/vnd.gitverse+json;version=1: указывает версию API. В данном случае используется версия 1.

Тело запроса

Тело запроса не требуется. Этот метод работает без передачи данных в теле запроса.

Параметры ответа

Ответ для папки

Если запрашиваемый путь указывает на папку, возвращается информация о папке и её содержимом:

{
	"type": "dir",
	"size": 0,
	"name": "catalog",
	"path": "catalog",
	"sha": "758177878433eac97c17ba21bc4e9a4e2ffa3b06",
	"entries": [
		{
			"name": "license_manager_client.proto",
			"path": "catalog/license_manager_client.proto",
			"sha": "3f8d1f3ee578ff61df3f2395b3525ff79bd0a149",
			"size": 5630,
			"type": "file"
		},
		{
			"name": "service.proto",
			"path": "catalog/service.proto",
			"sha": "1cb4f392f81120eef83729cfec660cd9b20a75e2",
			"size": 830,
			"type": "file"
		}
	]
}

Поля ответа для папки

  • type (string): тип объекта (dir для папки);
  • size (integer): размер объекта в байтах (всегда 0 для папки);
  • name (string): имя папки;
  • path (string): путь к папке относительно корня репозитория;
  • sha (string): SHA-хеш объекта;
  • entries (array): список файлов и подпапок внутри папки:
    • name (string): имя файла или подпапки;
    • path (string): полный путь к файлу или подпапке;
    • sha (string): SHA-хеш объекта;
    • size (integer): размер файла в байтах;
    • type (string): тип объекта (file для файла, dir для папки).

Ответ для файла

Если запрашиваемый путь указывает на файл, возвращается информация о файле:

{
	"name": "generate-gitignores.go",
	"path": "generate-gitignores.go",
	"sha": "1e09c83a6a716c67a1415f779e5fb3052880e4e6",
	"size": 2854,
	"type": "file",
	"encoding": "base64",
	"content": "Ly9nbzpidWlsZCBpZ25vcmUKCnBhY2thZ2UgVzKSAlc1xuIiwgc3JjLCBkc3QpCgl9CgoJZm10LlByaW50bG4oIkRvbmUiKQp9Cg==",
	"language": "Go"
}

Поля ответа для файла

  • name (string): имя файла;
  • path (string): путь к файлу относительно корня репозитория;
  • sha (string): SHA-хеш объекта;
  • size (integer): размер файла в байтах;
  • type (string): тип объекта (file для файла);
  • encoding (string): кодировка содержимого файла (например, base64);
  • content (string): содержимое файла в формате Base64;
  • language (string): язык программирования, связанный с файлом (если определен).

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

Запрос для папки

GET https://api.gitverse.ru/public/api/repos/qweqwe1/russia/contents/catalog
Content-Type: application/json
Accept: application/vnd.gitverse+json;version=1

Запрос для файла

GET https://api.gitverse.ru/public/api/repos/qweqwe1/russia/contents/generate-gitignores.go
Content-Type: application/json
Accept: application/vnd.gitverse+json;version=1

Обработка ошибок

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

Пример ошибки

{
	"error": "Not Found",
	"message": "The requested file or folder does not exist.",
	"status": 404
}

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

  • 400 Bad Request: неверный запрос (например, отсутствие обязательных параметров);
  • 401 Unauthorized: необходима авторизация (для приватных репозиториев);
  • 403 Forbidden: y пользователя нет прав на выполнение действия;
  • 404 Not Found: репозиторий или запрашиваемый файл/папка не найдены;
  • 500 Internal Server Error: внутренняя ошибка сервера.

Дополнительная информация

  1. Если репозиторий является приватным, доступ к нему возможен только при наличии соответствующих прав.
  2. Если запрашиваемый путь указывает на папку, поле entries содержит список файлов и подпапок.
  3. Если запрашиваемый путь указывает на файл, поле content содержит содержимое файла в формате Base64.
  4. Если запрашиваемый путь не существует, API возвращает ошибку 404 Not Found.

Если у вас возникнут вопросы или потребуется дополнительная информация, пожалуйста, обратитесь к документации API или свяжитесь с поддержкой.