Contents
On this page

List Bookings - Plugixa Chauffeur

GET /plugixa-chauffeur/v1/bookings

List bookings one page at a time, with a search, a status filter and a count of bookings per status.

Needs a signed-in user with the plugixa_chauffeur_manage capability (administrators have it after activation).

Note. Bookings carry customer personal data (name, e-mail, phone, addresses). Give the capability only to accounts that should see it.

Request

GET https://your-site.example/wp-json/plugixa-chauffeur/v1/bookings?status=pending&orderby=pickup_datetime&order=ASC

Query parameters

Name Type Default Description
search string Matches part of the booking number, the customer name or the customer e-mail.
status string One exact booking status, for example pending.

Plus the list parameters every list accepts. orderby accepts created_at (the default), pickup_datetime, status, price_total and booking_number. The default order is newest first.

Responses

200 OK. data.items is one page of bookings.

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": "42",
        "booking_number": "PXC-20261112-0815",
        "booking_form_id": 1,
        "service_type": "distance",
        "transfer_type": "one_way",
        "status": "processing",
        "vehicle_id": 3,
        "driver_id": 2,
        "pickup_address": "Paris Charles de Gaulle Airport, Terminal 2E",
        "pickup_lat": null,
        "pickup_lng": null,
        "dropoff_address": "Hotel Lutetia, 45 Boulevard Raspail, Paris",
        "dropoff_lat": null,
        "dropoff_lng": null,
        "pickup_datetime": "2026-11-20 14:30:00",
        "return_datetime": null,
        "duration_hours": null,
        "distance_km": 32.5,
        "travel_minutes": null,
        "passengers": 2,
        "luggage": 3,
        "customer_name": "Claire Martin",
        "customer_email": "claire.martin@example.com",
        "customer_phone": "+33 6 12 34 56 78",
        "notes": "Flight AF1234, arriving 14:05.",
        "price_base": 20.0,
        "price_distance": 58.5,
        "price_time": 0.0,
        "price_total": 78.5,
        "currency": "EUR",
        "payment_method": "stripe",
        "payment_status": "paid",
        "payment_reference": "pi_3QaBcD2eZvKYlo2C1x9yAbCd",
        "created_at": "2026-11-12 09:30:00",
        "modified_at": "2026-11-12 09:34:10",
        "vehicle_name": "Mercedes E-Class",
        "driver_name": "Thomas Leroy"
      }
    ],
    "total": 37,
    "limit": 20,
    "offset": 0,
    "status_counts": {
      "cancelled": 2,
      "completed": 21,
      "pending": 5,
      "processing": 9
    }
  }
}
Field Type Meaning
data.items array One page of rows
data.total integer Rows matching the filters, before paging
data.limit integer Rows per page used. 999999 when you asked for every row
data.offset integer Rows skipped
data.items[] object A booking, with vehicle_name and driver_name joined in. Fields as in Get Booking
data.status_counts object Bookings per status across the whole site. It ignores search and status, and a status with no bookings is absent

Errors

Plus the errors every endpoint can return.

Examples

curl -s "https://your-site.example/wp-json/plugixa-chauffeur/v1/bookings?status=pending&orderby=pickup_datetime&order=ASC" \
  -u "admin:$WP_APP_PASSWORD"
<?php
$query = http_build_query([
    'status'  => 'pending',
    'orderby' => 'pickup_datetime',
    'order'   => 'ASC',
]);
$ch = curl_init('https://your-site.example/wp-json/plugixa-chauffeur/v1/bookings?' . $query);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_USERPWD        => 'admin:' . getenv('WP_APP_PASSWORD'),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const auth = Buffer.from(`admin:${process.env.WP_APP_PASSWORD}`).toString('base64');
const query = new URLSearchParams({ status: 'pending', orderby: 'pickup_datetime', order: 'ASC' });
const response = await fetch(`https://your-site.example/wp-json/plugixa-chauffeur/v1/bookings?${query}`, {
  headers: {
    'Authorization': `Basic ${auth}`,
  },
});
const { data } = await response.json();

Quick Links

Share