REST APIリファレンス
VaporはAPIファーストの哲学で構築されています。Webインターフェースで利用可能なすべてのアクションは、包括的で完全にドキュメント化されたREST APIによって強化されています。
認証
Vapor APIは、JSON Web Tokens (JWT) を介したBearer Token認証を使用します。
- まず、UI(API Token メニュー)からAPIトークンを生成するか、ユーザー名とパスワードを使用して
/api/v1/auth/loginエンドポイント経由で認証します。 - その後のすべてのリクエストの
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ドキュメントは動的に生成されており、こちらで表示できます: