Skip to Content

Video API

Video API adalah endpoint utama untuk mengambil konten video. Dukungan filtering, sorting, dan tagging yang kuat.

Daftar Video

Mengambil daftar video yang dipaginasi. Endpoint ini sangat fleksibel dan menerima beberapa parameter kueri untuk memperhalus hasilnya. Respons berisi array dari Objek Ringkasan Video.

GET /videos

Parameter Kueri

NamaTipeDeskripsi
pathstringOpsional. Mengfilter video ke jalur koleksi tertentu, misalnya root/movies.
filtersobjectOpsional. Mengfilter berdasarkan metadata. Lihat Contoh Filtering di bawah untuk sintaks.
tagsstringOpsional. Daftar tag yang dipisahkan koma untuk mengfilter (misalnya laravel,api). Menemukan video dengan semua tag yang spesifik.
sortstringOpsional. Mengurutkan hasilnya. Gunakan prefix - untuk urutan menurun. Lapangan yang diizinkan: created_at, title, duration_in_seconds. Default: -created_at.
per_pageintegerOpsional. Jumlah hasil per halaman. Default: 15, Maksimum: 100.

Contoh Filtering

Parameter filters adalah fitur yang paling kuat. Sintaksnya adalah filters[field_name][operator]=value.

Filter oleh Jalur Koleksi

Mengambil semua video di dalam folder education/php.

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

Filter oleh Lapangan Metadata (Sama)

Mengambil semua video dimana genre adalah ‘Action’, tidak peduli besar kecil huruf. Menggunakan nilai langsung adalah singkatan untuk operator eq (sama).

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

Filter oleh Jalur dan Metadata

Mengambil semua video ‘awal’ yang spesifik di dalam koleksi ‘olahraga/yoga’.

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

Filter oleh “Lebih dari” (gt)

Mengambil semua video yang lebih lama dari 10 menit (600 detik).

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

Filter oleh “Sama atau Kurang Dari” (lte)

Mengambil semua video dengan rating 3 atau kurang.

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

Filter oleh “Dalam Daftar” (in)

Mengambil semua video dimana kesulitan adalah ‘awal’ ATAU ‘menengah’. Bekerja untuk lapangan pilihan tunggal maupun multi.

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

Filter oleh “Bukan Sama” (neq)

Mengambil semua video dimana presenter bukan ‘Jane Doe’.

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

Contoh Pengurutan dan Tagging

Filter oleh Tag

Mengambil semua video yang ditandai dengan TAG ‘yoga’ DAN ‘awal’.

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

Urutkan berdasarkan Judul (Naik Turun)

Mengambil semua video yang diurutkan secara alfabetis berdasarkan judul.

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

Urutkan berdasarkan Tanggal (Turun Naik)

Mengambil semua video dengan yang terbaru pertama. Ini adalah perilaku default dan setara dengan tidak memberikan parameter sort.

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

Respons Lengkap: GET /videos

Contoh respons lengkap tanpa dipangkas.

Respons: 200 OK
{ "data": [ { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Desain API Lanjutan di Laravel", "description": "Penelitian mendalam tentang pembuatan API yang kuat.", "duration_in_seconds": 3620, "thumbnail_url": "https://your-cdn.com/path/to/thumb1.jpg", "created_at": "2024-08-10T12:00:00Z", "metadata": { "kesulitan": "lanjutan", "presenter": "Jane Doe" } }, { "id": "9c1a9e3e-7d8c-5g9b-9f1c-8a2b0c3d9e8f", "title": "Pengenalan Yoga", "description": "Pedoman awal untuk pose yoga dasar.", "duration_in_seconds": 1800, "thumbnail_url": "https://your-cdn.com/path/to/thumb2.jpg", "created_at": "2024-08-09T10:00:00Z", "metadata": { "kesulitan": "awal", "presenter": "John Smith" } } ], "links": { "pertama": "https://your-app.com/api/client/v1/videos?page=1", "terakhir": "https://your-app.com/api/client/v1/videos?page=5", "sebelumnya": null, "berikutnya": "https://your-app.com/api/client/v1/videos?page=2" }, "meta": { "halaman_sekarang": 1, "dari": 1, "halaman_terakhir": 5, "link": [ { "url": null, "label": "« Sebelumnya", "aktif": false }, { "url": "https://your-app.com/api/client/v1/videos?page=1", "label": "1", "aktif": true }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "2", "aktif": false }, { "url": "https://your-app.com/api/client/v1/videos?page=3", "label": "3", "aktif": false }, { "url": "https://your-app.com/api/client/v1/videos?page=4", "label": "4", "aktif": false }, { "url": "https://your-app.com/api/client/v1/videos?page=5", "label": "5", "aktif": false }, { "url": "https://your-app.com/api/client/v1/videos?page=2", "label": "Berikutnya »", "aktif": true } ], "path": "https://your-app.com/api/client/v1/videos", "per_halaman": 2, "sampai": 2, "total": 10 } }

Ambil Video Tunggal

Mengambil data lengkap dan rinci untuk video tunggal, cocok untuk pemutar. Respons berupa satu Objek Video.

GET /videos/{videoId}

Parameter Jalur

NamaTipeDeskripsi
videoIduuidWajib. Identifikasi unik video.

Contoh Permintaan

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

Respons Lengkap: GET /videos/{videoId}

Respons: 200 OK
{ "data": { "id": "9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a", "title": "Desain API Lanjutan di Laravel", "description": "Penelitian mendalam tentang pembuatan API yang kuat.", "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": "Bahasa Inggris", "bahasa": "en", "adalah_default": true, "url": "https://your-cdn.com/path/to/en.vtt" }, { "label": "Spanyol", "bahasa": "es", "adalah_default": false, "url": "https://your-cdn.com/path/to/es.vtt" } ], "transcript": { "tipe": "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": { "kesulitan": "lanjutan", "presenter": "Jane Doe", "kursus_terkait": "API Mastery", "bahasa": "en-US" } } }