Referensi REST API
Vapor dibangun dengan filosofi mengutamakan API (API-first). Setiap tindakan yang tersedia di antarmuka web diberdayakan oleh REST API yang komprehensif dan terdokumentasi sepenuhnya.
Otentikasi
API Vapor menggunakan otentikasi Bearer Token melalui JSON Web Tokens (JWT).
- Pertama, hasilkan Token API melalui UI (menu API Token) atau lakukan otentikasi melalui endpoint
/api/v1/auth/loginmenggunakan nama pengguna dan kata sandi Anda. - Sertakan token tersebut di header
Authorizationdari semua permintaan (request) berikutnya:
Authorization: Bearer <token_jwt_anda>Spesifikasi OpenAPI
Vapor menerbitkan spesifikasi OpenAPI 3.1.0 lengkapnya. Anda dapat mengakses file openapi.yaml mentah dari kode sumber atau melakukan query pada endpoint /api/v1 (jika Swagger UI diaktifkan pada penyebaran Anda).
API ini mencakup semua fitur platform termasuk:
- Manajemen Sistem Host (
/api/v1/system/*) - Jaringan (
/api/v1/network/*) - Penyimpanan (
/api/v1/storage/*) - Virtualisasi (
/api/v1/virtualization/*) - Kubernetes (
/api/v1/kubernetes/*)
Unggahan File Besar (Protokol TUS)
Untuk endpoint yang memerlukan pengunggahan file masif—seperti ISO Mesin Virtual atau citra Docker/Kontainer—Vapor mengimplementasikan Protokol TUS v1.0.0.
TUS adalah protokol terbuka untuk unggahan file yang dapat dilanjutkan (resumable) melalui HTTP. Ini memastikan bahwa unggahan multi-gigabyte (seperti ISO Ubuntu 4GB) dapat bertahan dari gangguan jaringan tanpa perlu memulai ulang dari awal.
Endpoint TUS yang Didukung
/api/v1/virtualmachines/isos/upload/*/api/v1/containers/images/upload/*/api/v1/docker/images/upload/*
Contoh Integrasi (JavaScript)
Jika Anda membangun integrasi frontend kustom, kami sangat menyarankan penggunaan pustaka tus-js-client resmi:
import * as tus from 'tus-js-client';
const upload = new tus.Upload(file, {
endpoint: 'https://<ip-vapor>:7770/api/v1/virtualmachines/isos/upload',
headers: {
'Authorization': 'Bearer ' + token
},
chunkSize: 10 * 1024 * 1024, // Potongan 10MB
metadata: {
filename: file.name,
filetype: file.type
},
onError: (error) => console.error('Unggahan gagal:', error),
onProgress: (bytesUploaded, bytesTotal) => {
const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);
console.log(`${percentage}% terunggah`);
},
onSuccess: () => {
console.log('Unggahan selesai');
// Panggil endpoint penyelesaian
fetch(`/api/v1/virtualmachines/isos/upload/${upload.url.split('/').pop()}/complete`, {
method: 'POST',
headers: { 'Authorization': 'Bearer ' + token }
});
}
});
upload.start();Untuk detail selengkapnya tentang protokol TUS, kunjungi tus.io.
Lihat Referensi API Lengkap
Dokumentasi API lengkap dan interaktif dihasilkan secara dinamis dan dapat dilihat di sini: