Contents
On this page

Create Vehicle Type - Plugixa Car Wash

POST /plugixa-carwash/v1/vehicle-types

Create a vehicle type.

Needs the plugixa_carwash_create capability.

Request

POST https://your-site.example/wp-json/plugixa-carwash/v1/vehicle-types

Request body

Content type: application/json

Field Type Required Description
name string Yes At most 190 characters.
description string No Defaults to empty.
icon string No One of sedan, hatchback, coupe, convertible, wagon, sports, crossover, compact_suv, suv, large_suv, jeep, pickup, minivan, van, cargo_van, box_truck, truck, bus, rv, motorcycle, scooter, electric, limousine, trailer. Defaults to sedan.
image_id integer No A media library attachment id.
base_fee number No 0 to 1000000. Added to package prices, or charged as a surcharge line on a booking without a package. Defaults to 0.
duration_factor number No 0.5 to 5. Defaults to 1.
sort_order integer No 0 to 100000. Defaults to 0.
status string No published or unpublished. Defaults to published.

A price rule on a package or service for this vehicle type replaces this arithmetic for that item. See Create Package.

{
  "name": "SUV",
  "icon": "suv",
  "base_fee": 10,
  "duration_factor": 1.25
}

Responses

201 Created. data is the new vehicle type.

{
  "success": true,
  "data": {
    "id": 2,
    "name": "SUV",
    "description": "",
    "icon": "suv",
    "image_id": null,
    "base_fee": 10.0,
    "duration_factor": 1.25,
    "sort_order": 2,
    "status": "published",
    "created_by": 1,
    "modified_by": 1,
    "created_at": "2026-11-10 08:15:00",
    "modified_at": "2026-11-12 09:30:00",
    "deleted_at": null,
    "image_url": null
  }
}
Field Type Meaning
data.id integer The vehicle type’s id
data.icon string One of the built-in icon names
data.base_fee number Added to every package price for this type
data.duration_factor number Package and service times are multiplied by it
data.image_url string|null Medium-size URL of image_id
data.created_at string UTC datetime
data.modified_at string UTC datetime of the last change. Send it back on an update to be warned about a conflicting edit
data.deleted_at string|null null unless the record is in the trash

Errors

Status Code When
422 plugixa_carwash_missing_name name is missing or empty.
422 plugixa_carwash_too_long_name name is longer than 190 characters.
422 plugixa_carwash_too_small_{field} / too_large_{field} A number is outside its range. The code names the field.
422 plugixa_carwash_invalid_{field} A choice field has a value that is not one of its choices. The code names the field.

Plus the errors every endpoint can return.

Examples

curl -s -X POST "https://your-site.example/wp-json/plugixa-carwash/v1/vehicle-types" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"name":"SUV","icon":"suv","base_fee":10,"duration_factor":1.25}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-carwash/v1/vehicle-types');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'admin:' . getenv('WP_APP_PASSWORD'),
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'name'            => 'SUV',
        'icon'            => 'suv',
        'base_fee'        => 10,
        'duration_factor' => 1.25,
    ]),
]);
$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/vehicle-types', {
  method: 'POST',
  headers: {
    'Authorization': `Basic ${auth}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ name: 'SUV', icon: 'suv', base_fee: 10, duration_factor: 1.25 }),
});
const { data } = await response.json();

Quick Links

Share