Forward Schedule API で共有する Schedule と Schedule Run のレスポンス構造。
Schedule オブジェクト
作成、取得、一覧、更新、アーカイブ、一時停止、再開の各 API はこの構造を返します。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | sched_ で始まる Schedule ID。 |
source | string | サーバーが記録する正式な作成方法。現在は api または tool。作成元を参照してください。 |
source_session_id | string | null | 作成元の Session。api では null、tool では空でない sess_*。 |
identity_id | string | Schedule を所有する Forward Identity ID。 |
template_id | string | 実行に使用する Forward Template ID。 |
name | string | Schedule 名。 |
description | string | Schedule の説明。未設定の場合は空文字列。 |
status | string | active または paused。アーカイブ状態は archived_at で表します。 |
paused_reason | object | null | 一時停止の理由。一時停止していない場合は null。 |
initial_events | array | 各実行に注入される初期イベント。 |
initial_events_version | integer | 1 から始まる読み取り専用の入力内容バージョン。入力バージョンを参照してください。 |
resources | array | Schedule 専用のファイル設定。file_id 順で、未設定時は []。構造と適用規則はファイルリソースを参照してください。 |
execution | object | 実行ポリシー。実行ポリシーを参照してください。 |
trigger_policy | object | トリガーポリシー。トリガーポリシーを参照してください。 |
environment_id | string | 実行環境 ID。 |
sinks | array | 結果の配信先。未設定の場合は []。 |
metadata | object | 呼び出し元の業務メタデータ。 |
archived_at | string | null | RFC 3339 形式のアーカイブ日時。未アーカイブの場合は null。 |
created_at | string | RFC 3339 形式の作成日時。 |
updated_at | string | RFC 3339 形式の最終更新日時。 |
実行ポリシー
| フィールド | 型 | 説明 |
|---|---|---|
session_mode | string | new_session または reuse_session。 |
max_concurrent_runs | integer | 同一 Schedule の最大同時 Run 数。 |
max_attempts | integer | 単一 Run の最大試行回数。現在は 1 または 2。 |
timeout_ms | integer | 1 回の試行のタイムアウト(ミリ秒)。 |
トリガーポリシー
| フィールド | 型 | 説明 |
|---|---|---|
type | string | cron、once、interval、または manual。 |
expression | string | トリガー式。manual では空文字列または省略。 |
timezone | string | IANA タイムゾーン。該当しない場合は空文字列または省略。 |
start_at | string | 任意の実行期間の開始日時(RFC 3339)。 |
stop_at | string | 任意の実行期間の終了日時(RFC 3339)。 |
upcoming_runs_at | array | UTC ISO 8601 形式の今後のトリガー日時。現在は [] または最大 1 件。 |
last_run_at | string | null | 直近のトリガー日時。 |
sinks の公開形式と制約はスケジュールを作成するを参照してください。
ファイルリソース
Schedule の作成・更新時は、トップレベルの resources 配列でファイルを指定します。形式は Session、Batch のファイルリソースと同じです。まず File をアップロードして file_id を取得し、現在の呼び出し元がその Schedule の Identity の下でアクセスできる Forward File を参照します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
type | string | はい | 現在は file のみをサポートします。 |
file_id | string | はい | Files API が返すファイル ID。不透明な文字列として扱い、固定プレフィックスは必要ありません。空文字列や制御文字は許可されません。 |
mount_path | string | いいえ | Agent コンテナー内のファイルパス。明示する場合は正規の絶対パスで、/ や制御文字を含むパスは不可、最大 1024 バイトです。 |
enabled などの追加フィールドは受け付けません。最大 100 ファイルまで指定できます。同じ配列内で file_id を重複させたり、異なるファイルに同じマウントパスを明示指定したりすることはできません。トップレベルの files パラメーターは受け付けません。
mount_path を省略するか空文字列にすると /data/workspace/<filename> を使用します。同名ファイルには異なるパスを明示してください。同じファイルが Template / Identity Config ですでに設定されている場合、Schedule のパスを省略すると継承パスを使用します。
作成と更新
リクエストの resources | Schedule の作成 | Schedule の更新 |
|---|---|---|
| 省略 | 専用ファイルを設定しません。 | 既存の設定を保持します。 |
null または [] | 専用ファイルを設定しません。 | 専用ファイル設定をすべてクリアします。 |
| 空でない配列 | 配列内のファイルを設定します。 | 専用ファイル設定全体を置き換え、要素単位ではマージしません。 |
[] を含め、常に resources 配列を返します。これは Schedule 自身の設定のみを表し、Template / Identity Config から継承したファイルは含みません。省略されたマウントパスがここで実行時パスに補完されることもありません。resources の変更では initial_events_version は増加せず、このバージョンは initial_events のみを表します。
継承と適用タイミング
実行時に Schedule ファイルと現在の Template / Identity Config のファイルをマージします。同じ file_id は重複排除されます。Schedule がパスを省略した場合や継承パスと同じパスを明示した場合は再利用できますが、異なるパスを明示すると競合します。異なるファイルが同じパスを使用することはできません。継承設定とのマージ後にしか検出できない競合は、実行時のタスクメッセージ送信前にエラーになります。
new_session と reuse_session の両方でファイル設定をサポートします。各実行試行は Session の作成またはタスク送信前に、その試行の Schedule 専用 resources を選択します。同じ attempt 内の送信再試行・復旧では選択済みの専用ファイル設定を使い、新しい attempt では更新後の設定を選択できます。更新は現在の実行を中断しません。後続の実行では選択された追加・削除・パス変更が適用され、Session の再利用時にも同期されます。Template / Identity Config の継承ファイルはこのスナップショットに含まれず、現在の設定で引き続き更新されます。
Schedule ファイルをクリアしても、継承ファイルの削除や Template / Identity Config の変更は行われません。ファイルをマウントしても内容は initial_events に自動挿入されません。タスクはメッセージでマウントパスを指定してファイルを読み取れます。例:Read /data/news-sources.csv and summarize its contents。
ファイル削除の制限
未アーカイブの Schedule(一時停止中も含む)がファイルを参照している場合、File の削除は HTTP 409 を返します。ファイル設定の更新・クリア、または Schedule のアーカイブにより、その設定参照が解放されます。まだ終端状態に達していない Run が選択したファイルは Run が終了するまで保護されます。他の Template / Identity Config または Session の参照によって、引き続き削除できない場合もあります。
Schedule Run オブジェクト
手動実行、Run の取得、Run の一覧 API はこの構造を返します。
| フィールド | 型 | 説明 |
|---|---|---|
id | string | srun_ で始まる Schedule Run ID。 |
source | string | 親 Schedule の正式な作成方法。現在は api または tool。作成元を参照してください。 |
source_session_id | string | null | 親 Schedule の作成元 Session。 |
schedule_id | string | 親 Schedule ID。 |
identity_id | string | Forward Identity ID。 |
template_id | string | Forward Template ID。 |
session_id | string | null | 今回の実行で作成または使用された Session。 |
status | string | pending、running、completed、failed、または skipped。 |
trigger_context | object | 今回の Run のトリガー方法。Trigger Contextを参照してください。 |
error | object | null | 失敗またはスキップ時の構造化エラー。 |
result_payload | string | null | メイン実行のテキスト結果。 |
error_message | string | null | 表示用エラーメッセージ。構造化情報は error に保持されます。 |
push_sink | string | null | 今回の IM 配信に使用する Sink タイプ。未設定の場合は null。 |
push_status | string | IM 配信状態:pending、succeeded、failed、または skipped。 |
push_finished_at | string | null | IM 配信の終了日時。 |
attempt | integer | 現在または最終的な試行回数。1 から開始します。 |
initial_events_version | integer(任意) | 現在の実行試行で選択された入力バージョン。未選択または確認できない場合は省略します。入力バージョンを参照してください。 |
initial_events | array(任意) | 単一 Run の取得で include_initial_events=true を指定した場合のみ、現在の試行にバインドされた入力を返します。不明な場合は省略します。入力スナップショットの取得を参照してください。 |
triggered_at | string | RFC 3339 形式のトリガー日時。 |
started_at | string | null | RFC 3339 形式の実行開始日時。 |
completed_at | string | null | RFC 3339 形式の実行終了日時。 |
duration_ms | integer | null | 実行時間(ミリ秒)。 |
created_at | string | RFC 3339 形式のレコード作成日時。 |
status と IM 配信の push_status は独立しています。Schedule に execution.max_attempts=2 が設定されている場合、同一 Run が最終的に attempt=2 を返す可能性があります。
Identity の有効・無効とスケジュール
Identity が無効な間は新しい Schedule 実行を開始せず、未開始の Run は skipped として記録される場合があります。受け付け済みの実行と結果配信はそのまま完了します。再有効化後、定期タスクは今後のトリガー時刻から再開し、逃したトリガーを再実行しません。期限切れの単発トリガーは skipped Run を保持し、通常どおりアーカイブされます。手動で一時停止、アーカイブ、削除した Schedule は復元されません。Identity の有効化を参照してください。
入力バージョン
initial_events_version はサーバーが管理するため、作成・更新リクエストには指定しません。新規 Schedule は 1 から開始し、正規化後の initial_events の内容が実際に変わった場合のみ増加します。同じ内容の送信や、resources、名前、実行ポリシー、トリガーポリシーの変更では増加しません。以前の内容に戻した場合も新しいバージョンになります。既存 Schedule の現在の入力は 1 を基準とし、過去のバージョンは復元しません。
Run の作成時には入力はまだ紐付けられません。各 attempt で初めて入力を送信する前に、実行器が対応する内容とバージョンを Run に紐付けます。同じ attempt 内の送信リトライや復旧では、この紐付けを再利用します。新しい attempt では更新後の入力を選択できます。バージョンは attempt と合わせて解釈してください。フィールドの存在は入力が選択済みであることを示すだけで、ランタイムによる受信や実行の成功を意味しません。
入力未選択の pending、skipped Run、および実行入力を確認できない過去の Run では、このフィールドを省略します。不明なバージョンを 0 として返すことはなく、現在の Schedule のバージョンで補完することもできません。クライアントは追加フィールドを許容し、欠落したバージョンを不明として扱ってください。
Schedule の作成・更新後に schedule_id、initial_events_version、入力内容の対応を保存し、Run または Webhook コールバックのバージョンから実行入力を関連付けられます。現在の Schedule が返すのは最新設定であり、開始済み Run の設定と異なる場合があります。
Schedule Run の取得で include_initial_events=true を指定すると、現在の Schedule 設定に依存せず、その試行で選択された入力を確認できます。
作成元
source と source_session_id は読み取り専用フィールドで、v1/v2 の完全な Schedule および Schedule Run レスポンスに常に含まれます。
source | source_session_id | 意味 |
|---|---|---|
api | null | 公開 Schedule API で作成。 |
tool | 空でない sess_* | Forward の管理対象ツールで作成。作成ツール呼び出しを開始した対話 Session を示します。 |
metadata.source は変更可能な業務メタデータであり、正式な作成元を表しません。
Schedule Run は親 Schedule の作成元を継承します。今回のトリガーが手動か自動か、sinks が設定されているかには依存しません。過去の Run やアーカイブ済み Schedule の Run にも適用されます。Run の session_id は今回の実行 Session、trigger_context.type は今回のトリガー方法を示します。作成元 Session は reuse_session の実行先の紐付けを表すものではなく、内部的な作成元への結果配信先も公開の作成元としては扱いません。
作成元フィールドは後方互換性のある JSON フィールドの追加です。クライアントは未知のフィールドを許容してください。サービスのデプロイ後は、過去の Schedule と Run の取得レスポンスにも作成元フィールドが含まれ、データのバックフィルは不要です。
Trigger Context
type | 説明 |
|---|---|
schedule | Schedule のトリガーポリシーによる自動実行。scheduled_at を含みます。 |
manual | Run Schedule API による手動実行。 |
Run Error
status=failed または status=skipped の場合に error が返ることがあります。status=completed では null です。
error.type | 説明 |
|---|---|
concurrency_limit_reached | 同一 Schedule の最大同時 Run 数に達しています。今回のトリガーは記録されますが実行されません。 |
session_creation_failed | Forward Session の作成または紐付けに失敗。 |
execution_failed | Template の実行に失敗。 |