Skip to content

REST APIリファレンス

VaporはAPIファーストの哲学で構築されています。Webインターフェースで利用可能なすべてのアクションは、包括的で完全にドキュメント化されたREST APIによって強化されています。

認証

Vapor APIは、JSON Web Tokens (JWT) を介したBearer Token認証を使用します。

  1. まず、UI(API Token メニュー)からAPIトークンを生成するか、ユーザー名とパスワードを使用して /api/v1/auth/login エンドポイント経由で認証します。
  2. その後のすべてのリクエストの Authorization ヘッダーにトークンを含めます:
http
Authorization: Bearer <あなたの_jwt_トークン>

OpenAPI仕様

Vaporは、完全なOpenAPI 3.1.0仕様を公開しています。ソースコードから生の openapi.yaml ファイルにアクセスするか、(デプロイメントでSwagger UIが有効になっている場合は) /api/v1 エンドポイントにクエリを実行できます。

APIは、以下のプラットフォームのすべての機能をカバーしています:

  • ホストシステム管理 (/api/v1/system/*)
  • ネットワーク (/api/v1/network/*)
  • ストレージ (/api/v1/storage/*)
  • 仮想化 (/api/v1/virtualization/*)
  • Kubernetes (/api/v1/kubernetes/*)

大容量ファイルのアップロード (TUSプロトコル)

仮想マシンのISOやDocker/コンテナイメージなど、巨大なファイルのアップロードを必要とするエンドポイントの場合、Vaporは TUSプロトコル v1.0.0 を実装しています。

TUSは、HTTPを介した再開可能なファイルアップロードのためのオープンプロトコルです。これにより、(4GBのUbuntu ISOのような)数ギガバイトのアップロードが、ネットワークの中断に耐え、最初からやり直す必要がなくなります。

サポートされているTUSエンドポイント

  • /api/v1/virtualmachines/isos/upload/*
  • /api/v1/containers/images/upload/*
  • /api/v1/docker/images/upload/*

統合例 (JavaScript)

カスタムフロントエンド統合を構築している場合、公式の tus-js-client ライブラリを使用することを強くお勧めします:

javascript
import * as tus from 'tus-js-client';

const upload = new tus.Upload(file, {
  endpoint: 'https://<vaporのip>:7770/api/v1/virtualmachines/isos/upload',
  headers: {
    'Authorization': 'Bearer ' + token
  },
  chunkSize: 10 * 1024 * 1024, // 10MBのチャンク
  metadata: {
    filename: file.name,
    filetype: file.type
  },
  onError: (error) => console.error('アップロード失敗:', error),
  onProgress: (bytesUploaded, bytesTotal) => {
    const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);
    console.log(`${percentage}% アップロード済み`);
  },
  onSuccess: () => {
    console.log('アップロード完了');
    // 完了エンドポイントを呼び出す
    fetch(`/api/v1/virtualmachines/isos/upload/${upload.url.split('/').pop()}/complete`, {
      method: 'POST',
      headers: { 'Authorization': 'Bearer ' + token }
    });
  }
});

upload.start();

TUSプロトコルの詳細については、tus.io をご覧ください。

完全なAPIリファレンスを表示

完全でインタラクティブなAPIドキュメントは動的に生成されており、こちらで表示できます:

👉 Vapor REST APIリファレンスを表示