Skip to main content

PUT /appointments/:id

Full replacement of all mutable fields on an existing appointment. This is an idempotent operation — the entire mutable state of the appointment is replaced by the request body. Fields not included in the request body will be set to null.

To elect a transportation type and transition the appointment to ready, include transportation_type in the request body. HopDrive's internal event system stages the move automatically — no further action is required.

Cannot be called on appointments in a terminal state (canceled, refunded, failed) or with a past appointment_time.

Example Request

PUT /v1/appointments/:id
{
"consumer_at_pickup": true,
"delivery_location_id": 5678,
"pickup_location_id": 9012,
"appointment_time": "2026-03-10T09:00:00-05:00",
"consumer_name": "Jane Smith",
"consumer_phone": "+15555550101",
"transportation_type": "valet",
"vehicle_vin": "1HGBH41JXMN109186",
"vehicle_make": "Honda",
"vehicle_model": "Accord",
"vehicle_year": 2022,
"vehicle_color": "Silver",
"vehicle_manual": false,
"driver_notes": "Gate code 1234",
"config": {}
}

Body Params

FieldTypeRequired?Description
consumer_at_pickupBooleanRequiredtrue if the vehicle is at the consumer's location. false if the vehicle is already at the dealership.
delivery_location_idNumberRequiredHopDrive location ID for the dealership service address.
appointment_timeStringOptionalISO 8601 timestamp for when the vehicle must arrive at the dealership. Omit or pass null to clear.
consumer_nameStringOptionalConsumer full name. Omit or pass null to clear.
consumer_phoneStringOptionalConsumer mobile phone number. Omit or pass null to clear.
pickup_location_idNumberOptionalHopDrive location ID for the consumer's pickup address. Omit or pass null to clear.
transportation_typeStringOptionalElected service type. Must be one of: valet, mobile_service, shuttle, rideshare. Setting this transitions the appointment to ready.
vehicle_vinStringOptionalVehicle Identification Number.
vehicle_makeStringOptionalVehicle make (e.g., "Honda").
vehicle_modelStringOptionalVehicle model (e.g., "Accord").
vehicle_yearNumberOptionalVehicle model year.
vehicle_colorStringOptionalVehicle color.
vehicle_manualBooleanOptionaltrue if the vehicle has a manual transmission.
driver_notesStringOptionalGate codes, special pickup instructions, or other notes for the driver.
configObjectOptionalFlexible JSONB metadata object for integration-specific keys.

Example Response

200 /v1/appointments/:id
{
"id": 88001234,
"status": "ready",
"customer_id": 1234,
"appointment_time": "2026-03-10T14:00:00+00:00",
"consumer_name": "Jane Smith",
"consumer_phone": "+15555550101",
"consumer_at_pickup": true,
"pickup_location_id": 9012,
"delivery_location_id": 5678,
"vehicle_vin": "1HGBH41JXMN109186",
"vehicle_make": "Honda",
"vehicle_model": "Accord",
"vehicle_year": 2022,
"vehicle_color": "Silver",
"vehicle_manual": false,
"driver_notes": "Gate code 1234",
"move_id": null,
"config": { "transportation_type": "valet" },
"updatedat": "2026-03-05T18:30:00.000000+00:00"
}
info

The move_id field is populated asynchronously by HopDrive after the move is staged internally. It will be null in the immediate response.