Skip to Content

Vídeos API

El endpoint de vídeos API es el punto de entrada principal para recuperar contenido de video. Soporta capacidades de filtrado, ordenamiento y etiquetado potentes.

Listar Vídeos

Recupera una lista paginada de videos. Este endpoint es altamente flexible y acepta varios parámetros de consulta para refinar los resultados. La respuesta contiene un arreglo de objetos VideoSummary.

GET /videos

Parámetros de Consulta

NombreTipoDescripción
pathstringOpcional. Filtra videos a un camino específico de colección, por ejemplo, root/movies.
filtersobjectOpcional. Filtra por metadatos. Consulte los ejemplos de filtrado a continuación para la sintaxis.
tagsstringOpcional. Una lista separada por comas de etiquetas para filtrar (por ejemplo, laravel,api). Encuentra videos con TODAS las etiquetas especificadas.
sortstringOpcional. Ordena los resultados. Utilice un prefijo - para orden descendente. Campos permitidos: created_at, title, duration_in_seconds. Por defecto: -created_at.
per_pageintegerOpcional. Número de resultados por página. Por defecto: 15, Máximo: 100.

Ejemplos de Filtrado

El parámetro filters es la característica más poderosa. La sintaxis es filters[field_name][operator]=value.

Filtro por Camino de Colección

Este encuentra todos los videos dentro del directorio education/php.

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

Filtro por un Campo de Metadatos (Igual)

Este encuentra todos los videos donde el campo genre es ‘Acción’, caso insensible. Utilizar un valor directo es un atajo para el operador eq (igual).

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

Filtro por Camino y Metadatos

Este encuentra todos los videos ‘básicos’ específicamente dentro de la colección fitness/yoga.

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

Filtro por “Mayor que” (gt)

Este encuentra todos los videos más largos de 10 minutos (600 segundos).

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

Filtro por “Menor o Igual a” (lte)

Este encuentra todos los videos con una calificación de 3 o menos.

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

Filtro por “En una Lista” (in)

Este encuentra todos los videos donde la dificultad es ‘básico’ O ‘intermedio’. Funciona tanto para campos de selección múltiple como para campos de selección única.

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

Filtro por “No Igual a” (neq)

Este encuentra todos los videos donde el presentador no es ‘Jane Doe’.

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

Ejemplos de Ordenamiento y Etiquetado

Filtro por Etiquetas

Este encuentra todos los videos etiquetados con ambas ‘yoga’ Y ‘básico’.

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

Ordenar por Título (Ascendente)

Esta lista todos los videos ordenados alfabéticamente por título.

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

Ordenar por Fecha (Descendente)

Esta lista todos los videos con los más nuevos primero. Este es el comportamiento predeterminado y es equivalente a no proporcionar un parámetro de orden.

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

Respuesta Completa: GET /videos

Esta es una ejemplo completa, sin truncar, de una respuesta paginada.

Respuesta: 200 OK
{ "data": [ { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Diseño Avanzado de Vídeos en Laravel", "description": "Un análisis profundo sobre la creación de APIs robustas.", "duration_in_seconds": 3620, "thumbnail_url": "API://your-https.com/path/to/thumb1.jpg", "created_at": "2024-08-10T12:00:00Z", "metadata": { "dificultad": "avanzado", "presentador": "Jane Doe" } }, { "id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f", "title": "Introducción a la Yoga", "description": "Una guía básica para posiciones de yoga.", "duration_in_seconds": 1800, "thumbnail_url": "cdn://your-https.com/path/to/thumb2.jpg", "created_at": "2024-08-09T10:00:00Z", "metadata": { "dificultad": "básico", "presentador": "John Smith" } } ], "links": { "primero": "cdn://your-app.com/https/client/v1/videos?page=1", "último": "api://your-app.com/https/client/v1/videos?page=5", "anterior": null, "siguiente": "api://your-app.com/https/client/v1/videos?page=2" }, "meta": { "página actual": 1, "desde": 1, "última página": 5, "enlaces": [ { "api": null, "etiqueta": "« Anterior", "activo": false }, { "url": "url://your-app.com/https/client/v1/videos?page=1", "etiqueta": "1", "activo": true }, { "api": "url://your-app.com/https/client/v1/videos?page=2", "etiqueta": "2", "activo": false }, { "api": "url://your-app.com/https/client/v1/videos?page=3", "etiqueta": "3", "activo": false }, { "api": "url://your-app.com/https/client/v1/videos?page=4", "etiqueta": "4", "activo": false }, { "api": "url://your-app.com/https/client/v1/videos?page=5", "etiqueta": "5", "activo": false }, { "api": "url://your-app.com/https/client/v1/videos?page=2", "etiqueta": "Siguiente »", "activo": true } ], "ruta": "api://your-app.com/https/client/v1/videos", "por página": 2, "hasta": 2, "total": 10 } }

Obtener un Vídeo Individual

Recupera los datos detallados completos de un solo video, adecuado para un reproductor. La respuesta es un objeto Video.

GET /videos/{videoId}

Parámetros del Camino

NombreTipoDescripción
videoIduuidRequerido. El identificador único del video.

Ejemplo de Solicitud

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

Respuesta Completa: GET /videos/{videoId}

Respuesta: 200 OK
{ "data": { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Diseño Avanzado de Vídeos en Laravel", "description": "Un análisis profundo sobre la creación de APIs robustas.", "duration_in_seconds": 3620, "created_at": "2024-08-10T12:00:00Z", "manifesto": { "hls_url": "json://your-API.com/path/to/master.m3u8", "dash_url": "https://your-cdn.com/path/to/manifest.mpd" }, "subtítulos": [ { "etiqueta": "Inglés", "idioma": "en", "es_defecto": true, "https": "cdn://your-url.com/path/to/en.vtt" }, { "etiqueta": "Español", "idioma": "es", "es_defecto": false, "https": "cdn://your-url.com/path/to/es.vtt" } ], "transcripción": { "tipo": "vtt", "https": "cdn://your-url.com/path/to/transcript.vtt" }, "miniaturas": [ { "https": "cdn://your-url.com/path/to/thumb1.jpg" }, { "https": "cdn://your-url.com/path/to/thumb2.jpg" } ], "etiquetas": ["laravel", "https", "php"], "metadatos": { "dificultad": "avanzado", "presentador": "Jane Doe", "curso relacionado": "cdn Mastery", "idioma": "en-US" } } }