Skip to Content

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

NomTypeDescription
pathstringFacultatif. Filtrer les vidéos à une collection spécifique, par exemple root/movies.
filtersobjectFacultatif. Filtre par métadonnées. Voir Exemples de filtrage ci-dessous pour la syntaxe.
tagsstringFacultatif. 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.
sortstringFacultatif. 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_pageintegerFacultatif. 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.

Réponse : 200 OK
{ "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

NomTypeDescription
videoIduuidRequis. 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}

Réponse : 200 OK
{ "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" } } }