Vidéos API
La Vidéo est le point d’entrée principal pour récupérer du contenu vidéo. Elle prend en charge des capacités de filtrage, de tri et de balise puissantes.
Liste des vidéos
Récupère une liste paginée de vidéos. Ce point d’entrée est très flexible et accepte plusieurs paramètres de requête pour affiner les résultats. La réponse contient un tableau d’objets VidéoSummary.
GET /videos
Paramètres de requête
Nom | Type | Description |
---|---|---|
path | string | Facultatif. Filtrer les vidéos à une collection spécifique, par exemple root/movies . |
filters | object | Facultatif. Filtre par métadonnées. Voir Exemples de filtrage ci-dessous pour la syntaxe. |
tags | string | Facultatif. Une liste séparée par des virgules de balises à filtrer (par exemple, laravel,api ). Trouve les vidéos avec TOUTES les balises spécifiées. |
sort | string | Facultatif. Trie les résultats. Utilisez un préfixe - pour l’ordre décroissant. Champs autorisés : created_at , title , duration_in_seconds . Défaut : -created_at . |
per_page | integer | Facultatif. Nombre de résultats par page. Défaut : 15 , Max : 100 . |
Exemples de filtrage
Le paramètre filters
est la fonctionnalité la plus puissante. La syntaxe est filters[field_name][operator]=value
.
Filtre par chemin de collection
Cela trouve toutes les vidéos à l’intérieur du dossier education/php
.
GET /api/client/v1/videos?path=root/education/php
Filtre par un seul champ métadonnée (Égal)
Cela trouve toutes les vidéos où le genre
est ‘Action’, de manière insensible à la casse. L’utilisation d’une valeur directe est un raccourci pour l’opérateur eq
(égal).
GET /api/client/v1/videos?filters[genre]=Action
Filtre par chemin et métadonnée
Cela trouve toutes les vidéos ‘débutant’ spécifiquement dans la collection fitness/yoga
.
GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner
Filtre par “Plus grand que” (gt
)
Cela trouve toutes les vidéos plus longues que 10 minutes (600 secondes).
GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600
Filtre par “Inférieur ou égal à” (lte
)
Cela trouve toutes les vidéos avec une note de 3 ou moins.
GET /api/client/v1/videos?filters[rating][lte]=3
Filtre par “Dans la liste” (in
)
Cela trouve toutes les vidéos où la difficulté est soit ‘débutant’ SOIT ‘intermédiaire’. Il fonctionne pour les champs sélectionnables multiples.
GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate
Filtre par “Non égal à” (neq
)
Cela trouve toutes les vidéos où le présentateur n’est pas ‘Jane Doe’.
GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe
Exemples de tri et de balise
Filtre par balises
Cela trouve toutes les vidéos étiquetées avec LES DEUX ‘yoga’ ET ‘débutant’.
GET /api/client/v1/videos?tags=yoga,beginner
Trie par Titre (Croissant)
Cela liste toutes les vidéos triées alphabétiquement par titre.
GET /api/client/v1/videos?sort=title
Trie par Date (Décroissant)
Cela liste toutes les vidéos avec les plus récentes en premier. C’est le comportement par défaut et équivaut à ne pas fournir un paramètre sort
.
GET /api/client/v1/videos?sort=-created_at
Réponse complète : GET /videos
Ceci est un exemple complet, non tronqué d’une réponse paginée.
{
"data": [
{
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Conception de API avancée dans Laravel",
"description": "Une immersion profonde dans la construction d'API robustes.",
"duration_in_seconds": 3620,
"thumbnail_url": "https://votre-cdn.com/path/to/thumb1.jpg",
"created_at": "2024-08-10T12:00:00Z",
"metadata": {
"difficulty": "avancé",
"présentateur": "Jane Doe"
}
},
{
"id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f",
"title": "Introduction à la https",
"description": "Un guide de débutant pour les postures de yoga de base.",
"duration_in_seconds": 1800,
"thumbnail_url": "cdn://votre-https.com/path/to/thumb2.jpg",
"created_at": "2024-08-09T10:00:00Z",
"metadata": {
"difficulty": "débutant",
"présentateur": "John Smith"
}
}
],
"liens" : {
"premier" : "api://votre-app.com/https/client/v1/videos?page=1",
"dernier" : "api://votre-app.com/https/client/v1/videos?page=5",
"précédent" : null,
"suivant" : "api://votre-app.com/url/client/v1/videos?page=2"
},
"meta" : {
"page actuelle" : 1,
"de" : 1,
"dernière page" : 5,
"liens" : [
{
"url" : null,
"étiquette" : "« Précédent",
"actif" : faux
},
{
"https" : "api://votre-app.com/url/client/v1/videos?page=1",
"étiquette" : "1",
"actif" : vrai
},
{
"https" : "api://votre-app.com/url/client/v1/videos?page=2",
"étiquette" : "2",
"actif" : faux
},
{
"https" : "api://votre-app.com/__TECH_TERMEnterprise:3",
"étiquette" : "3",
"actif" : faux
},
{
"url" : "https://votre-app.com/api/client/v1/videos?page=4",
"étiquette" : "4",
"actif" : faux
},
{
"url" : "https://votre-app.com/api/client/v1/videos?page=5",
"étiquette" : "5",
"actif" : faux
},
{
"url" : "https://votre-app.com/api/client/v1/videos?page=2",
"étiquette" : "Suivant »",
"actif" : vrai
}
],
"chemin" : "https://votre-app.com/api/client/v1/videos",
"par page" : 2,
"à" : 2,
"total" : 10
}
}
Obtenir une vidéo unique
Récupère les données détaillées complètes d’une seule vidéo, adaptée pour un lecteur. La réponse est un seul objet Vidéo.
GET /videos/{videoId}
Paramètres de chemin
Nom | Type | Description |
---|---|---|
videoId | uuid | Requis. L’identifiant unique de la vidéo. |
Exemple de requête
GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Réponse complète : GET /videos/{videoId}
{
"data": {
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Conception de API avancée dans Laravel",
"description": "Une immersion profonde dans la construction d'API robustes.",
"duration_in_seconds": 3620,
"created_at": "2024-08-10T12:00:00Z",
"manifeste" : {
"hls_url" : "https://votre-cdn.com/path/to/master.m3u8",
"dash_url" : "https://votre-cdn.com/path/to/manifest.mpd"
},
"captions" : [
{
"étiquette" : "Anglais",
"langue" : "en",
"est_par_défaut" : vrai,
"url" : "https://votre-cdn.com/path/to/en.vtt"
},
{
"étiquette" : "Espagnol",
"langue" : "es",
"est_par_défaut" : faux,
"url" : "https://votre-cdn.com/path/to/es.vtt"
}
],
"transcript" : {
"type" : "vtt",
"url" : "https://votre-cdn.com/path/to/transcript.vtt"
},
"miniatures" : [
{ "url" : "https://votre-cdn.com/path/to/thumb1.jpg" },
{ "url" : "https://votre-cdn.com/path/to/thumb2.jpg" }
],
"balises" : ["laravel", "api", "php"],
"métadonnées" : {
"difficulté" : "avancée",
"présentateur" : "Jane Doe",
"cours lié" : "API Mastery",
"langue" : "en-US"
}
}
}