Skip to Content

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

NaamTypeBeschrijving
pathstringOptioneel. Filter videos naar een specifieke collectiepad, bijvoorbeeld root/movies.
filtersobjectOptioneel. Filter op metadata. Zie Filtering Examples hieronder voor syntax.
tagsstringOptioneel. Een komma-afgescheiden lijst van tags om te filteren (bijv. laravel,api). Zoekt videos met ALLE opgegeven tags.
sortstringOptioneel. Sorteert de resultaten. Gebruik een - prefix voor afnemende volgorde. Toegestane velden: created_at, title, duration_in_seconds. Standaard: -created_at.
per_pageintegerOptioneel. 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.

Response: 200 OK
{ "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

NaamTypeBeschrijving
videoIduuidVerplicht. De unieke identifier van de video.

Voorbeeldverzoek

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

Volledige respons: GET /videos/{videoId}

Response: 200 OK
{ "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" } } }