Reservas›Disparar cotización (acción FIXED — negocio)
Disparar cotización (acción FIXED — negocio)
Envía la cotización: fija las columnas quoted_at + duration, avanza pending_action a confirm_booking. El estado permanece en `booking`.
Argumentos
idstringpathobligatorio
ID de la solicitud de trabajo
▾crewarray<object>bodyopcional
Crew — plan de varias personas (técnico líder + compañeros). Omitir / vacío = una sola
persona (líder 100%). Cuando está presente debe tener exactamente un is_lead y
wrench_percent que sume 100. Véase MULTIPERSON_CREW_DESIGN.md.
demobilization_minutesintegerbodyopcional
Demobilization (teardown) minutes added after the work. Optional, min 0.
forcebooleanbodyopcional
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_minutesintegerbodyopcional
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_minutesintegerbodyopcional
Mobilization (setup/travel-prep) minutes added before the work. Optional, min 0.
status_versionintegerbodyopcional
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 }'
Cuerpo de la solicitud
{
"crew": [
{
"is_lead": ,
"skill_ids": [
],
"wrench_percent":
}
],
"demobilization_minutes": ,
"force": ,
"job_duration_minutes": ,
"mobilization_minutes": ,
"status_version":
}
Bearer