Videos API
De Videos API is de primaire eindpunt voor het ophalen van video-inhoud. Het ondersteunt krachtige filterfuncties, sorteren en taggen.
Lijst met videos
Haalt een gepaginiseerde lijst met videos op. Dit eindpunt is erg flexibel en accepteert meerdere query parameters om de resultaten te verfijnen. De respons bevat een array van VideoSummary Objects.
GET /videos
Query Parameters
Naam | Type | Beschrijving |
---|---|---|
path | string | Optioneel. Filter videos naar een specifieke collectiepad, bijvoorbeeld root/movies . |
filters | object | Optioneel. Filter op metadata. Zie Filtering Examples hieronder voor syntax. |
tags | string | Optioneel. Een komma-afgescheiden lijst van tags om te filteren (bijv. laravel,api ). Zoekt videos met ALLE opgegeven tags. |
sort | string | Optioneel. Sorteert de resultaten. Gebruik een - prefix voor afnemende volgorde. Toegestane velden: created_at , title , duration_in_seconds . Standaard: -created_at . |
per_page | integer | Optioneel. Aantal resultaten per pagina. Standaard: 15 , Max: 100 . |
Voorbeelden van filteren
De filters
parameter is de krachtigste functie. De syntax is filters[field_name][operator]=value
.
Filter op collectiepad
Dit vindt alle videos binnen het education/php
mapje.
GET /api/client/v1/videos?path=root/education/php
Filter op een enkel metadata-veld (Gelijk)
Dit vindt alle videos waarbij de genre
is ‘Actie’, case-insensitief. Het gebruik van een directe waarde is een shortcut voor de eq
(gelijk) operator.
GET /api/client/v1/videos?filters[genre]=Action
Filter op pad en metadata
Dit vindt alle ‘beginner’ videos specifiek binnen het ‘fitness/yoga’ collectiepad.
GET /api/client/v1/videos?path=root/fitness/yoga&filters[difficulty]=beginner
Filter op “Groter dan” (gt
)
Dit vindt alle videos langer dan 10 minuten (600 seconden).
GET /api/client/v1/videos?filters[duration_in_seconds][gt]=600
Filter op “Minder dan of gelijk aan” (lte
)
Dit vindt alle videos met een rating van 3 of minder.
GET /api/client/v1/videos?filters[rating][lte]=3
Filter op “In een lijst” (in
)
Dit vindt alle videos waarbij de moeilijkheidsgraad is ‘beginner’ OF ‘intermediair’. Het werkt voor zowel enkel-selecties als meervoud-selecties.
GET /api/client/v1/videos?filters[difficulty][in]=beginner,intermediate
Filter op “Niet gelijk aan” (neq
)
Dit vindt alle videos waarbij de presentator niet ‘Jane Doe’ is.
GET /api/client/v1/videos?filters[presenter][neq]=Jane Doe
Voorbeelden van sorteren en taggen
Filter op tags
Dit vindt alle videos getagd met BEIDE ‘yoga’ EN ‘beginner’.
GET /api/client/v1/videos?tags=yoga,beginner
Sorteer op titel (Oplopend)
Dit sorteert alle videos alfabetisch naar titel.
GET /api/client/v1/videos?sort=title
Sorteer op datum (Afnemend)
Dit sorteert alle videos met de nieuwste eerste. Dit is de standaardfunctie en is gelijk aan het niet verstrekken van een sort
parameter.
GET /api/client/v1/videos?sort=-created_at
Volledige respons: GET /videos
Dit is een compleet, ongesneden voorbeeld van een gepaginiseerde respons.
{
"data": [
{
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Geavanceerde API Design in Laravel",
"description": "Een diepe duik in het bouwen van robuuste APIs.",
"duration_in_seconds": 3620,
"thumbnail_url": "https://your-cdn.com/path/to/thumb1.jpg",
"created_at": "2024-08-10T12:00:00Z",
"metadata": {
"difficulty": "geavanceerd",
"presenter": "Jane Doe"
}
},
{
"id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f",
"title": "Inleiding tot Yoga",
"description": "Een beginnershandleiding voor basisyogahoudingen.",
"duration_in_seconds": 1800,
"thumbnail_url": "https://your-cdn.com/path/to/thumb2.jpg",
"created_at": "2024-08-09T10:00:00Z",
"metadata": {
"difficulty": "beginner",
"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": {
"current_page": 1,
"from": 1,
"last_page": 5,
"links": [
{
"url": null,
"label": "« Vorige",
"active": false
},
{
"url": "https://your-app.com/api/client/v1/videos?page=1",
"label": "1",
"active": true
},
{
"url": "https://your-app.com/api/client/v1/videos?page=2",
"label": "2",
"active": false
},
{
"url": "https://your-app.com/api/client/v1/videos?page=3",
"label": "3",
"active": false
},
{
"url": "https://your-app.com/api/client/v1/videos?page=4",
"label": "4",
"active": false
},
{
"url": "https://your-app.com/api/client/v1/videos?page=5",
"label": "5",
"active": false
},
{
"url": "https://your-app.com/api/client/v1/videos?page=2",
"label": "Volgende »",
"active": true
}
],
"path": "https://your-app.com/api/client/v1/videos",
"per_page": 2,
"to": 2,
"total": 10
}
}
Haal een enkele video op
Haalt de volledige, gedetailleerde gegevens voor een enkele video op, geschikt voor een speler. De respons is een enkel Video Object.
GET /videos/{videoId}
Padparameters
Naam | Type | Beschrijving |
---|---|---|
videoId | uuid | Verplicht. De unieke identifier van de video. |
Voorbeeldverzoek
GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Volledige respons: GET /videos/{videoId}
{
"data": {
"id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a",
"title": "Geavanceerde API Design in Laravel",
"description": "Een diepe duik in het bouwen van robuuste 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": "Engels",
"language": "en",
"is_default": true,
"url": "https://your-cdn.com/path/to/en.vtt"
},
{
"label": "Spaans",
"language": "es",
"is_default": false,
"url": "https://your-cdn.com/path/to/es.vtt"
}
],
"transcript": {
"type": "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": {
"difficulty": "geavanceerd",
"presenter": "Jane Doe",
"gerelateerde cursus": "API Mastery",
"taal": "en-US"
}
}
}