es
ReservasConfirmar inserción de emergencia + reprogramación en cascada

Confirmar inserción de emergencia + reprogramación en cascada

Aplica la cascada previsualizada por /emergency/preview: asigna el trabajo de emergencia al técnico y empuja hacia atrás los trabajos desplazados (o, con `displacement_mode=reassign`, los redota primero en sus alternativas previsualizadas), de forma atómica. Admite Idempotency-Key. El servidor recalcula el plan bajo un bloqueo y protege cada trabajo por su status_version — si algo cambió desde la vista previa devuelve 409 EMERGENCY_RESCHEDULE_PLAN_DRIFTED (vuelva a hacer preview). Mismo cuerpo que preview + `emergency_expected_version` opcional. Función aislada (véase EMERGENCY_RESCHEDULE_DESIGN.md). 409 PRÓXIMOS PASOS: EMERGENCY_RESCHEDULE_PLAN_DRIFTED — la agenda cambió entre su preview y este commit (otra reserva/movimiento ganó un carril): llame de nuevo a /preview, muestre el plan actualizado y luego haga commit. EMERGENCY_RESCHEDULE_SLOT_OCCUPIED — ventana de aterrizaje bloqueada por un ancla inamovible (P0/cuadrilla/multi-día): otro técnico u hora. Otros códigos — mismos remedios que /candidates.

Argumentos

Idempotency-Keystringheaderopcional
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.
displacement_modeenumbodyopcional
Destino de los trabajos desplazados: reschedule (por defecto) o reassign — debe coincidir con la vista previa.
emergency_expected_versionintegerbodyopcional
Cerco de bloqueo optimista del trabajo previsualizado (0 = cerco sobre la versión leída por el servidor).
emergency_job_idstringbodyobligatorio
ID del trabajo P0 a insertar.
expected_move_idsarray<string>bodyopcional
ExpectedMoveIDs — los IDs de los trabajos desplazados que devolvió la vista previa (reenvíe TANTO data.days[].moves[].job_id COMO data.reassignments[].job_id). RECOMENDADO: si la cascada recalculada afectara a un conjunto distinto (un trabajo reservado en el carril desde la vista previa), el commit se rechaza con EMERGENCY_RESCHEDULE_PLAN_DRIFTED en lugar de desplazar un trabajo que el coordinador nunca vio. Omítalo para desactivarlo.
modeenumbodyobligatorio
Modo de cascada: overtime | next_day (debe coincidir con la vista previa).
start_atstringbodyobligatorio
Inicio deseado — datetime naive en hora local del negocio. Debe estar en el futuro.
technician_idstringbodyobligatorio
Técnico objetivo (debe pertenecer al negocio).
POST/v1/job-requests/emergency/commit
curl -X POST "https://api.crisphive.com/v1/job-requests/emergency/commit" \
  -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \
  -H "Content-Type: application/json" \
  -d '{
  "displacement_mode": "reschedule",
  "emergency_expected_version": 1,
  "emergency_job_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01",
  "expected_move_ids": [
    "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01"
  ],
  "mode": "overtime",
  "start_at": "2030-06-14T09:00:00",
  "technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01"
}'
Cuerpo de la solicitud
{
"displacement_mode": ,
"emergency_expected_version": ,
"emergency_job_id": ,
"expected_move_ids": [
],
"mode": ,
"start_at": ,
"technician_id":
}

Respuestas