Skip to content

Referensi REST API

REST API Cockpit memungkinkan administrator dan sistem eksternal untuk mengotomatiskan pendaftaran host, mengelola siklus hidup mesin virtual, dan mengambil telemetri sistem melalui HTTP.


Autentikasi & Manajemen Sesi

REST API menggunakan autentikasi JSON Web Token (JWT) untuk memvalidasi setiap permintaan.

Semua permintaan API harus menyertakan token JWT dalam header otorisasi HTTP:

http
Authorization: Bearer <YOUR_JWT_TOKEN>
Content-Type: application/json

1. Autentikasi (Mengambil Token Sesi)

  • Endpoint: POST /api/v1/auth/login
  • Payload Permintaan:
    json
    {
      "username": "admin",
      "password": "yourpassword"
    }
  • Payload Respons:
    json
    {
      "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "refresh_token": "a1b2c3d4-...",
      "expires_in": 3600
    }

2. Memperbarui Token Sesi yang Kedaluwarsa

  • Endpoint: POST /api/v1/auth/refresh
  • Payload Permintaan:
    json
    {
      "refresh_token": "a1b2c3d4-..."
    }

Administrasi Node Host

Mencantumkan Host yang Terdaftar

  • Endpoint: GET /api/v1/hosts
  • Payload Respons:
    json
    {
      "hosts": [
        {
          "id": "019e0014-abcd-7057-b326-000000000001",
          "hostname": "vapor-node-01.corp.awan.io",
          "status": "connected",
          "sync_cursor": 1716999901
        }
      ]
    }

Operasi Mesin Virtual

Mencantumkan Semua Mesin Virtual

  • Endpoint: GET /api/v1/vms

Memicu Tindakan Daya VM (VM Power Action)

  • Endpoint: POST /api/v1/vms/:id/action
  • Contoh Payload Permintaan:
    • Menjalankan VM: {"action": "start"}
    • Shutdown Secara Halus: {"action": "shutdown"}
    • Mematikan Paksa: {"action": "stop", "force": true}

Mengeksekusi Migrasi Mesin Virtual

  • Endpoint: POST /api/v1/vms/:id/migrate
  • Payload Permintaan:
    json
    {
      "destination_host_id": "019e0014-ffff-7057-b326-000000000002",
      "live": true,
      "persistent": true,
      "undefine_source": true,
      "copy_storage": "none"
    }
  • Payload Respons:
    json
    {
      "migration_id": "abc123def456",
      "status": "initiated"
    }