Contents
On this page

Update Customer - Plugixa Car Wash

PUT /plugixa-carwash/v1/customers/{id}

Change some or all of a customer’s fields. PATCH does the same as PUT.

Needs the plugixa_carwash_edit capability.

Only what you send changes. A field you leave out keeps its value, so you can send a single field. A field you send is checked exactly as on create.

Note. Changing a customer does not change their bookings: each booking keeps the name, e-mail and phone it was made with.

Request

PUT https://your-site.example/wp-json/plugixa-carwash/v1/customers/25

Path parameters

Name Type Description
id integer The customer’s id

Request body

Content type: application/json

Field Type Required Description
email string No A valid address, at most 190 characters, not used by another customer.
first_name string No At most 100 characters.
last_name string No At most 100 characters.
phone string No At most 50 characters.
company string No At most 190 characters.
address string No At most 255 characters.
notes string No Internal notes. Line breaks are kept.
status string No published or unpublished.
modified_at string No The modified_at you last read. When the customer has changed since, the update is refused with 409.
{
  "phone": "+1 217 555 0100",
  "modified_at": "2026-11-12 09:30:00"
}

Responses

200 OK. data is the updated customer.

{
  "success": true,
  "data": {
    "id": 25,
    "first_name": "Lucas",
    "last_name": "Bernard",
    "email": "lucas@example.com",
    "phone": "+1 217 555 0199",
    "company": "",
    "address": "",
    "notes": "",
    "wp_user_id": null,
    "status": "published",
    "created_by": 1,
    "modified_by": 1,
    "created_at": "2026-11-10 08:15:00",
    "modified_at": "2026-11-12 09:30:00",
    "deleted_at": null,
    "vehicles": [
      {
        "id": 31,
        "vehicle_type_id": 2,
        "make": "Toyota RAV4",
        "plate": "ABC1234"
      }
    ],
    "visits": 4,
    "last_visit": "2026-11-08 14:00:00",
    "spent": 156.24,
    "name": "Lucas Bernard"
  }
}
Field Type Meaning
data.id integer The customer’s id
data.email string Unique among customers not in the trash
data.wp_user_id string|null Not set by the plugin today. When set it is a number in a string
data.status string published or unpublished
data.vehicles array Vehicles remembered from their bookings: id, vehicle_type_id, make, plate
data.visits integer Bookings completed or in_progress
data.last_visit string|null UTC start of the latest of those
data.spent number Total of those bookings
data.name string First and last name together
data.created_at string UTC datetime
data.modified_at string UTC datetime of the last change. Send it back on an update to be warned about a conflicting edit
data.deleted_at string|null null unless the record is in the trash

Errors

Status Code When
404 plugixa_carwash_not_found No customer with that id, or it is in the trash.
422 plugixa_carwash_missing_email email is missing or empty.
422 plugixa_carwash_invalid_email email is not a valid address.
422 plugixa_carwash_too_long_{field} A text field is too long. The code names the field.
422 plugixa_carwash_invalid_{field} A choice field has a value that is not one of its choices. The code names the field.
409 plugixa_carwash_duplicate_email Another customer already uses this e-mail address.
409 plugixa_carwash_conflict You sent modified_at and somebody saved the customer since. data.expected and data.current hold both values.

Plus the errors every endpoint can return.

Examples

curl -s -X PUT "https://your-site.example/wp-json/plugixa-carwash/v1/customers/25" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+1 217 555 0100","modified_at":"2026-11-12 09:30:00"}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-carwash/v1/customers/25');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'admin:' . getenv('WP_APP_PASSWORD'),
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'phone'       => '+1 217 555 0100',
        'modified_at' => '2026-11-12 09:30:00',
    ]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const auth = Buffer.from(`admin:${process.env.WP_APP_PASSWORD}`).toString('base64');
const response = await fetch('https://your-site.example/wp-json/plugixa-carwash/v1/customers/25', {
  method: 'PUT',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ phone: '+1 217 555 0100', modified_at: '2026-11-12 09:30:00' }),
});
const { data } = await response.json();

Quick Links

Share