Contents
On this page
Reschedule Customer Booking - Plugixa Car Parking
POST /plugixa-car-parking/v1/account/bookings/{ref}/reschedule
Move a booking to a new entry and exit time and price it again, or only preview the new price.
Needs Plugixa Car Parking Pro. Anyone may call it with the public nonce the plugin’s pages print (see Public routes), but only for a booking they own: the signed-in customer the booking belongs to, or anyone who sends the e-mail on the booking. It counts against the account_change rate limit, shared with cancelling: 10 an hour per visitor address, previews included. See Reschedule for how customers use it.
Note. The new price applies even when it is higher, unless you send back the total the customer agreed to: then a different price is refused with
409price_changed. A preview checks neither availability nor opening hours, so a preview can succeed and the move then fail. Unlike cancelling, rescheduling is not stopped by the cancellation cut-off.
Request
POST https://your-site.example/wp-json/plugixa-car-parking/v1/account/bookings/PKG-3F9A2C/reschedule
Path parameters
| Name | Type | Description |
|---|---|---|
ref |
string |
The booking reference: letters, digits and hyphens |
Request body
Content type: application/json. Send the nonce as security here or in the X-Plugixa-Carparking-Nonce header.
| Field | Type | Required | Description |
|---|---|---|---|
entry |
string |
Yes | New entry date and time, car park local time, YYYY-MM-DD HH:MM. |
exit |
string |
Yes | New exit date and time. Must be after entry. |
email |
string |
No | The e-mail on the booking. Needed unless the caller is signed in as the booking’s owner. |
preview |
boolean |
No | true to get the new price without changing anything. |
total |
number |
No | The new total the customer agreed to, from a preview. When sent, the move is refused if the price differs by a cent or more. |
security |
string |
Yes | The public nonce, unless sent in the header. |
Only a booking whose status is pending, confirmed or paid can be moved. The new window must respect the minimum notice, the furthest bookable date and the location’s opening hours, and have room for the booking. The booking keeps its location, space type, quantity, extras and coupon; it keeps its numbered space PRO when that is free, else takes another. When money has already been taken, the booking’s payment status is worked out again against the new total. Nothing is charged or refunded by this route.
{
"email": "lucas@example.com",
"entry": "2026-11-21 08:00",
"exit": "2026-11-24 18:00",
"total": 48.0
}
Responses
200 OK, with preview. The new price.
{
"success": true,
"message": "",
"data": {
"total": 48.0,
"previous_total": 48.0,
"changed": false
}
}
| Field | Type | Meaning |
|---|---|---|
data.total |
number |
The total for the new window |
data.previous_total |
number |
The booking’s current total |
data.changed |
boolean |
Whether the two differ by a cent or more |
200 OK. The booking was moved.
{
"success": true,
"message": "Your booking has been rescheduled.",
"data": {
"id": 57,
"booking_ref": "PKG-3F9A2C",
"status": "pending",
"payment_status": "unpaid",
"entry_datetime": "2026-11-21 08:00:00",
"exit_datetime": "2026-11-24 18:00:00",
"quantity": 1,
"total": 48.0,
"currency": "EUR",
"location_name": "Airport Parking P1",
"space_type_name": "Standard car",
"can_cancel": true,
"summary_url": ""
}
}
data has the same fields as a row of List Customer Bookings.
Errors
| Status | Code | When |
|---|---|---|
403 |
rest_error |
The nonce is missing or not valid. |
404 |
rest_error |
“Booking not found.”: no booking has that reference. |
403 |
rest_error |
“You are not allowed to manage this booking.”: the caller is not the owner and email does not match. |
409 |
rest_error |
“This booking can no longer be changed.”: its status is not pending, confirmed or paid. |
422 |
rest_error |
entry or exit is missing or not a date. |
422 |
invalid_range |
exit is not after entry. |
422 |
too_soon |
entry is in the past or inside the minimum notice. |
422 |
too_far |
entry is further ahead than bookings are taken. |
422 |
location_closed |
The car park is closed on the entry or exit date. |
422 |
outside_hours |
The entry or exit time is outside opening hours. |
409 |
no_availability |
There is no room for the booking in the new window. |
409 |
price_changed |
total was sent and the new price differs. data.total holds the new price. |
409 |
busy |
Another booking at the same location was being made at that moment. Try again. |
500 |
update_failed |
The booking could not be saved. |
Plus the errors every endpoint can return.
Examples
curl -s -X POST "https://your-site.example/wp-json/plugixa-car-parking/v1/account/bookings/PKG-3F9A2C/reschedule" \
-H "Content-Type: application/json" \
-H "X-Plugixa-Carparking-Nonce: $PCP_NONCE" \
-d '{"email":"lucas@example.com","entry":"2026-11-21 08:00","exit":"2026-11-24 18:00","total":48.0}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-car-parking/v1/account/bookings/PKG-3F9A2C/reschedule');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Plugixa-Carparking-Nonce: ' . getenv('PCP_NONCE'),
],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'lucas@example.com',
'entry' => '2026-11-21 08:00',
'exit' => '2026-11-24 18:00',
'total' => 48.0,
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const response = await fetch('https://your-site.example/wp-json/plugixa-car-parking/v1/account/bookings/PKG-3F9A2C/reschedule', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Plugixa-Carparking-Nonce': PCP_NONCE,
},
body: JSON.stringify({
email: 'lucas@example.com',
entry: '2026-11-21 08:00',
exit: '2026-11-24 18:00',
total: 48.0,
}),
});
const { data } = await response.json();
Quick Links
Share