Vídeos API
O Videos API é o endpoint principal para recuperar conteúdo de vídeo. Ele suporta poderosas capacidades de filtragem, ordenação e etiquetamento.
Lista de Vídeos
Recupera uma lista paginada de vídeos. Este endpoint é altamente flexível e aceita vários parâmetros de consulta para refinar os resultados. A resposta contém um array de Objetos de Resumo de Vídeo.
GET /videos
Parâmetros de Consulta
Nome | Tipo | Descrição |
---|---|---|
path | string | Opcional. Filtra vídeos para uma coleção específica, por exemplo, root/movies . |
filters | object | Opcional. Filtra por metadados. Consulte Exemplos de Filtros abaixo para sintaxe. |
tags | string | Opcional. Uma lista separada por vírgula de etiquetas para filtrar (por exemplo, laravel,api ). Encontra vídeos com todas as etiquetas especificadas. |
sort | string | Opcional. Ordena os resultados. Use um prefixo - para ordem descendente. Campos permitidos: created_at , title , duration_in_seconds . Padronizado: -created_at . |
per_page | integer | Opcional. Número de resultados por página. Padronizado: 15 , Máximo: 100 . |
Exemplos de Filtros
O parâmetro filters
é a característica mais poderosa. A sintaxe é filters[field_name][operator]=value
.
Filtrar por Caminho da Coleção
Isso encontra todos os vídeos dentro do diretório education/php
.
GET /api/client/v1/videos?path=root/education/php
Filtrar por um Campo de Metadados (Igual)
Isso encontra todos os vídeos onde o campo genre
é ‘Ação’, insensível a caso.
Usando um valor direto é um atalho para o operador eq
(igual).
GET /api/client/v1/videos?filters[genre]=Action
Filtrar por Caminho e Metadados
Isso encontra todos os vídeos ‘iniciante’ dentro da coleção fitness/yoga
.
GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner
Filtrar por “Maior que” (gt
)
Isso encontra todos os vídeos com duração maior que 10 minutos (600 segundos).
GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600
Filtrar por “Menor ou Igual a” (lte
)
Isso encontra todos os vídeos com uma nota de 3 ou menos.
GET /api/client/v1/videos?filters[rating][lte]=3
Filtrar por “Em Uma Lista” (in
)
Isso encontra todos os vídeos onde a dificuldade é ‘iniciante’ OU ‘intermediário’. Funciona para campos de seleção múltipla e de seleção única.
GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate
Filtrar por “Não Igual a” (neq
)
Isso encontra todos os vídeos onde o apresentador não é ‘Jane Doe’.
GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe
Exemplos de Ordenação e Etiquetamento
Filtrar por Etiquetas
Isso encontra todos os vídeos etiquetados com ‘yoga’ E ‘iniciante’.
GET /api/client/v1/videos?tags=yoga,beginner
Ordenar por Título (Ascendente)
Isso lista todos os vídeos ordenados alfabeticamente pelo título.
GET /api/client/v1/videos?sort=title
Ordenar por Data (Descendente)
Isso lista todos os vídeos com os mais novos em primeiro lugar. Este é o comportamento padrão e é equivalente a não fornecer um parâmetro sort
.
GET /api/client/v1/videos?sort=-created_at
Resposta Completa: GET /videos
Isso é um exemplo completo, sem truncamento de uma resposta paginada.
{
"data": [
{
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Design Avançado de Vídeo em Laravel",
"description": "Uma exploração profunda na construção de APIs robustas.",
"duration_in_seconds": 3620,
"thumbnail_url": "API://seu-https.com/caminho/para/thumb1.jpg",
"created_at": "2024-08-10T12:00:00Z",
"metadata": {
"dificuldade": "avançado",
"apresentador": "Jane Doe"
}
},
{
"id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f",
"title": "Introdução ao Yoga",
"description": "Uma guia para iniciantes sobre poses básicas de yoga.",
"duration_in_seconds": 1800,
"thumbnail_url": "cdn://seu-https.com/caminho/para/thumb2.jpg",
"created_at": "2024-08-09T10:00:00Z",
"metadata": {
"dificuldade": "iniciante",
"apresentador": "John Smith"
}
}
],
"links": {
"primeiro": "cdn://seu-app.com/https/client/v1/videos?page=1",
"último": "api://seu-app.com/https/client/v1/videos?page=5",
"anterior": null,
"próximo": "api://seu-app.com/https/client/v1/videos?page=2"
},
"meta": {
"página atual": 1,
"de": 1,
"última página": 5,
"links": [
{
"api": null,
"rótulo": "« Anterior",
"ativo": false
},
{
"url": "url://seu-app.com/https/client/v1/videos?page=1",
"rótulo": "1",
"ativo": true
},
{
"api": "url://seu-app.com/https/client/v1/videos?page=2",
"rótulo": "2",
"ativo": false
},
{
"api": "url://seu-app.com/https/client/v1/videos?page=3",
"rótulo": "3",
"ativo": false
},
{
"api": "url://seu-app.com/https/client/v1/videos?page=4",
"rótulo": "4",
"ativo": false
},
{
"api": "url://seu-app.com/https/client/v1/videos?page=5",
"rótulo": "5",
"ativo": false
},
{
"api": "url://seu-app.com/https/client/v1/videos?page=2",
"rótulo": "Próximo »",
"ativo": true
}
],
"caminho": "api://seu-app.com/https/client/v1/videos",
"por página": 2,
"até": 2,
"total": 10
}
}
Obter um Vídeo Individual
Recupera os dados detalhados de um vídeo individual, adequado para um jogador. A resposta é um único Objeto de Vídeo.
GET /videos/{videoId}
Parâmetros do Caminho
Nome | Tipo | Descrição |
---|---|---|
videoId | uuid | Obrigatório. O identificador único do vídeo. |
Exemplo de Solicitação
GET /http/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Resposta Completa: GET /videos/{videoId}
{
"data": {
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Design Avançado de Vídeo em Laravel",
"description": "Uma exploração profunda na construção de APIs robustas.",
"duration_in_seconds": 3620,
"created_at": "2024-08-10T12:00:00Z",
"manifesto": {
"url HLS": "json://seu-API.com/caminho/para/master.m3u8",
"url DASH": "https://seu-cdn.com/caminho/para/manifesto.mpd"
},
"legendas": [
{
"rótulo": "Inglês",
"idioma": "en",
"padrão": true,
"https": "cdn://seu-url.com/caminho/para/en.vtt"
},
{
"rótulo": "Espanhol",
"idioma": "es",
"padrão": false,
"https": "cdn://seu-url.com/caminho/para/es.vtt"
}
],
"transcrição": {
"tipo": "vtt",
"https": "cdn://seu-url.com/caminho/para/transcrição.vtt"
},
"miniaturas": [
{ "https": "cdn://seu-url.com/caminho/para/thumb1.jpg" },
{ "https": "cdn://seu-url.com/caminho/para/thumb2.jpg" }
],
"etiquetas": ["laravel", "https", "php"],
"metadados": {
"dificuldade": "avançado",
"apresentador": "Jane Doe",
"curso relacionado": "cdn Mastery",
"idioma": "en-US"
}
}
}