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

アクションの実行

指定したアクションを同期実行し、結果をレスポンスで受け取ります。SQL・HTTP API・gRPC・Firestore・Googleスプレッドシート・ストレージ系などのアクションと、JavaScriptアクションが対応しています。

エンドポイント

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

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

パスパラメータ

名前必須説明
project_idstring必須対象プロジェクトのID
environment_idstring必須対象環境のID
action_idstring必須実行対象アクションの識別子

リクエストボディ

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値(オブジェクト・配列・スカラーのいずれも可)
日時input_schemaformatに従う文字列。dateYYYY-MM-DDdate-timeはISO 8601形式
配列JSON配列
タプル各要素の型に従ったJSON配列(要素数固定)

リクエスト例

curl -X POST https://platform.basemachina.com/public/v1/projects/csi2hcc0iaejrqgivkfg/environments/9m4e2mr0ui3e8a215n4g/actions/send_email/executions \
  -H "Authorization: Bearer $BM_TOKEN" \
  -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実行されたアクションの識別子
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{ "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_key(管理画面では「オブジェクト名」と表示)、last_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_requestリクエストパラメーターが不正
401unauthorizedAuthorizationヘッダー欠落・トークン検証失敗
403forbiddenアクションの実行権限がない、またはサービスアカウントから実行できない操作の呼び出し
404not_found指定したIDのアクションが存在しない、または無効化されている
409state_conflictアクションの状態不整合
413payload_too_largeリクエストボディのサイズ超過
415unsupported_media_typeContent-Typeapplication/json以外
422argument_invalid引数のバリデーション違反、または公開APIから実行できないアクション種別の呼び出し
422javascript_action_errorJavaScriptサーバーアクションのコードが投げた業務エラー
422datasource_errorデータソースなど接続先のエラー
500internal_errorgatewayまたは内部APIの障害
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/projects/csi2hcc0iaejrqgivkfg/environments/9m4e2mr0ui3e8a215n4g/actions/send_email/executions",
  "code": "argument_invalid",
  "violations": [
    {
      "field": "arguments.user_id",
      "reason": "user_idの値()が不正です: この項目は必須です"
    }
  ]
}

データソースエラーのレスポンス例

HTTP系の上流ステータスを取得できた場合は、datasourceにステータスとレスポンス本文の冒頭が入ります。

{
  "type": "https://docs.basemachina.com/preview/public_api/#datasource_error",
  "title": "Datasource Error",
  "status": 422,
  "detail": "データソースからエラーが返されました",
  "instance": "/public/v1/projects/csi2hcc0iaejrqgivkfg/environments/9m4e2mr0ui3e8a215n4g/actions/fetch_user/executions",
  "code": "datasource_error",
  "action_id": "fetch_user",
  "datasource": {
    "status": 503,
    "body_snippet": "{\"message\":\"temporarily unavailable\"}"
  }
}

SQL系アクションでは、実行されたステートメントごとの結果がstatementsに入ることがあります。

関連情報

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