概要
Performance Hub API へようこそ。 この API は、クラブのデータと、クラブおよびその外部システムと連携する主要なシステムを管理します。一般公開向けの API ではありません。 この API が対応する各種 Performance Hub システムの使い方について詳しくは、[Performance Hub ドキュメント](https://docs.performancehub.co)の該当するシステムのページを参照してください。
ベース URL
https://portal.hub.gymsystems.co
認証
認証の詳細は、連携が承認された時点でお知らせします。
デバイスから報告される「エージェントのターン完了」イベント(Web プッシュのトリガー)
Web UI から開始されたエージェントの実行が終了し、その実行時間がデバイスの通知しきい値を超えた場合に、ペアリング済みの AIエージェントデバイスのサイドカーから呼び出されます(ブラウザーから呼び出されることはありません)。デバイスごとの有効期間の短い HS256 JWT(aud 'events')で認証されます。デバイス + セッション + 開始時刻ごとに重複が除外され、デバイスごとにレート制限されたうえで、実行を開始したユーザーの HTML5 プッシュサブスクリプションに会話へのディープリンク付きで配信されます。
リクエスト本文
エンドポイント
POST /ai/events/agent-turn-complete
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-turn-complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントから送信するプッシュ通知(ph-notify スキル)
デバイス上のエージェント(ph-notify スキル)に代わって、ペアリング済みの AIエージェントデバイスのサイドカーから呼び出され、ユーザーのブラウザーとモバイルデバイスに任意の通知をプッシュします。デバイスごとの有効期間の短い HS256 JWT(aud 'events')で認証されます。対象ユーザーはデバイスへのアクセス権(エージェントごとのアクセスポリシー)を持っている必要があります。省略した場合、通知はデバイスのオーナーに送信されます。ターン完了イベントとは別に、デバイスごとにレート制限されます。
リクエスト本文
エンドポイント
POST /ai/events/agent-notify
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/ai/events/agent-notify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
通知画像をアップロード(ph-notify スキル)
ペアリング済みデバイス(aud 'events' JWT)から未加工の画像本文を受け取り、推測できない UUID キーで公開の notify-media バケットに保存します。オブジェクトは 7 日後に自動削除されます(S3 ライフサイクル)。/ai/events/agent-notify の `imageUrl` として使用する公開 https URL を返します。上限は 5 MB で、png/jpeg/gif/webp のみ対応しています。
リクエスト本文
エンドポイント
POST /ai/media/notify-image
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/ai/media/notify-image \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
Connected Apps(外部 SaaS ツール)用のデバイス MCP リレー
ペアリング済みの AI エージェントデバイス用の Streamable HTTP MCP エンドポイントです(デバイスのサイドカーの :8790 リスナー上の「connected_apps」MCP サーバー)。有効期間の短いデバイスごとの HS256 JWT(aud 'mcp'。/mcp と同じ認証情報)で認証され、エージェントの Connected Apps 有効フラグで制御されます(接続は施設単位ではなく、エージェントデバイス単位です)。リクエストは、サーバー側でセッションヘッダーが付与されたうえで、エージェント自身の上流ツールプラットフォームのセッション MCP サーバーにストリーミングされます。上流の認証情報がデバイスに渡ることはありません。ツール名とベンダーのブランド表示は、転送中に双方向でホワイトラベル化されます。上流から 401/410(セッションの期限切れ)が返された場合は、セッションを 1 回再作成して再試行します。
エンドポイント
POST /mcp/apps
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/mcp/apps \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
API 監査ログを検索(IAM & Admin モジュールのアクセス権)
高度なフィルター機能を使用して API アクセスログを検索、絞り込みます。ユーザーが閲覧できるのは、アクセス権のある組織のログのみです。
パラメーター
organisationId `string` (任意) ACL 検証用の組織 ID(必須)リクエスト本文
エンドポイント
POST /api/admin/audit-logs/search
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/admin/audit-logs/search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
Redis からキャッシュ済みの監査ログ統計を取得(IAM & Admin モジュールのアクセス権)
ダッシュボードをすぐに読み込めるよう、Redis キャッシュから集計済みの統計を取得します
パラメーター
timeWindow `string` (任意) 統計の期間(既定値は 12h)エンドポイント
GET /api/admin/audit-logs/statistics-cached
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics-cached \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監査ログの統計を取得(IAM & Admin モジュールのアクセス権)
ダッシュボード用の集計済み統計を取得します。対象はユーザーの組織に限定されます。
パラメーター
startTime `number` (任意) 開始時刻(Unix タイムスタンプ)。既定値は 24 時間前です endTime `number` (任意) 終了時刻(Unix タイムスタンプ)。既定値は現在時刻ですエンドポイント
GET /api/admin/audit-logs/statistics
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/statistics \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監査ログの時系列データを取得(IAM & Admin モジュールのアクセス権)
リクエストのタイムラインを可視化するための、区間ごとに集計された時系列データを取得します
パラメーター
timeWindow `string` (任意) 時系列データの期間: - 1h: 過去 1 時間(10 分単位) - 12h: 過去 12 時間(10 分単位) - 24h: 過去 24 時間(10 分単位) - 7d: 過去 7 日間(1 時間単位) - 14d: 過去 14 日間(1 時間単位)エンドポイント
GET /api/admin/audit-logs/timeseries
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/timeseries \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーが監査ログにアクセスできる組織を取得(IAM & Admin モジュールのアクセス権)
現在のユーザーが監査ログを閲覧できる組織の一覧を返します
エンドポイント
GET /api/admin/audit-logs/user-organisations
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/admin/audit-logs/user-organisations \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しいクラブを作成する最初の呼び出しです。作成されるのは「テンプレート」のクラブオブジェクトのみです。営業時間、所在地、ソーシャル URL などのデータでクラブを更新するには、2 回目の API リクエストが必要です。
パラメーター
body `string` (必須) システムに追加する新しいクラブの JSON オブジェクト。エンドポイント
POST /api/admin/clubs/addclub
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/admin/clubs/addclub \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
システムに新しいユーザーを追加します
パラメーター
body `string` (必須) 追加または更新するユーザーデータの JSON オブジェクト。エンドポイント
POST /api/users
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/users \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
バックオフィスシステムまたは API にアクセスできるすべてのユーザー(Google Apps アカウント)を一覧表示します
エンドポイント
GET /api/admin/users/listusers
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/admin/users/listusers \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの MCP キーを一覧表示します(値は伏せられます)。ユーザーは自分のキーを一覧表示できます。
パラメーター
userId `string` (必須)エンドポイント
GET /api/users/{userId}/mcp-keys
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの新しい MCP API キーを作成します。ユーザーは自分のキーを作成できます。
パラメーター
userId `string` (必須) body `object` (任意)エンドポイント
POST /api/users/{userId}/mcp-keys
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys \
-H "x-api-key: YOUR_API_KEY"
MCP API キーを失効または削除します。ユーザーは自分のキーを削除できます。
パラメーター
userId `string` (必須) keyId `string` (必須)エンドポイント
DELETE /api/users/{userId}/mcp-keys/{keyId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/mcp-keys/{keyId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーからロールを削除
パラメーター
userId `string` (任意) ロールを削除するユーザーのメールアドレス。 roleId `string` (任意) ユーザーから削除するロールの ID。エンドポイント
DELETE /api/users/{userId}/roles/{roleId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/users/{userId}/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存ユーザーのプロフィール詳細(firstName、lastName、phoneNumber)を更新します
パラメーター
userId `string` (必須) ユーザーのメールアドレス body `object` (必須) 更新するユーザープロフィールデータエンドポイント
PATCH /api/users/{userId}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/users/{userId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーロールを作成または更新
パラメーター
body `object` (任意)エンドポイント
PUT /api/users/{userId}/roles
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/users/{userId}/roles \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の AIエージェントで実行中の Live Services(公開用の選択画面)
アプレットの「Publish to Performance Hub」選択画面用に、デバイスのブリッジが検出した Live Services をトンネル経由で取得します。ph-ai-agent モジュールと、デバイスごとの 'open' アクセス権の両方が必要です(公開そのものと同じ要件)。そのポートのカスタムアプリがすでに存在する場合、各サービスには publishedAppId が付与されます。
パラメーター
club `string` (必須) device `string` (必須)エンドポイント
GET /api/agent-apps/services/{club}/{device}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/services/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の AIエージェントに組み込まれた MDI アイコン名のインデックス(アイコン選択画面)
デバイスのブリッジに組み込まれた MDI アイコンインデックス(GET /__services/icons/mdi/index.json)をトンネル経由でプロキシします。公開と編集の選択画面では、アプレットに同梱されたカタログ(同じ 7.4.47 に固定)を使用します。公開アプリの SVG は portal-server のローカルの @mdi/js パックから解決されます。アクセス要件はサービス選択画面と同じです(ph-ai-agent モジュール + デバイスごとの 'open' アクセス権)。
パラメーター
club `string` (必須) device `string` (必須)エンドポイント
GET /api/agent-apps/mdi-index/{club}/{device}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/mdi-index/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の AIエージェントから MDI アイコンの SVG をまとめて取得(選択画面のプレビュー)
デバイスに組み込まれたアイコンセットから、名前を指定した MDI グリフを 1 回の呼び出しで最大 60 個解決します。保存済みのアプリアイコンと同じ許可リストを使用してサーバー側でサニタイズされます。アイコン選択画面で検索結果の表示に使用されます。不明な名前には null が返されます。
パラメーター
club `string` (必須) device `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/mdi-icons/{club}/{device}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/mdi-icons/{club}/{device} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
リクエスト元がこの施設から公開できる対象範囲
公開と編集の選択画面用に、公開者が付与できる対象範囲を返します。公開者の ph-ai-agent ロールが及ぶ施設(複数施設の範囲)と、この施設のブランドまたは組織全体を対象にするために必要な組織レベルの権限を公開者が持っているかどうかが含まれます。同じルールは公開時と更新時にサーバー側で再度適用されます(validatePublishAudience)。このエンドポイントは UI の表示内容を決めるためだけのものです。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-apps/audience-options/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/audience-options/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定ユーザー向けアプリの対象者のオートコンプリート候補
リクエスト元がすでに閲覧できるユーザーのみを検索します。つまり、リクエスト元自身の ph-ai-agent アクセス権の施設、リージョン、組織の少なくとも 1 つとロールが重なるユーザーです。クエリは 2 文字以上が必要で、結果は最大 10 件に制限されるため、このエンドポイントをスクレイピングに利用することはできません。対象者を保存する際には、同じ到達範囲がサーバー側で再度適用されます。
パラメーター
club `string` (必須) q `string` (必須)エンドポイント
GET /api/agent-apps/user-search/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/user-search/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェントの Live Service を Performance Hub のカスタムアプリとして公開
施設の AIエージェントがホストする Web アプリ(ブリッジが検出した Live Service)を、選択した対象者向けの「Custom Apps」サイドメニュー項目として登録します。この施設での ph-ai-agent モジュールと、デバイスごとの 'open' アクセス権の両方が必要です。対象者は公開者自身のロールの範囲までに制限されます(自分が到達できる範囲を超えて公開することはできません)。サービスの識別情報はデバイスの /__services 一覧からリアルタイムで解決され、http/https スキームが保存されることはありません。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/publish/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/publish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
この施設で表示される公開済みカスタムアプリ
対象者にこの施設が含まれる有効な公開アプリを、サイドメニューが表示する形式(appId、name、icon、description)で返します。対象者は呼び出しのたびにリアルタイムで再解決されるため、アクセス権の変更はすぐに反映されます。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-apps/menu/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/menu/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設から管理される公開アプリ(公開者向けの表示)
アプレットの「公開アプリ」管理一覧用に、ホーム施設がこのクラブであるアプリの完全な行を返します。各行には、リクエスト元のユーザー(公開者)に対する canManage が付与されます。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-apps/manage/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
公開済みカスタムアプリ用に、サービス単位の閲覧トークンを発行
ブラウザーがデバイスのリージョンのリレーゲートウェイ上で 1 つの公開アプリを直接開くための、有効期間の短い署名付き URL とトークンを返します。トークンにはサービスポートを示す svc クレームが含まれるため、ゲートウェイはセッションを /__services/proxy/
パラメーター
club `string` (必須) appId `string` (必須)エンドポイント
POST /api/agent-apps/access/{club}/{appId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/access/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
公開済みカスタムアプリのサポート担当(オーナーの連絡先)
このユーザー公開アプリのサポート担当として、公開者のメールアドレスを返します(ない場合はホストしているエージェントのオーナー)。閲覧者のオフライン表示やエラー表示に表示され、サポートリクエストが Performance Hub ではなくアプリのオーナーに届くようにします。公開アプリは Performance Hub の標準サポートの対象外です。最初にアプリの対象者が再確認されるため、アプリが共有されていない閲覧者には何も返されません。一時停止中のアプリでも解決されます(「なぜ一時停止中なのか」という問い合わせにもオーナーが対応するためです)。
パラメーター
club `string` (必須) appId `string` (必須)エンドポイント
GET /api/agent-apps/support-info/{club}/{appId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-apps/support-info/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
公開済みカスタムアプリのオーナーにサポートリクエストをメールで送信
閲覧者のメッセージを、ブランド付きのメールとしてアプリのサポート担当(公開者、いない場合はエージェントのオーナー)に送信します。宛先はオーナー、CC は閲覧者(リクエストの控え)、Reply-To は閲覧者で、オーナーが閲覧者に直接返信できます。公開アプリはユーザーが管理しているため、これによりサポートが Performance Hub の対応キューに入らないようにします。対象者は再確認されます。リクエストは閲覧者ごと、アプリごとに 15 分に 1 件までです(Redis のクールダウン、障害時は許可)。
パラメーター
club `string` (必須) appId `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/support-request/{club}/{appId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/support-request/{club}/{appId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
公開済みカスタムアプリを更新(名前、アイコン、説明、ステータス、対象者)
公開者のみが使用できます。対象者の変更は、公開時と同じ制限ルールで、編集者のロールの範囲に照らして再検証されます。ステータスは有効と一時停止の間で切り替わります(一時停止中のアプリはメニューから消え、トークンの発行も拒否されます)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/update/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
カスタムアプリの公開を停止(論理削除)
公開者のみが使用できます。レジストリの行を論理削除します。アプリはすぐにメニューから消え、閲覧トークンの発行は拒否されます。発行済みのゲートウェイセッションは、トークンの有効期限が切れた時点で終了します。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/unpublish/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/unpublish/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
公開済みカスタムアプリの所有権を譲渡
AIエージェントのオーナー変更と同じ流れです。現在の公開者またはアカウントオーナー(課金モジュール)が、アプリを別のユーザーに引き渡し、そのユーザーが管理するようになります。新しいオーナーは、アプリのホームクラブで施設へのアクセス権を持っている必要があります。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-apps/transfer-owner/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-apps/transfer-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 つのスキルバージョンの完全なスキャンレポート(+ LLM レビュー)
バージョンの検出結果の完全な一覧です。公開者と組織管理者(承認レビュー)のみが閲覧できます。インストールするユーザーには、代わりにスキルの詳細に集計された件数が表示されます。
パラメーター
club `string` (必須) skillId `string` (必須) version `string` (必須)エンドポイント
GET /api/agent-skills/scan-report/{club}/{skillId}/{version}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/scan-report/{club}/{skillId}/{version} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
スキルの下書きバージョンを送信(公開、または承認待ちに追加)
組織のガバナンスに従って、下書きバージョンを次の段階に進めます。組織が LLM レビューを有効にしている場合は、最初に指示内容のレビューが実行されます(ベストエフォート。'fail' の判定では拒否され、'flag' の判定では必ず承認待ちになります)。施設レベルの共有は、ガバナンスで承認が必要とされていない限りすぐに公開されます。組織ライブラリの共有(ブランドまたは組織が対象)は、既定で承認が必要です。公開するとスキルの latestVersion が設定され、'auto' ポリシーのインストールでは次回の同期処理で反映されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/submit/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/submit/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
この施設で表示されるスキルライブラリ(対象者で絞り込み)
公開済みのバージョンが 1 つ以上あり、対象者にこの施設が含まれる(または閲覧者が指定されている)有効なスキルを返します。各スキルには、最新の公開バージョンの概要と組織内での導入状況(インストール数そのものではなく、導入している施設の数)が付与されます。対象者は呼び出しのたびにリアルタイムで再解決されます。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-skills/library/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/library/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
スキルの詳細(バージョン、要件、スキャンの概要、導入状況)
ライブラリの 1 つのスキルの完全な詳細です。変更履歴とスキャンの概要を含むバージョン履歴(バージョンごとのエンドポイント一覧は、更新時のスキャン差分に使用されます)、マニフェストで宣言された要件、公開者の情報、施設数による導入状況が含まれます。対象者は再確認されるため、スキルが共有されていない閲覧者には何も返されません(公開者と組織管理者は常に閲覧できます)。
パラメーター
club `string` (必須) skillId `string` (必須)エンドポイント
GET /api/agent-skills/skill/{club}/{skillId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/skill/{club}/{skillId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設から公開されたスキル(公開者の管理一覧)
ホーム施設がこのクラブであるスキルの完全な行を返します。各行には、リクエスト元のユーザーに対する canManage と最新バージョンの概要が付与されます(下書きと承認待ちも含まれます。公開者の作業用の表示です)。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-skills/manage/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/manage/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ライブラリのスキルを施設の AIエージェントにインストール
ガバナンスによる制限があります。組織の installSources で許可されていること、スキルの対象者にこの施設が含まれる(またはリクエスト元が指定されている)こと、バージョンが公開済みであること、リクエスト元が対象デバイスの whoCanInstall レベル(オーナー、許可されたユーザー、施設管理者、組織管理者。ガバナンスを参照)を満たしていることが必要です。インストールのライフサイクル行(正となるデータ)を書き込み、すぐにベストエフォートでプッシュします。デバイスに到達できるようになると、定期的な同期処理によって確実に配信されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/install/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/install/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 つのインストールについて保留中のスキル更新を承認
インストールの desiredVersion を最新の公開バージョンに移します('notify' と 'pinned' ポリシーでの手動の手順であり、ガバナンスで updatePosture が 'approvalRequired' に設定されている場合の手順でもあります)。現在のバージョンを 1 段階のロールバック先として保持し、ロールバック後の更新の固定(skipVersion)を解除します。必要な whoCanInstall の権限レベルはインストールと同じです。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/update-approve/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/update-approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
インストール済みのスキルを以前のバージョンにロールバック
desiredVersion をインストール行の previousVersion(バージョンを移すたびに保持されます)に設定し、通常の配信処理で再インストールします。ロールバックは 1 段階のみで、バージョンが入れ替わるため、2 回ロールバックすると元の状態に戻ります。また、更新を固定する(skipVersion = ロールバック前のバージョン)ため、auto/notify ポリシーでもロールバックした状態が維持されます。この固定は、さらに新しいバージョンが公開されたとき、update-approve を実行したとき、または set-policy を実行したときに解除されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/rollback/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/rollback/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の AIエージェントからスキルをアンインストール
インストール行をアンインストール待ちとしてマークし、目的の状態をプッシュします。デバイスが削除を確認すると(同期処理での読み戻し)、行が削除されます。必要な whoCanInstall の権限レベルはインストールと同じです。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/uninstall/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/uninstall/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 台のデバイス上のスキルについて、インストールごとの更新ポリシーを設定
auto(組織の updatePosture で承認が必要とされていない限り、同期処理で新しい公開バージョンが自動的に適用されます)、notify(新しいバージョンごとにオーナーに 1 回通知され、オーナーが手動で適用します)、pinned(明示的な update-approve なしにバージョンが変わることはありません)のいずれかです。ポリシーを変更すると、ロールバック後の更新の固定(skipVersion)は解除されます。必要な whoCanInstall の権限レベルはインストールと同じです。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/set-policy/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/set-policy/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の AIエージェントへのスキルのインストール(Skills タブ)
1 台のデバイスのインストールのライフサイクル行を返します。各行には、スキルの掲載情報のフィールドと、新しい公開バージョンがあるかどうかが付与されます。デバイスごとの 'open' アクセス権が必要です(Skills タブはエージェントのドロワー内にあります)。
パラメーター
club `string` (必須) device `string` (必須)エンドポイント
GET /api/agent-skills/installs/{club}/{device}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/installs/{club}/{device} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設の組織で承認待ちのスキルバージョン
組織管理者の承認キューです。組織のスキル全体で承認待ちのすべてのバージョンを、スキルの掲載情報とスキャンおよび LLM の概要とともに返します。組織管理者のみが使用できます。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-skills/approvals/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/approvals/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
承認待ちのスキルバージョンを承認(公開されます)
組織管理者のみが使用できます。バージョンが公開され、スキルの latestVersion が更新されて、公開者に通知されます。'auto' ポリシーのインストールでは、次回の同期処理でこのバージョンが反映されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/approve/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/approve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
承認待ちのスキルバージョンを拒否
組織管理者のみが使用できます。バージョンはレビュー担当者の理由とともに拒否され、公開者に通知されます。公開者は検出事項を修正して新しいバージョンを送信できます(バージョンは変更不可)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/reject/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/reject/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
この施設の組織に適用されるエージェントスキルのガバナンス
保存されている組織ごとのポリシーを、プラットフォームの既定値に上書きして返します(保存された行がない組織には既定値がそのまま返されます)。組織管理者のみが使用できます。
パラメーター
club `string` (必須)エンドポイント
GET /api/agent-skills/governance/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設の組織のエージェントスキルのガバナンスを更新
部分更新です。指定したフィールドのみが変更され、それ以外は保存済みの値または既定値のままです。組織管理者のみが使用できます。デバイスごとの上書き設定は、既存のデバイス設定ルートを通じて登録行に保存されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/agent-skills/governance/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agent-skills/governance/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の環境データを取得
指定したクラブについて、日の出と日の入りを含む現在の天気(Open-Meteo から取得)と施設の室内温度(緊急通報センサーから取得)を返します。Redis に 30 分間キャッシュされます。
パラメーター
clubId `string` (必須) クラブまたは施設の内部 IDエンドポイント
GET /api/clubs/{clubId}/environment
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/environment \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
汎用の IoT デバイスをクラブに追加して関連付けます。
パラメーター
club `string` (必須) デバイスを追加するクラブの内部 ID。 body `string` (必須) 関連付ける新しいスクリーンの JSON オブジェクト。エンドポイント
POST /api/devices/addGenericDevice/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/addGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ディスプレイスクリーンを削除して初期化
スクリーンの現在の施設との関連付けを解除し、確実に実行される初期化を予約します。電源が切れているスクリーンは、次回電源が入って再接続された後に初期化を適用し、HDMI のペアリング画面に戻ります。過去の課金記録は保持されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/display-screens/reset/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/display-screens/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ドアコントローラーを施設に関連付けます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/door-controllers/associate/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のドアコントローラーの設定を更新します。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/door-controllers/update/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設からドアコントローラーの運用を終了します。
パラメーター
club `string` (必須)エンドポイント
POST /api/devices/door-controllers/decommission/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/door-controllers/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアコントローラーのリレーの設定を返します。
パラメーター
uuid `string` (必須)エンドポイント
GET /api/devices/door-controllers/config/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/door-controllers/config/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスのメタデータを返します
パラメーター
uuid `string` (必須) デバイスの一意の IDエンドポイント
GET /api/devices/metadata/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスのメタデータを返します。レスポンスは、最上位のメタデータの行(従来の形式)に、`detectedType`(camera | ai-edge-processor | door-controller | ph-ai-agent | null)と `online`(5 分以内に更新された場合は true)を加えたものです。
パラメーター
deviceSerialNumber `string` (必須) デバイスのシリアル番号エンドポイント
GET /api/devices/metadata/serial/{serialNo}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/metadata/serial/{serialNo} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブのスマートクラブのデータを返します。
パラメーター
club_id `string` (必須) デバイスを追加するクラブの内部 ID。エンドポイント
GET /api/clubs/{club_id}/smart-club-data
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club-data \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
個々のクラブに関連付けられたすべてのデバイスを返します。
パラメーター
club `string` (必須) デバイスを一覧表示するクラブの内部 ID。エンドポイント
GET /api/devices/list/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/list/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
balena デバイスのすべてのアプリケーションのリリース(バージョン)を返します。
エンドポイント
GET /api/devices/listReleases
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/listReleases \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスを新しい施設(クラブ)に移動し、関連するシステムを更新します。
パラメーター
club `string` (必須) 移動元の施設 ID(デバイスが現在属しているクラブ) body `object` (必須) 移動のパラメーターエンドポイント
POST /api/devices/move/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/move/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブ内で最適なデバイスを選択し、トンネルを作成する MQTT コマンドを送信して、施設のルーターへの接続を試みます。
パラメーター
facilityID `string` (必須) ルーターへの接続を試みる施設の内部 ID。エンドポイント
GET /api/devices/openRouterWebpage/{facilityID}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/openRouterWebpage/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラウドエージェントのカタログ(ゾーン、サイズ、現在の販売価格)
パラメーター
club `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/cloud/catalog/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/catalog/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラウドエージェントの見積もり(ソフトウェア + ホスティング)
エンドポイント
POST /api/devices/ph-ai-agent/cloud/quote/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/quote/{club} \
-H "x-api-key: YOUR_API_KEY"
クラウドエージェントを起動(プロビジョニングをキューに追加 + 自動で関連付け)
エンドポイント
POST /api/devices/ph-ai-agent/cloud/launch/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/launch/{club} \
-H "x-api-key: YOUR_API_KEY"
クラウドエージェントのジョブのステータス
エンドポイント
GET /api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/jobs/{club}/{jobId} \
-H "x-api-key: YOUR_API_KEY"
クラウドエージェントを完全に削除(VM + balena + 登録)
エンドポイント
POST /api/devices/ph-ai-agent/cloud/delete/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete/{club} \
-H "x-api-key: YOUR_API_KEY"
保留中のクラウドエージェントの削除を処理(バックアップを再試行、バックアップなしで削除、またはキャンセル)
エンドポイント
POST /api/devices/ph-ai-agent/cloud/delete-decision/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/cloud/delete-decision/{club} \
-H "x-api-key: YOUR_API_KEY"
エージェントの Connected Apps を一覧表示(スイートと、接続済みアカウントのあるアプリ)
エージェントの Connected Apps の状態を返します。有効フラグ、スイートごとの集計(Google Workspace、Microsoft 365)、厳選されたアプリのカタログと各アプリの接続済みアカウント(複数アカウント対応。エージェントはアプリごとに複数のアカウントを持つことができ、それぞれに任意の別名を付けられます)が含まれ、エージェントの上流のセッションから解決されます。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。エンドポイント
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
エージェント向けの Connected Apps マーケットプレイスの完全なカタログ
接続できるすべてのアプリ(マネージド認証のツールキットの完全なカタログ。サーバー側で約 12 時間キャッシュされます)を、おすすめとスイートの区分、アプリごとのエージェントの接続済みアカウントとともに返します。スイートごとの集計と、エージェントの保留中の接続リクエストも含まれます。クライアント側で検索できるアプリのマーケットプレイス用の 1 つのペイロードです。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。エンドポイント
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/catalog \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
エージェントの保留中の接続リクエストを却下
ツールキットに対するエージェントの保留中の接続リクエストを却下済みとしてマークします(マーケットプレイスの「Requested by your agent」セクションから消えます)。冪等であり、保留中でないリクエストを却下しても何も起こりません。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/requests/dismiss \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントの Connected Apps を有効または無効にする
エージェントの Connected Apps のスイッチを保存し、Balena のデバイス変数 PH_APPS_MCP_ENABLED をそのデバイスにプッシュします(ベストエフォート。MCP リレーを確実に制御するのは Performance Hub 側のフラグです)。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/enable \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 つのアプリとエージェントの接続を開始(Connect Link の OAuth フロー)
1 つのツールキットについてホスト型の Connect Link フローを開始し、ユーザーを誘導する URL を返します。任意の別名で新しいアカウントにラベルを付けられます(複数アカウント対応。すでに接続済みのアプリを接続すると別のアカウントが追加され、アプリごとに最大 10 個まで追加できます)。スイートの接続と同じ連続処理のコールバック(ツールキットが 1 つのスイート)を通るため、完了すると ph-ai-agent アプレットのページに戻ります。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 つのアプリの接続準備用ペイロード(方式、認証情報のフィールド、セットアップガイド)
接続ダイアログが接続を開始する前に必要とするすべての情報です。アプリの接続方式(oauth = ホスト型の同意フロー、credentials = 製品内のフォーム)、credentials 方式で入力を求める認証情報のフィールド、製品内のセットアップガイド(優先度の高いアプリには作成済みのガイドがあり、それ以外はアプリのフィールドのメタデータから生成されます。外部ドキュメントへのリンクになることはありません)が含まれます。独自の OAuth アプリを使用するアプリでは、顧客の OAuth アプリがこのエージェント用にすでに登録されているかどうか(byoConfigured)と、プロバイダーに登録するリダイレクト URL も含まれます。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。 toolkit `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-info/{toolkit} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーが指定した認証情報でアプリを接続(API キーなど、OAuth なし)
credentials 方式のアプリの接続済みアカウントを、製品内のフォームから直接作成します。ホスト型の同意フローは使用しません。認証情報のフィールドはアプリの connect-info ペイロードから取得され、必須のフィールドはすべて指定する必要があります。対応している場合、認証情報はプロバイダーで検証されます(ベストエフォート。アプリによっては、エージェントが最初にツールを呼び出したときに初めて誤ったキーが拒否されます)。任意の別名で新しいアカウントにラベルを付けられます(複数アカウント対応。すでに接続済みのアプリを接続すると別のアカウントが追加されます)。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-credentials \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
独自の OAuth アプリを使用するアプリについて、顧客の OAuth アプリを登録し、接続フローを開始
独自の OAuth アプリを使用するアプリ(Xero、Shopify など)向けです。顧客がプロバイダーで作成した OAuth アプリ(アプリのセットアップガイドで手順を案内します)のクライアント ID とクライアントシークレットを受け取り、このエージェント用に登録して(シークレットは上流の連携プラットフォームにのみ保存され、Performance Hub には保存されません)、すぐにそのアプリに対するホスト型のサインインフローを開始します。接続エンドポイントと同じ仕様で、ユーザーを誘導する同意画面の URL を返します。再送信すると、エージェントに登録されたアプリが置き換えられます(シークレットのローテーション後など)。既存の接続済みアカウントは引き続き動作します。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-oauth-app \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントのスイートのワンクリック接続を開始(連続した Connect Link フロー)
スイート全体(google-workspace など)の連続した接続フローを開始します。返される URL を開くと最初のツールキットの同意画面が表示され、完了するたびに 302 で次のツールキットのフローに進み、最後に ph-ai-agent アプレットのページに戻ります。接続済みのアカウントがすでにあるメンバーはスキップされるため、途中で失敗した後に再試行すると、重複するアカウントを作成せずに不足しているアプリから再開されます。すべてのメンバーが接続済みの場合は、すべての連続処理がもう一度実行されます。これが明示的な「別のアカウントを追加」のフローです。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/connect-suite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントから 1 つの接続済みアカウントの接続を解除
1 つの接続済みアカウントを削除します(複数アカウント対応。同じアプリのほかのアカウントは接続されたままです)。削除の前に、そのアカウントがこのエージェントに属していることが検証されます。アプリの最後のアカウントだった場合は、ツールキットがエージェントの接続済みの一覧から削除されます(エージェントのツール一覧が更新されるよう、セッションは必要に応じて再作成されます)。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/disconnect \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントの接続済みアカウントの 1 つの名前(別名)を変更
1 つの接続済みアカウントの表示用の別名を設定します。別名は通常、OAuth の後に(サインインした ID から)自動的に設定されます。このエンドポイントは、アプリの詳細ダイアログでの手動の名前変更に使用されます。空の別名を指定するとラベルが消去されます。上流での更新の前に、そのアカウントがこのエージェントに属していることが検証されます。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/rename-account \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
エージェントの Performance Hub 組み込みサービスのオンとオフを切り替え
常時利用できる組み込みサービス(Smart Search、Weather など)の 1 つを、このエージェントでオンまたはオフにします。組み込みサービスには接続も OAuth も不要で、すべてのエージェントに含まれ、既定でオンになっています。この切り替えはエージェントごとの上書き設定を保存し、ツールセットが更新されるよう、エージェントの上流のセッションをすぐに再作成します。なお、別の「External apps」スイッチ(/enable ルート)はアプリの MCP サーバー全体を確実にオフにするスイッチです。これがオフの場合は、個別の切り替えにかかわらず組み込みサービスも利用できなくなります。
パラメーター
facilityId `string` (必須) deviceId `string` (必須) エージェントデバイスの balena UUID。 slug `string` (必須) 組み込みサービスのスラッグ。リクエスト本文
エンドポイント
PATCH /api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/connected-apps/{facilityId}/{deviceId}/built-in/{slug} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントデバイスを施設に関連付け
メタデータを優先した関連付けです。リアルタイムのデバイスのメタデータからシリアル番号でデバイスを検索し、オンラインであることを確認したうえで、必要に応じて登録行を作成し、Chisel のリレーのリージョン、トンネルのポート、シークレットを割り当て、そのスロットをリレーに登録して、施設とトンネルの設定を Balena 経由でデバイスにプッシュします。新しいデバイスには、既定の MCP サービスアカウント(有効、この施設が対象、すべての機能)も設定されます。再ペアリングでは既存の MCP の権限が維持されます。任意の詳細設定で、ペアリング時に設定される既定値(バックアップの設定、MCP のオンとオフ、アクセス制限)を上書きできます。`restoreFrom` を指定すると、施設の別のデバイスのクラウドバックアップから新しいデバイスにデータが設定されます(復元元は稼働中でも運用終了済みでもかまいません。リポジトリをまたぐ復元がキューに追加され、進行状況のポーリング用に `restoreRequest` として返されます)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/associate/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/associate/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の AIエージェントデバイスを一覧表示
施設の AIエージェントデバイスを、リアルタイムのオンライン状態とトンネルの状態とともに返します(アプレットのデバイス切り替えで使用されます)。
パラメーター
club `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/list/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/list/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェントの更新とオンライン状態
デバイスがオンラインかどうか、更新が利用可能または保留中かどうか、提供されているリリース(フリートが固定されている場合はその固定バージョン、フリートが最新版を追跡している場合は成功した最も新しいバージョン)を返します。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/update-status/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェントのリアルタイムのデバイスの状態と指標
アプレットの指標の表示欄と管理用ドロワー向けに、選別されたスナップショットを返します。識別情報と登録のフィールド、稼働状況と接続、ソフトウェアのバージョン、最新のハートビートの指標(CPU、温度、メモリ、マウントごとのストレージ、稼働時間、ネットワーク)が含まれます。デバイスのメタデータのビーコンと Balena の更新ステータスを 1 つにまとめたもので、一時的な障害の際にはどちらかが欠けていることがあります。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/device-status/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/device-status/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスの健全性レポートの AI による説明
現在検出されている健全性の問題について、運用担当者向けの短い説明を返します。事実と対応手順は常に device-status に含まれます。この追加の説明はベストエフォートであり、null の場合もあります。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
POST /api/devices/ph-ai-agent/health/{club}/{uuid}/explain
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/health/{club}/{uuid}/explain \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェント用に、リレーに直接接続するためのアクセストークンを発行
ブラウザーがデバイスのリージョンのリレーゲートウェイに直接接続するための(Performance Hub やシドニーを経由する経路を省略します)、有効期間の短い署名付き URL と HS256 トークンを返します。権限の判断は引き続き Performance Hub が行い(ここで Google SSO とモジュールおよび施設のチェックを行います)、リレーゲートウェイがトークンを検証します。/ai-agent-ui プロキシは代替の経路として引き続き使用できます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/access/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントのセッションにチャットメッセージを送信(通知からのインライン返信)
Web プッシュ通知のインライン返信の操作で使用される、サーバー側の中継です。Service Worker がここに POST する(同一オリジン、SSO の Cookie)ため、Performance Hub のタブを開いていなくても返信できます。Performance Hub はデバイスのリレー先を解決し(/ai-agent-ui プロキシと同じ検索)、ターンの帰属先として x-ph-user を付与して(その結果の完了通知はこのユーザーに送られます)、セッション ID とともにデバイスの /api/chat/start に転送します。
リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/reply
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reply \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントのアクセス制御の設定を読み取り(オーナー)
デバイスのアクセス設定(モード、許可リスト、表示範囲、Performance Hub サポートの切り替え)と、保留中のアクセスリクエストを返します。デバイスのオーナーが読み取れます。ほかのユーザーには 403 が返されます。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/access-settings/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェントのアクセス制御の設定を更新(オーナー)
モード(org/restricted)、制限時の許可リスト、一覧の表示範囲(all/admins)、「Performance Hub サポートからのアクセスを許可」の切り替えを書き込みます。デバイスのオーナーが実行できます。オーナー自体は reallocate-owner でのみ変更できます。承認済みのアクセスリクエストは維持されます。承認が有効なリクエスト元は保存される許可リストに再度追加されます。送信する一覧からリクエスト元を削除すると承認が取り消されます(リクエストは拒否に変わり、リクエスト元は再度リクエストできます)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/access-settings/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-settings/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントのオーナーを変更
デバイスの所有権を別の Performance Hub ユーザーに割り当て直します。アカウントオーナー(SaaS 課金モジュールのアクセス権)のみが実行できます。制限付きのエージェントのオーナーが退職した場合などの救済手段です。以前のオーナーと新しいオーナーの両方に通知されます(アプリ内 + プッシュ + メール)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/reallocate-owner/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reallocate-owner/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントの許可リストとオーナーの選択欄で使用する施設のユーザー一覧
ロールによってこの施設にアクセスできるすべてのユーザーのメールアドレスと名前(+ isOrgAdmin フラグ)を返します。一般のユーザーがユーザーを列挙できないよう、デバイスのオーナーとオーナーを変更できるユーザー(アカウントオーナー)のみが使用できます。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/org-users/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/org-users/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
制限付きの AIエージェントへのアクセスをリクエスト
制限付きのデバイスに対するリクエスト元のアクセスリクエストを作成します(または再度開きます)。ユーザーとデバイスの組み合わせごとに冪等です。オーナーには、エージェントのモジュールへのディープリンク付きで、アプリ内、Web プッシュ、メールで通知されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/access-request/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントへのアクセスリクエストを承認または拒否(オーナー)
デバイスのオーナーが保留中のリクエストを処理します。承認すると、リクエスト元がデバイスの許可リストに追加されます。いずれの結果もリクエスト元に通知されます(アプリ内 + プッシュ + メール)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/access-request-resolve/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/access-request-resolve/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントの更新を許可して適用
デバイスを提供されているリリース(フリートの固定バージョン、またはフリートが最新版を追跡している場合は成功した最も新しいバージョン)に固定し、更新のロックを解除して balena supervisor が更新を適用できるようにします。デバイスのデータボリューム上の状態は更新後も保持されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/update/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントの更新を後で実行するようスケジュール
デバイスの登録情報にインストールの予定時刻を保存します。定期的なバックエンドのジョブ(5 分ごと)が、予定時刻を過ぎると更新を適用します(固定 + ロック解除)。スケジュールを設定すると、デバイスの既存のスケジュールは置き換えられます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/update-schedule/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
スケジュールされた AIエージェントの更新をキャンセル
デバイスの保留中のスケジュールされたインストールを消去します(何もスケジュールされていない場合は何も起こりません)。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
DELETE /api/devices/ph-ai-agent/update-schedule/{club}/{uuid}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/update-schedule/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AIエージェントデバイスでリモートコマンドを実行
許可リストにある MQTT コマンド(再起動、コンテナの再起動、更新のロックとロック解除、Wi-Fi の管理)を、AIエージェント上で実行されている device-controller に送信します。デバイスは施設に関連付けられている必要があります。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/command/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/command/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AIエージェントの施設向けの設定を更新
関連付けられた AI エージェントについて、オペレーターが編集できる設定(デバイス名、デバイスの設置場所、定期再起動の間隔)を保存します。再起動スケジュールは Balena 環境変数 REBOOT_DEVICE(現地時間午前 2 時)としてデバイスにも送信され、ディスプレイスクリーンと同じ動作になります。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/config/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
この施設の AI エージェントの移動先として選択できる施設
サインイン中のユーザーがアクセスできる同じ組織内の施設(現在の施設を除く)を、「Move to another facility」の選択肢用に返します。移動自体は POST /api/devices/move/:club で実行され、同じ組織内であることと移動先へのアクセス権のルールがサーバー側で適用されます。
パラメーター
club `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/move-targets/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/move-targets/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の AI エージェントに対してリクエスト元が付与できる MCP アクセスの範囲
サインイン中のユーザーが、この施設の組織で AI エージェントの MCP サービスアカウントに付与できる内容を返します。対象は、ユーザー自身のアクセス範囲内の施設とリージョン、組織全体のスコープを付与できるかどうか、ユーザーが保有するモジュール、および MCP ツールの完全なカタログ(ツール単位の詳細なマスク用)です。UI はこれを使用して、ユーザー自身の権限範囲内の選択肢だけを表示します。mcp-access の POST エンドポイントでも、同じ制限がサーバー側で適用されます。
パラメーター
club `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/mcp-grantable/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-grantable/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントの MCP サービスアカウント設定を取得します
デバイスの MCP アクセス設定(スコープ、モジュール、ツールマスク、監査フィールド)を返します。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/mcp-access/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントの MCP サービスアカウントを設定します
付与時の制限を適用したうえで、デバイスの MCP アクセス設定を保存します。リクエスト元が付与できるのは、自身のアクセス範囲内の施設とリージョン、組織全体のロールを持つ場合のみ組織スコープ、およびこの施設の組織で自身が保有するモジュールだけです。有効フラグは Balena 環境変数 PH_MCP_ENABLED としてデバイスにも送信されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/mcp-access/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/mcp-access/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントの VPN 設定を取得します(機密情報は伏せ字)
デバイスの VPN サポートフラグと接続一覧を返します。プロファイル本体と認証情報の値は返されず、インポート時のメタデータ(リモート、ルート、DNS)と認証情報の有無を示すフラグのみが返されます。接続ごとのリアルタイムの状態は device-status エンドポイント(beacon metadata.vpn)から取得します。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントの VPN サポートを切り替えます
デバイスの VPN 機能をオンまたはオフにします。Balena デバイス変数 PH_VPN_ENABLED を送信し、デバイスに通知します(MQTT vpnConfigChanged)。オフにしても接続は保持されます(トンネルは停止し、再度有効にするために設定は残ります)。
パラメーター
club `string` (必須) uuid `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/vpn-config/{club}/{uuid}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントに OpenVPN プロファイルをインポートします
Base64 エンコードされたアップロードを受け付けます。対象は、単一の .ovpn/.conf、分割ファイルのバンドル(設定ファイルと証明書/鍵)、およびアーカイブ(.zip、.tar/.tgz の Pritunl エクスポート、.tblk の Tunnelblick、.visc/.visz の Viscosity)です。プロファイルは標準のインライン形式に正規化され、プロファイルごとに 1 つの接続になります(切断状態でインポートされるため、認証情報を入力してから接続します)。使用できないアップロードには、対処方法を示す 400 エラーを返します。
パラメーター
club `string` (必須) uuid `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/vpn-import/{club}/{uuid}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-import/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントの VPN 接続(名前、認証情報、スプリット DNS)を更新します
保存されている接続を更新します。認証情報のフィールドは書き込み専用です(省略すると保存済みの値を保持し、空文字列にするとクリアします)。認証情報またはスプリット DNS を変更すると接続のリビジョンが上がり、稼働中のトンネルは新しい値で再起動されます。
パラメーター
club `string` (必須) uuid `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントの VPN 接続を削除します
登録情報から接続を削除してデバイスに通知します。デバイスはトンネルを切断し、キャッシュされたプロファイルと認証情報を消去します。
パラメーター
club `string` (必須) uuid `string` (必須) connectionId `string` (必須)エンドポイント
DELETE /api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-connection/{club}/{uuid}/{connectionId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントの VPN 接続を接続または切断します
あるべき状態を指定するモデルです。登録情報で接続の有効フラグを設定し、デバイスに通知します(ペイロードなしの MQTT vpnConfigChanged)。デバイスは JWT 認証された universal-api 呼び出しで正式な状態を取得し、トンネルを調整します。通知が届かなかった場合も、定期同期で状態が揃います。
パラメーター
club `string` (必須) uuid `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/vpn-command/{club}/{uuid}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/vpn-command/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントのクラウドバックアップの設定と状態を取得します
デバイスのバックアップ設定(有効化、保持期間、保存リージョン)、直近のバックアップ状態(最終バックアップ、サイズ、エラー)、自動で決定されたリージョン、および選択できる保存リージョンを返します。restic リポジトリのパスワードは返されません。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-config/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントのクラウドバックアップ設定を更新します
有効化、保持期間、リージョンを保存します。デバイスが毎時のバックアップを次に実行するときに反映されるため(デバイスは毎回の実行前に PH から実行コンテキストを取得します)、デバイスの再起動は不要です。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/backup-config/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-config/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
新しい AI エージェントのペアリングに使うバックアップの復元元を一覧表示します
エージェント追加ダイアログの「restore from a backup」オプション用の、施設全体の一覧です。復号できるバックアップリポジトリと使用可能な復元ポイントが 1 つ以上ある施設内のすべての登録(有効なもの、および廃止・交換済みのもの)を、最新のスナップショットとともに返します。バックアップ設定の選択肢(allowedRetentionDays、availableRegions)も返すため、ダイアログはデバイスの UUID がなくても選択肢を表示できます。
パラメーター
club `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-sources/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-sources/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントのバックアップ復元ポイントを一覧表示します
デバイスのスナップショット一覧(新しい順)を DynamoDB から返します(デバイスやリポジトリへの問い合わせは発生しません)。ドロワーのポーリング用に、現在の手動バックアップと復元のリクエスト状態も返します。古いリクエスト(一度も処理されていない、または進行状況のハートビートがない)は失敗として表示されるため、UI からいつでも新しいリクエストを送信できます。
パラメーター
club `string` (必須) uuid `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-snapshots/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エージェントの手動バックアップを今すぐリクエストします
手動実行のリクエスト(ユーザーのメモ付き)を登録行に書き込み、MQTT でデバイスに通知します。デバイスは JWT 認証された universal-api の実行コンテキスト呼び出しで検証済みのリクエストを取得します。MQTT が使えない場合でも、次回のスケジューラー実行時に処理されます。別のバックアップまたは復元が進行中の場合は拒否されます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/backup-run/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-run/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI エージェントの復元ポイントを固定または固定解除します
固定した復元ポイントは保持期間による削除の対象外になります。デバイスの夜間メンテナンスは実行コンテキストの呼び出しで固定されたスナップショット ID を受け取り、restic forget から除外します。また、それらのインデックス行は TTL で期限切れになりません。固定を解除すると、通常の保持動作に戻ります。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/backup-pin/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-pin/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
バックアップの復元ポイントから AI エージェントを復元します
復元リクエストを登録行に書き込み、デバイスに通知します。完全復元では /data と /home/hermeswebui が上書きされ(デバイスはまず復元前の安全用スナップショットを自動で作成し、復元中はエージェントを停止します)、確認のためにデバイス名の入力が必要です。`paths` を指定すると、代わりにそのパスだけをファイル単位で復元し、動作を中断しません。データの復元が完了した後、デバイスをスナップショットのソフトウェアリリースに固定することもできます(backup-restore-release を参照)。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/backup-restore/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
完了した復元に記録されたソフトウェアリリースを適用します
スナップショットのソフトウェアバージョンを指定した復元の最終ステップです。デバイスがデータ復元の完了を報告すると、デバイスを保存済みのリリースに固定し、更新のロックを解除します(update エンドポイントと同じ仕組みです)。ドロワーのポーリングによって実行され、べき等です。適用後、保存されていた固定情報はクリアされます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/backup-restore-release/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-restore-release/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
バックアップ復元ポイント内のファイルを閲覧します
restic スナップショットの 1 階層分のディレクトリを一覧表示します。すべて Wasabi リポジトリからサーバー側で提供されるため、デバイスがオフラインでも使用できます。読み取るのはツリーのメタデータだけで、一覧表示のためにファイルデータはダウンロードされません。
パラメーター
club `string` (必須) uuid `string` (必須) takenAt `number` (必須) path `string` (任意)エンドポイント
GET /api/devices/ph-ai-agent/backup-files/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-files/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
バックアップ復元ポイント内のファイル名を検索します
大文字と小文字を区別しないファイル名検索を、指定したディレクトリから下位に向けて実行します。restic のツリーメタデータからサーバー側で提供されます(ファイルデータは読み取らず、デバイスがオフラインでも使用できます)。一覧をストリーミングし、最初の 200 件が一致した時点で停止します。
パラメーター
club `string` (必須) uuid `string` (必須) takenAt `number` (必須) q `string` (必須) path `string` (任意)エンドポイント
GET /api/devices/ph-ai-agent/backup-search/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-search/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
2 つのバックアップ復元ポイント間の変更内容
デバイスの 2 つのスナップショット間で、サーバー側の restic diff(ツリーメタデータのみ)を実行し、追加・削除・変更されたファイルの一覧(最大 500 件の変更)と概要の統計情報を返します。スナップショットは変更されないため、結果はキャッシュされます。
パラメーター
club `string` (必須) uuid `string` (必須) fromTakenAt `number` (必須) toTakenAt `number` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-diff/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-diff/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての復元ポイントにわたる 1 つのファイルのバージョン履歴
デバイスのリポジトリ内のすべてのスナップショットに対してサーバー側で restic find を 1 回実行し、重複しないバージョンにまとめ(サイズと mtime が同じ連続した結果は統合されます)、日付・種類・メモを得るためにスナップショットのインデックス行と結合します。
パラメーター
club `string` (必須) uuid `string` (必須) path `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-versions/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスのバックアップのすべての復元ポイントをファイル名で検索します
削除されたファイルを復旧するための手段です。リポジトリ内のすべてのスナップショットに対してサーバー側で restic find を 1 回実行し(大文字と小文字を区別せず、部分一致またはグロブ)、パスごとに、そのファイルが含まれる復元ポイントをまとめて返します。デバイスから削除されたファイルも、いずれかの復元ポイントに含まれていればここで見つけられます。
パラメーター
club `string` (必須) uuid `string` (必須) q `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-find/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-find/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
バックアップ復元ポイントから単一のファイルをダウンロードします
restic リポジトリから 1 つのファイルをブラウザーに直接ストリーミングします(添付ファイルとして)。ディレクトリは tar アーカイブとしてストリーミングされます。サイズには上限があります。サーバー側で提供されるため、デバイスがオフラインでも使用できます。
パラメーター
club `string` (必須) uuid `string` (必須) takenAt `number` (必須) path `string` (必須)エンドポイント
GET /api/devices/ph-ai-agent/backup-file-download/{club}/{uuid}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/backup-file-download/{club}/{uuid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設から AI エージェントを廃止します
パラメーター
club `string` (必須)エンドポイント
POST /api/devices/ph-ai-agent/decommission/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/decommission/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設から AI エージェントを削除し、ハードウェアを初期化します
デバイスの関連付けを完全に解除していずれの施設でもペアリングできるようにし、NUC 上のすべてのデータを消去します。消去はクラウド側の解除処理の前に Balena デバイス変数 PH_FACTORY_RESET(1 回限りのノンス)で予約されるため、削除時にデバイスがオフラインでも有効で、次回接続時に実行されます。オンラインの場合は、MQTT の factoryReset 通知によってすぐに実行されます。その後、クラウド側の解除処理ですべての認証情報と権限付与を取り消し、Balena の施設との紐付け(デバイス変数と club タグ)とメタデータの clubID をクリアし、アクセスリクエストと LAN の DNS レコードを削除します。クラウドバックアップは保持されます。スナップショットのインデックスとリポジトリのパスワードは論理削除された登録情報に残り、交換用デバイスを追加するときの復元元として使用できます。確認のためにデバイス名の入力が必要です。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/reset/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/reset/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
故障した AI エージェントを新しい NUC に交換します(障害復旧)
デバイスを 1 回で交換します。交換用の NUC を関連付け(トンネルスロット、シークレット、Balena 変数、バックアップの初期設定)、旧デバイスの名前、設置場所、再起動スケジュール、バックアップ設定、アクセスブロック、MCP の権限付与を引き継ぎます。旧スナップショットのインデックスを新しいデバイスのキーに付け替え(バックアップ履歴をすべて引き続き閲覧できます)、旧登録を廃止し(replacedBy / replacedFrom を記録)、`restore` が false でない限り、選択した復元ポイントを旧デバイスのバックアップリポジトリから新しいハードウェアに完全復元する処理をキューに追加します。旧デバイスが故障またはオフラインでも使用できます。確認のために旧デバイスの名前の入力が必要です。同じ施設内でのみ使用できます。
パラメーター
club `string` (必須)リクエスト本文
エンドポイント
POST /api/devices/ph-ai-agent/replace/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/devices/ph-ai-agent/replace/{club} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
Performance Hub デバイスの QR 短縮リンクを、その指し示すディープリンクに解決し、Add Device のスキャナーがデバイスの種類を検出できるようにします。たどるのは performancehub.co のホストだけです。
パラメーター
url `string` (必須) スキャンした短縮リンクエンドポイント
GET /api/devices/resolve-qr
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/resolve-qr \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の UniFi コントローラーへの接続と、認証情報が正しいかどうかをテストします。
パラメーター
facilityID `string` (必須) UniFi への接続をテストする施設の内部 IDエンドポイント
GET /api/devices/testUnifiController/{facilityID}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/devices/testUnifiController/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
汎用 IoT デバイスを施設に対して更新します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
PUT /api/devices/updateGenericDevice/{club}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/devices/updateGenericDevice/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーと、そのユーザーに関連付けられたクラブに基づいて、未対応で対応が必要な契約の数を返します
エンドポイント
GET /api/agreements/agreements-outstanding
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agreements/agreements-outstanding \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブで利用できるすべての契約を一覧表示します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 contracts-sort `string` (任意) 契約を発効日順またはアルファベット順で並べ替えます。既定値は発効日順です。 contracts-acknowledgement `string` (任意) 契約をすべて、確認済み、未確認で絞り込みます。既定値はすべてです。 contracts-requirement `string` (任意) 契約をすべて、署名、チェックボックス、ポップアップ、なしで絞り込みます。既定値はすべてです。 contracts-status `string` (任意) 契約をすべて、有効、アーカイブ済みで絞り込みます。既定値はすべてです。エンドポイント
GET /api/agreements/list-agreements/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/agreements/list-agreements/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ID を指定して契約に署名します。
パラメーター
club `string` (必須) 契約に署名するクラブの内部 ID。 agreementid `string` (必須) 署名する契約の ID。 body `string` (必須) システムに追加またはアップロードする契約とパラメーターを含む JSON オブジェクト。エンドポイント
POST /api/agreements/sign/{club}/{agreementid}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/agreements/sign/{club}/{agreementid} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のモデルルーターの概要(設定、残高、支出)。
パラメーター
clubID `string` (必須) tz `string` (任意) 閲覧者の IANA タイムゾーン。施設にタイムゾーンのデータがない場合に、日別と月別の支出期間に使用されます。エンドポイント
GET /api/clubs/{clubID}/ai-credits/overview
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/overview \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
利用可能なモデルのカタログと、施設ごとの有効状態(既定ではすべて有効)。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/models
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/models \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
利用可能なガードレールと Performance Hub のプリセットテンプレート。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/guardrails
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/guardrails \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
接続済みのモデルルーターサービス。ペアリング済みの AIエージェントデバイス、種類が明示された外部エージェント、施設の Workflow サービスが含まれます。設定は PATCH /keys/{keyHash} で編集します。
パラメーター
clubID `string` (必須) tz `string` (任意) 閲覧者の IANA タイムゾーン。施設にタイムゾーンのデータがない場合に、日別と月別の支出期間に使用されます。エンドポイント
GET /api/clubs/{clubID}/ai-credits/agents
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/agents \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のモデルルーターを有効にし、推論へのアクセスをプロビジョニングします。
パラメーター
clubID `string` (必須)エンドポイント
POST /api/clubs/{clubID}/ai-credits/enable
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/enable \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
プラン、モデルの許可リスト、ガードレール、コンテンツフィルター(Performance Hub 側の正規表現によるマスキングまたはブロック)、支出上限、自動チャージの設定を更新します。
パラメーター
clubID `string` (必須)エンドポイント
PATCH /api/clubs/{clubID}/ai-credits/config
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/config \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
累計のハードキャップのカウンターを 0 にリセットし(現在の支出を新しい基準にします)、終了した期間を履歴に記録します。
パラメーター
clubID `string` (必須)エンドポイント
POST /api/clubs/{clubID}/ai-credits/spend-limit/reset-total
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/reset-total \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ハードキャップのリセット履歴(新しい順)。終了した期間ごとの上限、支出額、タイムスタンプです。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/spend-limit/history
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/spend-limit/history \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の新しい phk_ API キーを作成します(平文は 1 回だけ返されます)。任意で支出上限、モデルの許可リスト、ガードレール、コンテンツフィルター、rpmLimit/tpmLimit のレート制限を指定できます。
パラメーター
clubID `string` (必須)エンドポイント
POST /api/clubs/{clubID}/ai-credits/keys
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys \
-H "x-api-key: YOUR_API_KEY"
キーの編集可能なフィールドを更新します。ラベル、キーごとの支出上限、モデルの許可リスト、ガードレール、コンテンツフィルター、rpmLimit/tpmLimit のレート制限です(キーに同期されます)。
パラメーター
clubID `string` (必須) keyHash `string` (必須)エンドポイント
PATCH /api/clubs/{clubID}/ai-credits/keys/{keyHash}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/keys/{keyHash} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のリクエストごとの推論ログ(リアルタイム、メタデータのみ)。
パラメーター
clubID `string` (必須) page `string` (任意) pageSize `string` (任意) status `string` (任意) model `string` (任意) provider `string` (任意) source `string` (任意) `key` または `agent` keyHash `string` (任意) Performance Hub の keyHash で 1 つのキーまたはエージェントに絞り込みます。 q `string` (任意) リクエスト ID、キーまたはエージェントのラベル、モデル、プロバイダー、エンドユーザーを対象にフリーテキストで検索します。 minutes `string` (任意) 1 日未満の期間(例: Live=1440)。startDate/endDate より優先されます。 startTs `string` (任意) 期間の開始(エポック秒、クリックによるズーム)。minutes や日付より優先されます。 endTs `string` (任意) 期間の終了(エポック秒、クリックによるズーム)。minutes や日付より優先されます。エンドポイント
GET /api/clubs/{clubID}/ai-credits/logs
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ログ画面用の、時間ごとのリクエスト数のヒストグラムです。一覧のルートと同じフィルターを使用しますが、サーバー側で時間の区間ごと(成功件数と失敗件数)に集計されるため、ログの量にかかわらずレスポンスは非常に小さくなります。区間の大きさは期間に応じて自動的に選択されます。
パラメーター
clubID `string` (必須) status `string` (任意) model `string` (任意) provider `string` (任意) source `string` (任意) keyHash `string` (任意) q `string` (任意) minutes `string` (任意) startDate `string` (任意) endDate `string` (任意) startTs `string` (任意) endTs `string` (任意)エンドポイント
GET /api/clubs/{clubID}/ai-credits/logs/histogram
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/logs/histogram \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
期間ごとの使用状況分析の区間データとモデルごとの合計(リアルタイム)。
パラメーター
clubID `string` (必須) range `string` (任意) 24h | 7 | 30 | 90 | year | all(startDate/endDate を指定した場合は無視されます) startDate `string` (任意) endDate `string` (任意) groupBy `string` (任意) model(既定値)| key | source | provider | status。区間とグループの集計軸です subgroupBy `string` (任意) 各グループの下にネストされる任意の 2 つ目の集計軸(Explore) keyHash `string` (任意) 詳細分析用のフィルター。1 つのキーまたはエージェントに限定します model `string` (任意) 詳細分析用のフィルター。1 つのモデルに限定します provider `string` (任意) source `string` (任意) compare `string` (任意) "prev" に設定すると groupsPrev(直前の同じ長さの期間)も返されますエンドポイント
GET /api/clubs/{clubID}/ai-credits/stats
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/stats \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
直近 1 年間の日別アクティビティカレンダー(GitHub 形式、約 53 週間)。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/activity
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/activity \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
保存済みの SaaS 課金用カードに請求して、モデルルーターの前払いクレジットを追加します。
パラメーター
clubID `string` (必須) body `object` (任意)エンドポイント
POST /api/clubs/{clubID}/ai-credits/topup
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アプレットで 3DS 認証が完了した後、チャージを確定します。
パラメーター
clubID `string` (必須)エンドポイント
POST /api/clubs/{clubID}/ai-credits/topup/confirm
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
チャージと自動チャージで請求される、保存済みの SaaS 課金用カードの概要。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/payment-method
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/payment-method \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の台帳の取引を新しい順に返します。種類で絞り込むこともできます(例: 入出金の履歴には `types=topup,adjustment`、1 か月分の使用料の差し引きには `types=charge-reconcile` と `from`/`to`)。
パラメーター
clubID `string` (必須) limit `integer` (任意) 最大行数(既定値 50、最大 200) types `string` (任意) カンマ区切りの取引の種類(topup、charge-reconcile、refund、adjustment、trueup-shortfall) from `integer` (任意) createdAt >= from の取引のみ(Unix 秒) to `integer` (任意) createdAt <= to の取引のみ(Unix 秒)エンドポイント
GET /api/clubs/{clubID}/ai-credits/transactions
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した種類の取引が 1 件以上ある月を、重複なしの `YYYY-MM` で返します(UTC、新しい順)。データに基づく年と月のフィルターのドロップダウンに使用され、UI には実際にデータがある期間のみが表示されます。
パラメーター
clubID `string` (必須) types `string` (任意) カンマ区切りの取引の種類(topup、charge-reconcile、refund、adjustment、trueup-shortfall)エンドポイント
GET /api/clubs/{clubID}/ai-credits/transactions/available-periods
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/available-periods \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
1 件のモデルルーターの取引に対する、ブランド付きの PDF 支払い領収書。
パラメーター
clubID `string` (必須) txId `string` (必須)エンドポイント
GET /api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
選択したチャージの取引に対する、ブランド付きの PDF 支払い領収書をまとめた ZIP。すべての ID が施設のチャージである必要があります。使用料の差し引きと管理者による調整には領収書がないため、拒否されます。
パラメーター
clubID `string` (必須) ids `string` (必須) カンマ区切りの取引 ID(最大 50)エンドポイント
GET /api/clubs/{clubID}/ai-credits/transactions/receipts.zip
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の使用料の差し引きを暦月(UTC)ごとに集計し、新しい順に返します。当月は常に含まれ、`isCurrentMonth`(月初から現在まで)のフラグが付きます。
パラメーター
clubID `string` (必須) months `integer` (任意) さかのぼる月数(既定値 12、最大 24。`year` を設定した場合は無視されます) year `integer` (任意) 集計を UTC の 1 暦年(例: 2026)に限定しますエンドポイント
GET /api/clubs/{clubID}/ai-credits/usage-statements
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランド付きの月次使用明細書の PDF です。その月の使用料の差し引きの概要(日ごとの小計と合計)を示します。請求書や領収書ではありません。使用料の差し引きによって支払いが徴収されることはありません。
パラメーター
clubID `string` (必須) month `string` (必須) UTC の暦月、`YYYY-MM`エンドポイント
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/statement.pdf \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
1 か月分の使用料の差し引きの明細行を CSV で返します(取引 ID、UTC タイムスタンプ、金額、差し引き後の残高、累計支出のスナップショット)。その月の明細書の合計と照合できる詳細なエクスポートです。
パラメーター
clubID `string` (必須) month `string` (必須) UTC の暦月、`YYYY-MM`エンドポイント
GET /api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage-statements/{month}/detail.csv \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の使用状況と支出の概要(リアルタイムのデータと照合済みの台帳)。
パラメーター
clubID `string` (必須) tz `string` (任意) 閲覧者の IANA タイムゾーン。施設にタイムゾーンのデータがない場合に、日別と月別の支出期間に使用されます。エンドポイント
GET /api/clubs/{clubID}/ai-credits/usage
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/ai-credits/usage \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エッジプロセッサデバイスをクラブに関連付けるか、関連付けを更新します
パラメーター
body `string` (必須) AI エッジプロセッサデバイスの登録を更新するための JSON オブジェクト。エンドポイント
POST /api/ai-edge-processor/devices
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
AI エッジプロセッサデバイスをクラブに関連付けます。デバイスはメタデータを優先して解決され(リアルタイムのハートビートが優先されます)、デバイスが自己登録していない場合は登録行が補完されます。また、再プロビジョニングされたハードウェアによって残った古い登録行が削除されます。
パラメーター
body `string` (必須) AI エッジプロセッサデバイスの登録を更新するための JSON オブジェクト。エンドポイント
POST /api/ai-edge-processor/devices/associate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ai-edge-processor/devices/associate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの bbox アップロードレコードの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/bbox-timeline/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bbox-timeline/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
カメラデータベースの検索インデックス
ネットワークカメラを追加する際に Find my camera ダイアログで使用される、公開ドキュメントの camera-db 検索インデックス(メーカー、シリーズ、モデル、別名)をプロキシします。サーバー側で 12 時間キャッシュされます。
エンドポイント
GET /api/cctv/camera-db/search-index
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/search-index \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
カメラデータベースのメーカーテンプレート
公開ドキュメントのカメラデータベースから、1 つのメーカーの RTSP URL テンプレートと既定値をプロキシします。パストラバーサルを防ぐため、スラッグが検証されます。サーバー側で 12 時間キャッシュされます。
パラメーター
slug `string` (必須) メーカーのスラッグ(例: hikvision)エンドポイント
GET /api/cctv/camera-db/manufacturers/{slug}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/camera-db/manufacturers/{slug} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のチェックインデータの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブまたは施設の内部 ID。 startDate `string` (任意) 開始日(YYYY-MM-DD 形式) endDate `string` (任意) 終了日(YYYY-MM-DD 形式) timezone `string` (任意) 日付の解釈に使用するタイムゾーン(既定値は Australia/Brisbane) nextToken `string` (任意) 次のページを取得するためのページネーショントークンエンドポイント
GET /api/cctv/check-ins/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/check-ins/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのフロントエンドまたは UI の設定を取得
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/config/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのコンテンツ配信設定を取得
監視カメラのクライアントがメディアアセットの解決に使用するコンテンツドメインを返します。ドメインは環境変数 CONTENT_DOMAIN によって決まり、設定されていない場合はステージに応じた既定値が使用されます(本番環境では /cctv、その他のステージでは /cctv-stg)。
エンドポイント
GET /api/cctv/content-config
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/content-config \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのフロントエンドまたは UI の設定を変更
パラメーター
body `object` (必須) システムに追加する新しい設定ブロックの JSON オブジェクト。エンドポイント
PUT /api/cctv/config/:club/:section
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのストレージプロバイダー設定で利用できるバケットのリージョンの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/bucket-region/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/bucket-region/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
未識別の顔コレクションをリセット
すべてのサブジェクトを削除して、施設の未識別の CompreFace コレクションをリセットします。DynamoDB の人物レコード、顔検出、OpenSearch のタイムラインブロックには影響しません。消去されるのは基になる顔認識データのみです。システムが新しいカメラの検出を処理するにつれて、新しいシャドウプロフィールが自動的に作成されます。
パラメーター
facilityId `string` (必須)エンドポイント
DELETE /api/cctv/config/{facilityId}/unidentified-collection
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
未識別のコレクションの情報を取得
施設の未識別の CompreFace コレクションの現在のサブジェクト数を返します。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/cctv/config/{facilityId}/unidentified-collection-info
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/config/{facilityId}/unidentified-collection-info \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ストリーム URL(RTSP、HTTP、HTTPS)を使用してネットワークカメラ(OEM/IP カメラ)を追加します
パラメーター
body `string` (必須) ネットワークカメラを追加するための JSON オブジェクト。エンドポイント
POST /api/cctv/devices/add-network-camera
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-camera \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ネットワークカメラをエッジプロセッサに一括追加
複数の RTSP/HTTP ネットワークカメラを 1 台のエッジプロセッサに登録し、FEED_CONFIG を 1 回だけプッシュして、デバイスが設定を 1 回で再読み込みするようにします。
パラメーター
body `object` (必須)エンドポイント
POST /api/cctv/devices/add-network-cameras
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/add-network-cameras \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスをクラブに関連付けるか、関連付けを更新します
パラメーター
body `string` (必須) 監視カメラデバイスの登録を更新するための JSON オブジェクト。エンドポイント
POST /api/cctv/devices
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスをクラブに関連付けます
パラメーター
body `string` (必須) 監視カメラデバイスの登録を更新するための JSON オブジェクト。エンドポイント
POST /api/cctv/devices/associate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/associate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のデバイス UUID に MQTT リクエストを送信し、カメラで利用できる機能のレスポンスを(WebSocket 経由で)受け取ります。
パラメーター
club `string` (必須) 照会するデバイスを所有するクラブの内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/cctv/devices/list-camera-capabilities/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/list-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスの登録を一覧表示
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/devices/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/devices/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ネットワークカメラを削除済みとしてマークし、エッジプロセッサの FEED_CONFIG から除外して削除します
パラメーター
club `string` (必須) デバイスを所有するクラブの内部 ID。 balenaUUID `string` (必須) 削除するネットワークカメラの UUID。エンドポイント
DELETE /api/cctv/devices/remove-network-camera/{club}/{balenaUUID}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/devices/remove-network-camera/{club}/{balenaUUID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
設定したカメラの機能を保存し、環境変数として(balena 経由で)デバイスに適用します
パラメーター
club `string` (必須) 照会するデバイスを所有するクラブの内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/cctv/devices/save-camera-capabilities/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-capabilities/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
カメラのモーションマスク(設定されている場合)を保存し、環境変数として(balena 経由で)デバイスに適用します
パラメーター
club `string` (必須) 照会するデバイスを所有するクラブの内部 ID。 body `string` (必須) カメラマスクの JSON オブジェクト。エンドポイント
POST /api/cctv/devices/save-camera-mask/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/save-camera-mask/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の v4l2 コマンド(明るさやコントラストなど)を物理デバイスに送信します
パラメーター
club `string` (必須) 照会するデバイスを所有するクラブの内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/cctv/devices/set-camera-capability/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/set-camera-capability/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ネットワークカメラのストリーム URL をテスト
エッジプロセッサにテストコマンドを送信し、ffprobe を使用してカメラのストリーム URL を検証します
リクエスト本文
エンドポイント
POST /api/cctv/devices/test-stream
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/devices/test-stream \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 件の顔検出レコードをデータベースから完全に削除します。人物のアクティビティログから、一致しない、または誤った追跡エントリを削除するために使用します。
パラメーター
club `string` (必須) fdID `string` (必須)エンドポイント
DELETE /api/cctv/face-detections/:club/:fdID
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:fdID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
人物の顔検出データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personID `string` (必須) 顔識別システム内の人物の IDエンドポイント
GET /api/cctv/face-detections/:club/:personID
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した人物の切り抜き画像を参照する顔検出を、personCropImage GSI で照会して返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personCropImage `string` (必須) 顔検出レコードに保存されている人物の切り抜き画像の URL。 limit `string` (任意) 返す検出の最大数。 nextToken `string` (任意) 前回のレスポンスのページネーショントークン。エンドポイント
GET /api/cctv/face-detections-by-person-crop-image/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections-by-person-crop-image/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
現在時刻を基準とした期間でグループ化された、クラブの顔検出データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/face-detections/:club/timeline
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの顔検出データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/face-detections/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/face-detections/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
OpenSearch を使用して施設の顔検出のタイムラインブロックを検索
パラメーター
facilityId `string` (必須) 検索する施設の内部 ID timezone `string` (必須) 日付の変換に使用する IANA タイムゾーン(例: Pacific/Auckland) startDate `string` (任意) 開始日のフィルター(YYYY-MM-DD)。タイムゾーンを使用して startUnix に変換されます endDate `string` (任意) 終了日のフィルター(YYYY-MM-DD)。タイムゾーンを使用して endUnix に変換されます personId `string` (任意) 特定の人物 ID で絞り込みます query `string` (任意) フリーテキスト検索(例: 人物名) limit `string` (任意) 1 ページあたりの結果数(既定値 20、最大 100) filters `string` (任意) JSON エンコードされたフィルターオブジェクト(例: {"matchType":"identified"}) sortBy `string` (任意) 並べ替えに使用するフィールド(startUnix、endUnix、created)。既定値は endUnix です。 page `string` (任意) ページネーションのページ番号(既定値 1) sortOrder `string` (任意) 並べ替えの方向(asc または desc)。既定値は desc です。エンドポイント
GET /api/cctv/search/face-detections/timeline-blocks/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/face-detections/timeline-blocks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの施設に関するレポートの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/facility/:club/reports
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/facility/:club/reports \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ヒートマップの生成をオンデマンドで開始します。スケジュールされた cron と同じ Starter のロジックを 呼び出しますが、特定の施設、日時、 期間の組み合わせを対象に指定できます。 本文なしで呼び出した場合は cron とまったく同じように動作し、対象となる すべての施設をスキャンして、すべてのデバイスをキューに追加します。
リクエスト本文
エンドポイント
POST /api/cctv/heatmaps/generate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/heatmaps/generate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
1 台のデバイスについて、合成済みのローリング期間のヒートマップ PNG の 場所を解決します。返すのは JSON のメタデータのみです。PNG のデータは コンテンツドメインにあり、フロントエンドは次の形式で URL を組み立てます。 `${contentDomain}/cctv/${storageService}/${region}/${filePath}?s=${token}` 解決の順序: 1. DynamoDB の `composed#…` インデックスに一致 → すぐに返します(約 10 ms)。 2. 決定論的なキャッシュキーに対する Wasabi の HEAD。一致した場合は 補完用のインデックス行を書き込んで返します。 3. 古いデータへのフォールバック: この(デバイス、期間、時間)の組み合わせに 合成済みのレコードがあれば、日付が異なっていても使用します。 フロントエンドが*何か*を表示できるよう、`cache: 'HIT-STALE'` 付きで すぐに返されます。新しい合成は非同期で開始されます。 4. コールドパス: レコードがまったくない場合。合成用の Lambda が `InvocationType: 'Event'` でキューに追加され、エンドポイントは `202 { cache: 'PENDING' }` を返します。フロントエンドは レコードが作成されるまでポーリングします(通常 3~5 秒)。 当日の扱い: `endDate` が施設の現地時間での「今日」の場合、 エンドポイントは代わりに前日の PNG を返します。当日のスライスは Starter の cron がまだ書き込み中であり、新しく合成しても 不完全になるためです。レスポンスにはリクエストされた `endDate` がそのまま含まれ、`endDateUsed`(= 前日)も含まれます。 `cache` の列挙値: - `HIT`: リクエストされた日付の DDB インデックスから返されました。 - `HIT-FALLBACK`: 当日がリクエストされたため、前日のインデックス行を返しました。 - `HIT-BACKFILL`: DDB にはなかったものの Wasabi に PNG があったため、行を 書き込んだところです。 - `HIT-FALLBACK-BACKFILL`: 前日へのフォールバック時に補完しました。 - `HIT-STALE`: リクエストされた日付のレコードはないものの、この組み合わせの 別の日付のレコードがあるため、すぐに返し、 新しい合成をバックグラウンドでキューに追加しました。 - `PENDING`: レコードがまったくないため、合成をキューに追加しました。フロントエンドは ポーリングしてください。レスポンスは `202 Accepted` で、`filePath` は含まれません。
パラメーター
facilityId `string` (必須) deviceUUID `string` (必須) 合成の対象デバイス。合成はデバイスごとに行われます。 hour `integer` (必須) さかのぼる期間全体で合成する時間帯(0~23 時)。 endDate `string` (任意) 期間の最終日(YYYY-MM-DD)。既定値は今日(施設のタイムゾーン)です。 range `string` (任意) さかのぼる期間。許可された期間のいずれかである必要があります。 nocache `integer` (任意) `1` に設定すると、DDB と HEAD のキャッシュ層をバイパスして、強制的に新しく合成します。エンドポイント
GET /api/cctv/heatmaps/hourly/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスについて、さかのぼる期間内で `1h` のスライスレコードがある 時間帯を調べます。フロントエンドはこれを使用して、合成エンドポイント (`/api/cctv/heatmaps/hourly/...`)を呼び出す前に、日付と期間の選択欄とあわせて 時間帯の選択欄に値を設定します。 例: `GET /api/cctv/heatmaps/query-hourly/Birkdale?deviceUUID=abc123&endDate=2026-04-16&range=30d` 内部の処理: `cctvheatmaps` に対する DynamoDB の範囲クエリ 1 回 (`sk BETWEEN 1h#{start}-00 AND 1h#{end}-23`)を、時間帯ごとにグループ化します。 スライスが 1 つ以上ある時間帯ごとに 1 つのエントリを返し、 代表となる参照用 JPEG も含めます(期間内で最も新しい日のものです。 参照用画像はデバイスごと、日ごとに共有されます)。
パラメーター
facilityId `string` (必須) deviceUUID `string` (必須) 照会するデバイス。時間ごとのスライスはデバイスごとに作成されます。 endDate `string` (任意) 期間の最終日(YYYY-MM-DD)。既定値は今日(施設のタイムゾーン)です。 range `string` (任意) さかのぼる期間。許可された期間のいずれかである必要があります。エンドポイント
GET /api/cctv/heatmaps/query-hourly/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/query-hourly/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の生成済みのヒートマップレコードを照会します。 **期間の種類ごとのすべてのレコード:** - `/api/cctv/heatmaps/Birkdale?periodType=1y` - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&periodType=1d` **日付の範囲(1 つの期間の種類):** - `/api/cctv/heatmaps/Birkdale?periodType=1d&from=2026-03-01&to=2026-03-31` - `/api/cctv/heatmaps/Birkdale?periodType=6h&from=2026-03-31&to=2026-03-31` **日付の範囲(該当するすべての期間の種類。periodType を省略):** - `/api/cctv/heatmaps/Birkdale?from=2026-03-01&to=2026-03-31` 指定した範囲と重なる、年次、半期、四半期などから 6h までの レコードを返します。 **特定の時点(1 台のデバイスの 9 種類すべての期間):** - `/api/cctv/heatmaps/Birkdale?deviceUUID=abc123&date=2026-03-15T14:30` 最大 9 件のレコード(1y、6m、3m、2m、1m、1w、1d、12h、6h)を返します。
パラメーター
facilityId `string` (必須) 施設の識別子。 deviceUUID `string` (任意) 特定のデバイスを照会します。省略した場合は、すべてのデバイスを照会します(GSI)。 periodType `string` (任意) 1 つの期間の種類に絞り込みます。from/to を指定してこれを省略した場合は、すべての種類を照会します。 from `string` (任意) 開始日(yyyy-mm-dd)。`to` と一緒に使用する必要があります。 to `string` (任意) 終了日(yyyy-mm-dd)。`from` と一緒に使用する必要があります。 date `string` (任意) 特定の時点の検索(yyyy-mm-dd または yyyy-mm-ddTHH:mm)。deviceUUID が必要です。期間の種類ごとに 1 件のレコードを返します。エンドポイント
GET /api/cctv/heatmaps/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/heatmaps/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスのライブ配信のサムネイルを取得
パラメーター
club `string` (必須) クラブの内部 ID。 deviceId `string` (必須) 監視カメラデバイスの内部 ID。エンドポイント
GET /api/cctv/livestream/:club/thumbnail/:deviceId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/livestream/:club/thumbnail/:deviceId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ライブ配信を視聴することを監視カメラシステムに通知
パラメーター
club `string` (必須) クラブの内部 ID。 deviceId `string` (必須) 監視カメラデバイスの内部 ID。エンドポイント
POST /api/cctv/livestream/:club/iswatching/:deviceId
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/livestream/:club/iswatching/:deviceId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
照合結果の一致を承認
一致のステータスを確認済みに設定し、レビュー担当者を記録します。
パラメーター
club `string` (必須) matchId `string` (必須)エンドポイント
POST /api/cctv/matching/{club}/detail/{matchId}/approve
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/approve \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
1 件の照合結果の一致を来訪の詳細とともに取得
一致のレコードと、来訪ごとの時間の内訳を返します。
パラメーター
club `string` (必須) matchId `string` (必須)エンドポイント
GET /api/cctv/matching/{club}/detail/{matchId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
一致していない人物を手動で会員にリンク
監視カメラの personId を特定の会員に関連付け、一致を確認済みに設定します。
パラメーター
club `string` (必須) matchId `string` (必須)リクエスト本文
エンドポイント
POST /api/cctv/matching/{club}/detail/{matchId}/link
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/link \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の照合結果の一致を一覧表示
ステータスで絞り込んだ一致をページ分割して返します。
パラメーター
club `string` (必須) status `string` (任意) limit `integer` (任意) nextToken `string` (任意)エンドポイント
GET /api/cctv/matching/{club}/list
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/list \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
照合結果の一致を拒否
一致のステータスを拒否に設定し、レビュー担当者を記録します。
パラメーター
club `string` (必須) matchId `string` (必須)エンドポイント
POST /api/cctv/matching/{club}/detail/{matchId}/reject
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/reject \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
照合結果の一致の集計件数を取得
施設の一致の件数をステータスごとにまとめて返します。
パラメーター
club `string` (必須) 施設 IDエンドポイント
GET /api/cctv/matching/{club}/summary
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/matching/{club}/summary \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
自動学習したプロフィールの一致のリンクを解除
リンク済みの一致を拒否のステータスに戻し、会員レコードの autoLearnedFrom を消去します。
パラメーター
club `string` (必須) matchId `string` (必須)リクエスト本文
エンドポイント
POST /api/cctv/matching/{club}/detail/{matchId}/unlink
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/matching/{club}/detail/{matchId}/unlink \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
処理中の「識別済み人物の作成または更新」操作(作成と編集の両方)のステータスを読み取ります。cctv-rekognition-api が所有する `people-ops` テーブルから行を直接読み取り、Lambda は経由しません。監視カメラのフロントエンドが POST /api/cctv/people/{facility}/identified の後に進行状況をポーリングするために使用します。 パスは `/cctv/people/...` の下ではなく同じ階層にあるため、express のルーターが `/cctv/people/:club/:personID` の `:personID` として `operationId` を誤って照合することはありません。createAPIRouter の glob の順序を参照してください。 upsertIdentifiedPerson Lambda が最初の段階のエントリをまだ書き込んでいない間(コールドスタートの期間)は、`pending` のプレースホルダーを返します。フロントエンドのポーリング処理はプレースホルダーと pending を同じように扱うため、呼び出し元との契約が安定します。
パラメーター
operationId `string` (必須)エンドポイント
GET /api/cctv/people-operations/{operationId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people-operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
(既存の追跡検出から得た)顔画像を人物の CompreFace 認識サブジェクトに追加し、シャドウ写真テーブルに参照を保存します。画像は顔検出のキャプチャとしてすでに Wasabi にあるため、Wasabi にはアップロードしません。
パラメーター
club `string` (必須) personID `string` (必須) body `string` (必須)エンドポイント
POST /api/cctv/people/:club/:personID/add-face
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID/add-face \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
人物レコードにシャドウ写真を追加
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personID `string` (必須) 人物のレコード ID body `string` (必須) システムに追加する新しい設定ブロックの JSON オブジェクト。エンドポイント
POST /api/cctv/people/:club/shadow-photos/:personID
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
人物のシャドウ写真を照会
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personID `string` (必須) 人物のレコード IDエンドポイント
GET /api/cctv/people/:club/shadow-photos/:personID
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
CCTVShadowPhotosTable からシャドウ写真のレコードを完全に削除し、対応する顔を CompreFace から削除します(faceId が保存されている場合)。
パラメーター
club `string` (必須) personID `string` (必須) id `string` (必須) シャドウ写真のレコード ID(主キー)エンドポイント
DELETE /api/cctv/people/:club/shadow-photos/:personID/:id
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/shadow-photos/:personID/:id \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
personID を指定して、参照と関連する認識レコードを削除します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personID `string` (必須) 監視カメラの人物の一意の ID。エンドポイント
DELETE /api/cctv/people/:club/:personID
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの人物レコードを返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 personID `string` (必須) 人物のデータベース ID。エンドポイント
GET /api/cctv/people/:club/:personID
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/:personID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
人物の会員プロフィールに一致するアクセスゾーンを取得
人物の会員種別、タグ、会員プランを解決し、対象と除外のルールに照らして一致した実際のアクセスゾーン(origin=membership-plan、統合されていないもの)を返します。各ゾーンの accessRestriction は、その人物に一致したルールのみに絞り込まれます。子ゾーンのカメラは親ゾーンに統合されます。
パラメーター
club `string` (必須) 施設の内部 ID personID `string` (必須) 監視カメラの人物テーブルの人物 IDエンドポイント
GET /api/cctv/people/{club}/{personID}/allowed-zones
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/{club}/{personID}/allowed-zones \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
統合ジョブの現在のステータスを、統合元ごとの結果とともに返します。ステータスが IN_PROGRESS の間は、このエンドポイントを 3~5 秒ごとにポーリングしてください。
パラメーター
club `string` (必須) mergeJobID `string` (必須)エンドポイント
GET /api/cctv/people/:club/merge-status/:mergeJobID
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-status/:mergeJobID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
複数の未識別の人物プロフィールを 1 つに統合する処理をバックグラウンドで開始します。すぐに mergeJobID とともに 202 を返します。進行状況は /merge-status/:mergeJobID をポーリングして確認してください。
パラメーター
club `string` (必須) body `string` (必須)エンドポイント
POST /api/cctv/people/:club/merge-unidentified
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/merge-unidentified \
-H "x-api-key: YOUR_API_KEY"
施設のブラックリストのコレクションに顔を追加
パラメーター
facilityId `string` (必須) 施設の内部 IDリクエスト本文
エンドポイント
POST /api/cctv/people/{facilityId}/blacklist
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/blacklist \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の識別済み人物を作成または更新します。新しいレコードを作成するか、既存のレコードを更新します。upsertIdentifiedPerson Lambda にプロキシし、Lambda が人物レコードを書き込み、指定された写真を Wasabi にアップロードして、CompreFace で顔のインデックスを再作成します。 `isNewRecord` が true(既定値)の場合、Lambda は作成の処理(cctvPeople.save)を実行し、`personID` が指定されていなければ生成します。`isNewRecord` が false の場合、Lambda は更新の処理(cctvPeople.update)を実行します。`personID` が必要で、既存のレコードを指定する必要があります。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/cctv/people/{facilityId}/identified
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/identified \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
施設の監視カメラの人物テーブルに同期される、任意のパートナーフィールドの組み合わせを更新します。
パラメーター
facilityId `string` (必須) 施設の内部 IDリクエスト本文
エンドポイント
PUT /api/cctv/people/{facilityId}/sync-fields
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/people/{facilityId}/sync-fields \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
クラブの人物データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/people/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/people/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
顔画像で施設の人物を検索します。アップロードされた base64 画像とパスの施設 ID を使用して、cctv-rekognition-api の imageFaceSearch Lambda を呼び出します。順位付けされた一致と DeepFace の属性の概要を返します。
パラメーター
club `string` (必須) 施設またはクラブの ID body `string` (必須)エンドポイント
POST /api/cctv/people/{club}/search-by-face
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/{club}/search-by-face \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
OpenSearch を使用して施設の人物を検索
パラメーター
facilityId `string` (必須) 検索する施設の内部 ID query `string` (任意) 検索語句(例: 名前) page `string` (任意) ページ番号(既定値 1) limit `string` (任意) 1 ページあたりの結果数(既定値 20、最大 100) filters `string` (任意) JSON エンコードされたフィルターオブジェクト(例: {"membershipStatus":"active"}) sortBy `string` (任意) 並べ替えに使用するフィールド(created、lastName、firstName、membershipUpdatedOn)。既定値は created です。 sortOrder `string` (任意) 並べ替えの方向(asc または desc)。既定値は desc です。エンドポイント
GET /api/cctv/search/people/:facilityId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/people/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
顔検出の項目を新しい personID で更新し、認識レコードを関連付けます
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 body `string` (必須) システムに追加する新しい設定ブロックの JSON オブジェクト。エンドポイント
POST /api/cctv/people/:club/validate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/people/:club/validate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの監視カメラの録画データで利用できるすべてのフィルターのオブジェクトを返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/recordings/filters/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/filters/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
録画をストリーミングします。
エンドポイント
GET /api/cctv/recordings/:club/:dir/:filename
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
録画の情報を更新します。
エンドポイント
PUT /api/cctv/recordings/:club/:dir/:filename
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:dir/:filename \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの監視カメラの録画データの概要を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/recordings/:club/summary
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/summary \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
現在時刻を基準とした期間に基づいて、クラブの監視カメラの録画データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/recordings/:club/timeline
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club/timeline \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの監視カメラの録画データの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/recordings/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/recordings/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
録画は設定された期間が過ぎると自動的に削除されます。録画を保持するにはこの機能を使用してください
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
POST /api/cctv/recordings/:club/:action
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/recordings/:club/:action \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
日付の範囲内で施設のレポートのスナップショットを検索
パラメーター
facilityId `string` (必須) 施設の内部 ID startDate `string` (必須) 開始日のフィルター(YYYY-MM-DD) endDate `string` (必須) 終了日のフィルター(YYYY-MM-DD) deviceIds `string` (任意) 絞り込みに使用するカメラまたはデバイスの ID のカンマ区切りの一覧 view `string` (任意) 計算する別のレポート表示(レポートの Lambda に転送されます)エンドポイント
GET /api/cctv/reports/search-report-snapshots/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/reports/search-report-snapshots/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のインデックス済みの監視カメラのメディアをベクトル検索します。searchAnything Lambda から中継される text/event-stream でレスポンスを返すため、コールドコンテナがエンコーダーを読み込む間も、クライアントは進行状況を表示できます。イベントは `status` の後に `result` または `error` が続きます。検索方法は 3 つあり、そのうち 2 つはこのメソッドで使用します。フリーテキストで検索するには `query` を送信します。例を使って検索する(「これに似たもの」)には `seedIndex` + `seedKey` を送信します。インデックスにすでにある行のベクトルを使用するため、ユーザーが見ている結果に似たものを探すことができます。ユーザーが持っている画像で検索するには、代わりにこの同じパスにデータを `POST` します。画像と一緒に語句を送信すると、一方でもう一方を絞り込めます。**テキストで選別し、画像で順位付けします**。候補はシードから得られ、語句によってどの候補を残すかが決まり、見た目の類似度によって順序が決まります。そのため結果は画像に似たものになり、語句に一致しないものは除外されます。2 つが 1 つのベクトルに混合されることはないため、組み合わせた検索でも `queryKind` は `similar` のままです。結果に `query` があることで、テキストによる選別が適用されたことがわかります。組み合わせた検索では結果が 0 件になることもよくあるため、それを別の結果として扱ってください。`perIndex.
パラメーター
facilityId `string` (必須) 検索する施設の内部 ID query `string` (任意) 探すものをフリーテキストで説明したもの。warm=1 またはシードを送信する場合を除き、必須です。シードと組み合わせた場合は順位付けの対象ではなくなり、シードの候補に対するフィルターとして働き、テキストのスコアがインデックスの関連性の下限値を下回る候補を除外します。 seedIndex `string` (任意) テキストではなく例で検索する場合の、シードの行があるインデックス(person-crops、recording-frames、timelapse-frames)。ユーザーがクリックしたヒットの `index` です。seedKey と一緒に送信する必要があります。 seedKey `string` (任意) シードの行の `key` で、ヒットからそのまま取得します。シード自体は結果から除外されます。録画の場合は、ほかのフレームが 2 秒間隔でほぼ同一であるため、クリップ全体が除外されます。 seedFrameId `string` (任意) seedIndex が recording-frames の場合は必須です。このインデックスはサンプリングしたフレームごとに 1 行を保存し、すべての行がクリップのキーを共有するため、キーだけでは特定の時点ではなくクリップを指します。ヒットの `frameId` を送信してください。古い行にはこれがないため、代わりに seedOffsetMs を送信してください。 seedOffsetMs `string` (任意) 行が `frame_id` の導入以前のものである recording-frames のシード用の、代替のフレーム識別子。ヒットの `offsetMs` を送信してください。seedFrameId を指定した場合は無視されます。 warm `string` (任意) 検索を実行せずに Lambda コンテナを事前に起動します。ページの読み込み時に呼び出してください。 warmTarget `string` (任意) `warm` で読み込むエンコーダー: `text`(既定値)、`image`、`both` のいずれか。ビジョンタワーは 355 MB で、テキストタワーの 283 MB より大きいため、事前の読み込みは任意です。`image` は、ページの読み込み時ではなく、ユーザーが実際に画像を用意した時点で指定してください。 index `string` (任意) 検索するデータセットをカンマ区切りで指定します: person-crops、recording-frames、timelapse-frames。結果はスコア順の 1 つの一覧に統合されます。既定では 3 つすべてを検索します。絞り込むには一覧を明示的に指定してください。timelapse-frames は、録画を行わず 1 分ごとに 1 フレームのみを生成するカメラを対象としており、関連性の下限値はまだ調整されていません。 model `string` (任意) クエリに使用するエンコーダー。データセットのインデックス作成に使用したエンコーダーと一致する必要があります。 limit `string` (任意) インデックスごとに返す結果の数(既定値 50、最大 100)。合計ではないため、3 つすべてのインデックスを検索すると最大でこの 3 倍の件数が返されます。録画の場合は、一致したフレームではなくクリップの数を数えます。 from `string` (任意) この時刻以降に撮影されたメディアのみを対象にします(エポックからのミリ秒)。アップロード時刻ではなく撮影時刻である点に注意してください。 to `string` (任意) この時刻より前に撮影されたメディアのみを対象にします(この時刻は含みません。エポックからのミリ秒)。 cameraId `string` (任意) 絞り込むカメラの balenaUUID をカンマ区切りで指定します。/api/cctv/recordings/filters/:club が返す各エントリの `balenaUUID` フィールドです。推奨されるカメラのフィルターです。すべてのインデックスにこの同じ値が保存されているため、1 つのフィルターですべてを絞り込めます。ただし、この値を持つのは顔検出との結合が解決された切り抜き画像のみ(現在は約 1%)であるため、切り抜き画像の補完処理が実行されるまでは、カメラで切り抜き画像を絞り込んでもほとんど、またはまったく結果が返されません。録画にはすべて値が設定されているため、正確に絞り込めます。 camera `string` (任意) 絞り込むカメラ名をカンマ区切りで指定します。実質的に録画専用です。person-crops はすべての行に空のカメラ名を保存しているため、ここに値を指定するとすべての切り抜き画像が除外されます。cameraId を使用してください。 cameraGroup `string` (任意) 絞り込むカメラグループをカンマ区切りで指定します。すべての録画に設定されていますが、切り抜き画像では約 1% のみです。原因は cameraId と同じです。 minScore `string` (任意) ノイズを除外するインデックスごとのコサイン類似度の下限値を上書きします。本番環境では省略してください。各インデックスには調整済みの既定値があります(シードによる検索用には、調整されていない別の既定値があります)。関連性をデバッグする際に、絞り込まれていない最近傍を確認するには 0 を指定してください。エンドポイント
GET /api/cctv/search/anything/:facilityId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
語句や画面上の既存の結果ではなく、ユーザーが持っている画像で検索します。それ以外の点は GET とまったく同じです(同じクエリパラメーター、同じイベントストリーム、同じ結果の形式)。そのため、ここでは異なる点のみを説明します。`image/*` の Content-Type で、**元のファイルのデータ**をリクエスト本文として送信してください。事前にブラウザーでサイズ変更、切り抜き、再エンコードを行わないでください。サーバーは、インデックス済みのベクトルの作成に使用されたものと同じ、非常に特殊なサイズ変更(アンチエイリアス処理されたバイリニアカーネルによる 256x256 への変形)を行いますが、canvas でのサイズ変更では別の方式が使われます。測定すると、この方式の違いによって正しい結果からコサイン距離で約 0.93 ずれます。これは本当に異なる 2 つの画像の差よりも大きいため、エラーなしで、もっともらしいが誤った順位の結果が返されます。上限は 4 MB です。これは品質ではなく転送上の制約です。データは Lambda の呼び出しペイロード内で送られ、その上限は 6 MB であり、base64 によってサイズが 3 分の 1 増えるためです。結果は画像同士でスコア付けされるため、`queryKind` は `image` となり、スコアはシードによる検索と同じ、はるかに高い尺度になります。テキスト検索のスコアとは比較できません。同等のシードによる検索よりもスコアがわずかに*低く*なることがあります。シードのベクトルはデバイス自体が書き込んだものですが、アップロードされた画像はここで別のエンジンによって再エンコードされるため、デバイスが作成した場合とは 100 分の数ほどずれるためです。測定では、それでも結果の品質は同等ですが、完全に同じ結果になるわけではありません。`query` を追加すると、シードの場合とまったく同じように、その語句で結果が選別されます。シード*と*画像の両方を送信すると拒否されます。どちらも順位付けの対象であるため、組み合わせる意味がないためです。これはこのエンドポイントで最もコストの高いリクエストです。アップロードされた画像ではビジョンタワーが読み込まれ、語句を加えるとテキストタワーも読み込まれます。どちらもコールドコンテナ上で行われます。ユーザーが画像を用意した時点で `warm=1&warmTarget=image` を呼び出すと、この処理を待ち時間から外せます。
パラメーター
facilityId `string` (必須) 検索する施設の内部 ID body `string` (必須) 加工されていない元の画像データ(最大 4 MB) query `string` (任意) 画像の検索結果を絞り込むための任意の語句。テキストのスコアがインデックスの関連性の下限値を下回る一致を除外します。エンドポイント
POST /api/cctv/search/anything/:facilityId
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/search/anything/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの監視カメラのストレージの詳細とその他の指標データを返します
エンドポイント
GET /api/cctv/storage-details/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/storage-details/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブのタイムラプスのアップロードレコードの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/timelapse/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/timelapse/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのフロントエンドまたは UI で録画に対して行われたユーザーの操作を一覧表示
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/cctv/ui/actions/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのフロントエンドまたは UI で録画に対して行われたユーザーの操作を記録
パラメーター
body `string` (必須) システムに追加する新しい設定ブロックの JSON オブジェクト。エンドポイント
POST /api/cctv/ui/actions/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/ui/actions/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
監視カメラのフロントエンドまたは UI 用のユーザートークンを取得
パラメーター
club `string` (必須) クラブ IDエンドポイント
GET /api/cctv/ui/token/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/ui/token/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
一時アクセスまたはゲストアクセス用のトークンを生成
パラメーター
club `string` (必須) クラブの一意の識別子。 body `string` (必須) 発行するトークンの詳細の JSON オブジェクト。エンドポイント
POST /api/cctv/token/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{
"accessID": "00000000-0000-0000-0000-000000000014"
}
一時アクセスまたはゲストアクセス用のトークンのレコードの一覧を返します
パラメーター
club `string` (必須) クラブの一意の識別子。エンドポイント
GET /api/cctv/token/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/cctv/token/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アクセス ID でアクセストークンを取得します
パラメーター
accessID `string` (必須) データベース内のトークンレコードの ID。エンドポイント
POST /guest/cctv/token/:accessID
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/guest/cctv/token/:accessID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセス時間を削除
パラメーター
facilityId `string` (必須) body `object` (必須) 新しいアクセス時間の JSON オブジェクト。エンドポイント
DELETE /api/ai/computer-vision/access-hours/:facilityId
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセス時間の一覧を返します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/ai/computer-vision/access-hours/:facilityId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセス時間を更新または作成します
パラメーター
facilityId `string` (必須) body `object` (必須) 新しいアクセス時間の JSON オブジェクト。エンドポイント
POST /api/ai/computer-vision/access-hours/:facilityId
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-hours/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセスゾーンを削除
パラメーター
facilityId `string` (必須) body `object` (必須) 新しいアクセスゾーンの JSON オブジェクト。エンドポイント
DELETE /api/ai/computer-vision/access-zones/:facilityId
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセスゾーンの一覧を返します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/ai/computer-vision/access-zones/:facilityId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアクセスゾーンを更新または作成します
パラメーター
facilityId `string` (必須) body `object` (必須) 新しいアクセスゾーンの JSON オブジェクト。エンドポイント
POST /api/ai/computer-vision/access-zones/:facilityId
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ai/computer-vision/access-zones/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織内のブランドと施設にわたる管理モジュール ID の和集合を、モジュールオブジェクトとして返します。
パラメーター
organisationId `string` (必須) 組織 IDエンドポイント
GET /api/organisations/{organisationId}/admin-modules
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/organisations/{organisationId}/admin-modules \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての組織の一覧を返します
パラメーター
includeBrands `string` (任意) 組織に関連付けられたブランドを含めます includeFacilities `string` (任意) 組織に関連付けられた施設を含めます includeRegions `string` (任意) 組織に関連付けられたリージョンを含めますエンドポイント
GET /api/organisations
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/organisations \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
サポートチケットの内容を分析し、利用可能なトピックと Algolia の検索トピックの候補に基づいて提案を作成するシンプルな AI ヘルパーです。
パラメーター
messageBody `string` (必須) 送信するメッセージの本文 topicData `string` (必須) osTicket(チケット管理とサポートのシステム)から返された topicData の JSON オブジェクトまたは配列 facilityId `string` (任意) 検索対象の正しい Algolia インデックスを判断するために必要な、クラブの内部 ID。エンドポイント
PUT /api/ai/helpers/analyse-support-ticket
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/ai/helpers/analyse-support-ticket \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
シンプルな画像生成 API
パラメーター
type `string` (必須) 生成する画像の種類 name `string` (必須) 画像名 maxSize `string` (任意) 任意の最大レスポンスサイズ(例: 200KB、1MB、またはバイト数)。画像はこのサイズに収まるよう縮小または圧縮されます。エンドポイント
PUT /api/ai/images/:type/:name
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/ai/images/:type/:name \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
シンプルな LLM クエリ
シンプルでステートレスな LLM クエリ用の軽量なエンドポイントです。 厳しいトークン制限付きで、低コストの非推論モデル(gpt-4o-mini)を使用します。 会話履歴、ツール、ストリーミングはありません。プロンプトを入力するとテキストが返されるだけです。
リクエスト本文
エンドポイント
POST /api/ai/llm/query
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ai/llm/query \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
インデックス名、アプリ ID、API キーを含む Algolia の設定を返します。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/facilities/{facilityId}/algolia/config
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/algolia/config \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Algolia のマーケティング印刷物インデックスを初期化します
パラメーター
organisationId `string` (必須)エンドポイント
PUT /api/algolia/index
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/algolia/index \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
マーケティング印刷物を検索
リクエスト本文
エンドポイント
POST /algolia/search-marketing-print
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
マーケティング印刷物を検索
パラメーター
club `string` (任意) クラブ ID searchTerms `string` (任意) 検索語句 algoliaArgs `object` (任意) Algolia の追加の検索引数エンドポイント
GET /algolia/search-marketing-print
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/algolia/search-marketing-print \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のクラブのマーケティング印刷物オブジェクトを一括更新
エンドポイント
POST /algolia/bulk-update-marketing-print
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/algolia/bulk-update-marketing-print \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Algolia からマーケティング印刷物のアセットを取得します。
パラメーター
organisationId `string` (必須) search `string` (任意) limit `string` (任意) brand `string` (任意) tag `string` (任意)エンドポイント
GET /api/algolia/marketing/assets
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の設定で Algolia のマーケティング印刷物インデックスを初期化します。
パラメーター
organisationId `string` (必須)エンドポイント
POST /api/algolia/marketing/assets
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/algolia/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
検索語句、クラブ、ロケールに基づいて、指定した Algolia インデックスを検索します。Algolia の追加の引数を使用して、検索をさらにカスタマイズできます。
パラメーター
searchTerms `string` (必須) Algolia インデックスで検索する語句。 club `string` (任意) リクエストを送信するクラブの内部 ID。指定すると、クラブに関連付けられたリージョンに基づいて検索結果が絞り込まれます。 locale `string` (任意) クラブを指定しない場合にリージョンの判断に使用するロケール。navigator.languages から取得されます。 algoliaArgs `string` (任意) Algolia の検索リクエストにそのまま渡す追加またはカスタムの引数。エンドポイント
POST /api/algolia/search-wiki
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/algolia/search-wiki \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのお知らせを一覧表示します
エンドポイント
GET /api/announcements/list
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/announcements/list \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アセットを(アップロード API 経由で)公開 S3 バケットにアップロードします。その後、ファイルの後処理や最適化、サムネイルの生成などが行われます。*注: アセットは一般に公開されます*
パラメーター
file `string` (任意) アップロードするファイルまたはアセットの名前。エンドポイント
POST /api/asset-upload
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/asset-upload \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定したアップロードレコードの UUID で、アップロードのステータスを返します
パラメーター
uuid `string` (必須) アップロードレコードの UUIDエンドポイント
GET /api/asset-upload/:uuid
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/asset-upload/:uuid \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの Sonos にコマンドを送信
パラメーター
body `object` (必須) Sonos に送信するコマンドと入力の JSON オブジェクト。エンドポイント
PUT /api/audio-control/command/:club
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/command/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
オーディオコントロールのフロントエンドの設定を取得
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/audio-control/config/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/audio-control/config/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
オーディオコントロールのフロントエンドの設定を変更
パラメーター
body `object` (必須) システムに追加する新しい設定ブロックの JSON オブジェクト。エンドポイント
PUT /api/audio-control/config/:club/:section
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/audio-control/config/:club/:section \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のリージョンのブランド設定を取得します
パラメーター
brandId `string` (任意) ブランドの ID regionCode `string` (任意) 設定を取得するリージョンの ISO コードエンドポイント
GET /api/brands/{brandId}/regions/{regionCode}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のリージョンの複数のブランド設定を更新します
パラメーター
brandId `string` (任意) 更新するブランドの ID regionCode `string` (任意) 設定を更新するリージョンの ISO コード acceptFreeTrialBookingsVisibility `string` (任意) customTrackingCodeVisibility `string` (任意) displayDataSources `string` (任意) displayDefaultDataSource `string` (任意) displayDefaultUI `string` (任意) displayUIOptions `string` (任意) defaultAboutBusiness `string` (任意) defaultAboutBusinessFacebook `string` (任意) facilityCoverImage `string` (任意) digitalProfileSettingsVisibility `string` (任意) facilityHoursVisibility `string` (任意) facilityLocationVisibility `string` (任意) facilityPaymentMethods `string` (任意) facilityPrimaryLogo `string` (任意) facilityStatusVisibility `string` (任意) landingPagesVisibility `string` (任意) lineChatIntegrationVisibility `string` (任意) whatsAppIntegrationVisibility `string` (任意) defaultWhatsAppMessage `string` (任意) socialUrlsVisibility `string` (任意) yextApiKey `string` (任意) このブランドとリージョンの Yext 連携で使用される API キー。`directorySyncMode` が `yext` の場合にのみ参照されます。 directorySyncMode `string` (任意) このブランドとリージョンに属する施設で実行する同期バックエンド。指定がない場合は、Directory Publishers の導入以前からあるブランドとの後方互換性のため、`yext` が既定値になります。 websiteUrl `string` (任意) androidAppUrl `string` (任意) iosAppUrl `string` (任意) featuredMessageDescription `string` (任意) yextCategoryIds `string` (任意) 以前から使用されている保存用のキーです。実際には Google Business Profile のカテゴリ ID(例: gcid:gym)です。"yext" という接頭辞は Yext の廃止以前のもので、既存のデータベースの行との後方互換性のために残されています。 customInputFields `string` (任意) customInputFieldsToRemove `string` (任意)エンドポイント
PUT /api/brands/{brandId}/regions/{regionCode}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId}/regions/{regionCode} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の施設のブランド設定を取得します
パラメーター
facilityId `string` (任意) ブランド設定を取得する施設の IDエンドポイント
GET /api/facilities/{facilityId}/brand-settings
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/brand-settings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しいブランドを作成します
パラメーター
name `string` (必須) ブランドの名前 organisationId `string` (必須) ブランドが属する組織の ID redirectDashboard `string` (任意) ログイン後に既定のダッシュボードの代わりにリダイレクトする URLエンドポイント
POST /api/brands
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのブランドの一覧を返します
エンドポイント
GET /api/brands
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランドオブジェクトを返します
パラメーター
brandId `string` (必須) 取得するブランドの ID includeOrganisation `boolean` (任意) レスポンスに組織のデータを含めるかどうかエンドポイント
GET /api/brands/{brandId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ID を指定してブランドを更新します
パラメーター
brandId `string` (任意) 更新するブランドの ID name `string` (必須) ブランドの名前 brandOrganisationId `string` (任意) ブランドが属する組織の ID redirectDashboard `string` (任意) ログイン後に既定のダッシュボードの代わりにリダイレクトする URL yextApiKey `string` (任意) このブランドで Yext API にアクセスするために使用する API キー customMenuLayout `object` (任意) ブランドごとのサイドメニューのレイアウトツリー(システムモジュールまたはカスタム URL を 参照するセクション、グループ、項目)。設定できるのは、 このブランドの組織の組織管理者のみです。エンドポイント
PUT /api/brands/{brandId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/brands/{brandId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランドの施設を一覧表示
ブランドに属する施設の簡易な一覧(ID、名前、リージョンの ISO コード)を 返します。ブランド設定の対象施設の選択欄に使用されます。
パラメーター
brandId `string` (必須) 施設を一覧表示するブランドの IDエンドポイント
GET /api/brands/{brandId}/facilities
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/facilities \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの組織に関連付けられたすべてのブランドの一覧を返します。
エンドポイント
GET /api/clubs/{club}/brands
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/brands \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのカレンダーの種類の一覧を返します
エンドポイント
GET /api/programs/calendars/calendar-types
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/programs/calendars/calendar-types \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの KYC アセットを返します。
パラメーター
clubId `string` (必須) クラブの ID。 key `string` (必須) KYC アセットのキー。エンドポイント
GET /api/clubs/{clubId}/kyc-assets/{key}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets/{key} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの KYC 情報を返します。
エンドポイント
GET /api/clubs/{clubId}/kyc
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの KYC 情報を更新します。
パラメーター
clubId `string` (必須) 更新するクラブの ID。 body `object` (必須)エンドポイント
PUT /api/clubs/{clubId}/kyc
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの KYC アセットをアップロードします。
パラメーター
clubId `string` (必須) クラブの ID。 file `string` (必須) アップロードするファイル。エンドポイント
POST /api/clubs/{clubId}/kyc-assets
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubId}/kyc-assets \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの設定を返します。
エンドポイント
GET /api/club/preferences/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの設定のエントリを作成または更新します。
リクエスト本文
エンドポイント
POST /api/club/preferences/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/club/preferences/:club \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
契約のある会員の一覧を返します。
エンドポイント
GET /api/clubpass/user/email/exist/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/email/exist/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
契約のある会員の一覧を返します。
エンドポイント
GET /api/clubpass/user/phone/exist/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubpass/user/phone/exist/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定したクラブに属するユーザーの一覧を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 IDエンドポイント
GET /api/clubs/{club}/members
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/members \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した日にクラブが営業しているかどうかを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 date `string` (必須) 確認する日付(Unix 形式)エンドポイント
GET /api/club-busy-hours/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club-busy-hours/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Example Club の Web サイトに表示される、クラブのすべてのメタデータを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/clubs/clubpage/clubdata/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/clubpage/clubdata/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
フロントエンドから提供された新しいデータで、クラブのメタデータを更新します。 リクエスト本文にないフィールドはそのまま保持されます(SET も REMOVE も行いません)。 `null` または空の文字列として送信したフィールドは消去されます。専用の部分統合の処理を使用するには `updateAll: false` を指定します。いずれの場合も、呼び出し元は自分が管理していない フィールドを送信する必要はありません。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 body `string` (必須) 更新するクラブデータの JSON オブジェクト。エンドポイント
POST /api/clubs/clubpage/updateclub/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/clubpage/updateclub/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しいカスタムトラッキングのレコードを追加
パラメーター
club `string` (必須) クラブの ID body `string` (必須) カスタムトラッキングの項目の配列。エンドポイント
POST /api/clubs/{club}/customtracking
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のクラブのカスタムトラッキングを返します
エンドポイント
GET /api/clubs/customtracking/:clubID
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/customtracking/:clubID \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
カスタムトラッキングのエントリを更新
パラメーター
club `string` (必須) クラブの ID body `string` (必須) 更新するクラブデータの JSON オブジェクト。エンドポイント
POST /api/clubs/{club}/customtracking/update
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/customtracking/update \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブの既定の店頭画像を返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/clubs/{club}/default-shop-front
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/default-shop-front \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設で利用できるドアを一覧表示
パラメーター
body `object` (必須) 更新するクラブデータの JSON オブジェクト。エンドポイント
POST /api/clubs/integrations/doors/:facilityId
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の特定のドアを解錠
パラメーター
body `object` (必須) 更新するクラブデータの JSON オブジェクト。エンドポイント
POST /api/clubs/integrations/doors/unlock
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/doors/unlock \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定したクラブのすべての連携とその設定の詳細を返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/clubs/integrations/list/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/integrations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
フロントエンドから提供された新しいデータで、クラブのメタデータを更新します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 body `object` (必須) 更新するクラブデータの JSON オブジェクト。エンドポイント
POST /api/clubs/integrations/update/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/integrations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
クラブがヨーロッパの国にあるかどうかを真偽値で返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 date `string` (必須) 確認する日付(Unix 形式)エンドポイント
GET /api/clubs/is-eu/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/is-eu/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
データベース内のすべてのクラブの概要の一覧を返します。
エンドポイント
GET /api/clubs/listclubs
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/listclubs \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した日にクラブが営業しているかどうかを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 date `string` (必須) 確認する日付(Unix 形式)エンドポイント
GET /api/clubs/{club}/open-on/{date}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/open-on/{date} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
DynamoDB からクラブのレビューを取得します。
パラメーター
club `string` (必須) クラブ IDエンドポイント
GET /api/clubs/{club}/reviews
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
DynamoDB からクラブのレビュー設定を取得します。
パラメーター
facilityId `string` (必須) 施設 IDエンドポイント
GET /api/clubs/{club}/reviews-settings
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
DynamoDB のクラブのレビュー設定を更新します。
パラメーター
club `string` (必須) クラブ IDエンドポイント
PUT /api/clubs/{club}/reviews-settings
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビュー設定の自動公開を再度有効にします。
パラメーター
club `string` (必須) クラブ IDエンドポイント
PUT /api/clubs/{club}/reviews/publish-recent-reviews
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビューを公開します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 review `string` (必須) 公開するレビューの内部 ID。エンドポイント
PUT /api/clubs/{club}/reviews/{review}/publish
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/publish \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビュー設定の自動公開を再度有効にします。
パラメーター
club `string` (必須) クラブ IDエンドポイント
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビューへの返信を、レビューの掲載元(Google など)を通じて投稿します。
パラメーター
club `string` (必須) 施設 ID reviewId `string` (必須) Performance Hub のレビュー ID(club-social-reviews テーブルで照会されます) body `string` (必須)エンドポイント
POST /api/clubs/{club}/reviews/{reviewId}/respond
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{reviewId}/respond \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビューの公開を停止します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 review `string` (必須) 公開を停止するレビューの内部 ID。エンドポイント
PUT /api/clubs/{club}/reviews/{review}/un-publish
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/{review}/un-publish \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Performance Hub のデータベースから、指定したクラブに属するオーナーの一覧を返します
パラメーター
clubID `string` (必須) アクセスするクラブの内部 IDエンドポイント
GET /api/clubs/{clubID}/owners
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/owners \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のすべての会員プランを返します。
パラメーター
facilityId `string` (必須) 施設の内部 IDエンドポイント
GET /api/facilities/membership-plans/:facilityId
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
会員プランのレコードを更新します。
パラメーター
facilityId `string` (必須) 施設の内部 ID body `object` (必須) 更新する会員プランのデータの JSON オブジェクト。エンドポイント
PUT /api/facilities/membership-plans/:facilityId
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/facilities/membership-plans/:facilityId \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビュー設定の自動公開を再度有効にします。
パラメーター
club `string` (必須) クラブ IDエンドポイント
PUT /api/clubs/{club}/reviews/publish-recent-reviews
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews/publish-recent-reviews \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
レビュー設定の自動公開を再度有効にします。
パラメーター
club `string` (必須) クラブ IDエンドポイント
PUT /api/clubs/{club}/reviews-settings/re-enable-auto-publish
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{club}/reviews-settings/re-enable-auto-publish \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
利用可能なすべての通貨の一覧を返します
エンドポイント
GET /api/currencies
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/currencies \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
IP アドレスを使って地理的な位置を返します。
パラメーター
ip `string` (必須) 検索する IP アドレスエンドポイント
GET /api/geo/ip-location/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-location/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
現在のユーザーの IP に基づいて、地理的な位置を返します。
エンドポイント
GET /api/geo/ip-current
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/geo/ip-current \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
リクエスト元クライアントのパブリック IP アドレスのみを返します(位置情報の検索やサードパーティ API の呼び出しは行いません)。AI エージェントのアプレットで、ブラウザーのパブリック IP とデバイスが報告した WAN IP を比較し、同じネットワーク上にあるかどうかを判定するために使用します。
エンドポイント
GET /api/geo/client-ip
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/geo/client-ip \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
電話番号パーサー。
パラメーター
body `string` (必須) 解析する電話番号の JSON オブジェクト。エンドポイント
POST /api/phone/parser
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/phone/parser \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
マスタークロックのデバイスを返します
パラメーター
club_id `string` (必須) デバイスを追加するクラブの内部 ID。エンドポイント
GET /api/clubs/{club_id}/smart-club/health-check/master-clock
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/master-clock \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
マスターの Sonos デバイスを返します
パラメーター
club_id `string` (必須) デバイスを追加するクラブの内部 ID。エンドポイント
GET /api/clubs/{club_id}/smart-club/health-check/sonos-mqtt
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/sonos-mqtt \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定したクラブの緊急通報デバイスのバッテリー残量低下の通知を取得します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/clubs/{club}/smart-club/health-check/low-battery-duress
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/low-battery-duress \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ネットワーク分析のデータを返します
パラメーター
club_id `string` (必須) デバイスを追加するクラブの内部 ID。エンドポイント
GET /api/clubs/{club_id}/smart-club/health-check/network-analysis
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/network-analysis \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定したクラブの緊急通報デバイスのバッテリー残量低下の通知を送信します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club}/smart-club/health-check/send-low-battery-duress-notifs \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デバイスの種類ごとに、デバイスの速度テストのデータを返します
パラメーター
club_id `string` (必須) デバイスを追加するクラブの内部 ID。エンドポイント
GET /api/clubs/{club_id}/smart-club/health-check/speed-test
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{club_id}/smart-club/health-check/speed-test \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の掲載情報のインサイトを取得します。既定では掲載先全体の日次合計を集計して返します。`publisherId` を指定した場合は、その掲載先だけを返します。
パラメーター
facilityId `string` (必須) publisherId `string` (任意) startDate `string` (必須) endDate `string` (必須)エンドポイント
GET /api/facilities/{facilityId}/directory-insights
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランドの掲載情報のインサイトを、すべての掲載先について集計して取得します。
パラメーター
brandId `string` (必須) startDate `string` (必須) endDate `string` (必須)エンドポイント
GET /api/brands/{brandId}/directory-insights
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-insights \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の上位検索キーワード(ブランド名を含むものと含まないものの内訳付き)。現在は Google ビジネス プロフィールから取得しています。
パラメーター
facilityId `string` (必須) publisherId `string` (任意) 既定値は "google" です。現在サポートされているのは Google のみです。 startDate `string` (必須) endDate `string` (必須) limit `string` (任意)エンドポイント
GET /api/facilities/{facilityId}/directory-search-keywords
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランドの上位検索キーワードを、すべての施設について集計して返します。
パラメーター
brandId `string` (必須) startDate `string` (必須) endDate `string` (必須) limit `string` (任意)エンドポイント
GET /api/brands/{brandId}/directory-search-keywords
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/brands/{brandId}/directory-search-keywords \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Q&A を一覧表示します。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/facilities/{facilityId}/qna
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
質問に回答します。
エンドポイント
POST /api/facilities/{facilityId}/qna/{questionId}/answer
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
回答を削除します。
エンドポイント
DELETE /api/facilities/{facilityId}/qna/{questionId}/answer/{answerId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/facilities/{facilityId}/qna/{questionId}/answer/{answerId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の組織で有効になっている掲載先を、接続状態とともに返します。
パラメーター
facilityId `string` (必須) organisationId `string` (必須)エンドポイント
GET /api/facilities/{facilityId}/directory-publishers/resolved
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/directory-publishers/resolved \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Access Policies を取得します
既存のアクセス設定は、初回の読み取り時に同等の適用済みポリシーへ自動的に変換されます。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/policies/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
楽観的なリビジョンチェックを使って Access Policies を置き換えます
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/policies/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
Access Policy を作成します
パラメーター
facilityId `string` (必須)エンドポイント
POST /api/door-access/policies/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Access Policy を 1 件更新します
パラメーター
facilityId `string` (必須) policyId `string` (必須)エンドポイント
PATCH /api/door-access/policies/{facilityId}/{policyId}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Access Policy を 1 件削除します
パラメーター
facilityId `string` (必須) policyId `string` (必須) revision `integer` (必須)エンドポイント
DELETE /api/door-access/policies/{facilityId}/{policyId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しい固定 ID で Access Policy を複製します
パラメーター
facilityId `string` (必須) policyId `string` (必須)エンドポイント
POST /api/door-access/policies/{facilityId}/{policyId}/duplicate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての Access Policies の影響を受けるユーザーとドアの数を数えます
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/policies/{facilityId}/impacts
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/impacts \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Access Policy の影響を受けるユーザーとドアの数を数えます
パラメーター
facilityId `string` (必須) policyId `string` (必須)エンドポイント
GET /api/door-access/policies/{facilityId}/{policyId}/impact
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/policies/{facilityId}/{policyId}/impact \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のドアコントローラーを、適用されるドア/ゲートアクセスのルールとともに一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/doors/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアごとの上書き設定、アイコン、デバイス側の設定を保存します
DGA 管理アプレットがドアについて編集するすべての項目を書き込む、唯一のエンドポイントです。 - `accessRulesOverride` / `geofenceOverride`:`null` を渡すとクリアされ、施設の既定値に戻ります。 - `icon`:固定のワイヤーキーです(services/door-access/door-icons.js を参照)。不明な値は 400 になります。 - `holdTimeSeconds`(1~30)、`maintenanceMode`(`off` / `force-open` / `force-closed`)、`doorLocation`(自由入力、64 文字以内)、`playNotificationSoundOnRelayToggle`(ブール値)、`autoUnlockSchedule`(週単位の時間枠グリッド)。これらは以前は Device Management 専用のフィールドでしたが、現在はアプレットからその場で書き込めるため、管理者は日常的な設定変更のためにドアのドロワーを離れる必要がありません。 デバイス側のフィールドが変更された場合、このルートは対応する Balena 環境変数(`RELAY_NOTIFICATION_SOUND`、`DOOR_MAINTENANCE_MODE`、`DOOR_AUTO_UNLOCK_SCHEDULE`)も送信し、`unlockUpdates` MQTT コマンドを発行するため、デバイスは次回の Balena 環境更新を待たずに新しい設定を取得します。ベストエフォートで動作し、Balena に一時的に到達できない場合でもレスポンスは 200 になります。
パラメーター
facilityId `string` (必須) doorId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/doors/{facilityId}/{doorId}/override
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/override \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ドアのドロワーの再読み込み通知用の、軽量な Balena ステータス確認
DGA アプレットのドロワーは、管理者がドアを開いたときにこれを遅延取得し、「saving will reload the controller」の適切な文言を表示します。通常は「a few seconds」の文言を、リリース更新も保留中の場合はより強い「several minutes」の文言を表示します。 `balena.models.device.get()` から得たフラットなスナップショットを返します。失敗した場合は(5xx を返さずに)`data: null` を返すため、Balena の障害時も通知の文言が簡略化されるだけで、ドロワーは問題なく開きます。
パラメーター
facilityId `string` (必須) doorId `string` (必須)エンドポイント
GET /api/door-access/doors/{facilityId}/{doorId}/device-status
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/device-status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
管理者による上書き:アプレットからドアを解錠します
ドアの現在の `holdTimeSeconds` を使ってリレーを短時間切り替え、`admin-override` の監査行を ph-door-app-access-events に書き込むため、この操作は Access Logs で誰が行ったかを確認できます。`maintenanceMode === 'force-closed'` であっても常に成功します。これは管理者用の非常手段です。 MQTT の発行が送信された時点で 200 を返します。confirmed / failed / timed_out の状態はここでは待機しません(従来の /api/devices/door-controllers + /api/ics/devices/command のフローも送信しっぱなしです)。
パラメーター
facilityId `string` (必須) doorId `string` (必須)エンドポイント
POST /api/door-access/doors/{facilityId}/{doorId}/unlock
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/unlock \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアコントローラーで位置確認用のビープ音を鳴らします
`beep` MQTT コマンドを発行し、コントローラーから中程度の長さのビープ音を 3 回鳴らします(各約 500 ms、間隔約 350 ms、合計約 2 秒)。管理者が現地でドアコントローラーの場所を物理的に特定するために使用します。従来の Device Management のボタンは約 30 秒間短いビープ音を連続で鳴らしますが、ファームウェアのブザードライバーは確実に最初の 1 回しか鳴らせないため、アプレットはより短く確実なパターンを送信します。アクセス制御に影響しない診断操作のため、監査行は作成されません。
パラメーター
facilityId `string` (必須) doorId `string` (必須)エンドポイント
POST /api/door-access/doors/{facilityId}/{doorId}/identify
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/identify \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアコントローラーをリモートで再起動します
従来の Device Management の「Remotely Reboot Device」ボタンと同じ、送信しっぱなしの `rebootDevice` MQTT コマンドを発行します。ただし `door-gate-access` モジュールで制御されるため、DGA 管理者は別途 `device-management` の権限を付与されていなくても、ドアのドロワーの Advanced セクションからコントローラーを再起動できます。発行が送信された時点で 200 を返します。再起動中、デバイスはオフラインになります。
パラメーター
facilityId `string` (必須) doorId `string` (必須)エンドポイント
POST /api/door-access/doors/{facilityId}/{doorId}/reboot
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/doors/{facilityId}/{doorId}/reboot \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のユーザーアクセス行を一覧表示します
施設の削除されていないユーザーアクセス行をすべて返します。クライアント側のフィルター(source、search、accessEnabled、hasGrants)をサポートします。フェーズ 4 のサーバー側の `hideExcluded` 処理は、ハイブリッドの権限評価が実装された時点で追加されます。現時点ではこのパラメーターは受け付けられますが、すべての行が返されます。
パラメーター
facilityId `string` (必須) search `string` (任意) source `string` (任意) accessEnabled `string` (任意) hasGrants `string` (任意) hideExcluded `boolean` (任意) true の場合、この施設でいつどのドアも通過できない同期済みユーザー(source != manual)は非表示になります。レスポンスには `hidden: { count, sample }` エンベロープが含まれます。エンドポイント
GET /api/door-access/users/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設にユーザーアクセス行を手動で作成します
`source: 'manual'` を持つ新しい行を作成します。指定した電話番号またはメールアドレスがこの施設の既存の行に対応している場合は、`existingUserId` とともに 409 を返します。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/users/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
ユーザーアクセス行を 1 件取得します
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
GET /api/door-access/users/{facilityId}/{userId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーアクセス行を部分的に更新します
ID や権限に関するフィールドを任意の組み合わせで編集します。任意のフィールドをクリアするには `null` を渡します。新しい電話番号またはメールアドレスが同じ施設の別の行と重複する場合は 409 を返します。 `appMessage` は、PUT /api/door-access/rules/{facilityId} の施設全体のメッセージと同じ形式(本文、重要度、任意のリンク、任意の開始・終了スケジュール)を受け付けます。モバイルアプリは、対象のユーザーに対してのみダッシュボードにこれを表示します。
パラメーター
facilityId `string` (必須) userId `string` (必須)リクエスト本文
エンドポイント
PATCH /api/door-access/users/{facilityId}/{userId}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザーアクセス行を論理削除します
行を `deleted: true` にし、アクセスを無効にします。userId と監査ログの紐付けは保持されます。管理者は手動で再度有効にできます。
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
DELETE /api/door-access/users/{facilityId}/{userId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーのドアごとのアクセス根拠
各ドアについて、現在の確定的な権限(`allowedNow`、`allowedVia`、`deniedReason`)と、Access Policies、恒久的な権限付与、ポリシーのスケジュール、管理者の時間枠による権限付与、マッピング済みの最新のパートナーソースの時間枠について設定された経路を返します。現在および次回の利用可能時間と、ソースの鮮度も返します。ドアの blockAllAccess とメンテナンスは、すべての許可経路より先に評価されます。
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
GET /api/door-access/users/{facilityId}/{userId}/effective-access
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/effective-access \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
CSV インポートからユーザーアクセス行を一括作成します
1 回のリクエストで複数の `source: 'manual'` 行を作成します。単一の作成と同じ検証、電話番号とメールアドレスの正規化、施設ごとの重複チェック、自動メッセージ、および(任意の)招待ロジックを再利用します。行は順番に処理されるため、後の行が先に作成された行と重複する場合は重複として報告されます。権限付与は、解決済みのドア/グループ ID として指定します(名前から ID への解決はクライアントが行います)。時間枠による権限付与は一括処理では意図的に拒否されるため、インポート後にユーザーごとの置き換えエンドポイントで追加する必要があります。行ごとに例外をスローすることはなく、各行の結果は個別に報告されます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/users/{facilityId}/bulk
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザーアクセス行の追加の Access Time Window 権限付与を置き換えます
置き換えるのは `timeWindowGrants` だけで、恒久的な `grants` と連携の `sourceTimeWindows` は変更されません。各項目にはスコープ(`facilityWide`、`doors`、または `groups`)と、絶対指定または週単位の `window` が必要です。空の配列を送信すると、管理者の時間枠がすべて明示的にクリアされます。
パラメーター
facilityId `string` (必須) userId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/users/{facilityId}/{userId}/time-window-grants
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/time-window-grants \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザーアクセス行を固定し、ソースからの同期による更新を止めます
`decoupledFromSource: true` を設定し、連携が所有する `sourceTimeWindows` をすべてクリアします。管理者が /recouple でフラグをクリアするまで、同期(cron とストリーム)はこの行をログに記録してスキップします。
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
POST /api/door-access/users/{facilityId}/{userId}/decouple
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/decouple \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーアクセス行をソースからの同期による更新に再接続します
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
POST /api/door-access/users/{facilityId}/{userId}/recouple
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/recouple \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーのドア/ゲートアクセスアプリのリフレッシュトークンをすべて取り消します
ユーザーの保存済みの電話番号またはメールアドレスで取り消します(リフレッシュトークンのテーブルは `sha256(plaintext)` をキーとしており、byMobilePhone / byEmail の GSI によって 1 人のユーザーから展開して削除できます)。別の施設で同じ電話番号またはメールアドレスを共有している他のユーザーもサインアウトされます。
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
POST /api/door-access/users/{facilityId}/{userId}/logout
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/logout \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーにドア/ゲートアクセスアプリの招待メールを(再)送信します
ユーザーの保存済みメールアドレスにアプリダウンロードの招待メールを強制送信します(メールのみで、SMS は送信しません)。自動同期で使用される対象条件と送信済みのチェックは無視されます。これは管理者による明示的な操作です。ユーザーにメールアドレスが登録されていない場合は 400 を返します。
パラメーター
facilityId `string` (必須) userId `string` (必須)エンドポイント
POST /api/door-access/users/{facilityId}/{userId}/resend-invite
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/{userId}/resend-invite \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アプリ招待の一括送信の受信者をプレビューします
アプリ招待メールを受け取るユーザーを算出します。基本の対象は、メールアドレスがあり、アプリを一度も使用していない(`appLastSeenAt` が空の)削除されていないすべてのユーザーです。既定では、現在アクセス権があり(ルールの一致または権限付与)、一度も招待されていないユーザーに絞り込まれます。`includeAlreadyInvited` と `includeNoAccess` で対象を広げられます。メールは送信されず、件数、少数のサンプル、および実行エンドポイント用の候補の userIds を返します。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/users/{facilityId}/bulk-invite/preview
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
複数のユーザーにアプリ招待メールを送信します
指定した各 userIds にアプリダウンロードの招待メールを送信します(1 リクエストあたり最大 50 件。クライアントがプレビューの候補一覧全体を分割して送信します)。各ユーザーは送信時に再検証され、存在しなくなった行、メールアドレスがない行、またはプレビュー後にアプリを使用した行はスキップされます(失敗にはなりません)。ユーザーごとの結果が個別に報告されるため、クライアントは送信済み、失敗、スキップを集計できます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/users/{facilityId}/bulk-invite
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/users/{facilityId}/bulk-invite \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のドアグループを一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/door-groups/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアグループを作成します
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/door-groups/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
ドアグループを 1 件取得します
パラメーター
facilityId `string` (必須) groupId `string` (必須)エンドポイント
GET /api/door-access/door-groups/{facilityId}/{groupId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ドアグループを更新します
パラメーター
facilityId `string` (必須) groupId `string` (必須)リクエスト本文
エンドポイント
PATCH /api/door-access/door-groups/{facilityId}/{groupId}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ドアグループを論理削除します
パラメーター
facilityId `string` (必須) groupId `string` (必須)エンドポイント
DELETE /api/door-access/door-groups/{facilityId}/{groupId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/door-access/door-groups/{facilityId}/{groupId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設に設定されているパートナー連携を一覧表示します
ph-facility-partner-config と ph-partners カタログを結合して、施設のパートナー連携(id、名前、ロゴ、有効状態)を返します。ドア/ゲートアクセスのスコープで提供されるため、external-integrations へのアクセス権がない管理者でも、パートナーのバッジとパートナーごとの同期一覧を表示できます。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/partners/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/partners/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のユーザーアクセス同期設定を読み取ります
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/sync-config/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のユーザーアクセス同期設定を更新します
受け付けるのは管理者が制御するフィールド(`enabled`、`requireIdentifier`、およびパートナーの `partners` マップ)だけです。`lastRunAt` と `lastRunCounts` は同期エンジン自体が書き込みます。 `partner.partners` は partnerId をキーとするパートナーごとの有効化マップです(オプトアウト方式)。全体の `partner.enabled` がオンの場合、ここに明示的な `{ enabled: false }` エントリがない限り、パートナーは同期されます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/sync-config/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/sync-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のユーザーごとの自動メッセージ設定を読み取ります
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/auto-messages/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のユーザーごとの自動メッセージ設定を更新します
ルールを保存した後、施設のすべてのユーザーアクセス行をすぐに再評価するため、既存のユーザーにも自動メッセージがすぐに適用または解除されます。手動のメッセージと切り離された行は変更されません。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/auto-messages/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
自動メッセージのバックグラウンド再評価処理の状態
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/auto-messages/{facilityId}/sweep-status
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/auto-messages/{facilityId}/sweep-status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のユーザーアクセス同期をオンデマンドで実行します
施設で有効なすべてのソース(パートナー / CCTV)を同期的に処理し、重複排除の段階的な照合によって ph-door-access-users の行を揃えます。ソースごとの件数を返します。無効なソースは省略されずに `skippedSyncDisabled: 1` として表示されるため、UI は両方の行を一貫して表示できます。
パラメーター
facilityId `string` (必須)エンドポイント
POST /api/door-access/sync/{facilityId}/run
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/run \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パートナー同期された行の一括削除をドライランでプレビューします
論理削除されるユーザーアクセス行の件数とサンプル、および実行エンドポイントにそのまま返す必要がある confirmToken を返します。データは変更されません。アクセスログは一切影響を受けません。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/sync/{facilityId}/bulk-delete/preview
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete/preview \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
パートナー同期された行の一括削除(論理削除)を実行します
対象範囲内のパートナー同期されたユーザーアクセス行をすべて論理削除します。プレビューで返された confirmToken が必要です。プレビュー後に対象が変わった場合はトークンが一致せず、リクエストは拒否されます(409)。その場合、管理者は内容を再確認します。アクセスログは保持されます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/door-access/sync/{facilityId}/bulk-delete
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/bulk-delete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
最近のユーザーアクセス同期のアクティビティ(トラブルシューティング用ログ)
施設の最新の同期結果(作成 / スキップ / 無効)を理由とともに返すため、管理者はメンバーが同期された理由、または同期されなかった理由を確認できます。新しい順に表示されます。
パラメーター
facilityId `string` (必須) limit `integer` (任意)エンドポイント
GET /api/door-access/sync/{facilityId}/log
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/sync/{facilityId}/log \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のドア/ゲートアクセスのイベントを一覧表示します
モバイル、管理者による上書き、外部の Partner API による解錠イベントを、新しい順の 1 つのフィードで返します。
パラメーター
facilityId `string` (必須) from `integer` (任意) to `integer` (任意) limit `integer` (任意)エンドポイント
GET /api/door-access/events/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/events/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
管理者のテストモードのピンに対してジオフェンス評価をドライランで実行します
リクエスト本文
エンドポイント
POST /api/door-access/geofence/test
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/door-access/geofence/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のオンボーディングと有効化の状態を取得します
アプレットの「Get Started」ランディングと、セットアップの進捗バナーで使用されます。ドアとユーザーのリアルタイムの件数、導出された 2 つの主要ステップ(ユーザーが存在する、ドアが存在する)、保存されている任意の「reviewed」フラグ、および施設が有効化されているかどうか(両方の主要ステップが完了)を返します。施設が初めて有効化されたときに、activatedAt のタイムスタンプが記録されます。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/door-access/onboarding/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の任意のオンボーディング「reviewed」フラグを更新します
管理者がチェックした任意のセットアップチェックリストのフラグ(アクセスルール、同期設定、ジオフェンス)を保存します。主要ステップと有効化はデータの件数からリアルタイムで導出されるため、ここでは設定できません。更新後のオンボーディング状態全体を返します。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/door-access/onboarding/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/door-access/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/lead-events
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/lead-events \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/page-views
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/page-views \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/referrers
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/referrers \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/socials
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/socials \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/top-cities
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/top-cities \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/total-page-views
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/total-page-views \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のアナリティクスデータを JSON レスポンスで返します。
パラメーター
clubId `string` (任意) アナリティクスデータを取得する施設の ID。 fromDate `string` (任意) 取得するアナリティクスデータの開始日。 toDate `string` (任意) 取得するアナリティクスデータの終了日。エンドポイント
GET /clubs/{clubId}/analytics/traffic
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/clubs/{clubId}/analytics/traffic \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
フロントエンドの「analytics」ページにある Google Analytics の埋め込みグラフ用に、一時的なフロントエンド JWT(JSON Web Token)を生成します。
エンドポイント
GET /api/ga/onetimetoken
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ga/onetimetoken \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設に有効なメンバーがいる場合、「The Training Camp」のダッシュボードウィジェットを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/reporting/apps/widgets/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/apps/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
未確認の施設の休日をすべて返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/reporting/club/{club}/unreviewed-holidays
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/club/{club}/unreviewed-holidays \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
未確認の施設の休日をすべて確認済みにします。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
PUT /api/reporting/club/{club}/review-holidays
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/reporting/club/{club}/review-holidays \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
過去 12 か月間の月ごとの内訳を含む KPI レポートを CSV 形式で返します。*NOTE* システム内のすべての施設を対象に 1 つのレポートを作成します。GymMaster に過剰な負荷がかかるため、複数回を並行して実行しないでください。
パラメーター
months `string` (任意) 取得する月数(現在の日付から数えます。既定値は 12)エンドポイント
GET /api/reporting/gymmaster/all-clubs-kpi-report
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/all-clubs-kpi-report \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設の MMS の収益グラフを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 range `string` (任意) 取得する範囲の日数(現在の日付からさかのぼって数えます)エンドポイント
GET /api/reporting/gymmaster/revenuegraph/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/revenuegraph/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設のダッシュボード用 MMS(Member Management System)のデータと分析結果を返します。データには、GymMaster/Perfect Gym の統計情報と、システムが収集するその他の内部指標が含まれます。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 range `string` (任意) 取得する範囲の日数(現在の日付からさかのぼって数えます)エンドポイント
GET /api/reporting/gymmaster/widgets/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/gymmaster/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設のダッシュボード用 Myzone ウィジェットのデータを返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/reporting/myzone/widgets/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/myzone/widgets/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ステータスページや監視エンドポイント(内部ツール「Uptime Kuma」で設定)の 1 つ以上でオフラインと判定されたサービスのオブジェクトを返します。
エンドポイント
GET /api/reporting/statuspage/events
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/statuspage/events \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
今後 7 日間のトレーニング予約を返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/reporting/clubs/{club}/workout-bookings
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/reporting/clubs/{club}/workout-bookings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の過去の休日の一覧を返します。
パラメーター
clubId `string` (任意) クラブ ID fromDate `string` (任意) 返す休日の範囲の開始日を表す Unix タイムスタンプ。 toDate `string` (任意) 返す休日の範囲の終了日を表す Unix タイムスタンプ。エンドポイント
GET /api/clubs/{clubId}/historical-holidays
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/historical-holidays \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設に関連付けられたデバイスの自動化を返します。
パラメーター
club `string` (必須) デバイスを一覧表示するクラブの内部 ID。エンドポイント
GET /api/ics/automations/list/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ics/automations/list/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のディスプレイまたはデバイスのデバイス設定を更新します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/ics/automations/update/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/automations/update/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
物理的なスクリーンデバイスまたはコンピューターを施設に追加し、関連付けます。
パラメーター
club `string` (必須) デバイスを追加するクラブの内部 ID。 body `string` (必須) 関連付ける新しいスクリーンの JSON オブジェクト。エンドポイント
POST /api/ics/devices/add/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/add/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パラメーターに基づいて、新しい SSID に接続するようデバイスに指示します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/ics/devices/changewifi/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/changewifi/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のディスプレイまたはデバイスのデバイス設定を更新します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/ics/devices/command/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/command/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のデバイスのスクリーンに URL または Web ページを読み込みます。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
POST /api/ics/devices/loadurl/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/devices/loadurl/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のディスプレイまたはデバイスのデバイス設定を更新します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
PUT /api/ics/devices/update/{club}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/update/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ディスプレイまたはデバイスの名前を変更します。登録情報のみを変更します。update エンドポイントとは異なりデバイスには何も送信しないため、サポートが終了したソフトウェアビルドを実行しているスクリーンでも使用できます。
パラメーター
club `string` (必須) デバイスが属する施設の内部 ID。 body `string` (必須) 名前変更パラメーターの JSON オブジェクト。エンドポイント
PUT /api/ics/devices/rename/{club}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/ics/devices/rename/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した日付に基づいて、施設のウィジェットとオフラインメディアへのリンクを取得します。
パラメーター
club `string` (必須) テンプレートコンテンツを変更する施設の内部 ID。 date `string` (必須) ウィジェットの URL を返す日付。`YYYY-MM-DD` 形式を使用します。エンドポイント
GET /api/ics/external-resources/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ics/external-resources/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した日付に基づいて、施設のウィジェットとオフラインメディアへのリンクを取得します。
パラメーター
club `string` (必須) テンプレートコンテンツを変更する施設の内部 ID。エンドポイント
GET /api/ics/list-scheduled-workouts/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ics/list-scheduled-workouts/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設のテンプレートコンテンツを変更します。
パラメーター
club `string` (必須) テンプレートコンテンツを変更する施設の内部 ID。 body `string` (必須) 変更後のテンプレートコンテンツの JSON オブジェクト。エンドポイント
POST /api/ics/loadprogram/{club}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ics/loadprogram/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のディスプレイまたはデバイスのプログラム設定を取得します。
パラメーター
club `string` (必須) プログラムデータを取得する施設の内部 ID。エンドポイント
GET /api/ics/programs/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のディスプレイまたはデバイスのプログラム設定を更新します。
パラメーター
club `string` (必須) デバイスを更新する施設の内部 ID。 body `string` (必須) 更新パラメーターの JSON オブジェクト。エンドポイント
PUT /api/ics/programs/{club}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/ics/programs/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
プログラム設定の選択肢を取得します。
エンドポイント
GET /api/ics/programs/options/{facilityID}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ics/programs/options/{facilityID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
RAG コンテキストを使ったチャットです。ツールにはアクセスできず、ナレッジベースから直接ナレッジを取得できるシンプルな API のリクエスト/レスポンス用ツールのみを使用できます。
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)リクエスト本文
エンドポイント
POST /api/llm/chat
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/chat \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ベクトルストアから記事の埋め込みを削除し、埋め込みの追跡状態を更新します
リクエスト本文
エンドポイント
DELETE /api/llm/delete-article
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/delete-article \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
組織とステータスで埋め込みトラッカーのレコードを一覧表示します
パラメーター
organisationId `string` (任意) 組織 ID(省略した場合は自動で解決されます) status `string` (必須) 絞り込むステータス(in_queue、done、anomaly、fail、deleted のいずれかである必要があります) Limit `string` (任意) 1 ページあたりの最大項目数 LastEvaluatedKey `string` (任意) ページネーション用の DynamoDB LastEvaluatedKey の JSONエンドポイント
GET /api/llm/embedding-track/by-org-and-status
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org-and-status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織で埋め込みトラッカーのレコードを一覧表示します(任意でリソースタイプで絞り込み)
パラメーター
organisationId `string` (任意) 組織 ID(省略した場合は自動で解決されます) resourceType `string` (任意) 任意のリソースタイプ(例:"article")。指定すると、resourceTypeId が "{type}#" で始まるものに絞り込みます。 Limit `string` (任意) 1 ページあたりの最大項目数 LastEvaluatedKey `string` (任意) ページネーション用の DynamoDB LastEvaluatedKey の JSONエンドポイント
GET /api/llm/embedding-track/by-org
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/embedding-track/by-org \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のベクトルデータベースのコレクションを初期化します
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)エンドポイント
POST /api/llm/init-org
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/init-org \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ナレッジベースでのセマンティック検索
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)リクエスト本文
エンドポイント
POST /api/llm/semantic-search
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/semantic-search \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
キューに入っている記事の埋め込み処理をストリーミングで開始し、進捗をリアルタイムで更新します
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)エンドポイント
POST /api/llm/start-embedding-stream
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/start-embedding-stream \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
記事の埋め込みをベクトルデータベースに追加または更新します
現在の状態に基づいて記事の埋め込みを処理します。 - 記事が非公開(unpublished)または非公開設定(private)の場合:埋め込みを削除します - 記事が公開済み(published)かつ公開設定(public)の場合:全文で再度埋め込みます 常に記事の本文全体が必要です。
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)リクエスト本文
エンドポイント
POST /api/llm/upsert-embeddings
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/upsert-embeddings \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
組織と任意のステータスで記事の埋め込みを一括削除するテスト用エンドポイント
パラメーター
organisationId `string` (任意) 組織 ID(省略した場合はユーザーのコンテキストから自動で解決されます) status `string` (任意) 絞り込むステータス(任意。省略した場合は、ステータスに関係なく組織のすべての記事を削除します) hardDelete `string` (任意) 埋め込みの追跡レコードを物理削除する(true)か、ステータスを更新して論理削除する(false)かエンドポイント
DELETE /api/llm/test/batch-delete-by-status
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/batch-delete-by-status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テキストを変換してチャンクに分割し、詳細な統計情報を返します
テキストを変換してチャンクに分割し、文字数、割合、品質指標などチャンクの分布に関する詳細な統計情報を返すテスト用エンドポイントです。チャンク分割の効果を評価するのに役立ちます。
リクエスト本文
エンドポイント
POST /api/llm/test/transform-chunk
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/transform-chunk \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
組織のベクトルインデックス内のベクトルの総数を取得します
現在のユーザーの組織について、ベクトルインデックス内のすべてのベクトルを数えるテスト用エンドポイント
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)エンドポイント
GET /api/llm/test/vector-count
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-count \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の articleId のすべてのベクトルをベクトルインデックスから削除します
現在のユーザーの組織のベクトルインデックスから、特定の articleId に関連付けられたすべてのベクトルを削除するテスト用エンドポイントです。
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます) articleId `string` (必須) ベクトルを削除する articleId dryRun `string` (任意) true の場合、実際には削除せず、削除される内容のみを表示しますエンドポイント
DELETE /api/llm/test/vector-delete-article
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/llm/test/vector-delete-article \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのインデックスを一覧表示して Vector SDK をテストします
Vector SDK の接続を確認し、ベクトルバケット内のすべてのインデックスを一覧表示するテスト用エンドポイント
エンドポイント
GET /api/llm/test/vector-indices
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-indices \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織の Vector インデックスを初期化します
現在のユーザーの組織用に Vector バケットとインデックスを作成します
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます)エンドポイント
POST /api/llm/test/vector-init-index
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/llm/test/vector-init-index \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の articleId のすべてのベクトルメタデータを取得します
ベクトルインデックスから、特定の articleId のすべてのベクトルチャンクとそのメタデータを取得するテスト用エンドポイントです。記事がどのようにチャンク分割されて保存されているかを確認するのに役立ちます。絞り込みはベクトルストアサービスが処理します。
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます) articleId `string` (必須) ベクトルメタデータを取得する記事の IDエンドポイント
GET /api/llm/test/vector-metadata-by-article
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-metadata-by-article \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ベクトルインデックスから最近のベクトルをメタデータとともに取得します
現在のユーザーの組織のベクトルインデックスから、最新の 10 件のベクトルをメタデータとともに(ベクトルデータは含めずに)取得するテスト用エンドポイントです。メタデータの構造を確認するのに役立ちます。
パラメーター
organisationId `string` (任意) 組織 ID(指定しない場合は自動で検出されます) limit `string` (任意) 返す最近のベクトルの数(最大 100)エンドポイント
GET /api/llm/test/vector-recent
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/llm/test/vector-recent \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Marketing Manager/Designer 用のアセットを S3 ストレージにアップロードします。
パラメーター
file `string` (任意) アップロードするファイルまたはアセットの名前。エンドポイント
POST /api/marketing/design/static/download
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/marketing/design/static/download \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アセットマネージャーに読み込む個々のアセットを JSON 形式で返します。
パラメーター
id `string` (必須) 取得するアセットの ID。 organisationId `string` (必須) アセットが属する施設の組織 ID。エンドポイント
GET /api/marketing/assets/get/{id}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get/{id} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのデザインアセットを返します。
パラメーター
body `string` (必須) 保存する施設データの JSON オブジェクト。 organisationId `string` (必須) アセットが属する施設の組織 ID。 useCache `string` (任意) search `string` (任意) 名前またはタグでアセットを絞り込む検索クエリ。 brand `string` (任意) アセットを絞り込むブランド。 tag `string` (任意) アセットを絞り込むタグ。エンドポイント
GET /api/marketing/assets/get
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/get \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のマーケティング印刷物アセットを 1 ページ分返します。関連性検索とページ単位のページネーション(総件数付き)には Algolia を使用し、Algolia を利用できない場合は DynamoDB に切り替えます。
パラメーター
organisationId `string` (必須) アセットが属する施設の組織 ID。 search `string` (任意) 名前またはタグでアセットを絞り込む検索クエリ。 brand `string` (任意) アセットを絞り込むブランド。 tag `string` (任意) アセットを絞り込むタグ。 page `string` (任意) 取得するページ番号(0 から始まります)。 limit `string` (任意) 1 ページあたりのアセット数(最大 300)。 useCache `string` (任意) false の場合、Algolia を使わずに DynamoDB に直接クエリします。エンドポイント
GET /api/marketing/assets
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アセットマネージャーからアップロードされた、利用可能なアセットの一覧を返します。
パラメーター
organisationId `string` (必須)エンドポイント
GET /api/marketing/assets/list
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/assets/list \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アセットを追加または保存します。
パラメーター
body `string` (必須) 保存する施設データの JSON オブジェクト。 organisationId `string` (必須) アセットが属する施設の組織 ID。エンドポイント
PUT /api/marketing/assets/save
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/assets/save \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Marketing Manager/Designer 用のアセットを S3 ストレージにアップロードします。
パラメーター
file `string` (任意) アップロードするファイルまたはアセットの名前。 organisationId `string` (任意) アセットが属する組織の ID。エンドポイント
POST /api/marketing/assets/upload
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/marketing/assets/upload \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のすべてのカスタムページの一覧を返します。
パラメーター
organisationId `string` (必須) カスタムページを返す組織の内部 ID。エンドポイント
GET /api/marketing/custom-pages
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のカスタムページを追加または更新します。
パラメーター
organisationId `string` (必須) カスタムページを返す組織の内部 ID。 body `object` (必須) 追加または更新するカスタムページのデータ。エンドポイント
PUT /api/marketing/custom-pages
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のすべてのカスタムページの一覧を返します。
パラメーター
facilityId `string` (必須) カスタムページを返す施設の内部 ID。エンドポイント
GET /api/facilities/{facilityId}/marketing/custom-pages
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/marketing/custom-pages \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の施設 ID について、エクスポートまたはレンダリング済みのすべてのデザインを返します。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。 sort `string` (任意) デザインの並べ替えに使うフィルター。'oldest'、'newest'、'design' をサポートします。エンドポイント
GET /api/marketing/designs/{club}/exports
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/exports \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
エディターに読み込むデザインの個々の HTML コンテンツを JSON 形式で返します。
パラメーター
id `string` (必須) 取得するデザインの ID。エンドポイント
GET /api/marketing/designs/get/{id}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/get/{id} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
マーケティング・印刷デザインとデザインテンプレートの入力マッピングの一覧を返します
パラメーター
clubId `string` (必須) リクエストを行う施設の内部 ID。 availableFeatures `string` (任意) 特定の機能を持つすべての項目を返します brand `string` (任意) ブランドでデザインを絞り込みます features `string` (任意) 機能に基づいて結果を絞り込みますエンドポイント
GET /api/marketing/designs/input-mapping/{clubId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/input-mapping/{clubId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設で利用可能なデザインの一覧を返します。これらは、Hub のマーケティング/印刷エディターで作成したデザイン(Print Designs)内で使用できます。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。 designAdmin `string` (任意) すべてのデザインデータを返します(管理者向けの表示で、ユーザーが管理者である必要があります)。 brand `string` (任意) ブランドでデザインを絞り込みますエンドポイント
GET /api/marketing/designs/{club}/list
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/{club}/list \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのデザインのサムネイルとプレビューを強制的にレンダリング(または再レンダリング)します(主に S3 などの「上流」のアセットを変更した場合に使用します)。**NOTE** この関数は X 分に 1 回しか呼び出せません(レンダリングがすでに実行中の場合も呼び出せません)。これは、すべてのデザインのレンダリングでサーバーに過剰な負荷がかからないようにするためです。
エンドポイント
GET /api/marketing/designs/render-all-thumbnails
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/render-all-thumbnails \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Dynamic Design のレンダリングを開始します
パラメーター
body `string` (必須) デザインのレンダリング処理に送信する施設データの JSON オブジェクト。エンドポイント
POST /api/marketing/designs/dynamic/render-design
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/marketing/designs/dynamic/render-design \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
デザインを追加、保存、または更新します。
パラメーター
body `string` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
PUT /api/marketing/designs/{club}/save
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/{club}/save \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
読み込む個々の静的デザインを JSON 形式で返します
パラメーター
id `string` (必須) 取得する静的デザインの ID。エンドポイント
GET /api/marketing/designs/static/get/{id}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/designs/static/get/{id} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
静的デザインテンプレートを追加、保存、または更新します。
パラメーター
body `string` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
PUT /api/marketing/designs/static/{club}/save
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/designs/static/{club}/save \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーが設定した変数をシステムから削除します。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。 body `string` (必須) 削除する変数の ID を含む JSON。エンドポイント
DELETE /api/marketing/variables/{club}/delete
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/marketing/variables/{club}/delete \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設で利用可能な変数の一覧を返します。これらは、Hub のマーケティング/印刷エディターで作成したデザイン(Print Designs)内で使用できます。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。エンドポイント
GET /api/marketing/variables/{club}/list
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/marketing/variables/{club}/list \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した施設に、ユーザー定義の「変数」を 1 つ新規作成します。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。 body `string` (必須) 新しい変数の JSON オブジェクト。エンドポイント
POST /api/marketing/variables/{club}/new
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/marketing/variables/{club}/new \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
オブジェクトの配列を使って、1 つ以上のデザイン変数をシステムに追加、保存、または更新します。
パラメーター
club `string` (必須) リクエストを行う施設の内部 ID。 body `string` (必須) 追加または更新する 1 つ以上の JSON オブジェクトの配列(1 回の API リクエストで複数の項目やオブジェクトを保存できます)。エンドポイント
PUT /api/marketing/variables/{club}/save
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/marketing/variables/{club}/save \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
サインイン中のユーザー向けの MCP ドキュメントマニフェストを返します
アプリ内の `/mcp-docs` ページで使用されます。MCP サーバーの URL、サポートされている認証ヘッダー、呼び出し元の ID と管理者フラグ、および絞り込まれたツール一覧を返します(`/mcp/tools/list` と同じ方法で絞り込まれるため、ドキュメントページには呼び出し元が実際に使用できないツールは表示されません)。
エンドポイント
GET /api/mcp/docs-manifest
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/mcp/docs-manifest \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの同意書を作成します。
パラメーター
body `object` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
POST /api/member-agreements/contracts-tna/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
同意書の一覧を返します。
エンドポイント
GET /api/member-agreements/contracts-tna/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの同意書を削除します。
エンドポイント
DELETE /api/member-agreements/contracts-tna/:club/:id
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の同意書を返します。
エンドポイント
GET /api/member-agreements/contracts-tna/:club/:id
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの同意書を更新します。
パラメーター
body `object` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
PATCH /api/member-agreements/contracts-tna/:club/:id
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/member-agreements/contracts-tna/:club/:id \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の既定の同意書を取得します。
パラメーター
body `object` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
GET /api/member-agreements/default-tna/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の既定の同意書を設定します。
パラメーター
body `object` (必須) 保存する施設データの JSON オブジェクト。エンドポイント
POST /api/member-agreements/default-tna/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/member-agreements/default-tna/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
グローバルまたはリージョンの同意書の一覧を返します。
エンドポイント
GET /api/member-agreements/global-tna/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/global-tna/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
契約のある会員の一覧を返します。
エンドポイント
GET /api/member-agreements/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/member-agreements/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トレーニングキャンプのアプリ用に、シーズンごとの施設メンバーの一覧を返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 season `string` (任意) 絞り込むトレーニングキャンプのシーズン。 userIds `string` (任意) 絞り込むユーザー ID の配列。 useCache `string` (任意) キャッシュを使用するかどうか。 isUserMemberInfo `string` (任意) 有効にすると、userIds に基づいてデータを絞り込み(ユーザー ID は 1 つだけ指定することを推奨します)、リーダーボードやユーザー設定などの必要なデータを含めます。エンドポイント
GET /api/members-leads/trainingcamp/club/season-members/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/trainingcamp/club/season-members/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トレーニング予約の見込み客を複数削除します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 body `string` (必須)エンドポイント
DELETE /api/members-leads/workout-booking/club/leads/{club}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のトレーニング予約の見込み客の一覧を返します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 all `string` (任意) すべての見込み客を表示するか、今後の予定のみを表示するか。エンドポイント
GET /api/members-leads/workout-booking/club/leads/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トレーニング予約の見込み客を更新します。
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。 body `string` (必須)エンドポイント
PUT /api/members-leads/workout-booking/club/leads/{club}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トレーニング予約の見込み客のフラグ状態を切り替えます。
パラメーター
club `string` (必須) クラブの内部 ID。 body `string` (必須)エンドポイント
PATCH /api/members-leads/workout-booking/club/leads/{club}/flag
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/members-leads/workout-booking/club/leads/{club}/flag \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設で有効なモジュールを取得します
階層(施設の設定 → ブランドのモジュール → 組織のモジュール)を解決して、施設で利用可能なすべてのモジュールを返します。パフォーマンス向上のため、結果は Redis にキャッシュされます。
パラメーター
facilityId `string` (必須) モジュールを解決する施設の IDエンドポイント
GET /api/facilities/{facilityId}/modules
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/facilities/{facilityId}/modules \
-H "x-api-key: YOUR_API_KEY"
レスポンス
[]
モジュールカタログと、サイドメニューの表示設定を返します。 フロントエンドのレンダラーがユーザーごとに表示を判断できるよう、モジュールの一覧はすべて返されます。 アクセス制御は引き続き `auth.checkModuleAccess()` によってサーバー側で適用されます。
エンドポイント
GET /api/modules
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/modules \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知のカテゴリーを取得します。
エンドポイント
GET /api/notification/categories
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/notification/categories \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既読の通知を削除します。
エンドポイント
DELETE /api/club/notification/consumed/:club
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージを作成します。
エンドポイント
POST /api/club/notification/consumed/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既読の通知の配列を返します。
エンドポイント
GET /api/club/notification/consumed/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/consumed/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージを削除します。
エンドポイント
DELETE /api/club/notification/messages/:club
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージの配列を返します。
エンドポイント
GET /api/club/notification/messages/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージを更新します。
エンドポイント
PATCH /api/club/notification/messages/:club
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージを作成します。
パラメーター
body `string` (必須)エンドポイント
POST /api/club/notification/messages/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/messages/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設ごとに通知の閲覧者を取得します。
エンドポイント
POST /api/club/notification/viewers/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/club/notification/viewers/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーごとに通知のカテゴリーを取得します。
エンドポイント
GET /api/club/notification/user-categories/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/notification/user-categories/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
通知メッセージを作成します。
エンドポイント
POST /api/notification/webhook
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/notification/webhook \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
HTML5 プッシュ用の VAPID 公開鍵を取得します
ブラウザーのプッシュ通知の購読を作成するために使用する VAPID 公開鍵を返します。
エンドポイント
GET /html5-push/vapid-public-key
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/html5-push/vapid-public-key \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
HTML5 プッシュ通知の購読を保存または更新します
現在のユーザーのブラウザーのプッシュ通知の購読を保存します。
リクエスト本文
エンドポイント
POST /html5-push/subscribe
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/html5-push/subscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
HTML5 プッシュ通知の購読を削除します
現在のユーザーのブラウザーのプッシュ通知の購読を削除します。
リクエスト本文
エンドポイント
POST /html5-push/unsubscribe
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/html5-push/unsubscribe \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
呼び出し元ユーザーの拠点のオンボーディング状態を取得します
施設のオンボーディングの 2 つの部分、つまりセットアップ(詳細情報と製品の選択。施設の設定に保存されます)と支払い(SaaS 課金の payment-settings レコードからリアルタイムで導出されます)を返します。さらに、アプリのシェルが表示制御に使う、呼び出し元ごとの `required` フラグも返します。テクノロジースタックの拠点のみが対象で、ビジネススタックの拠点では常に required=false が返されます。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/onboarding/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のオンボーディングウィザードの途中経過を保存します
ウィザードの途中の状態(製品の選択、「Other」の自由入力、確認済みのビジネス詳細、現在のステップ)を保存するため、ページを再読み込みしたり中断したりしても、ユーザーは中断した箇所から再開できます。完了の記録は行いません。complete エンドポイントを参照してください。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/onboarding/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/onboarding/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
オンボーディングウィザード用に、AI による事前入力の候補を生成します
既存の施設、ブランド、組織のコンテキストを使用して、施設の詳細(紹介文、整形済みの連絡先フィールド)、製品選択の候補、短いパーソナライズされたヒントを提案します。結果は Redis に 7 日間キャッシュされます。候補は参考情報のみで、クライアントは編集可能な確認フォームに表示します。常に 200 を返します。AI を利用できない場合は `suggestions` が null になり、ウィザードは機能を縮小して動作します。
パラメーター
facilityId `string` (必須)エンドポイント
POST /api/onboarding/{facilityId}/ai-prefill
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/ai-prefill \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
拠点のオンボーディングのセットアップ部分を完了します
確定した選択内容と詳細を検証し、ビジネス詳細を施設のレコードに保存します。製品の選択内容から施設のテクノロジーメニューのレイアウトを初期設定し(カスタマイズされたレイアウトがすでにある場合を除く)、セットアップの完了を記録します。支払い部分は意図的にここでは完了できません。SaaS 課金の payment-settings レコードからリアルタイムで導出されるため、このエンドポイントを呼び出してもカード登録の必須要件を回避することはできません。更新後の状態を返します。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/onboarding/{facilityId}/complete
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/onboarding/{facilityId}/complete \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設に対して、宣言済みのパートナー連携アクションを実行します
パートナーレコード(ph-partners.actions[])で宣言された「Run integration」アクションを、施設を対象に実行します。Redis の単一実行ロックにより、同じアクションと施設に対する手動実行が同時に行われるのを防ぎます。
パラメーター
partnerId `string` (必須) actionId `string` (必須)リクエスト本文
エンドポイント
POST /api/partners/{partnerId}/actions/{actionId}/run
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
パートナー連携アクションの実行状態を読み取ります
手動実行が現在進行中かどうか(単一実行ロックが保持されているか)と、最後にリクエストされた実行を返します。設定画面のボタンがポーリングに使用します。
パラメーター
partnerId `string` (必須) actionId `string` (必須) facilityId `string` (必須)エンドポイント
GET /api/partners/{partnerId}/actions/{actionId}/status
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/{partnerId}/actions/{actionId}/status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ブランドのすべてのパートナー設定を取得します
パラメーター
brandId `string` (必須) ブランド IDエンドポイント
GET /api/partners/brand-config/{brandId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/brand-config/{brandId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
[]
ブランドのパートナー設定を作成または更新します
パラメーター
body `object` (必須)エンドポイント
PUT /api/partners/brand-config
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/partners/brand-config \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
GymMaster 連携データを facility-partner-config に移行します
gymMasterAPI と gymMasterDomain のフィールドを持つすべての施設を照会し、 対応する facility-partner-config レコードを作成または更新します。これは 1 回限りの移行用エンドポイントです。
パラメーター
partnerId `string` (必須) 移行するすべてのレコードに使用する GymMaster のパートナー ID dryRun `boolean` (任意) true の場合、データベースには書き込まず、移行される内容のみを報告しますエンドポイント
GET /api/partners/migrate-gymmaster
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/migrate-gymmaster \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のパートナーを有効にします。
パラメーター
partnerId `string` (必須) パートナーの IDエンドポイント
POST /api/partners/organisation/enable
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/organisation/enable \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のパートナーを一覧表示します。組織管理者には自分の組織のパートナーのみが表示されます。
エンドポイント
GET /api/partners/organisation
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/organisation \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のパートナーを削除します。
パラメーター
keyId `string` (必須) 組織のパートナーのキー ID organisationId `string` (必須) パートナーの組織 IDエンドポイント
DELETE /api/partners/organisation/{keyId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/organisation/{keyId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
組織のパートナーのアクセスモードとモジュールを更新します。
パラメーター
keyId `string` (必須) 組織のパートナーのキー ID organisationId `string` (必須) パートナーの組織 ID partnerId `string` (必須) パートナー ID accessMode `string` (必須) パートナーのアクセスモード modules `string` (任意) LIMITED アクセスモード用のモジュールの一覧エンドポイント
PUT /api/partners/organisation/update-access
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/partners/organisation/update-access \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のチェックインを作成します
チェックインオブジェクトの配列を受け取り、処理のために Partner API に転送します。 1 リクエストあたりのチェックインは最大 25 件です。
リクエスト本文
エンドポイント
POST /api/partners/check-ins
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/check-ins \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のパートナー設定を削除します
施設のパートナー連携の設定を削除します
パラメーター
facilityId `string` (必須) 施設 ID(club ID) partnerId `string` (必須) パートナー IDエンドポイント
DELETE /api/partners/facility-config/{facilityId}/{partnerId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId}/{partnerId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のすべてのパートナー設定を一覧表示します
指定した施設に設定されているすべてのパートナー連携を返します
パラメーター
facilityId `string` (必須) 施設 ID(club ID)エンドポイント
GET /api/partners/facility-config/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/facility-config/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のパートナー設定を作成または更新します
施設のパートナー連携の設定を追加または更新します
リクエスト本文
エンドポイント
POST /api/partners/facility-config
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/facility-config \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
memberId でメンバーを削除します
memberId を使用して、既存のメンバーレコードを削除します。
パラメーター
memberId `string` (必須) メンバーの一意の識別子エンドポイント
DELETE /api/partners/members/{memberId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
memberId でメンバーを更新します
memberId を使用して、既存のメンバーレコードを更新します。
パラメーター
memberId `string` (必須) メンバーの一意の識別子リクエスト本文
エンドポイント
PUT /api/partners/members/{memberId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/partners/members/{memberId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
メンバー同期操作の状態を取得します
POST /api/partners/members または DELETE /api/partners/members/{memberId} で開始した、非同期のメンバー作成・削除操作の現在の状態を返します。フロントエンドはこのエンドポイントをポーリングし、従来の一覧のポーリングと名前の照合によるフローを置き換えます。 NOTE マルチテナント分離のルールでは行単位の partnerId/facilityId のスコープ設定が必須ですが、これはフェーズ 3a.1 の強化 PR に延期されています。operationIds は 128 ビットの UUID で、このルートはすでに `external-integrations` モジュールのアクセス権で制御されています。有効な operationId と管理モジュールへのアクセス権があれば、誰でもその状態を照会できます。
パラメーター
operationId `string` (必須) POST/DELETE から返された UUIDエンドポイント
GET /api/partners/members/operations/{operationId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/partners/members/operations/{operationId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のメンバーを作成または更新します
メンバーオブジェクトの配列を受け取り、処理のために Partner API に転送します。 1 リクエストあたりのメンバーは最大 25 件です。
リクエスト本文
エンドポイント
POST /api/partners/members
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/members \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設の会員プランを作成または更新します
会員プランオブジェクトの配列を受け取り、処理のために Partner API に転送します。 1 リクエストあたりの会員プランは最大 25 件です。
リクエスト本文
エンドポイント
POST /api/partners/membership-plans
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/partners/membership-plans \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
新しいロールを作成します
パラメーター
body `string` (必須) ロールオブジェクトエンドポイント
POST /api/roles
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべてのロールの一覧を返します
エンドポイント
GET /api/roles
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/roles \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ID でロールを削除します
エンドポイント
DELETE /api/roles/{roleId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ID でロールを更新します
パラメーター
body `string` (必須) ロールオブジェクトエンドポイント
PUT /api/roles/{roleId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/roles/{roleId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
SaaS 課金の請求書に新しい追加明細を作成します
パラメーター
organisationId `string` (任意) 追加明細を作成する組織の ID body `string` (任意) リクエストの本文エンドポイント
POST /api/saas-billing/additional-line-items
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
SaaS 課金の請求書の追加明細の一覧を返します
パラメーター
organisationId `string` (必須) 組織 IDエンドポイント
GET /api/saas-billing/additional-line-items
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の SaaS 課金の請求書の追加明細の一覧を返します
エンドポイント
GET /api/clubs/{clubId}/saas-billing/additional-line-items
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubId}/saas-billing/additional-line-items \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
SaaS 課金の請求書の追加明細を更新します
パラメーター
itemId `string` (必須) 更新する追加明細の ID body `string` (必須) リクエストの本文エンドポイント
PUT /api/saas-billing/additional-line-items/{itemId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/additional-line-items/{itemId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
Your Rates 用の Cloud Agent の合算時間料金
提供されている Cloud Agent のサイズを、1 つに合算した時間料金(ホスティングとソフトウェア)とともに返します。内訳は含まれません。usedPlans は、この施設が過去 30 日間に実行した SKU です。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/cloud-agent-rates
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/cloud-agent-rates \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
インポートした月次レポートを削除します
パラメーター
club `string` (任意) クラブ ID reportId `string` (任意) レポート IDエンドポイント
DELETE /api/saas-billing/extended-access/monthly-usage-report/{reportId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{reportId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の最新の CCTV ストレージレポートを取得します
保存されている課金ログ(最大過去 31 日間)から、施設の最新の日次 CCTV ストレージのスナップショットを返します。totalStorage、date、およびストレージ関連の料金が含まれます。
パラメーター
club `string` (必須) クラブ IDエンドポイント
GET /api/saas-billing/extended-access/latest-cctv-storage-report/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/latest-cctv-storage-report/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
指定した期間の施設の請求書を PDF で返します。
パラメーター
club `string` (任意) クラブ ID month `string` (任意) レポートの月を表す数値。1 = 1 月、2 = 2 月、以下同様。 year `string` (任意) レポートの年を表す数値。例:2021エンドポイント
GET /api/saas-billing/extended-access/monthly-usage-report/:club/invoice
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club/invoice \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
選択した利用月のプラットフォーム請求書 PDF をまとめた ZIP です。単一の .../invoice エンドポイントの一括版で、課金とコスト管理アプレットの Invoices & Receipts タブにある複数選択ダウンロードで使用されます。
パラメーター
club `string` (任意) クラブ ID months `string` (任意) YYYY-MM 形式の利用月またはレポート月のカンマ区切りリスト(最大 24)エンドポイント
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/invoices.zip \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
複数の利用月の月次利用レポートを 1 回の呼び出しで返します。課金とコスト管理アプレットの Cost History グラフと前月比の差分で使用されます。まだ利用がない月は report: null を返します(単月エンドポイントの 404 → UI では $0 と同じ扱いです)。
パラメーター
club `string` (任意) クラブ ID months `string` (任意) YYYY-MM 形式の利用月のカンマ区切りリスト(最大 12)エンドポイント
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/batch
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/batch \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の月次レポートをインポートします。
パラメーター
club `string` (任意) クラブ IDエンドポイント
PUT /api/saas-billing/extended-access/usage-report/:club
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての施設の過去 30 日間の CCTV 利用状況の CSV レポートを返します。
エンドポイント
GET /api/saas-billing/extended-access/usage-report/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のその月の日次レポートをすべて一覧表示します。
パラメーター
club `string` (任意) クラブ ID month `string` (任意) レポートの月を表す数値。1 = 1 月、2 = 2 月、以下同様。 year `string` (任意) レポートの年を表す数値。例:2021エンドポイント
GET /api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/{club}/daily-reports \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
管理者用に、インポートした月次レポートの一覧を返します
パラメーター
organisationId `string` (必須) 組織 IDエンドポイント
GET /api/saas-billing/extended-access/usage-report/imported
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/usage-report/imported \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての施設の過去 30 日間の CCTV 利用状況の CSV レポートを返します。
パラメーター
club `string` (任意) クラブ ID month `string` (任意) レポートの月を表す数値。1 = 1 月、2 = 2 月、以下同様。 year `string` (任意) レポートの年を表す数値。例:2021エンドポイント
GET /api/saas-billing/extended-access/monthly-usage-report/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/monthly-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の期間ごとの利用レポートを返します。
パラメーター
club `string` (任意) クラブ ID periodStart `string` (任意) 期間の開始日(YYYY-MM-DD 形式) periodEnd `string` (任意) 期間の終了日(YYYY-MM-DD 形式)エンドポイント
GET /api/saas-billing/extended-access/periodical-usage-report/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/extended-access/periodical-usage-report/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
種類の異なる課金書類の PDF を 1 つにまとめた ZIP です。プラットフォームの請求書(利用月ごと)、SaaS ウォレットのチャージの領収書、Model Router のチャージの領収書を含みます。統合された Invoices & Receipts タブ用の、種類別の invoices.zip / receipts.zip エンドポイントの一括版です。リクエストしたすべての月と ID は、施設が所有する書類に対応している必要があります。不正な値が 1 つでもあると、まとめ全体が失敗します。
パラメーター
clubID `string` (必須) invoiceMonths `string` (任意) YYYY-MM 形式の利用月のカンマ区切りリスト walletIds `string` (任意) SaaS ウォレットのチャージ取引 ID のカンマ区切りリスト aiIds `string` (任意) Model Router のチャージ取引 ID のカンマ区切りリストエンドポイント
GET /api/clubs/{clubID}/saas-billing/documents.zip
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/documents.zip \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
月次レコードにメモを追加します
パラメーター
recordID `string` (任意) 取得するレコードの ID note `string` (任意) レコードに追加するメモエンドポイント
POST /api/saas-billing/monthly-records/{recordID}/notes
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID}/notes \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
SaaS 課金の月次レコードの一覧を返します
パラメーター
club `string` (任意) 取得する施設の ID month `string` (任意) YYYY-MM 形式の課金月エンドポイント
GET /api/saas-billing/monthly-records/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
失敗した、または 3D セキュアが必要な SaaS 課金の月次レコードの一覧を返します
パラメーター
clubID `string` (任意) 失敗した月次レコードを取得する施設の IDエンドポイント
GET /api/clubs/:clubID/saas-billing/flagged
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/flagged \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の SaaS 課金の月次レコード(請求書台帳)をすべて、新しい課金月から順に返します。管理者専用の paginate-monthly-records エンドポイントの施設単位版で、課金とコスト管理アプレットにある顧客向けの「Invoices & Receipts」タブで使用されます。
パラメーター
clubID `string` (任意) 月次レコードを一覧表示する施設の IDエンドポイント
GET /api/clubs/{clubID}/saas-billing/monthly-records
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
SaaS 課金の月次レコードの一覧を返します
パラメーター
organisationId `string` (任意) 組織 ID month `string` (任意) MM 形式の月。 year `string` (任意) YYYY 形式の年。 filters `string` (任意) データテーブルが作成したクエリ文字列のフィルター。 order `string` (任意) データテーブルが作成したクエリ文字列。エンドポイント
GET /api/saas-billing/monthly-records
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/monthly-records \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の失敗した支払いを再試行します
パラメーター
clubID `string` (任意) 失敗した月次レコードを取得する施設の IDエンドポイント
PUT /api/clubs/:clubID/saas-billing/retry-failed-payments
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/:clubID/saas-billing/retry-failed-payments \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
月次レコードを更新します
パラメーター
recordID `string` (任意) 取得するレコードの ID status `string` (任意) レコードの更新後のステータスエンドポイント
PUT /api/saas-billing/monthly-records/{recordID}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/saas-billing/monthly-records/{recordID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
支払いが成功したかどうかを確認し、レコードのステータスを更新します
パラメーター
clubID `string` (任意) recordID `string` (任意) 取得するレコードの IDエンドポイント
PUT /api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/monthly-records/{recordID}/validate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支払い方法を追加します。
パラメーター
clubID `string` (任意)エンドポイント
POST /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支払い方法を Stripe と同期します。
パラメーター
clubID `string` (任意)エンドポイント
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支出予算と、算出された月初来の実績および予測を返します。
パラメーター
clubID `string` (任意)エンドポイント
GET /api/clubs/{clubID}/saas-billing/budget
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支出予算を作成、更新、またはクリアします。
パラメーター
clubID `string` (任意) body `object` (任意)エンドポイント
PUT /api/clubs/{clubID}/saas-billing/budget
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/budget \
-H "x-api-key: YOUR_API_KEY"
施設の支払い設定から支払い方法を削除します。
パラメーター
clubID `string` (任意) paymentMethodID `string` (任意)エンドポイント
DELETE /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支払い設定を取得します。
パラメーター
clubID `string` (任意)エンドポイント
GET /api/clubs/{clubID}/saas-billing/payment-settings
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支払い設定を更新します。
パラメーター
clubID `string` (任意) lockedOut `boolean` (任意) 施設がシステムからロックアウトされるかどうか。 pauseBilling `boolean` (任意) 施設の自動課金を一時停止するかどうか。 customerID `string` (任意) これを追加すると、施設の Stripe 顧客 ID が更新されます。 deleteSourceID `string` (任意) Stripe から元の顧客を削除するかどうか。エンドポイント
PUT /api/clubs/{clubID}/saas-billing/payment-settings
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
すべての施設の最も古い課金月を取得します。
パラメーター
clubID `string` (任意)エンドポイント
GET /api/saas-billing/payment-settings/earliest-billed-month
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/earliest-billed-month \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の課金ロックアウトを解除できるアカウントを段階的に一覧表示します。まず課金モジュールを持つユーザーを、該当者がいない場合に限り組織管理者を表示します。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/lockout-contacts
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/lockout-contacts \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
システム内のすべての施設をページ単位で取得し、各施設の顧客 ID を返します。
パラメーター
clubID `string` (任意) organisationId `string` (任意) 組織 IDエンドポイント
GET /api/saas-billing/payment-settings/customer-ids
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/payment-settings/customer-ids \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の主な支払い方法を設定します。
パラメーター
clubID `string` (任意)エンドポイント
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{paymentMethodID}/primary \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の課金プロフィールを更新します。
パラメーター
clubID `string` (任意) invoiceEntity `string` (任意) billingContacts `string` (任意) KYC 連絡先の UUID の一覧 ccEmails `string` (任意) 請求書の CC に含めるメールアドレスの一覧エンドポイント
PUT /api/clubs/{clubID}/saas-billing/payment-settings/billing-profile
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/billing-profile \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の支払い方法を更新します。
パラメーター
clubID `string` (任意) cardID `string` (任意)エンドポイント
PUT /api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/payment-settings/payment-methods/{cardID} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
CSV エクスポート用に、該当するすべての製品料金と追加明細を施設ごとの内訳で返します。ユーザーがアクセスできるすべての施設について、グローバル/リージョン/施設の上書き階層を解決します。
パラメーター
organisationId `string` (必須) アクセス制御用の組織 IDエンドポイント
GET /api/saas-billing/charges-config/export
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/export \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定の対象の料金設定を返します
パラメーター
clubId `string` (任意) 料金設定を取得する施設の IDエンドポイント
GET /api/saas-billing/charges-config/{clubId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/saas-billing/charges-config/{clubId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設の組織の課金概要です。有効な支払者の範囲、予定されている統合の変更、および呼び出し元が統合の切り替えを管理できるかどうかを含みます。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/org/summary
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/summary \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
統合された組織の月次レコード(明細書)を、施設ごとの内訳とともに新しい順に返します。組織の最初の統合月が確定するまでは空です。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/org/monthly-records
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/org/monthly-records \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
前払いウォレットの概要です。残高、月初来の利用による引き落とし、自動チャージの設定、課金方法を含みます。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/wallet
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ウォレットの台帳を新しい順に返します。組織単位のウォレットには、すべての施設の行が含まれます(各行には発生元の clubID が含まれます)。
パラメーター
clubID `string` (必須) limit `string` (任意) types `string` (任意) 取引の種類のカンマ区切りリスト from `string` (任意) to `string` (任意) cursor `string` (任意) 前のページの nextCursorエンドポイント
GET /api/clubs/{clubID}/saas-billing/wallet/transactions
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ウォレットの 1 件の取引(チャージとクレジット)について、ブランド表示付きの PDF 領収書を返します。
パラメーター
clubID `string` (必須) txId `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/{txId}/receipt.pdf \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
選択したウォレットのチャージ取引について、ブランド表示付きの PDF 領収書をまとめた ZIP です。すべての ID は、この施設のウォレットに属するチャージ(カードまたは請求書)である必要があります。利用による引き落としと調整には領収書がないため、拒否されます。
パラメーター
clubID `string` (必須) ids `string` (必須) カンマ区切りの取引 ID(最大 50)エンドポイント
GET /api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/transactions/receipts.zip \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
保存されている SaaS 課金用のカードに請求し、前払い残高を追加します。3DS が必要な場合は requires_action と clientSecret を返します。
パラメーター
clubID `string` (必須) body `object` (任意)エンドポイント
POST /api/clubs/{clubID}/saas-billing/wallet/topup
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
アプレットで 3DS 認証が完了した後、ウォレットのチャージを確定します。べき等です。
パラメーター
clubID `string` (必須)エンドポイント
POST /api/clubs/{clubID}/saas-billing/wallet/topup/confirm
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup/confirm \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の自動チャージのルール(課金プロフィールの上書き行に保存されます)を更新します。
パラメーター
clubID `string` (必須) body `object` (任意)エンドポイント
PATCH /api/clubs/{clubID}/saas-billing/wallet/auto-topup
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/auto-topup \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設のウォレットのチャージ請求書(請求書による支払い方法)を新しい順に返します。
パラメーター
clubID `string` (必須)エンドポイント
GET /api/clubs/{clubID}/saas-billing/wallet/invoices
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/invoices \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
参照番号による振込でのチャージ請求書をリクエストします(請求書による支払い方法のみ)。保留中の請求書はウォレットごとに 1 件までで、2 回目のリクエストでは既存の請求書が alreadyPending=true とともに返されます。
パラメーター
clubID `string` (必須) body `string` (任意) { amountCents: number }エンドポイント
POST /api/clubs/{clubID}/saas-billing/wallet/topup-invoice
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/clubs/{clubID}/saas-billing/wallet/topup-invoice \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の注文の一覧を返します。
パラメーター
facilityID `string` (任意)エンドポイント
GET /api/store/facilities/:facilityID/orders
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/store/facilities/:facilityID/orders \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設で利用可能な製品の一覧を返します。
パラメーター
clubID `string` (必須) search `string` (任意) limit `string` (任意) page `string` (任意) ページネーション用のページ番号(1 から始まります)。エンドポイント
GET /api/store/clubs/{clubID}/products
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/store/clubs/{clubID}/products \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Stripe レコードを一覧表示します。
パラメーター
club `string` (必須) fromDate `string` (任意) Unix タイムスタンプ toDate `string` (任意) Unix タイムスタンプ socketID `string` (必須) ソケットリクエストの一意の識別子エンドポイント
GET /api/club/{club}/stripe/records
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/records \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
支払いインテントをキャンセルします
パラメーター
club `string` (必須) paymentIntent `string` (任意)エンドポイント
GET /api/club/{club}/stripe/payment-intent/:paymentIntent/cancel
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/payment-intent/:paymentIntent/cancel \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
埋め込みコンポーネント用の Stripe Account Session を作成します
接続アカウントの Stripe Account Session を作成します。Connect の埋め込みコンポーネント(異議申し立て、入金、アカウント管理、書類)の初期化に使用する client_secret を返します。
リクエスト本文
エンドポイント
POST /api/stripe/account-session
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/stripe/account-session \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
接続アカウントの Stripe KYC ページへの 1 回限りのリンクを生成します。
パラメーター
club `string` (必須)エンドポイント
GET /api/club/{club}/stripe/generate-kyc-token
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/generate-kyc-token \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
KYC プロセスの一環として、Stripe 接続アカウントのアカウント詳細を取得します。
パラメーター
club `string` (必須)エンドポイント
GET /api/club/{club}/stripe/connect-account-details
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/club/{club}/stripe/connect-account-details \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設 ID に基づいて、すべてのチケット履歴を返します
パラメーター
club `string` (必須) アクセスするクラブの内部 ID。エンドポイント
GET /api/ticketing/clubtickets/{club}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/clubtickets/{club} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
部署を取得します
エンドポイント
GET /api/ticketing/departments
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/departments \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
1 件のチケットの詳細を取得します
パラメーター
user `string` (必須) ユーザーのメールアドレス。 ticketNumber `string` (必須) アクセスするチケットの 6 桁の ID。 club `string` (必須) 選択した施設の ID。エンドポイント
GET /api/ticketing/ticket-details/:ticketNumber/:club
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/ticket-details/:ticketNumber/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トピックを取得します
エンドポイント
GET /api/ticketing/topics
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/topics \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
現在ログインしているユーザーが作成したすべてのチケットを取得します。この値は Google SSO サービスから提供されるヘッダーに基づいて設定されます。
パラメーター
user `string` (必須) 現在ログインしているユーザーのメールアドレスエンドポイント
GET /api/ticketing/usertickets
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/ticketing/usertickets \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しいチケットを作成します
パラメーター
club `string` (必須) 選択した施設の ID。エンドポイント
POST /api/ticketing/clubticket/:club
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/clubticket/:club \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
新しいチケットを作成します
パラメーター
subject `string` (必須) チケットの件名。 message `string` (必須) チケットのメッセージ全文。エンドポイント
POST /api/ticketing/userticket
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/userticket \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
既存のチケットへの返信を作成します
パラメーター
subject `string` (必須) チケットの件名。 message `string` (必須) チケットのメッセージ全文。エンドポイント
POST /api/ticketing/user-reply
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/ticketing/user-reply \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの設定を取得します
エンドポイント
GET /api/user-preferences
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーの設定を更新します
パラメーター
body `string` (必須)エンドポイント
PUT /api/user-preferences
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/user-preferences \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーのパスワードを変更します
ユーザーのパスワードを変更します。ユーザーが電話番号を登録している場合は OTP による確認が必要です。登録していない場合は電話番号の追加が必要です。
リクエスト本文
エンドポイント
POST /api/user/change-password
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/change-password \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザーの 2FA の状態を確認します
ユーザーに対して 2FA が有効かどうかと、ユーザーのいずれかのロールで 2FA が必須になっているかどうかを返します
エンドポイント
GET /api/user/check-2fa-status
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/user/check-2fa-status \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
特定のモジュールについて、ユーザーがアクセスできる組織、施設、リージョンを一覧表示します。
パラメーター
moduleId `string` (必須)エンドポイント
POST /api/user/me/modules/{moduleId}/org-access
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/me/modules/{moduleId}/org-access \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
エンドユーザーからの「Linking Request」を作成し、施設への「参加」をリクエストします。
パラメーター
body `string` (必須) システムに追加する新しいクラブの JSON オブジェクト。エンドポイント
POST /api/user/linkclub
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/linkclub \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ユーザーに許可されているすべての施設を一覧表示します。
エンドポイント
GET /api/user/listauthorised
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/user/listauthorised \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
2 つの経路で OTP を送信します(メールと SMS)
ユーザーのメールアドレスと指定した電話番号の両方に OTP コードを送信します。 電話番号の初回確認など、高いセキュリティが求められる操作に使用します。 このエンドポイントは OTP を送信するだけで、ユーザーデータは変更しません。
リクエスト本文
エンドポイント
POST /api/user/send-dual-otp
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/send-dual-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
電話番号またはメールアドレスに OTP を送信します
確認のため、ユーザーの電話番号(SMS)またはメールアドレスに OTP コードを送信します
リクエスト本文
エンドポイント
POST /api/user/send-otp
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/send-otp \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザーに機密ページへの有効なアクセス権があるかどうかを確認します
機密ページにアクセスするための OTP 確認済みの有効なセッションがユーザーにあるかどうかを返します
エンドポイント
GET /api/user/sensitive-page-access
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/user/sensitive-page-access \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
OTP を確認し、機密ページへのアクセスを許可します
OTP コードを確認し、有効な場合は機密ページへの 1 時間のアクセスを許可します
リクエスト本文
エンドポイント
POST /api/user/sensitive-page-access/verify
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/verify \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
機密ページへのアクセスを取り消します(機密ページからのログアウト)
ユーザーの現在の機密ページへのアクセスセッションを取り消します
エンドポイント
POST /api/user/sensitive-page-access/revoke
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/sensitive-page-access/revoke \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
2FA を有効または無効にします
ユーザーの 2 要素認証を有効または無効にします。電話番号と OTP による確認が必要です。
リクエスト本文
エンドポイント
POST /api/user/toggle-2fa
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/user/toggle-2fa \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ユーザー自身のプロフィールを更新します
ユーザーが自分のプロフィール情報(名、姓、電話番号)を更新できるようにします。 初めて電話番号を追加する場合は、2 つの経路での OTP 確認 (メールと SMS の両方のコード)が必要です。既存の電話番号を変更する場合は、メールの OTP のみが必要です。
リクエスト本文
エンドポイント
PATCH /api/user/update-profile
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/user/update-profile \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
URL に基づいてアイコンを取得します。
エンドポイント
GET /api/website-icon
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/website-icon \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パスワード保管庫のエントリーテンプレートを一覧表示します
パラメーター
organisationId `string` (任意) モジュールのアクセス確認に使う組織のコンテキストエンドポイント
GET /api/vault/templates
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/vault/templates \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
表示可能なパスワード保管庫のエントリーを一覧表示します
パラメーター
organisationId `string` (必須) scope `string` (任意)エンドポイント
GET /api/vault/entries
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パスワード保管庫のエントリーを作成します
エンドポイント
POST /api/vault/entries
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries \
-H "x-api-key: YOUR_API_KEY"
シークレットの値を表示せずに、パスワード保管庫のエントリーを取得します
パラメーター
entryId `string` (必須) organisationId `string` (必須)エンドポイント
GET /api/vault/entries/{entryId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パスワード保管庫のエントリーを更新します
エンドポイント
PUT /api/vault/entries/{entryId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パスワード保管庫のエントリーを削除します
エンドポイント
DELETE /api/vault/entries/{entryId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/vault/entries/{entryId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
選択した非表示またはシークレットのフィールドを表示します
エンドポイント
POST /api/vault/entries/{entryId}/reveal
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/vault/entries/{entryId}/reveal \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
パスワード保管庫のフォルダーの概要を一覧表示します
エンドポイント
GET /api/vault/folders
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/vault/folders \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
認証コード付きのエントリーを一覧表示します
エンドポイント
GET /api/vault/authenticator
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/vault/authenticator \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
登録されているワークフローのノードタイプを一覧表示します
エンドポイント
GET /api/workflow-engine/node-types
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/node-types \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフローのブロックで使用する施設の営業時間の予測を取得します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/facility-hours/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-hours/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のブランドを表示したワークフローのメール送信者をプレビューします
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/email-branding/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/email-branding/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
トリガー設定用に施設のリソースを一覧表示します
パラメーター
facilityId `string` (必須) resourceType `string` (必須)エンドポイント
GET /api/workflow-engine/resources/{facilityId}/{resourceType}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/resources/{facilityId}/{resourceType} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設のワークフローを一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/workflows/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
空でないグラフから下書きのワークフローを作成します
エディターは、新しいワークフローにブロックが 1 つ以上追加されるまでローカルに保持するため、最初の保存で 1 回の呼び出しによりグラフとともに作成されます。`nodes` のない本文は保存されずに拒否されます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
施設のワークフローが使用できる認証情報を一覧表示します
施設自身の認証情報と、そのブランドまたは組織で共有されている認証情報を返します。シークレットは返されず、`hasValue` は保存されているかどうかのみを示します。
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/credentials/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフローの認証情報を作成します
スコープのレベルは `scopeType` で決まります。ブランドと組織の ID は呼び出し元から受け付けるのではなく、施設から解決されます。
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/credentials/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
施設全体のワークフロー設定(失敗通知の受信者)
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/facility-settings/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設全体の失敗通知の受信者を保存します
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
PUT /api/workflow-engine/facility-settings/{facilityId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/facility-settings/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ワークフローの認証情報を置き換えます
`secret` を空にすると保存済みの値が保持されるため、再入力せずに認証情報の名前を変更できます。シークレットを読み戻す方法はありません。
パラメーター
facilityId `string` (必須) credentialId `string` (必須)エンドポイント
PUT /api/workflow-engine/credentials/{facilityId}/{credentialId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフローの認証情報を削除します
スナップショットには参照のみが保存されるため、この認証情報を参照しているノードは、公開済みのワークフローも含め、次回の呼び出し時に安全側に倒れて失敗します。
パラメーター
facilityId `string` (必須) credentialId `string` (必須)エンドポイント
DELETE /api/workflow-engine/credentials/{facilityId}/{credentialId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/credentials/{facilityId}/{credentialId} \
-H "x-api-key: YOUR_API_KEY"
ワークフロートリガーの Webhook URL を取得します
パラメーター
facilityId `string` (必須) workflowId `string` (必須) nodeId `string` (必須)エンドポイント
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフロートリガーの Webhook URL をローテーションします
以前の URL はすぐに無効になります。
パラメーター
facilityId `string` (必須) workflowId `string` (必須) nodeId `string` (必須)エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/nodes/{nodeId}/webhook/rotate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ID でワークフローを取得します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)エンドポイント
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
下書きのワークフローを作成または更新します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
PUT /api/workflow-engine/workflows/{facilityId}/{workflowId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ワークフローの名前と説明を更新します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ワークフローとそのバージョンを削除します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)エンドポイント
DELETE /api/workflow-engine/workflows/{facilityId}/{workflowId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフローを複製し、新しい無効な下書きを作成します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/duplicate \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
現在の下書きを公開します(変更不可のバージョンのスナップショット)
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/publish
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/publish \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
下書きを最後に公開したバージョンに戻します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/discard
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/discard \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ワークフローを有効または無効にします
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
PATCH /api/workflow-engine/workflows/{facilityId}/{workflowId}/active
リクエストの例
curl -X PATCH https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/active \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
AI を使ってワークフローのグラフを生成または修正します
パラメーター
facilityId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/generate/{facilityId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/generate/{facilityId} \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
この施設で Agent ノードが実行できるモデルを一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/agent-models/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-models/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設で Agent ノードに追加できる MCP ツールを一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/agent-tools/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-tools/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設で保存されている Agent の会話(Conversation key の紐付け)を検索します
パラメーター
facilityId `string` (必須) deviceId `string` (任意) 1 台の Agent デバイスの会話に限定します(ノードに設定された deviceId) q `string` (任意) Conversation key、セッション ID、またはデバイス名に対する、大文字と小文字を区別しない部分一致 limit `integer` (任意) offset `integer` (任意)エンドポイント
GET /api/workflow-engine/agent-conversations/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-conversations/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Agent デバイス自体に保存されている会話を検索します
デバイス自身のセッション(Agent UI のサイドバーにある会話)を一覧表示し、ワークフローがコンテキストを保ったまま既存の会話を続けられるようにします。履歴はデバイスが保持します。施設に複数のデバイスがある場合は、`deviceId` でどのデバイスかを指定します(ノードに設定されたデバイス)。デバイスに到達できない場合は 502 を返します。
パラメーター
facilityId `string` (必須) deviceId `string` (任意) ノードに設定された Agent デバイス。省略すると、施設の 1 台のデバイスに解決されます q `string` (任意) セッションのタイトルまたは ID に対する、大文字と小文字を区別しない部分一致 limit `integer` (任意) offset `integer` (任意)エンドポイント
GET /api/workflow-engine/agent-device-sessions/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/agent-device-sessions/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Agent デバイスのかんばんにあるボードを検索します
Agent: Kanban ブロックの Board ID の選択肢に使用されます。ボード名またはスラッグに対して大文字と小文字を区別しない部分一致で検索します。`current` はデバイスの有効なボードのスラッグで、タスクの選択肢の既定の範囲として使用できます。施設に複数のデバイスがある場合は、`deviceId` でどのデバイスかを指定します。デバイスに到達できない場合は 502 を返します。
パラメーター
facilityId `string` (必須) deviceId `string` (任意) ノードに設定された Agent デバイス。省略すると、施設の 1 台のデバイスに解決されます q `string` (任意) ボード名またはスラッグに対する、大文字と小文字を区別しない部分一致 limit `integer` (任意) offset `integer` (任意)エンドポイント
GET /api/workflow-engine/kanban-boards/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-boards/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
施設の Agent デバイスのかんばんで、1 つのボードのタスクを検索します
Agent: Kanban ブロックの Task ID の選択肢に使用されます。タスク ID、タイトル、または本文に対して大文字と小文字を区別しない部分一致で検索します。タスクはボードごとに存在し(デバイスにはボードをまたいだ検索機能がありません)、`board` で取得範囲を指定します。省略するとデバイスの有効なボードが対象になります。デバイスに到達できない場合は 502 を返します。
パラメーター
facilityId `string` (必須) deviceId `string` (任意) ノードに設定された Agent デバイス。省略すると、施設の 1 台のデバイスに解決されます board `string` (任意) 一覧表示するボードのスラッグ。省略するとデバイスの有効なボードが対象になります q `string` (任意) タスク ID、タイトル、または本文に対する、大文字と小文字を区別しない部分一致 limit `integer` (任意) offset `integer` (任意)エンドポイント
GET /api/workflow-engine/kanban-tasks/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/kanban-tasks/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
この施設向けに絞り込んだ、厳選されたワークフローテンプレートを一覧表示します
パラメーター
facilityId `string` (必須)エンドポイント
GET /api/workflow-engine/templates/{facilityId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テンプレートをインスタンス化し、開いている下書き用のグラフの断片を作成します
パラメーター
facilityId `string` (必須) templateId `string` (必須)エンドポイント
POST /api/workflow-engine/templates/{facilityId}/{templateId}
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/templates/{facilityId}/{templateId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テンプレート管理ページのスコープ選択用コンテキスト(管理者階層)
エンドポイント
GET /api/workflow-engine/template-admin/context
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/context \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
呼び出し元が管理できるテンプレートを、権限フラグとともに一覧表示します
エンドポイント
GET /api/workflow-engine/template-admin
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テンプレートを作成します(管理者階層)
リクエスト本文
エンドポイント
POST /api/workflow-engine/template-admin
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
管理者用エディター向けの、グラフを含むテンプレートの詳細
エンドポイント
GET /api/workflow-engine/template-admin/{templateId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テンプレートを置き換えます(所有者の組織)
エンドポイント
PUT /api/workflow-engine/template-admin/{templateId}
リクエストの例
curl -X PUT https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
テンプレートを論理削除します(所有者の組織)
エンドポイント
DELETE /api/workflow-engine/template-admin/{templateId}
リクエストの例
curl -X DELETE https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
表示可能なテンプレートを、呼び出し元が使用できる対象スコープに複製します
リクエスト本文
エンドポイント
POST /api/workflow-engine/template-admin/{templateId}/duplicate
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/template-admin/{templateId}/duplicate \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
手動トリガーからワークフローの公開済みグラフを実行します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/run
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
保存済みの下書きを公開せずにテストします
現在の下書きのグラフを実行し、`mode: test` で `versionId` なしとして結果を記録します。公開状態、ライブフラグ、`publishedVersionId` は変更されません。副作用は既定でシミュレートされます。`sideEffects: live` を指定する場合は、さらに `confirmLiveSideEffects: true` が必要です。
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
許可リストに含まれるワークフローノードを 1 つテストします
保存済みの下書きから、単独でテストできるノードを 1 つ実行します。変数の値は、記録済みの実行ステップから指定できます。データを変更する HTTP メソッドには明示的な確認が必要です。
パラメーター
facilityId `string` (必須) workflowId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/test-node \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
ワークフローの最近の実行を一覧表示します
パラメーター
facilityId `string` (必須) workflowId `string` (必須)エンドポイント
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
1 件の実行を読み取ります(ステータスと順序付きのステップ)
パラメーター
facilityId `string` (必須) workflowId `string` (必須) executionId `string` (必須)エンドポイント
GET /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
待機中の実行が止まっている保留中の Delay をキャンセルします
パラメーター
facilityId `string` (必須) workflowId `string` (必須) executionId `string` (必須)エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/cancel \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
完了した実行を、記録されたトリガーのペイロードから再実行します
`mode: published` は、元の実行が固定されていたバージョンをそのまま、実際の副作用を伴って再実行します。`mode: draft-test` は、現在の下書きをシミュレートしたテストとして再実行します。書き込み時にトリガーのペイロードが切り詰められた実行は再実行できません。
パラメーター
facilityId `string` (必須) workflowId `string` (必須) executionId `string` (必須)リクエスト本文
エンドポイント
POST /api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry
リクエストの例
curl -X POST https://portal.hub.gymsystems.co/api/workflow-engine/workflows/{facilityId}/{workflowId}/runs/{executionId}/retry \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
レスポンス
{}
特定のノードタイプを含むワークフローをインデックスで検索します
パラメーター
nodeType `string` (必須) facilityId `string` (任意) organisationId `string` (任意)エンドポイント
GET /api/workflow-engine/master-view/{nodeType}
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/api/workflow-engine/master-view/{nodeType} \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
ホワイトラベルの OAuth リダイレクトプロキシ(Connected Apps)
認証不要の公開 302 で、OAuth プロバイダーのコールバックを、クエリ文字列を保持したまま上流のツールプラットフォームの認証コールバックに転送します。PH が所有する OAuth アプリで performancehub.co のリダイレクト URI を登録できるため、上流ベンダーのドメインがアドレスバーに表示されることはありません(今後のカスタム OAuth アプリのプロジェクトに必要です。マネージド認証では影響はありません)。
エンドポイント
GET /guest/connected-apps/oauth-callback
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/oauth-callback \
-H "x-api-key: YOUR_API_KEY"
接続チェーンの完了ページ(Connected Apps)
接続チェーンが実行された OAuth タブ用の、「このウィンドウを閉じてかまいません」という軽量なランディングページです。結果(接続されたスイート/ツールキットと新しいアカウント ID、または失敗したツールキット)を、同一オリジンの window.opener.postMessage でマーケットプレイスのタブに返します。opener が切り離されている場合は、アプリ内のランディングを再現する ph-ai-agent アプレットへのディープリンクに切り替えます。情報表示のみを目的としており、シークレットは保持せず、書き込みも行いません。
パラメーター
connected `string` (任意) 接続が完了したスイート ID またはツールキットのスラッグ(成功時)。 accounts `string` (任意) チェーンが作成した接続アカウント ID のカンマ区切りリスト。 connectError `string` (任意) ステップが失敗したツールキットのスラッグ(失敗時)。エンドポイント
GET /guest/connected-apps/finish
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/finish \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}
スイート接続のチェーン用コールバック(Connected Apps)
ワンクリックのスイート接続フローにおける OAuth コールバックの中継です。署名付きの state JWT(HS256、TTL 30 分)には { clubID, deviceId, suite, toolkits, step, caids } がエンコードされています。アカウントはその 1 台のエージェントデバイスに接続され、caids には各中継で作成されたアカウント ID が蓄積されます(最後のアプレットへのリダイレクトでこれらが渡されるため、マーケットプレイスは新しいアカウントにラベルを付けるよう提案できます)。そのステップのツールキットを接続済みにした後、次のツールキットの Connect Link に 302 でリダイレクトします。スイートが完了した場合は、ph-ai-agent アプレットのページ(エージェントへのディープリンク)にリダイレクトします。単一のツールキットの接続も、ツールキットが 1 つのスイートとして同じハンドラーで処理されます。
パラメーター
state `string` (必須) 署名付きの接続チェーンの state JWT。エンドポイント
GET /guest/connected-apps/connect-next
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/guest/connected-apps/connect-next \
-H "x-api-key: YOUR_API_KEY"
パスワード設定メールを送信します
ウェルカムメールの署名付きリンクを検証し、パスワードリセットのメールを送信して、確認ページを表示します。認証は不要です。
パラメーター
email `string` (必須) ユーザーのメールアドレス sig `string` (必須) メールアドレスの HMAC 署名エンドポイント
GET /guest/setup-password
リクエストの例
curl -X GET https://portal.hub.gymsystems.co/guest/setup-password \
-H "x-api-key: YOUR_API_KEY"
レスポンス
{}