Skip to Content

Видео API

Видео API — основной эндпоинт для получения видео-контента. Он поддерживает мощные возможности фильтрации, сортировки и тегирования.

Список видео

Получает пагинированный список видео. Этот эндпоинт очень гибок и принимает несколько параметров запроса для тонкого настройки результатов. Ответ содержит массив объектов VideoSummary.

GET /videos

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

ИмяТипОписание
pathstringНеобязательно. Фильтрует видео по конкретному пути коллекции, например, root/movies.
filtersobjectНеобязательно. Фильтрует по метаданным. Смотрите примеры фильтрации ниже для синтаксиса.
tagsstringНеобязательно. Список тегов, разделенных запятыми (например, laravel,api). Находит видео с обоими указанными тегами.
sortstringНеобязательно. Сортирует результаты. Используйте префикс - для сортировки в обратном порядке. Допустимые поля: created_at, title, duration_in_seconds. По умолчанию: -created_at.
per_pageintegerНеобязательно. Количество результатов на странице. По умолчанию: 15, Максимальное значение: 100.

Примеры фильтрации

Параметр filters — самая мощная функция. Синтаксис: filters[field_name][operator]=value.

Фильтровать по пути коллекции

Это находит все видео внутри папки education/php.

GET /api/client/v1/videos?path=root/education/php

Фильтровать по одному полю метаданных (Равно)

Это находит все видео, где жанр равен ‘Действие’, независимо от регистра. Используя прямое значение — это сокращение для оператора eq.

GET /api/client/v1/videos?filters[genre]=Action

Фильтровать по пути и метаданным

Это находит все видео ‘для начинающих’ внутри коллекции ‘фитнес/йога’.

GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner

Фильтровать по “Больше чем” (gt)

Это находит все видео дольше 10 минут (600 секунд).

GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600

Фильтровать по “Меньше или равно” (lte)

Это находит все видео с рейтингом 3 и ниже.

GET /api/client/v1/videos?filters[rating][lte]=3

Фильтровать по “В списке” (in)

Это находит все видео, где сложность равна либо ‘для начинающих’, либо ‘средний’. Работает как для полей с выбором одного значения, так и для полей с выбором нескольких значений.

GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate

Фильтровать по “Не равно” (neq)

Это находит все видео, где представитель не ‘Джейн Доу’.

GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe

Примеры сортировки и тегирования

Фильтровать по тегам

Это находит все видео, помеченные как ‘йога’ и ‘для начинающих’.

GET /api/client/v1/videos?tags=yoga,beginner

Сортировать по названию (По возрастанию)

Это выводит все видео, отсортированные в алфавитном порядке по названию.

GET /api/client/v1/videos?sort=title

Сортировать по дате (По убыванию)

Это выводит все видео с новыми первыми. Это поведение по умолчанию и эквивалентно отсутствию параметра sort.

GET /api/client/v1/videos?sort=-created_at

Полный ответ: GET /videos

Это полный, не обрезанный пример пагинированного ответа.

Ответ: 200 OK
{ "data": [ { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Advanced API Design in Laravel", "description": "Deep dive into building robust APIs.", "duration_in_seconds": 3620, "thumbnail_url": "https://your-cdn.com/path/to/thumb1.jpg", "created_at": "2024-08-10T12:00:00Z", "metadata": { "difficulty": "advanced", "presenter": "Jane Doe" } }, { "id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f", "title": "Introduction to Yoga", "description": "Beginner's guide to basic yoga poses.", "duration_in_seconds": 1800, "thumbnail_url": "https://your-cdn.com/path/to/thumb2.jpg", "created_at": "2024-08-09T10:00:00Z", "metadata": { "difficulty": "beginner", "presenter": "John Smith" } } ], "links": { "first": "https://your-app.com/api/client/v1/videos?page=1", "last": "https://your-app.com/api/client/v1/videos?page=5", "prev": null, "next": "https://your-app.com/api/client/v1/videos?page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 5, "links": [ { "url": null, "label": "« Previous", "active": false }, { "url": "https://your-app.com/api/client/v1/videos?page=1", "label": "1", "active": true }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "2", "active": false }, { "url": "https://your-app.com/api/client/v1/videos?page=3", "label": "3", "active": false }, { "url": "https://your-app.com/api/client/v1/videos?page=4", "label": "4", "active": false }, { "url": "https://your-app.com/api/client/v1/videos?page=5", "label": "5", "active": false }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "Next »", "active": true } ], "path": "https://your-app.com/api/client/v1/videos", "per_page": 2, "to": 2, "total": 10 } }

Получить видео

Получает полную, детальную информацию о видео, подходящую для воспроизведения. Ответ — объект Video.

GET /videos/{videoId}

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

ИмяТипОписание
videoIduuidОбязательно. Уникальный идентификатор видео.

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

GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a

Полный ответ: GET /videos/{videoId}

Ответ: 200 OK
{ "data": { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Advanced API Design in Laravel", "description": "Deep dive into building robust APIs.", "duration_in_seconds": 3620, "created_at": "2024-08-10T12:00:00Z", "manifest": { "hls_url": "https://your-cdn.com/path/to/master.m3u8", "dash_url": "https://your-cdn.com/path/to/manifest.mpd" }, "captions": [ { "label": "English", "language": "en", "is_default": true, "url": "https://your-cdn.com/path/to/en.vtt" }, { "label": "Español", "language": "es", "is_default": false, "url": "https://your-cdn.com/path/to/es.vtt" } ], "transcript": { "type": "vtt", "url": "https://your-cdn.com/path/to/transcript.vtt" }, "thumbnails": [ { "url": "https://your-cdn.com/path/to/thumb1.jpg" }, { "url": "https://your-cdn.com/path/to/thumb2.jpg" } ], "tags": ["laravel", "api", "php"], "metadata": { "difficulty": "advanced", "presenter": "Jane Doe", "related_course": "API Mastery", "language": "en-US" } } }