SavelichevAPI

Видеохостинг · документация эндпоинтов

v1.2.0 https://api.savelichev.ru/v1
Заглушка документации REST API видеохостинга. Все токены, ID и данные ниже — примеры для демонстрации формата, реальный сервер за ними не стоит. Аутентификация — Bearer-токен в заголовке Authorization.
GETчтение POSTсоздание PATCHизменение DELETEудаление

Аутентификация

Регистрация, вход и обновление токенов доступа.

Создаёт учётную запись и канал по умолчанию с тем же именем, что и у пользователя.

Тело запроса

{
  "email": "user@example.com",
  "username": "alt2qplz",
  "password": "P@ssw0rd123"
}

Ответы

201Пользователь создан
409Email или username уже заняты
{
  "id": "usr_8f21ac",
  "email": "user@example.com",
  "username": "alt2qplz",
  "channelId": "ch_3a9d10",
  "createdAt": "2026-08-01T09:12:00Z"
}

Проверяет учётные данные и выдаёт access- и refresh-токены.

Тело запроса

{
  "email": "user@example.com",
  "password": "P@ssw0rd123"
}

Ответы

200Успешный вход
401Неверный email или пароль
{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "8f6c1e2a-4b3d-4a9e-9c7f-2d1a6e5b0c3f",
  "expiresIn": 3600
}

Выдаёт новый access-токен по действующему refresh-токену.

Тело запроса

{
  "refreshToken": "8f6c1e2a-4b3d-4a9e-9c7f-2d1a6e5b0c3f"
}

Ответы

200Токен обновлён
401Refresh-токен недействителен или истёк
{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "expiresIn": 3600
}

Видео

Создание, загрузка, получение и удаление видеозаписей.

Возвращает страницу с опубликованными видео. Поддерживает сортировку и фильтр по каналу.

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

ИмяРасположениеТипОписание
pagequeryintegerНомер страницы, по умолчанию 1
limitqueryintegerРазмер страницы, максимум 50
channelIdquerystringФильтр по каналу-автору
sortquerystringОдно из: new, popular, duration

Ответы

200Список получен
{
  "items": [
    {
      "id": "vid_5c02f1",
      "title": "Калибровка джойстика GCS: пошагово",
      "durationSec": 742,
      "views": 18432,
      "channelId": "ch_3a9d10",
      "thumbnailUrl": "https://cdn.savelichev.ru/thumb/vid_5c02f1.jpg",
      "publishedAt": "2026-07-18T14:02:00Z"
    }
  ],
  "page": 1,
  "limit": 20,
  "total": 134
}

Создаёт запись видео в статусе черновика. Файл загружается отдельным запросом.

Тело запроса

{
  "title": "Калибровка джойстика GCS: пошагово",
  "description": "Настройка осей и мёртвой зоны в панели управления.",
  "tags": ["gcs", "телеметрия", "джойстик"],
  "visibility": "private"
}

Ответы

201Черновик создан
401Требуется авторизация
{
  "id": "vid_5c02f1",
  "status": "draft",
  "uploadUrl": "https://upload.savelichev.ru/vid_5c02f1"
}

Принимает файл видео как multipart/form-data. После обработки статус видео меняется на processing, затем на ready.

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

ИмяРасположениеТипОписание
videoIdобязательныйpathstringID черновика видео

Ответы

202Файл принят, началась обработка
413Файл превышает лимит в 8 ГБ
{
  "id": "vid_5c02f1",
  "status": "processing",
  "estimatedSec": 240
}

Возвращает полные метаданные видео, включая счётчики и ссылки на стрим.

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

ИмяРасположениеТипОписание
videoIdобязательныйpathstringID видео

Ответы

200Видео найдено
404Видео не найдено
{
  "id": "vid_5c02f1",
  "title": "Калибровка джойстика GCS: пошагово",
  "status": "ready",
  "durationSec": 742,
  "views": 18432,
  "likes": 812,
  "channelId": "ch_3a9d10",
  "streamUrl": "https://stream.savelichev.ru/vid_5c02f1/master.m3u8",
  "publishedAt": "2026-07-18T14:02:00Z"
}

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

Тело запроса

{
  "title": "Калибровка джойстика GCS: обновлённая версия",
  "visibility": "public"
}

Ответы

200Обновлено
403Нет прав на редактирование этого видео
{
  "id": "vid_5c02f1",
  "title": "Калибровка джойстика GCS: обновлённая версия",
  "visibility": "public",
  "updatedAt": "2026-08-01T10:44:00Z"
}

Удаляет видео и все связанные файлы. Действие необратимо.

Ответы

204Удалено, тело ответа отсутствует
404Видео не найдено

Комментарии

Обсуждения под видео.

Возвращает комментарии верхнего уровня, отсортированные по дате.

Ответы

200Список получен
{
  "items": [
    {
      "id": "cmt_71ac02",
      "authorId": "usr_8f21ac",
      "text": "Спасибо, помогло настроить мёртвую зону!",
      "createdAt": "2026-07-19T08:15:00Z"
    }
  ],
  "total": 27
}

Публикует новый комментарий от имени текущего пользователя.

Тело запроса

{
  "text": "А какая частота обновления телеметрии в этом стенде?"
}

Ответы

201Комментарий добавлен
401Требуется авторизация

Удалить может автор комментария или владелец канала, под видео которого он оставлен.

Ответы

204Удалено
403Недостаточно прав

Каналы

Публичные страницы авторов и подписки.

Возвращает открытую информацию о канале: имя, описание, счётчик подписчиков.

Ответы

200Канал найден
404Канал не найден
{
  "id": "ch_3a9d10",
  "name": "alt2qplz",
  "description": "Фронтенд для наземных станций управления и телеметрия.",
  "subscribers": 1420,
  "videoCount": 34
}

Оформляет подписку текущего пользователя на канал.

Ответы

204Подписка оформлена
409Уже подписан

Плейлисты

Пользовательские подборки видео.

Возвращает плейлисты, принадлежащие авторизованному пользователю.

Ответы

200Список получен
{
  "items": [
    { "id": "pl_9b10ac", "title": "GCS: разбор архитектуры", "videoCount": 12 }
  ]
}

Создаёт пустой плейлист, видео добавляются отдельным запросом.

Тело запроса

{
  "title": "GCS: разбор архитектуры",
  "visibility": "unlisted"
}

Ответы

201Плейлист создан

Удаляет плейлист. Видео внутри него не удаляются, только сама подборка.

Ответы

204Удалено
403Плейлист принадлежит другому пользователю