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
Nama | Tipe | Deskripsi |
---|---|---|
path | string | Opsional. Mengfilter video ke jalur koleksi tertentu, misalnya root/movies . |
filters | object | Opsional. Mengfilter berdasarkan metadata. Lihat Contoh Filtering di bawah untuk sintaks. |
tags | string | Opsional. Daftar tag yang dipisahkan koma untuk mengfilter (misalnya laravel,api ). Menemukan video dengan semua tag yang spesifik. |
sort | string | Opsional. Mengurutkan hasilnya. Gunakan prefix - untuk urutan menurun. Lapangan yang diizinkan: created_at , title , duration_in_seconds . Default: -created_at . |
per_page | integer | Opsional. 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.
{
"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
Nama | Tipe | Deskripsi |
---|---|---|
videoId | uuid | Wajib. Identifikasi unik video. |
Contoh Permintaan
GET /api/client/v1/videos/9c1a9e3e-6c9b-4f8a-8e2d-9b3c1d4e0f6a
Respons Lengkap: GET /videos/{videoId}
{
"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"
}
}
}