Video API
Il Video API è l’endpoint principale per recuperare il contenuto video. Supporta potenti funzionalità di filtro, ordinamento e etichettatura.
Elenco dei Video
Recupera una lista paginata di video. Questo endpoint è molto flessibile e accetta diversi parametri di query per raffinare i risultati. La risposta contiene un array di Oggetti di Riassunto del Video.
GET /videos
Parametri di Query
Nome | Tipo | Descrizione |
---|---|---|
path | string | Facoltativo. Filtra i video per una specifica cartella di percorso, ad esempio root/movies . |
filters | object | Facoltativo. Filtra per metadata. Vedi Esempi di Filtro qui sotto per la sintassi. |
tags | string | Facoltativo. Una lista separata da virgole di etichette per filtrare (ad esempio, laravel,api ). Trova i video con tutte le etichette specificate. |
sort | string | Facoltativo. Ordina i risultati. Utilizza un prefisso - per l’ordinamento in ordine decrescente. Campi consentiti: created_at , title , duration_in_seconds . Predefinito: -created_at . |
per_page | integer | Facoltativo. Numero di risultati per pagina. Predefinito: 15 , Massimo: 100 . |
Esempi di Filtro
Il parametro filters
è la funzionalità più potente. La sintassi è filters[field_name][operator]=value
.
Filtrare per Percorso della Cartella
Questo trova tutti i video all’interno della cartella education/php
.
GET /api/client/v1/videos?path=root/education/php
Filtrare per un Campo di Metadata (Uguali)
Questo trova tutti i video dove il campo genre
è ‘Action’, in modo case-insensibile. Utilizzare un valore diretto è uno shortcut per l’operatore eq
(uguale).
GET /api/client/v1/videos?filters[genre]=Action
Filtrare per Percorso e Metadata
Questo trova tutti i video ‘inizio’ specificamente all’interno della raccolta fitness/yoga
.
GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner
Filtrare per “Maggiore di” (gt
)
Questo trova tutti i video più lunghi di 10 minuti (600 secondi).
GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600
Filtrare per “Meno o Uguale a” (lte
)
Questo trova tutti i video con una valutazione di 3 o meno.
GET /api/client/v1/videos?filters[rating][lte]=3
Filtrare per “In una Lista” (in
)
Questo trova tutti i video dove la difficoltà è sia ‘inizio’ che ‘intermedio’. Funziona sia per campi di selezione multipla che singoli.
GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate
Filtrare per “Non Uguale a” (neq
)
Questo trova tutti i video dove il presentatore non è ‘Jane Doe’.
GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe
Esempi di Ordinamento e Etichettatura
Filtrare per Etichette
Questo trova tutti i video etichettati con entrambe ‘yoga’ e ‘inizio’.
GET /api/client/v1/videos?tags=yoga,beginner
Ordinare per Titolo (Ascendente)
Questo elenca tutti i video ordinati in ordine alfabetico per titolo.
GET /api/client/v1/videos?sort=title
Ordinare per Data (Discendente)
Questo elenca tutti i video con gli ultimi aggiunti per primi. Questo è il comportamento predefinito e equivale a non fornire un parametro sort
.
GET /api/client/v1/videos?sort=-created_at
Risposta Completa: GET /videos
Questo è un esempio completo, non troncato di una risposta paginata.
{
"data": [
{
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Progettazione Avanzata di API in Laravel",
"description": "Un approfondimento sulla creazione di API robuste.",
"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": "Introduzione alla https",
"description": "Una guida per principianti alle basi della cdn.",
"duration_in_seconds": 1800,
"thumbnail_url": "https://your-api.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": "url://your-app.com/url/client/v1/videos?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 5,
"links": [
{
"https": null,
"label": "« Previous",
"active": false
},
{
"api": "url://your-app.com/https/client/v1/videos?page=1",
"label": "1",
"active": true
},
{
"api": "url://your-app.com/https/client/v1/videos?page=2",
"label": "2",
"active": false
},
{
"api": "url://your-app.com/https/client/v1/videos?page=3",
"label": "3",
"active": false
},
{
"api": "url://your-app.com/https/client/v1/videos?page=4",
"label": "4",
"active": false
},
{
"api": "url://your-app.com/https/client/v1/videos?page=5",
"label": "5",
"active": false
},
{
"api": "https://your-app.com/api/client/v1/videos?page=2",
"label": "Next »",
"active": true
}
],
"path": "http://your-app.com/api/client/v1/videos",
"per_page": 2,
"to": 2,
"total": 10
}
}
Ottieni un Video Singolo
Recupera i dati dettagliati per un singolo video, adatto per un player. La risposta è un singolo Oggetto di Video.
GET /videos/{videoId}
Parametri del Percorso
Nome | Tipo | Descrizione |
---|---|---|
videoId | uuid | Richiesto. L’identificatore univoco del video. |
Esempio di Richiesta
GET /API/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Risposta Completa: GET /videos/{videoId}
{
"data": {
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Progettazione Avanzata di cdn in Laravel",
"description": "Un approfondimento sulla creazione di API robuste.",
"duration_in_seconds": 3620,
"created_at": "2024-08-10T12:00:00Z",
"manifest": {
"hls_url": "https://your-cdn.com/path/to/master.m3u8",
"dash_url": "url://your-https.com/path/to/manifest.mpd"
},
"captions": [
{
"label": "Inglese",
"language": "en",
"is_default": true,
"cdn": "url://your-https.com/path/to/en.vtt"
},
{
"label": "Spagnolo",
"language": "es",
"is_default": false,
"cdn": "url://your-https.com/path/to/es.vtt"
}
],
"transcript": {
"type": "vtt",
"cdn": "url://your-https.com/path/to/transcript.vtt"
},
"thumbnails": [
{ "cdn": "url://your-https.com/path/to/thumb1.jpg" },
{ "cdn": "api://your-API.com/path/to/thumb2.jpg" }
],
"tags": ["laravel", "__TECH_TERM_81__", "php"],
"metadata": {
"difficulty": "advanced",
"presenter": "Jane Doe",
"related_course": "__TECH_TERM_82__ Mastery",
"language": "en-US"
}
}
}