Contents
On this page

Update Rate Plan - Plugixa Car Rental

PUT /plugixa-car-rental/v1/rate-plans/{id}

Change a rate. Only the fields you send are changed; PATCH works the same way.

The user needs the plugixa_car_rental_edit capability.

Note. A new price applies to new quotes and bookings only. Bookings already made keep the lines they were priced with.

Request

PUT https://your-site.example/wp-json/plugixa-car-rental/v1/rate-plans/5

Path parameters

Name Type Description
id integer The rate’s id

Request body

Content type: application/json

Field Type Required Description
vehicle_model_id integer No An existing vehicle model.
daily_rate number No More than 0. Rounded to 2 decimals.
location_id integer No A location, so the rate applies only to rentals picked up there. 0 for every location.
min_days integer No 1 to 1000.
max_days integer No 0 for “and longer”, else from min_days to 1000.
name string No Your label, up to 100 characters.
status string No published or unpublished.
modified_at string No The modified_at you read. When it differs from the stored one the update is refused with 409. See Edit conflicts.

Fields you leave out keep their stored value. The whole rate, as it would be after the change, is checked again, overlap included.

{
  "daily_rate": 69,
  "modified_at": "2026-11-12 09:30:00"
}

Responses

200 OK. data is the rate as it now is.

{
  "success": true,
  "data": {
    "id": 5,
    "vehicle_model_id": 4,
    "location_id": null,
    "name": "Short rental",
    "min_days": 1,
    "max_days": 6,
    "daily_rate": 69.0,
    "status": "published",
    "created_by": 1,
    "modified_by": 1,
    "created_at": "2026-11-12 09:30:00",
    "modified_at": "2026-11-12 10:15:00",
    "deleted_at": null,
    "vehicle_model_name": "Peugeot 3008",
    "location_name": null
  }
}
Field Type Meaning
data.daily_rate number Price per day for a rental in that range
data.modified_at string UTC datetime of this change

Errors

Status Code When
404 plugixa_car_rental_not_found No rate with that id, or it is in the trash.
422 plugixa_car_rental_invalid vehicle_model_id is missing or not a model, location_id is not a location, the day range is out of bounds, or daily_rate is not above 0. data.field names the field.
409 plugixa_car_rental_rate_overlap Another rate for the same model and location covers some of the same days. data.conflict is its id.
422 plugixa_car_rental_invalid_choice status is not published or unpublished. data.allowed lists the accepted values.
422 plugixa_car_rental_not_a_number A number field was sent as something else. data.field names it.
422 plugixa_car_rental_negative_number A number field that cannot be negative is. data.field names it.
422 plugixa_car_rental_too_long A text field is longer than its column. data.field names it and data.max gives the limit.
409 plugixa_car_rental_conflict You sent modified_at and the rate has been saved by someone else since. data.expected and data.current carry both values.

Plus the errors every endpoint can return.

Examples

curl -s -X PUT "https://your-site.example/wp-json/plugixa-car-rental/v1/rate-plans/5" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"daily_rate":69,"modified_at":"2026-11-12 09:30:00"}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-car-rental/v1/rate-plans/5');
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([
        'daily_rate'  => 69,
        '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-car-rental/v1/rate-plans/5', {
  method: 'PUT',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ daily_rate: 69, modified_at: '2026-11-12 09:30:00' }),
});
const { data } = await response.json();

Quick Links

Share