Videor API
Videor API är den primära slutpunkten för att hämta videoinnehåll. Den stöder kraftfull filtrering, sorterings- och märkningstillgängligheter.
Lista Videor
Hämtar en sidbrytad lista över videor. Denna slutpunkt är mycket flexibel och accepterar flera frågeparametrar för att förfina resultaten. Svar innehåller ett array av VideoSummary-objekt.
GET /videos
Frågeparametrar
Namn | Typ | Beskrivning |
---|---|---|
path | string | Valfritt. Filtrerar videor till en specifik samlingssökväg, t.ex. root/movies . |
filters | object | Valfritt. Filtrerar efter metadata. Se Filtreringsexempel nedan för syntax. |
tags | string | Valfritt. En kommatesterad lista med märken att filtrera efter (t.ex. laravel,api ). Hittar videor med ALLA angivna märken. |
sort | string | Valfritt. Sorterar resultaten. Använd ett - prefix för nedåtriktad ordning. Tillåtna fält: created_at , title , duration_in_seconds . Standard: -created_at . |
per_page | integer | Valfritt. Antal resultat per sida. Standard: 15 , Max: 100 . |
Filtreringsexempel
Den filters
-parametern är den mest kraftfulla funktionen. Syntaxen är filters[field_name][operator]=value
.
Filtrera efter samlingssökväg
Detta hittar alla videor inuti education/php
-mappen.
GET /api/client/v1/videos?path=root/education/php
Filtrera efter en enda metadata-fält (Jämför)
Detta hittar alla videor där genre
är ‘Action’, case-insensitivt. Användandet av direkt värde är ett kortkommando för operatorn eq
(jämför).
GET /api/client/v1/videos?filters[genre]=Action
Filtrera efter sökväg och metadata
Detta hittar alla ‘beginner’-videor specifikt inom fitness/yoga
-samlingen.
GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner
Filtrera efter “Större än” (gt
)
Detta hittar alla videor som är längre än 10 minuter (600 sekunder).
GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600
Filtrera efter “Mindre än eller lika med” (lte
)
Detta hittar alla videor med en betyg på 3 eller lägre.
GET /api/client/v1/videos?filters[rating][lte]=3
Filtrera efter “Finns i listan” (in
)
Detta hittar alla videor där svårigheten är antingen ‘beginner’ eller ‘intermediate’. Det fungerar för både enval och flerval.
GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate
Filtrera efter “Inte lika med” (neq
)
Detta hittar alla videor där presentatören inte är ‘Jane Doe’.
GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe
Sorterings- och märkningsexempel
Filtrera efter märken
Detta hittar alla videor som är märkta med BÅDA ‘yoga’ OCH ‘beginner’.
GET /api/client/v1/videos?tags=yoga,beginner
Sortera efter Titel (Stigande)
Detta listar alla videor sorterade alfabetiskt efter titel.
GET /api/client/v1/videos?sort=title
Sortera efter Datum (Nedåtriktad)
Detta listar alla videor med de nyaste först. Detta är standardbeteendet och är liktydigt med att inte ange en sort
-parameter.
GET /api/client/v1/videos?sort=-created_at
Fullt svar: GET /videos
Detta är ett komplett, oavkortat exempel på en sidbrytad respons.
{
"data": [
{
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Avancerad API Design i Laravel",
"description": "En djupdykning i att bygga robusta API:er.",
"duration_in_seconds": 3620,
"thumbnail_url": "https://din-cdn.com/sökväg/till/thumb1.jpg",
"created_at": "2024-08-10T12:00:00Z",
"metadata": {
"svårighetsgrad": "avancerad",
"presentatör": "Jane Doe"
}
},
{
"id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f",
"title": "Introduktion till Yoga",
"description": "En början guide för grundläggande yogaövningar.",
"duration_in_seconds": 1800,
"thumbnail_url": "https://din-cdn.com/sökväg/till/thumb2.jpg",
"created_at": "2024-08-09T10:00:00Z",
"metadata": {
"svårighetsgrad": "början",
"presentatör": "John Smith"
}
}
],
"länkar": {
"första": "https://din-app.com/api/client/v1/videos?page=1",
"sista": "https://din-app.com/api/client/v1/videos?page=5",
"föregående": null,
"nästa": "https://din-app.com/api/client/v1/videos?page=2"
},
"meta": {
"nuvarande_sida": 1,
"från": 1,
"sista_sida": 5,
"länkar": [
{
"url": null,
"etikett": "« Föregående",
"aktiv": false
},
{
"url": "https://din-app.com/api/client/v1/videos?page=1",
"etikett": "1",
"aktiv": true
},
{
"url": "https://din-app.com/api/client/v1/videos?page=2",
"etikett": "2",
"aktiv": false
},
{
"url": "https://din-app.com/api/client/v1/videos?page=3",
"etikett": "3",
"aktiv": false
},
{
"url": "https://din-app.com/api/client/v1/videos?page=4",
"etikett": "4",
"aktiv": false
},
{
"url": "https://din-app.com/api/client/v1/videos?page=5",
"etikett": "5",
"aktiv": false
},
{
"url": "https://din-app.com/api/client/v1/videos?page=2",
"etikett": "Nästa »",
"aktiv": true
}
],
"sökväg": "https://din-app.com/api/client/v1/videos",
"per_sida": 2,
"till": 2,
"totalt": 10
}
}
Hämta en enskild video
Hämtar fullständig, detaljerad data för en enskild video, lämplig för spelare. Svar är ett enda Video-objekt.
GET /videos/{videoId}
Sökvägsparametrar
Namn | Typ | Beskrivning |
---|---|---|
videoId | uuid | Krävs. Den unika identifieraren för videon. |
Exempelbegäran
GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Fullt svar: GET /videos/{videoId}
{
"data": {
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Avancerad API Design i Laravel",
"description": "En djupdykning i att bygga robusta API:er.",
"duration_in_seconds": 3620,
"created_at": "2024-08-10T12:00:00Z",
"manifest": {
"hls_url": "https://din-cdn.com/sökväg/till/master.m3u8",
"dash_url": "https://din-cdn.com/sökväg/till/manifest.mpd"
},
"captions": [
{
"etikett": "Engelska",
"språk": "en",
"är_standard": true,
"url": "https://din-cdn.com/sökväg/till/en.vtt"
},
{
"etikett": "Spanska",
"språk": "es",
"är_standard": false,
"url": "https://din-cdn.com/sökväg/till/es.vtt"
}
],
"transcript": {
"typ": "vtt",
"url": "https://din-cdn.com/sökväg/till/transkription.vtt"
},
"thumbnails": [
{ "url": "https://din-cdn.com/sökväg/till/thumb1.jpg" },
{ "url": "https://din-cdn.com/sökväg/till/thumb2.jpg" }
],
"märken": ["laravel", "api", "php"],
"metadata": {
"svårighetsgrad": "avancerad",
"presentatör": "Jane Doe",
"relaterad_kurs": "API-Mästeri",
"språk": "en-US"
}
}
}