Skip to Content

Videos API

Die Videos API sind der primäre Endpunkt für die Abfrage von Videoinhalten. Sie unterstützen leistungsstarke Filter, Sortierung und Tagging-Funktionen.

Liste der Videos

Ruft eine paginierte Liste von Videos ab. Dieser Endpunkt ist sehr flexibel und akzeptiert mehrere Anfragen zum Refinieren der Ergebnisse. Die Antwort enthält ein Array von VideoSummary-Objekten.

GET /videos

Abfrageparameter

NameTypBeschreibung
pathstringOptional. Filtert Videos auf eine bestimmte Sammlungspfad, z.B. root/movies.
filtersobjectOptional. Filtern nach Metadaten. Siehe Filterbeispiele unten für Syntax.
tagsstringOptional. Eine durch Komma getrennte Liste von Tags zum Filtern (z.B. laravel,api). Findet Videos mit allen angegebenen Tags.
sortstringOptional. Sortiert die Ergebnisse. Verwenden Sie einen --Präfix für absteigende Reihenfolge. Zulässige Felder: created_at, title, duration_in_seconds. Standard: -created_at.
per_pageintegerOptional. Anzahl der Ergebnisse pro Seite. Standard: 15, Maximalwert: 100.

Filterbeispiele

Der filters-Parameter ist die mächtigste Funktion. Die Syntax lautet filters[field_name][operator]=value.

Filtern nach Sammlungspfad

Dies findet alle Videos innerhalb des education/php-Ordners.

GET /api/client/v1/videos?path=root/education/php

Filtern nach einer einzelnen Metadatenfeld (Gleichheit)

Dies findet alle Videos, bei denen der genre ‘Action’ ist, case-insensitiv. Verwenden Sie einen direkten Wert als Kurzschluss für den eq-Operator.

GET /api/client/v1/videos?filters[genre]=Action

Filtern nach Pfad und Metadaten

Dies findet alle ‘Einstieg’ - Videos speziell innerhalb der ‘fitness/yoga’-Sammlung.

GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner

Filtern nach “Großer als” (gt)

Dies findet alle Videos, die länger als 10 Minuten (600 Sekunden) sind.

GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600

Filtern nach “Kleiner oder gleich” (lte)

Dies findet alle Videos mit einer Bewertung von 3 oder weniger.

GET /api/client/v1/videos?filters[rating][lte]=3

Filtern nach “In einer Liste” (in)

Dies findet alle Videos, bei denen die Schwierigkeit ‘Einstieg’ oder ‘Fortgeschritten’ ist. Es funktioniert für beide Einwahle und Mehrfachauswahl-Felder.

GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate

Filtern nach “Nicht gleich” (neq)

Dies findet alle Videos, bei denen der Presenter nicht ‘Jane Doe’ ist.

GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe

Beispiele für Sortierung und Tagging

Filtern nach Tags

Dies findet alle Videos, die mit beiden ‘yoga’ und ‘Einstieg’ getags sind.

GET /api/client/v1/videos?tags=yoga,beginner

Sortieren nach Titel (Aufsteigend)

Dies listet alle Videos auf, die alphabetisch nach Titel sortiert sind.

GET /api/client/v1/videos?sort=title

Sortieren nach Datum (Absteigend)

Dies listet alle Videos mit den neuesten zuerst. Dies ist der Standardverhalten und entspricht nicht, einen sort-Parameter bereitzustellen.

GET /api/client/v1/videos?sort=-created_at

Vollständige Antwort: GET /videos

Dies ist ein vollständiges Beispiel für eine paginierte Antwort.

Antwort: 200 OK
{ "data": [ { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Fortgeschrittene API-Design in Laravel", "description": "Eine tiefe Einführung in die Erstellung robuster APIs.", "duration_in_seconds": 3620, "created_at": "2024-08-10T12:00:00Z", "metadata": { "difficulty": "fortgeschritten", "presenter": "Jane Doe" } }, { "id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f", "title": "Einführung in Yoga", "description": "Eine Einführungsanleitung für grundlegende Yogastellungen.", "duration_in_seconds": 1800, "created_at": "2024-08-09T10:00:00Z", "metadata": { "difficulty": "einstieg", "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": "https://your-app.com/api/client/v1/videos?page=2" }, "meta": { "aktuelle Seite": 1, "von": 1, "letzte Seite": 5, "links": [ { "url": null, "label": "« Vorherige", "aktiv": false }, { "url": "https://your-app.com/api/client/v1/videos?page=1", "label": "1", "aktiv": true }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "2", "aktiv": false }, { "url": "https://your-app.com/api/client/v1/videos?page=3", "label": "3", "aktiv": false }, { "url": "https://your-app.com/api/client/v1/videos?page=4", "label": "4", "aktiv": false }, { "url": "https://your-app.com/api/client/v1/videos?page=5", "label": "5", "aktiv": false }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "Nächste »", "aktiv": true } ], "path": "https://your-app.com/api/client/v1/videos", "pro Seite": 2, "bis": 2, "gesamt": 10 } }

Einzelnes Video abrufen

Ruft die vollständige, detaillierte Daten für ein einzelnes Video ab, geeignet für einen Player. Die Antwort ist ein einzelnes Video-Objekt.

GET /videos/{videoId}

Pfadparameter

NameTypBeschreibung
videoIduuidErforderlich. Die eindeutige Identifikation des Videos.

Beispielanfrage

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

Vollständige Antwort: GET /videos/{videoId}

Antwort: 200 OK
{ "data": { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Fortgeschrittene API-Design in Laravel", "description": "Eine tiefe Einführung in die Erstellung robuster APIs.", "duration_in_seconds": 3620, "created_at": "2024-08-10T12:00:00Z", "manifest": { "hls_url": "https://your-cdn.com/path/to/master.m3u8", "dash_url": "https://your-cdn.com/path/to/manifest.mpd" }, "captions": [ { "label": "Englisch", "sprache": "en", "ist Standard": true, "url": "https://your-cdn.com/path/to/en.vtt" }, { "label": "Spanisch", "sprache": "es", "ist Standard": false, "url": "https://your-cdn.com/path/to/es.vtt" } ], "transcript": { "typ": "vtt", "url": "https://your-cdn.com/path/to/transcript.vtt" }, "thumbnails": [ { "url": "https://your-cdn.com/path/to/thumb1.jpg" }, { "url": "https://your-cdn.com/path/to/thumb2.jpg" } ], "tags": ["laravel", "api", "php"], "metadata": { "schwierigkeit": "fortgeschritten", "präsentator": "Jane Doe", "zugehörige Kurs": "API-Mastery", "sprache": "en-US" } } }