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 409 price_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