開発中の機能
公開API
公開APIとは

公開APIとは

⚠️

この機能は現在開発中であり、まだ公開されていません。記載内容は今後変更される可能性があります。

公開APIは、ベースマキナのリソースを外部システムから操作するためのREST APIです。アクションの一覧取得・詳細取得・実行を、HTTPリクエストで行なえます。

主なユースケースは以下の通りです。

  • 外部システムからベースマキナのアクションを実行する
  • CI/CDのジョブからアクションを呼び出して定型作業を自動化する
  • 自社のスクリプトやツールに、ベースマキナのアクションを組み込む

ベースURL

https://platform.basemachina.com/public/v1

すべてのエンドポイントはこのベースURLからの相対パスで指定します。

利用できるエンドポイント

エンドポイント説明
GET /environments/{environment_id}/actionsアクションの一覧を取得する
GET /environments/{environment_id}/actions/{action_id}アクションの詳細(引数スキーマなど)を取得する
POST /environments/{environment_id}/actions/{action_id}/executionsアクションを同期実行して結果を取得する

現時点で利用できるのは上記3つのアクション系エンドポイントのみです。対応リソースは今後のアップデートで順次追加予定です。

認証

公開APIはBearerトークン認証で保護されています。すべてのリクエストにAuthorizationヘッダーを付与してください。

Authorization: Bearer <token>

利用できるトークンは以下の2種類です。

トークンの種類取得方法主な用途
bm loginで取得したJWTbm loginで発行され、~/.basemachina/credentials.jsonに保存されるローカル端末からの呼び出し、開発時の検証
外部OIDC ID TokenGitHub Actionsなど、ベースマキナのOIDC信頼ポリシーで受け入れ設定済みの発行元から取得CI/CDからの呼び出し

外部OIDC ID TokenをそのままAuthorization: Bearerに指定すると、公開APIが内部でサービスアカウントのJWTに交換します。事前にOIDC信頼ポリシーの設定が必要です。

Authorizationヘッダーが欠けている場合や、トークンが期限切れ・改ざんなどで検証できない場合は、401 unauthorizedが返ります。

必須ヘッダー

すべてのリクエストに以下のヘッダーを設定してください。

ヘッダー必須説明
Authorization必須Bearer <token>形式の認証ヘッダー
Basemachina-Project必須操作対象のプロジェクトID(prj_で始まるULID)。欠落すると400 bad_requestを返す
Content-TypePOST時のみ必須application/jsonを指定する

アクションの識別子

公開APIではアクションをIDで参照します。IDは管理画面で表示される識別子、またはコード管理でのdefineAction({ id: ... })で指定した文字列と同じです。

bmrn://形式の内部参照IDは受け付けません。指定すると400 bad_requestが返ります。

ページネーション

一覧取得系のエンドポイント(GET /actions)はカーソル形式のページネーションに対応しています。

パラメータ種別説明
limitクエリ1ページあたりの取得件数。1100の整数で、デフォルトは20
cursorクエリ前ページのレスポンスのnext_cursorを不透明な値としてそのまま指定する

レスポンスは以下のenvelope形式で返ります。次ページの取得情報はレスポンスボディのnext_cursorに含まれ、専用のヘッダーは付与されません。

{
  "data": [
    /* リソース配列 */
  ],
  "has_more": true,
  "next_cursor": "..."
}

has_morefalseの場合は次ページがなく、next_cursorは省略されます。

エラーレスポンス

エラー時のレスポンスはRFC 9457 Problem Details (opens in a new tab)形式(Content-Type: application/problem+json)で返ります。

{
  "type": "https://docs.basemachina.com/preview/public_api/#argument_invalid",
  "title": "Argument Invalid",
  "status": 422,
  "detail": "user_id は必須項目です",
  "instance": "/public/v1/environments/env_01H.../actions/send_email/executions",
  "code": "argument_invalid",
  "violations": [{ "field": "arguments.user_id", "reason": "required" }]
}

主なフィールドは以下の通りです。

フィールド説明
typeエラー種別を表すURI。エラーコードごとに固定
titleエラー種別の人間可読な短いタイトル
statusHTTPステータスコード
detailエラーの詳細メッセージ(運用者向けの自然文)
instanceエラーが発生したリクエストのパス
codeエラー分類コード。詳細は下表「エラーコード一覧」を参照
violations引数バリデーション違反の詳細。fieldreasonの組で複数返る(codeargument_invalidの場合のみ)
datasourceデータソースの応答情報(HTTPステータス・URL・本文の冒頭)。codedatasource_errorの場合のみ
action_idエラーに関係するアクションのID。実行系エンドポイントで返ることがある
statementsSQL系アクションのステートメントごとの実行結果。一部のSQL関連エラーで返る

エラーコード一覧

codeはHTTPステータスごとに以下のいずれかが返ります。

ステータスcode主な発生条件
400bad_requestBasemachina-Project欠落、bmrn://形式のID指定など、リクエストの文法レベルの不正
401unauthorizedBearerトークン欠落・期限切れ・検証失敗
403forbidden対象プロジェクトやアクションへの権限不足、サービスアカウントから実行できない操作の呼び出しなど
404not_foundアクション・環境などのリソースが存在しない、または無効化されている
405method_not_allowed許可されていないHTTPメソッドの利用
409state_conflictアクションの状態不整合
413payload_too_largeリクエストボディのサイズ超過
415unsupported_media_typeContent-Typeapplication/json以外
422argument_invalid引数のバリデーション違反、または公開APIから実行できないアクション種別(旧JavaScriptアクション・fileパラメータを含む)
422javascript_action_errorJavaScriptサーバーアクションのコードが投げた業務エラー
500internal_errorgateway内部の不具合
502datasource_errorデータソースなど上流の非成功応答
503service_unavailableベースマキナ側の一時障害。Retry-Afterヘッダーに従ってリトライ可能

利用までの流れ

  1. ベースマキナの管理画面で、必要ならOIDC信頼ポリシーを設定する
  2. ローカルからはbm login、CI/CDからは外部OIDC ID Tokenを取得する
  3. プロジェクトIDと環境IDを確認し、Basemachina-Projectヘッダー・パスパラメータに指定する
  4. アクション一覧でアクションのIDを確認する
  5. アクション詳細で引数スキーマを取得し、必要な値を組み立てる
  6. アクション実行でアクションを呼び出す