顧客の代理で予約を確定する
顧客アクターの `confirm_booking` アクションをビジネスサーフェスから発火します(business_on_behalf として監査されます)。用途は 2 つあります: (1) ライブ — 電話で予約した顧客のためにスタッフが枠を確定する。(2) サンドボックス — 顧客のマジックトークンサーフェスはライブ専用のため(サンドボックスジョブのリンクが実際の顧客に届くことはありません)、これがサンドボックスのテストジョブを予約より先へ進める唯一の方法です(予約 → 見積もり → 確定 → 割り当て → 完了)。ボディには顧客が選んだ scheduled_at(ビジネスローカルのナイーブな日時)を含めます。 決定表 — このエンドポイントが返すすべての 409 と、正しい次のステップ(HTTP ステータスではなく error_code で分岐してください): • JOB_REQUEST_STAGE_CONFLICT — 読み取ってからジョブが変わりました(注: 確定に失敗した試行も設計上 status_version を増やします)。次: ジョブを再 GET し、最新の status_version でリトライしてください。 • JOB_REQUEST_ACTION_NOT_PENDING — ジョブはもう確定ステップにありません(通常: 既に確定済み)。次: 再 GET して現在のステータスを表示してください。リトライしないでください。 • JOB_REQUEST_NO_TECHNICIAN_AVAILABLE — その時刻が全員にとって実行不可能です(勤務時間/顧客ウィンドウ外、または適格者がいない)。次: booking-windows / time-segments で別の時刻を選んでください。緊急ケースではありません — 押しのけでキャパシティは生み出せません。 • JOB_REQUEST_TECH_INFEASIBLE — 強制指定したテクニシャンはその時刻に決してジョブを担当できません。`data.reason` が理由を示します: cannot_arrive_in_time(移動/シフト開始 — `data.earliest_feasible_at`(RFC3339 UTC)が現場に到着できる当日最初の時刻 → それを提示)| missing_required_skills | not_available_today | not_lead_tier。次: テクニシャンを維持して earliest_feasible_at 以降に日程変更する、または時刻を維持して technician_id を外す(自動選択)/ time-segments から別のテクニシャンを選んでください。緊急ケースではありません。 • JOB_REQUEST_P0_REQUIRES_DISPLACEMENT — 緊急フローへ進む唯一のコードです: ジョブは P0、テクニシャンは適格ですが、レーンが実際に埋まっています。次: emergency/candidates → preview → commit を POST してください(コミットで自動確定されます)。注意: 埋めているジョブ自体が P0 の場合、プレビューは EMERGENCY_RESCHEDULE_SLOT_OCCUPIED で拒否されます(P0 が P0 を押しのけることは決してありません)— その場合は別のテクニシャン/時刻を選んでください。
引数
curl -X POST "https://api.crisphive.com/v1/job-requests/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01/confirm" \ -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \ -H "Content-Type: application/json" \ -d '{ "arrival_window_minutes": 1, "scheduled_at": "2030-06-14T09:00:00", "status_version": 2, "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" }'