ObjectOS
設定

API アクセス

統合のために生成される REST API、認証、API キーについて。

API アクセス

アーティファクトで宣言されたすべてのオブジェクトは、生成された REST API を通じて公開されます。同じエンドポイントが UI、統合、顧客の ETL スクリプトを支えており、別途維持すべき「統合用 API」は存在しません。

ベース URL

https://<project-domain>/api/v1

主なエンドポイント:

Path用途
/api/v1/data/<object>各オブジェクトに対して生成される CRUD(例: /api/v1/data/account
/api/v1/data/<object>/{id}単一レコードの読み取り/更新/削除
/api/v1/actions/<object>/<action>宣言的アクションの呼び出し(POST)
/api/v1/auth/*認証(サインイン、セッション、OAuth、OIDC)
/api/v1/meta/*有効化されている場合のメタデータ API(オブジェクト、フィールド、ビュー)
/api/v1/keys呼び出しユーザー向けに一度だけ表示される sys_api_key を発行(POST)
/api/v1/mcpOS_MCP_SERVER_ENABLED=true のとき、Streamable HTTP 経由の Model Context Protocol サーバー
/api/v1/health死活/準備状態のプローブ(認証不要)

プレフィックスのデフォルトは /api/v1(API の basePath である /apiversion である v1 の組み合わせ)で、ObjectOS スタック上で構成可能です。

公開範囲の制御

API の公開はゲートウェイではなく、アーティファクト内のオブジェクト単位で制御されます:

  • オブジェクトに apiEnabled: false を設定すると、REST 表面から完全に外れます (そのルートは 404 になります)。
  • apiMethods ホワイトリスト(例: ['get', 'list'])を設定すると、オブジェクトを 読み取り専用にしたり、到達可能な操作を制限したりできます。

どちらも REST レイヤーで強制適用されます。 REST API → API 表面の制限 を参照してください。

認証オプション

呼び出し元は次の 3 つの方法で認証できます:

方法適した用途やり方
セッション Cookieブラウザ/UI のトラフィック/api/v1/auth/* を通じてサインインします。Cookie はプロジェクトのホスト名にスコープされます
Bearer アクセストークンモバイル、SPA、短命のサーバージョブ/api/v1/auth/sign-in/email で資格情報を交換し、Authorization: Bearer <token> を渡します
API キーサーバー間連携、ETL、長期間の統合sys_api_key を作成し、bearer トークンとして渡します

3 つの方法はいずれも同じ AuthPlugin を通過し、SecurityPlugin が権限と レコードアクセスに対して評価する sys_user コンテキストに解決されます。

API キー

API キーはファーストクラスの sys_api_key レコードです。キーの値自体は ハッシュ化して保存され、クエリ可能なのは prefix とメタデータのみです。 そのため、漏洩したキーをデータベースから復元することはできません。

キーは次の 2 つの方法で発行できます:

  • Console — 管理者として Console → API Keys にサインインし、所有 ユーザーを選択し、必要に応じて有効期限を設定して、表示されたシークレットを 一度だけコピーします。

  • セルフサービスエンドポイントPOST /api/v1/keys は認証済みの呼び出し元 に対してキーを発行し、生のシークレットをちょうど一度だけ返します。キーは 呼び出し元自身のユーザーに固定されるため、別の ID へのなりすましには使用 できません:

    curl -X POST https://app.example.com/api/v1/keys \
      -H "Authorization: Bearer <session-or-access-token>" \
      -H "Content-Type: application/json" \
      -d '{"name": "etl-pipeline"}'
    # → { "id": "...", "name": "etl-pipeline", "prefix": "os_pk_…", "key": "os_pk_live_…" }

以降のリクエストでは、キーを bearer トークン、x-api-key ヘッダー、または Authorization: ApiKey として渡します。REST のデータ/メタデータ API はいずれも MCP と同じ検証器で認証し、キー所有者の権限とレコードレベルセキュリティの下で 実行されます:

curl https://app.example.com/api/v1/data/account \
  -H "x-api-key: os_pk_live_…"

キーを失効させるには、対応する sys_api_key レコードに対して revoke_api_key アクションを実行します(Console UI でも利用可能)。 失効は次のリクエストから即座に有効になります。

ページネーション、フィルタリング、ソート

生成されるリストエンドポイントは、標準の ObjectStack クエリパラメーターを受け付けます:

パラメーター意味
?limit=ページサイズ(サーバー側の上限が適用されます)
?offset= または ?cursor=ページネーション
?filter=ObjectQL のフィルター構文を使用したサーバー側フィルタリング
?sort=ソート式(例: -created_at
?fields=スパースなフィールド選択

完全なフィルター文法についてはフレームワークのドキュメントを参照してください。 ランタイムの文法が信頼できる情報源です。

レート制限

フレームワークの RateLimiter プリミティブ(または ingress / API ゲートウェイ)を使用して、IP ごと・アイデンティティごとの制限を適用します。 推奨される初期バケットは 本番環境への準備 に記載されています。

CORS

呼び出し元が異なるオリジンのブラウザで動作する場合は、ingress または ランタイムのミドルウェアで CORS を構成します。ワイルドカードオリジンと 資格情報付きリクエストを組み合わせないでください

OpenAPI / ディスカバリー

該当する機能がイメージに含まれている場合、ランタイムは生成された REST API の OpenAPI ドキュメントを提供できます。オブジェクト名や生成されたルートは デプロイされたアーティファクトに従うため、顧客の統合では URL を手作業で 組み立てるのではなく、デプロイごとの OpenAPI ドキュメントからクライアントを 生成してください。

On this page