de
Buchungen›Angebot auslösen (FIXED-Aktion — Geschäft)

Angebot auslösen (FIXED-Aktion — Geschäft)

Sendet das Angebot: setzt die Spalten quoted_at + duration, stellt pending_action auf confirm_booking. Der Status bleibt `booking`.

Argumente

idstringpatherforderlich
Auftragsanfrage-ID
▾crewarray<object>bodyoptional
Crew — Plan für mehrere Personen (Tech-Lead + Buddies). Weglassen / leer = eine Person (Lead 100 %). Wenn vorhanden, muss genau ein is_lead gesetzt sein und wrench_percent muss sich auf 100 summieren. Siehe MULTIPERSON_CREW_DESIGN.md.
is_leadbooleanbodyoptional
Whether this slot is the crew lead. Exactly one slot must set it.
skill_idsarray<string>bodyoptional
UUIDs of the skills this slot requires (hard filter for the matching engine). Optional; up to 20.
wrench_percentintegerbodyoptional
This slot's share of the job's man-hours, in percent (1–100). Shares across all slots must sum to 100.
demobilization_minutesintegerbodyoptional
Demobilization (teardown) minutes added after the work. Optional, min 0.
forcebooleanbodyoptional
Schedule the job even when no technician can take it in ANY window the customer asked for (outside working hours, outside every service area, nobody free). Without it that case answers 409 JOB_REQUEST_QUOTE_NOT_SCHEDULABLE with the reason, so the coordinator can agree a different time with the customer first. Send true only after that conversation; the override is recorded in the activity feed.
job_duration_minutesintegerbodyoptional
Hands-on work duration in minutes (man-minutes for a crew job), min 1. On POST /quote it may be OMITTED when the job's job type carries a default_duration_minutes: the quote then uses the type's default duration and its default buffers (a buffer you send still wins). No duration and no default answers 400 JOB_REQUEST_QUOTE_INVALID. PATCH /quote always requires it.
mobilization_minutesintegerbodyoptional
Mobilization (setup/travel-prep) minutes added before the work. Optional, min 0.
status_versionintegerbodyoptional
Optimistic-lock fence: the status_version from your last read. Omitted/0 = fence on the row's current version (no race protection).
POST/v1/job-requests/{id}/quote
curl -X POST "https://api.crisphive.com/v1/job-requests/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01/quote" \
  -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \
  -H "Content-Type: application/json" \
  -d '{
  "crew": [
    {
      "is_lead": true,
      "skill_ids": [
        "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01"
      ],
      "wrench_percent": 50
    }
  ],
  "demobilization_minutes": 15,
  "force": false,
  "job_duration_minutes": 120,
  "mobilization_minutes": 15,
  "status_version": 1
}'
Anfragetext
{
"crew": [
{
"is_lead": ,
"skill_ids": [
],
"wrench_percent":
}
],
"demobilization_minutes": ,
"force": ,
"job_duration_minutes": ,
"mobilization_minutes": ,
"status_version":
}

Antworten