Skip to Content

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

NomeTipoDescrição
pathstringOpcional. Filtra vídeos para uma coleção específica, por exemplo, root/movies.
filtersobjectOpcional. Filtra por metadados. Consulte Exemplos de Filtros abaixo para sintaxe.
tagsstringOpcional. Uma lista separada por vírgula de etiquetas para filtrar (por exemplo, laravel,api). Encontra vídeos com todas as etiquetas especificadas.
sortstringOpcional. Ordena os resultados. Use um prefixo - para ordem descendente. Campos permitidos: created_at, title, duration_in_seconds. Padronizado: -created_at.
per_pageintegerOpcional. 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.

Resposta: 200 OK
{ "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

NomeTipoDescrição
videoIduuidObrigató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}

Resposta: 200 OK
{ "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" } } }