de
BuchungenBuchung im Namen des Kunden bestätigen

Buchung im Namen des Kunden bestätigen

Löst die Kunden-Aktion `confirm_booking` von der GESCHÄFTS-Oberfläche aus (auditiert als business_on_behalf). Zwei Anwendungsfälle: (1) LIVE — Mitarbeiter bestätigen einen Slot für einen Kunden, der telefonisch gebucht hat; (2) SANDBOX — die Magic-Token-Oberfläche des Kunden ist nur live verfügbar (der Link eines Sandbox-Auftrags kann nie einen echten Kunden erreichen), daher ist dies der EINZIGE Weg, einen Sandbox-Testauftrag über die Buchung hinaus voranzutreiben (buchen → Angebot → bestätigen → zuweisen → abschließen). Der Body enthält das vom Kunden gewählte scheduled_at (unternehmenslokale naive Datetime). ENTSCHEIDUNGSTABELLE — jeder 409, den dieser Endpoint zurückgibt, und der richtige NÄCHSTE SCHRITT (verzweigen Sie über error_code, nie über den HTTP-Status): • JOB_REQUEST_STAGE_CONFLICT — der Auftrag hat sich seit dem Lesen geändert (HINWEIS: jeder FEHLGESCHLAGENE Bestätigungsversuch erhöht status_version ebenfalls, so gewollt). Nächstes: Auftrag erneut per GET holen, mit frischer status_version wiederholen. • JOB_REQUEST_ACTION_NOT_PENDING — der Auftrag ist nicht mehr im Bestätigungsschritt (üblicherweise: bereits bestätigt). Nächstes: erneut per GET holen und aktuellen Status anzeigen; nicht wiederholen. • JOB_REQUEST_NO_TECHNICIAN_AVAILABLE — die ZEIT ist für alle nicht machbar (außerhalb der Arbeitszeiten / des Kundenfensters, oder niemand qualifiziert sich). Nächstes: andere Zeit über booking-windows / time-segments wählen. KEIN Notfall — Verdrängung kann keine Kapazität herbeizaubern. • JOB_REQUEST_TECH_INFEASIBLE — der ERZWUNGENE Techniker kann den Auftrag dann nie übernehmen; `data.reason` nennt den Grund: cannot_arrive_in_time (Anfahrt/Schichtbeginn — `data.earliest_feasible_at` (RFC3339 UTC) ist die früheste Zeit am selben Tag, zu der er vor Ort sein KANN → bieten Sie sie an) | missing_required_skills | not_available_today | not_lead_tier. Nächstes: Techniker behalten und auf earliest_feasible_at+ umplanen, ODER Zeit behalten und technician_id weglassen (Auto-Auswahl) / anderen Techniker aus time-segments wählen. KEIN Notfall. • JOB_REQUEST_P0_REQUIRES_DISPLACEMENT — der EINZIGE Code, der in den NOTFALL-Ablauf führt: der Auftrag ist P0, der Techniker qualifiziert sich, aber die Bahn ist tatsächlich belegt. Nächstes: POST emergency/candidates → preview → commit (der Commit bestätigt automatisch). Vorbehalt: sind die belegenden Aufträge selbst P0, lehnt die Vorschau mit EMERGENCY_RESCHEDULE_SLOT_OCCUPIED ab (P0 verdrängt nie P0) — dann anderen Techniker/andere Zeit wählen.

Argumente

idstringpatherforderlich
Auftragsanfrage-ID
Idempotency-Keystringheaderoptional
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.
arrival_window_minutesintegerbodyoptional
ArrivalWindowMinutes = Breite (in Minuten) des Ankunftsfensters, das der Kunde im Slot-Picker angeklickt hat (entspricht time_slot_step_minutes, Standard 30). Wird gespeichert, damit die Detailansicht nach der Bestätigung das richtige Fenster erneut rendert. Optional; Grenzen ([5, 240], passend zum Slot-Picker-Schritt) werden im Usecase validiert — eine einzige Autorität, ein Fehlercode (JOB_REQUEST_INVALID_INPUT).
scheduled_atstringbodyoptional
Chosen start time — business-local naive datetime, no offset (the business_time.datetime value from the time-segments picker). The server converts to UTC using the job's business timezone.
status_versionintegerbodyoptional
Optimistic-lock fence: the status_version from your last read. Omitted/0 = fence on the row's current version (no race protection).
technician_idstringbodyoptional
TechnicianID (nur GESCHÄFTS-Bestätigung — auf der Kundenoberfläche ignoriert): weist den Auftrag zwangsweise diesem Techniker zu statt der eingestuften Auto-Auswahl. Die Einstufung wird umgangen; Machbarkeit (Arbeitszeiten/Abwesenheiten/Geo/Fähigkeiten), die TierLead-Regel und der Doppelbuchungsschutz gelten weiterhin — ein nicht machbarer erzwungener Techniker führt zur Ablehnung der Bestätigung (P0 erhält den Verdrängungshinweis).
POST/v1/job-requests/{id}/confirm
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"
}'
Anfragetext
{
"arrival_window_minutes": ,
"scheduled_at": ,
"status_version": ,
"technician_id":
}

Antworten