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
Name | Typ | Beschreibung |
---|---|---|
path | string | Optional. Filtert Videos auf eine bestimmte Sammlungspfad, z.B. root/movies . |
filters | object | Optional. Filtern nach Metadaten. Siehe Filterbeispiele unten für Syntax. |
tags | string | Optional. Eine durch Komma getrennte Liste von Tags zum Filtern (z.B. laravel,api ). Findet Videos mit allen angegebenen Tags. |
sort | string | Optional. 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_page | integer | Optional. 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.
{
"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
Name | Typ | Beschreibung |
---|---|---|
videoId | uuid | Erforderlich. Die eindeutige Identifikation des Videos. |
Beispielanfrage
GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Vollständige Antwort: GET /videos/{videoId}
{
"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"
}
}
}