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