Contents
On this page

Update Location - Plugixa Car Rental

PUT /plugixa-car-rental/v1/locations/{id}

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

The user needs the plugixa_car_rental_edit capability.

Note. The “pickups, returns or both” check only runs when the same request sends both allows_pickup and allows_return. Sending {"allows_pickup": false} to a location whose returns are already off is accepted and leaves a location nobody can use. Send both together.

Request

PUT https://your-site.example/wp-json/plugixa-car-rental/v1/locations/1

Path parameters

Name Type Description
id integer The location’s id

Request body

Content type: application/json

Field Type Required Description
name string No Must not be blank.
code string No Upper-cased. Letters, digits, dashes and underscores only. Must not be another live location’s code.
address string No Plain text, line breaks kept.
city string No City.
country string No Country.
latitude number No -90 to 90, rounded to 7 decimals. Empty or null for none.
longitude number No -180 to 180, rounded to 7 decimals. Empty or null for none.
phone string No Phone number.
email string No Must be a valid address when given.
timezone string No A time zone name such as Europe/Paris. Empty means the site’s time zone. Pickup and return times at this location are read on this clock.
opening_hours object No The whole week, in the same shape as on create: it replaces the stored hours. null resets them to Monday to Saturday 08:00 to 18:00, closed on Sunday.
allows_pickup boolean No
allows_return boolean No A location must allow pickups, returns or both.
after_hours_fee number No When above 0, a pickup or return outside the opening hours is accepted and this fee is added to the price. At 0 such a time is refused.
image_id integer No An image in the media library, or 0 for none.
sort_order integer No Position in lists, lowest first. May be negative.
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. A field you send is checked the same way as on Create Location.

{
  "after_hours_fee": 40,
  "modified_at": "2026-11-12 09:30:00"
}

Responses

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

{
  "success": true,
  "data": {
    "id": 1,
    "code": "PAR-GDL",
    "name": "Paris Gare de Lyon",
    "address": "20 Boulevard Diderot",
    "city": "Paris",
    "country": "France",
    "latitude": 48.8443,
    "longitude": 2.3743,
    "phone": "+33 1 23 45 67 89",
    "email": "gare-de-lyon@your-site.example",
    "timezone": "Europe/Paris",
    "opening_hours": {
      "mon": [
        {
          "open": "08:00",
          "close": "19:00"
        }
      ],
      "tue": [
        {
          "open": "08:00",
          "close": "19:00"
        }
      ],
      "wed": [
        {
          "open": "08:00",
          "close": "19:00"
        }
      ],
      "thu": [
        {
          "open": "08:00",
          "close": "19:00"
        }
      ],
      "fri": [
        {
          "open": "08:00",
          "close": "19:00"
        }
      ],
      "sat": [
        {
          "open": "09:00",
          "close": "12:30"
        },
        {
          "open": "14:00",
          "close": "18:00"
        }
      ],
      "sun": []
    },
    "allows_pickup": true,
    "allows_return": true,
    "after_hours_fee": 40.0,
    "image_id": null,
    "sort_order": 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
  }
}
Field Type Meaning
data.after_hours_fee number Fee for a pickup or return outside the hours. 0 refuses such times
data.modified_at string UTC datetime of this change

Errors

Status Code When
404 plugixa_car_rental_not_found No location with that id, or it is in the trash.
422 plugixa_car_rental_missing_name name is missing or blank.
422 plugixa_car_rental_invalid_code code has a character other than letters, digits, dashes and underscores.
409 plugixa_car_rental_duplicate_code Another live location has this code.
422 plugixa_car_rental_invalid_email email is not a valid address.
422 plugixa_car_rental_out_of_range latitude or longitude is out of range.
422 plugixa_car_rental_invalid_timezone timezone is not a time zone name the server knows.
422 plugixa_car_rental_invalid_hours opening_hours is not in the shape above, a time is not HH:MM, an opening is not before its closing, or two openings overlap.
422 plugixa_car_rental_no_purpose allows_pickup and allows_return were both sent as false.
422 plugixa_car_rental_unknown_reference image_id is not an image.
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 location 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/locations/1" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"after_hours_fee":40,"modified_at":"2026-11-12 09:30:00"}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-car-rental/v1/locations/1');
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([
        'after_hours_fee' => 40,
        '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/locations/1', {
  method: 'PUT',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ after_hours_fee: 40, modified_at: '2026-11-12 09:30:00' }),
});
const { data } = await response.json();

Quick Links

Share