Réservations›Valider un déplacement d'intervention sur le tableau de planning
Valider un déplacement d'intervention sur le tableau de planning
Applique le déplacement prévisualisé par /move/preview : place l'intervention chez le technicien à la nouvelle heure et repousse les interventions déplacées, de manière atomique (verrou consultatif par technicien ; le serveur recalcule le plan et protège chaque intervention par son status_version — un écart depuis l'aperçu renvoie 409 SCHEDULE_MOVE_PLAN_DRIFTED, reprévisualisez). Même corps que preview + `expected_version` facultatif. Voir SCHEDULE_BOARD_DESIGN.md. 409 ÉTAPES SUIVANTES : SCHEDULE_MOVE_PLAN_DRIFTED — le planning a changé depuis votre aperçu (ou expected_move_ids ne correspond plus) : reprévisualisez, montrez le nouveau plan, revalidez. Tous les autres codes — mêmes remèdes que /move/preview.
Arguments
idstringpathrequis
ID de la demande d'intervention (UUID ou short_code)
Idempotency-Keystringheaderoptionnel
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>bodyoptionnel
ExpectedMemberIDs — déplacements en équipe uniquement : l'ensemble COMPLET des membres que l'aperçu
a affectés (renvoyez data.members[].technician_id). Si le nouveau plan de la validation
affectait un ensemble DIFFÉRENT (un remplaçant prévisualisé a été réservé entre-temps),
la validation est rejetée avec SCHEDULE_MOVE_PLAN_DRIFTED —
les échanges d'équipe ne sont jamais approuvés sans être vus. Omettez pour désactiver.
expected_move_idsarray<string>bodyoptionnel
ExpectedMoveIDs — les IDs des interventions déplacées renvoyés par l'aperçu (renvoyez
data.days[].moves[].job_id). Facultatif mais RECOMMANDÉ : si le planning
a changé au point que la validation repousserait un ensemble différent (p. ex. une intervention réservée sur
le technicien cible depuis l'aperçu), la validation est rejetée avec
SCHEDULE_MOVE_PLAN_DRIFTED au lieu de repousser silencieusement une intervention non vue.
expected_versionintegerbodyoptionnel
ExpectedVersion — le status_version de l'intervention déplacée, issu de l'aperçu
(0 = barrière sur la valeur lue lors du nouveau plan ; les négatifs sont rejetés).
modeenumbodyrequis
Cascade mode: overtime | next_day (must match the preview).
start_atstringbodyrequis
New start — business-local naive datetime, no offset. Must match the preview and be in the future.
technician_idstringbodyrequis
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" }'
Corps de la requête
{
"expected_member_ids": [
],
"expected_move_ids": [
],
"expected_version": ,
"mode": ,
"start_at": ,
"technician_id":
}
Bearer