🎯 Enhancements​
1. Internal Comment Support in Booking Requests​
Added: internalComment field to booking creation and update requests
The following endpoints now accept an internalComment field in their request payloads:
API Endpoints:
New Request Field​
internalComment (String, Optional) - Request Field​
- Internal notes visible only to dispatchers and operations staff
- Used for internal coordination or operator instructions
- Not visible to drivers or passengers
- Example:
"VIP client - priority service"
2. Enhanced Booking History Filters​
Added: New query parameters for the booking history endpoint
The Get booking history endpoint now supports additional filters:
New Query Parameters​
bookId (String, Optional)​
- Filter by booking ID
- Example:
93123613947
bookingReference (String, Optional)​
- Filter by external booking reference
- Example:
62549263846
3. Enhanced Booking Response Fields​
Added: New fields in booking responses to support fleet operations and improve coordination
The following endpoints and webhooks return additional fields in their responses:
API Endpoints:
Webhooks:
- bookingCreated
- bookingStatus
- assignedDriver
- assignedVehicle
- driverLocation
Response Fields​
duration (Integer, Optional)​
- Total trip duration in hours
- Example:
2(represents 2 hours) - Available in: booking responses and bookingCreated/bookingStatus webhooks
vehicle (Object, Optional)​
- Vehicle information assigned to the booking
- Only present when a vehicle has been assigned
- Properties:
plateNumber(string): Vehicle license plate numbermake(string): Vehicle manufacturer/brand (e.g., Toyota, Honda)model(string): Vehicle model name (e.g., Camry, Accord)color(string): Vehicle color (e.g., Black, White, Silver)
- Example:
{"plateNumber": "ABC-1234", "make": "Toyota", "model": "Camry", "color": "Black"} - Available in: booking responses and webhooks
flightNumber (String, Optional)​
- Passenger's flight number, if applicable
- Useful for airport pickup coordination and flight tracking
- Example:
"AA5633"
corporate (Object, Optional)​
- Corporate account information
- If empty, the booking is considered an individual booking
- Properties:
id(string): Corporate account IDname(string): Corporate account name
- Example:
{"id": "corp_12345", "name": "Acme Corporation"}
Note: In booking history payloads, these fields are provided as separate fields:
corporateId(string): Corporate account IDcorporateName(string): Corporate account name
internalComment (String, Optional) - Response Field​
- Internal notes visible only to dispatchers and operations staff
- Used for internal coordination or operator instructions
- Not visible to drivers or passengers
- Example:
"VIP client - priority service"
comment / notes (String, Optional)​
- Updated description: Driver note
- Additional notes or instructions visible to both the driver and passenger
- Examples: passenger preferences, pickup details, or contact instructions
- In API responses:
commentfield - In booking history payloads:
notesfield - Example:
"Please call upon arrival"
Example API Response​
{
"bookId": "93123613947",
"status": "accepted",
"duration": 2,
"vehicle": {
"plateNumber": "ABC-1234",
"make": "Toyota",
"model": "Camry",
"color": "Black"
},
"flightNumber": "AA5633",
"corporate": {
"id": "corp_12345",
"name": "Acme Corporation"
},
"internalComment": "VIP client - priority service",
"comment": "Please call upon arrival",
...
}
Example Booking history Payload​
{
"bookingId": "93123613947",
"bookingStatus": "completed",
"flightNumber": "AA5633",
"corporateId": "corp_12345",
"corporateName": "Acme Corporation",
"internalComment": "VIP client - priority service",
"notes": "Please call upon arrival",
...
}
4. New Webhook Event: assignedVehicle​
Added: New webhook event to notify partners when a vehicle is assigned to a booking
Event Details​
Event Name: assignedVehicle
When Triggered:
- When an operator assigns a vehicle to a booking in Command Center
- When a driver switches to a different vehicle for a booking
- When a vehicle is changed for any booking (even if the driver remains the same)
Webhook Payload:
{
"bookId": "93123613947",
"bookingReference": "62549263846",
"vehicle": {
"plateNumber": "ABC-1234",
"make": "Toyota",
"model": "Camry",
"color": "Black"
}
}
Subscribing to the Event:
To receive assignedVehicle webhooks, include it in the events array when subscribing:
POST /api/demand/v1/subscribe
Content-Type: application/json
{
"url": "https://your-domain.com/webhooks/qup",
"signingSecret": "your-secret-key-min-30-chars-long",
"events": [
"bookingCreated",
"assignedDriver",
"assignedVehicle",
"bookingStatus",
"driverLocation"
]
}
Important Notes:
- The
assignedVehiclewebhook fires independently fromassignedDriver - A booking may receive both webhooks if both driver and vehicle are assigned simultaneously
- If vehicle information is not available, the webhook will not fire
- Vehicle changes (swapping vehicles) will trigger a new
assignedVehiclewebhook
📋 Migration Notes​
Backward Compatibility: ✅ All changes are backward compatible
Request Fields:
- New optional
internalCommentfield added to booking creation and update requests - This field is optional and does not affect existing integrations
Response Fields:
- New optional fields added to booking responses:
duration,vehicle,flightNumber,corporate,internalComment - All new fields are optional and will be included when data is available
- The
vehiclefield is only present when a vehicle has been assigned to the booking - No changes required to existing integrations
- Response parsing remains backward compatible
Webhook Events:
- New optional webhook event:
assignedVehicle - This is an opt-in feature; not subscribing to this event has no impact on existing functionality
- Subscribe only if you need real-time vehicle assignment notifications
Query Parameters:
- New optional query parameters added to booking history endpoint:
bookId,bookingReference - These filters are optional and existing queries will continue to work without modification