開発中の機能
公開API
アクション
アクション実行

アクションの実行

指定したアクションを同期実行し、結果をレスポンスで受け取ります。データソース系アクション(SQL・REST API・gRPCなど)と、後継のJavaScriptサーバーアクションが対応しています。

エンドポイント

POST /environments/{environment_id}/actions/{action_id}/executions

認証・共通ヘッダー・エラー形式は公開APIとはを参照してください。

パスパラメータ

名前必須説明
environment_idstring必須対象環境のID(env_で始まるULID)
action_idstring必須実行対象アクションのID。bmrn://形式は受け付けない

リクエストボディ

Content-Type: application/jsonで、以下の形式のJSONを送信します。

{
  "arguments": {
    "user_id": "usr_01H...",
    "subject": "今月のお知らせ",
    "body": "本文..."
  }
}
フィールド必須説明
argumentsobject任意アクションの引数。キーがパラメータ名、値はそのパラメータのinput_schemaに従う型

argumentsを省略した場合は空オブジェクト({})として扱われます。

引数の型

argumentsの各値は、アクション詳細で取得できるinput_schemaの型に従って指定します。代表的な対応関係は以下の通りです。

入力タイプリクエストボディでの値
テキスト文字列(例: "hello"
数値数値(例: 42
真偽値true / false
JSON任意のJSON値(オブジェクト・配列・スカラのいずれも可)
日時ISO 8601文字列(例: "2026-04-18T09:00:00Z")またはUNIXタイムスタンプ(ミリ秒の整数)
配列JSON配列
タプル各要素の型に従ったJSON配列(要素数固定)

リクエスト例

curl -X POST https://platform.basemachina.com/public/v1/environments/env_01H.../actions/send_email/executions \
  -H "Authorization: Bearer $BM_TOKEN" \
  -H "Basemachina-Project: prj_01H..." \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {
      "user_id": "usr_01H...",
      "subject": "今月のお知らせ",
      "body": "本文..."
    }
  }'

レスポンス

ステータス200 OKで、実行結果がexecutionリソースとして返ります。

{
  "action_id": "send_email",
  "output": {
    "type": "scalar",
    "value": {
      "delivered": true,
      "message_id": "msg_01H..."
    }
  }
}
フィールド説明
action_idstring実行されたアクションのID
outputobjectアクションの成功結果。typeによって他のフィールドが決まる(後述)

outputの形状

outputtypeをdiscriminatorとし、アクション種別ごとに以下のいずれかの形になります。

output.typeアクション種別形状
sql_statementsSQL系(MySQL / PostgreSQL / BigQuery / Amazon Athena / Snowflake){ "type": "sql_statements", "statements": [...] }
google_sheetsGoogle スプレッドシート{ "type": "google_sheets", "rows": [{...}, ...] }
storage_object_listAmazon S3 / Google Cloud Storage(一覧取得){ "type": "storage_object_list", "items": [...] }
signed_urlAmazon S3 / Google Cloud Storage(署名付きURL発行){ "type": "signed_url", "signed_url": "https://..." }
scalarJavaScriptサーバーアクション、HTTP API、gRPC、Firestore、S3 / GCS(アップロード){ "type": "scalar", "value": <任意のJSON値> }

sql_statements

SQLアクションの各ステートメントの結果がstatements配列に入ります。各要素はtypequeryupdateかで形が異なります。

{
  "type": "sql_statements",
  "statements": [
    {
      "type": "query",
      "title": "ユーザー一覧",
      "rows": [{ "id": "usr_01H...", "name": "Taro" }],
      "columns": {
        "id": {
          "database_type_name": "VARCHAR",
          "nullable": false,
          "supported": true
        },
        "name": {
          "database_type_name": "VARCHAR",
          "nullable": true,
          "supported": true
        }
      }
    },
    {
      "type": "update",
      "title": "更新ステートメント"
    }
  ]
}

columnsはクエリ結果から列の型情報を取得できなかった場合はnullになります。supportedfalseの列はrows内の値がnullになります。

google_sheets

各行をヘッダー行のセル値をキーとするオブジェクトに変換した配列がrowsに入ります。

{
  "type": "google_sheets",
  "rows": [{ "id": "1", "name": "Taro" }]
}

storage_object_list

Amazon S3 / Google Cloud Storageのオブジェクト一覧がitems配列に入ります。各要素のフィールドはobject_keylast_modified(Unixタイムスタンプ・秒)、size(バイト)です。

{
  "type": "storage_object_list",
  "items": [
    {
      "object_key": "path/to/object",
      "last_modified": 1735689600,
      "size": 1024
    }
  ]
}

signed_url

発行された署名付きURLがsigned_urlに入ります。

{
  "type": "signed_url",
  "signed_url": "https://..."
}

scalar

アクションが返した任意のJSON値(オブジェクト・配列・プリミティブ・nullのいずれも可)がvalueに入ります。具体形はアクション側の実装に依存するため、事前にアクションの戻り値を確認してから値を扱ってください。

{
  "type": "scalar",
  "value": { "delivered": true, "message_id": "msg_01H..." }
}

公開APIから実行できないアクション

以下のアクションは公開APIから実行できません。いずれも422 argument_invalidまたは404 not_foundで弾かれます。

種別結果
ファイル入力(fileパラメータ)を持つアクション422 argument_invalidを返す
旧JavaScriptアクション(非推奨)422 argument_invalidを返す
無効化されたアクション404 not_foundを返す

エラー

ステータスcode発生条件
400bad_requestaction_idbmrn://形式を指定、Basemachina-Projectヘッダー欠落など
401unauthorizedAuthorizationヘッダー欠落・トークン検証失敗
403forbiddenアクションの実行権限がない、またはサービスアカウントから実行できない操作の呼び出し
404not_found指定したIDのアクションが存在しない、または無効化されている
409state_conflictアクションの状態不整合
413payload_too_largeリクエストボディのサイズ超過
422argument_invalid引数のバリデーション違反、または公開APIから実行できないアクション種別の呼び出し
422javascript_action_errorJavaScriptサーバーアクションのコードが投げた業務エラー
500internal_errorgatewayまたは内部APIの障害
502datasource_errorデータソースなど上流の非成功応答(応答情報はdatasourceフィールドに格納)
503service_unavailableベースマキナ側の一時障害。Retry-Afterヘッダーに従ってリトライ可能

エラーコードの詳細は公開APIとはを参照してください。

引数バリデーション違反のレスポンス例

{
  "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": "user_idの値()が不正です: この項目は必須です"
    }
  ]
}

関連情報

  • 引数の値はアクション詳細input_schemaに従って組み立ててください
  • エラーレスポンスの共通形式は公開APIとはの「エラーレスポンス」を参照してください