Contents
On this page

Update Booking - Plugixa Car Wash

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

Change the customer details, notes and payment fields of a booking. PATCH does the same as PUT. To change the time or bay use Move Booking; to change the status use Change Booking Status.

Needs the plugixa_carwash_edit capability.

Only what you send changes. Fields you leave out keep their value. Any other field, such as status, start_at or total, is ignored.

Note. payment_status is written as sent, without looking at the payments recorded, and a value that is not one of the four becomes unpaid. It is worked out again from the payments the next time one is recorded. Changing email here does not move the booking to another customer.

Request

PUT https://your-site.example/wp-json/plugixa-carwash/v1/bookings/42

Path parameters

Name Type Description
id integer The booking’s id

Request body

Content type: application/json

Field Type Required Description
first_name string No First name.
last_name string No Last name.
email string No Must be a valid address.
phone string No Phone number.
company string No Company name.
vehicle_make string No Make and model.
vehicle_plate string No Number plate.
address string No Address.
message string No The customer’s note.
staff_notes string No Internal notes, never shown to the customer.
payment_method string No A payment method id.
payment_status string No unpaid, paid, partially_paid or refunded.
modified_at string No The modified_at you last read. When the booking has changed since, the update is refused with 409.
{
  "phone": "+1 217 555 0100",
  "staff_notes": "Prefers Bay 1",
  "modified_at": "2026-11-12 09:30:00"
}

Responses

200 OK. data is the updated booking.

{
  "success": true,
  "data": {
    "id": 42,
    "number": "CW2026-0042",
    "form_id": null,
    "location_id": 3,
    "resource_id": 5,
    "customer_id": 25,
    "customer_vehicle_id": 31,
    "vehicle_type_id": 2,
    "package_id": 4,
    "start_at": "2026-11-14 15:00:00",
    "end_at": "2026-11-14 16:00:00",
    "blocked_until": "2026-11-14 16:10:00",
    "duration": 60,
    "status": "confirmed",
    "hold_expires_at": null,
    "first_name": "Lucas",
    "last_name": "Bernard",
    "email": "lucas@example.com",
    "phone": "+1 217 555 0100",
    "company": "",
    "vehicle_make": "Toyota RAV4",
    "vehicle_plate": "ABC1234",
    "address": "",
    "message": "",
    "agreements": [],
    "currency": "USD",
    "subtotal": 49.0,
    "discount": 0.0,
    "coupon_code": "",
    "tax": 3.06,
    "total": 52.06,
    "payment_method": "cash",
    "payment_status": "unpaid",
    "source": "staff",
    "page_url": "",
    "staff_notes": "Prefers Bay 1",
    "created_by": 1,
    "modified_by": 1,
    "created_at": "2026-11-12 09:30:00",
    "modified_at": "2026-11-12 10:05:00",
    "deleted_at": null,
    "items": [
      {
        "role": "package",
        "item_id": 4,
        "name": "Deluxe",
        "price": 49.0,
        "duration": 60
      }
    ],
    "events": [
      {
        "from": "",
        "to": "confirmed",
        "note": "Booked by staff",
        "user_id": 1,
        "created_at": "2026-11-12 09:30:00"
      }
    ],
    "next": [
      "in_progress",
      "completed",
      "cancelled",
      "no_show"
    ],
    "location": {
      "id": 3,
      "name": "Riverside"
    },
    "local_date": "2026-11-14",
    "local_time": "09:00",
    "resource": {
      "id": 5,
      "name": "Bay 1",
      "color": "#0EA5E9"
    },
    "payments": []
  }
}
Field Type Meaning
data.id integer The booking’s id
data.modified_at string UTC datetime of this change

The full shape is the one Get Booking returns.

Errors

Status Code When
404 plugixa_carwash_not_found No booking with that id, or it is in the trash.
422 plugixa_carwash_invalid_email email is not a valid address.
409 plugixa_carwash_conflict You sent modified_at and somebody saved the booking since.

Plus the errors every endpoint can return.

Examples

curl -s -X PUT "https://your-site.example/wp-json/plugixa-carwash/v1/bookings/42" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+1 217 555 0100","staff_notes":"Prefers Bay 1","modified_at":"2026-11-12 09:30:00"}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-carwash/v1/bookings/42');
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',
        'staff_notes' => 'Prefers Bay 1',
        '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/bookings/42', {
  method: 'PUT',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    phone: '+1 217 555 0100',
    staff_notes: 'Prefers Bay 1',
    modified_at: '2026-11-12 09:30:00',
  }),
});
const { data } = await response.json();

Quick Links

Share