Cloud CDN API

REST API облачного хранилища файлов

Base URL https://api.your-cloud.example.com/v1
POST /auth/login Авторизация пользователя
Request Body · application/json
{
  "email": "user@example.com",
  "password": "secret"
}
Пример ответа · 200 OK
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
  "expires_in": 3600,
  "token_type": "Bearer"
}
Ошибки
КодОписание
400Некорректный запрос
401Неверные учётные данные
POST /auth/refresh Обновить access-токен
Request Body · application/json
{
  "refresh_token": "eyJhbGciOiJIUzI1NiIs..."
}
Пример ответа · 200 OK
{
  "access_token": "eyJhbGciOiJIUzI1NiIs...",
  "expires_in": 3600,
  "token_type": "Bearer"
}
Ошибки
КодОписание
401Недействительный refresh-токен
GET /auth/me Текущий пользователь
Headers
ЗаголовокОписание
Authorization required Bearer access-токен
Пример ответа · 200 OK
{
  "id": "user-42",
  "email": "user@example.com",
  "name": "Иван Петров",
  "role": "user",
  "quota": {
    "used": 536870912,
    "limit": 10737418240
  }
}
POST /auth/logout Выход из системы
Headers
ЗаголовокОписание
Authorization required Bearer access-токен
Пример ответа · 204 No Content
(пусто)
GET /health Проверка состояния сервиса
Пример ответа · 200 OK
{
  "status": "ok",
  "uptime_sec": 3600,
  "version": "1.0.0"
}
GET /files Список файлов
Query Parameters
ПараметрТипОписание
prefixstringФильтр по пути/префиксу
limitintegerМаксимум записей
cursorstringТокен пагинации
sortstringСортировка: name | size | updated_at
Пример ответа · 200 OK
{
  "items": [
    {
      "name": "README.md",
      "size": 1234,
      "etag": "a1b2c3d4e5f6",
      "updated_at": "2026-08-15T10:00:00Z"
    }
  ],
  "cursor": null
}
Ошибки
КодОписание
401Не авторизован
403Нет доступа
GET /files/{name} Получить содержимое файла
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Query Parameters
ПараметрТипОписание
downloadbooleanПринудить загрузку (Content-Disposition)
rangestringДиапазон байт: bytes=0-1023
Пример ответа · 200 OK
{
  "name": "README.md",
  "content": "...",
  "size": 1234,
  "content_type": "text/markdown",
  "etag": "a1b2c3d4e5f6"
}
GET /files/{name}/meta Метаданные файла
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Пример ответа · 200 OK
{
  "name": "README.md",
  "size": 1234,
  "content_type": "text/markdown",
  "created_at": "2026-08-10T09:00:00Z",
  "updated_at": "2026-08-15T10:00:00Z",
  "owner": "user-42",
  "checksum": {
    "md5": "a1b2c3d4e5f6a1b2c3d4e5f6",
    "sha256": "9f8e7d..."
  }
}
GET /files/{name}/history История версий файла
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Пример ответа · 200 OK
{
  "versions": [
    { "version": 3, "size": 1234, "updated_at": "2026-08-15T10:00:00Z" },
    { "version": 2, "size": 1200, "updated_at": "2026-08-13T08:30:00Z" },
    { "version": 1, "size": 900,  "updated_at": "2026-08-10T09:00:00Z" }
  ]
}
GET /files/{name}/url Генерация временной CDN-ссылки
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Query Parameters
ПараметрТипОписание
ttlintegerВремя жизни в секундах (по умолчанию 3600)
Пример ответа · 200 OK
{
  "url": "https://cdn.your-cloud.example.com/README.md?token=...&expires=..."
}
POST /files Загрузить файл
Request Body · multipart/form-data
ПолеТипОписание
filebinaryrequiredФайл для загрузки
pathstringЦелевая папка внутри хранилища
Пример ответа · 201 Created
{
  "name": "uploaded.txt",
  "size": 456,
  "etag": "9f8e7d6c5b4a",
  "url": "https://cdn.your-cloud.example.com/uploaded.txt"
}
PUT /files/{name} Перезаписать файл
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Request Body · multipart/form-data
ПолеТипОписание
filebinaryrequiredНовое содержимое
Пример ответа · 200 OK
{
  "name": "README.md",
  "version": 4,
  "size": 1300,
  "etag": "bbccddeeff00"
}
PATCH /files/{name}/meta Обновить метаданные
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Request Body · application/json
{
  "content_type": "text/plain",
  "tags": ["docs", "important"]
}
Пример ответа · 200 OK
{
  "name": "README.md",
  "content_type": "text/plain",
  "tags": ["docs", "important"]
}
DELETE /files/{name} Удалить файл
Path Parameters
ПараметрТипОписание
namestring requiredИмя файла или путь
Query Parameters
ПараметрТипОписание
purgebooleanУдалить из CDN-кэша
Пример ответа · 204 No Content
(пусто)