Skip to Content

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

NomeTipoDescrizione
pathstringFacoltativo. Filtra i video per una specifica cartella di percorso, ad esempio root/movies.
filtersobjectFacoltativo. Filtra per metadata. Vedi Esempi di Filtro qui sotto per la sintassi.
tagsstringFacoltativo. Una lista separata da virgole di etichette per filtrare (ad esempio, laravel,api). Trova i video con tutte le etichette specificate.
sortstringFacoltativo. Ordina i risultati. Utilizza un prefisso - per l’ordinamento in ordine decrescente. Campi consentiti: created_at, title, duration_in_seconds. Predefinito: -created_at.
per_pageintegerFacoltativo. 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.

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

NomeTipoDescrizione
videoIduuidRichiesto. L’identificatore univoco del video.

Esempio di Richiesta

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

Risposta Completa: GET /videos/{videoId}

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