Update a customer
PARTIAL update — send only the fields you are changing; anything you OMIT is left exactly as stored (two-way CRM sync friendly: push one field from your system of record without re-sending the record). To CLEAR a field, send it as an empty string: uid, phone, email, notes, preferred_technician_id, service_area_id. `tier` and `status` are enums with no empty member, so an empty value there is ignored rather than stored. `full_name` cannot be set to empty. The nested `address` object is all-or-nothing: omit it to leave the stored address (and its coordinates) untouched; when present it REPLACES the whole block, and missing latitude/longitude are geocoded from the address. A customer must keep at least one contact channel — an update that would clear both phone and email is refused with PHONE_OR_EMAIL_REQUIRED.
Arguments
curl -X PUT "https://api.crisphive.com/v1/customers/9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01" \ -H "Authorization: Bearer chsk_test_4eC8xQ9mZ2pL7Ka0rT" \ -H "Content-Type: application/json" \ -d '{ "address": { "city": "San Francisco", "country": "US", "formatted": "123 Market Street, San Francisco, CA 94103", "latitude": 1, "line": "123 Market Street", "line2": "Suite 200", "longitude": 1, "postal_code": "94103", "state": "CA" }, "email": "jane.doe@example.com", "full_name": "Jane Cooper", "notes": "Please call on arrival.", "phone": "+14155550142", "preferred_technician_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01", "service_area_id": "9b2f6c3e-1a4d-4f0a-8f2e-7c5d1b3a9e01", "sms_opt_in": true, "status": "active", "tier": "regular", "uid": "CRM-10293" }'