Skip to content

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).

  1. Pertama, hasilkan Token API melalui UI (menu API Token) atau lakukan otentikasi melalui endpoint /api/v1/auth/login menggunakan nama pengguna dan kata sandi Anda.
  2. Sertakan token tersebut di header Authorization dari semua permintaan (request) berikutnya:
http
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:

javascript
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:

Lihat Referensi REST API Vapor