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
Nombre | Tipo | Descripción |
---|---|---|
path | string | Opcional. Filtra videos a un camino específico de colección, por ejemplo, root/movies . |
filters | object | Opcional. Filtra por metadatos. Consulte los ejemplos de filtrado a continuación para la sintaxis. |
tags | string | Opcional. Una lista separada por comas de etiquetas para filtrar (por ejemplo, laravel,api ). Encuentra videos con TODAS las etiquetas especificadas. |
sort | string | Opcional. Ordena los resultados. Utilice un prefijo - para orden descendente. Campos permitidos: created_at , title , duration_in_seconds . Por defecto: -created_at . |
per_page | integer | Opcional. 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.
{
"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
Nombre | Tipo | Descripción |
---|---|---|
videoId | uuid | Requerido. El identificador único del video. |
Ejemplo de Solicitud
GET /http/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Respuesta Completa: GET /videos/{videoId}
{
"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"
}
}
}