予約›スケジュールボードのジョブ移動のコミット
スケジュールボードのジョブ移動のコミット
/move/preview でプレビューした移動を適用します: ジョブを新しい時刻でテクニシャンに配置し、押しのけられたジョブを後方にずらします。これをアトミックに行います(テクニシャンごとのアドバイザリロック。サーバーはプランを再計算し、各ジョブを status_version でフェンスします — プレビュー以降のドリフトは 409 SCHEDULE_MOVE_PLAN_DRIFTED を返すので再プレビューしてください)。ボディはプレビューと同じ + 任意の `expected_version` です。SCHEDULE_BOARD_DESIGN.md を参照してください。 409 の次のステップ: SCHEDULE_MOVE_PLAN_DRIFTED — プレビュー以降にスケジュールが変わりました(または expected_move_ids が一致しなくなりました): 再プレビューし、最新のプランを表示してから再度コミットしてください。その他のコード — /move/preview と同じ対処です。
引数
idstringpath必須
ジョブリクエスト ID(UUID または short_code)
Idempotency-Keystringheader任意
Unique key making retries safe: a repeat send with the same key replays the original response (header Idempotent-Replayed: true) instead of re-running the operation. Reusing a key with a different body returns 422 IDEMPOTENCY_KEY_REUSE.
expected_member_idsarray<string>body任意
ExpectedMemberIDs — クルー移動のみ: プレビューが人員配置した完全なメンバーセットです(data.members[].technician_id をそのまま返します)。コミットの再プランが異なるセットを配置する場合(プレビューされた代替要員がその間に予約された)、コミットは SCHEDULE_MOVE_PLAN_DRIFTED で拒否されます — クルーの入れ替えが見られないまま承認されることは決してありません。オプトアウトするには省略してください。
expected_move_idsarray<string>body任意
ExpectedMoveIDs — プレビューが返した押しのけ対象ジョブの ID です(data.days[].moves[].job_id をそのまま返します)。任意ですが推奨: スケジュールが変わってコミットが異なるセットを押しのける場合(例: プレビュー以降に対象テクニシャンへ予約されたジョブ)、見ていないジョブをこっそり押しのける代わりに、コミットは SCHEDULE_MOVE_PLAN_DRIFTED で拒否されます。
expected_versionintegerbody任意
ExpectedVersion — プレビューからの移動対象ジョブの status_version です(0 = 最新のプラン読み取り値でフェンス。負の値は拒否されます)。
modeenumbody必須
Cascade mode: overtime | next_day (must match the preview).
start_atstringbody必須
New start — business-local naive datetime, no offset. Must match the preview and be in the future.
technician_idstringbody必須
Target technician (must match the preview).
POST/v1/job-requests/{id}/move/commit
curl -X POST "https://api.crisphive.com/v1/job-requests/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01/move/commit" \ -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \ -H "Content-Type: application/json" \ -d '{ "expected_member_ids": [ "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" ], "expected_move_ids": [ "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" ], "expected_version": 1, "mode": "overtime", "start_at": "2030-06-14T09:00:00", "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" }'
リクエストボディ
{
"expected_member_ids": [
],
"expected_move_ids": [
],
"expected_version": ,
"mode": ,
"start_at": ,
"technician_id":
}
Bearer