Dashboard – Car rental reservations (v1)
Base path
/api/v1/workspace/:workspaceId/carrental
All endpoints require workspace JWT and staff permission carrental.manage.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /:workspaceId/carrental/reservations | List reservations (query: status, branchId, vehicleId, from, to, page, limit). |
| GET | /:workspaceId/carrental/reservations/:id | Get reservation by ID. |
| POST | /:workspaceId/carrental/reservations | Create reservation (body: branchId, vehicleId, customerId, pickupAt, dropoffAt, pickupLocationType, dropoffLocationType, etc.). |
| POST | /:workspaceId/carrental/reservations/:id/approve | Approve (PENDING → APPROVED). |
| POST | /:workspaceId/carrental/reservations/:id/reject | Reject (PENDING → REJECTED). |
| POST | /:workspaceId/carrental/reservations/:id/cancel | Cancel reservation. |
| POST | /:workspaceId/carrental/reservations/:id/ready-for-delivery | Mark ready for delivery (APPROVED → READY_FOR_DELIVERY). |
| POST | /:workspaceId/carrental/reservations/:id/deliver | Deliver (multipart: checkout handover – fuel, odometer, checklist, media, signatures). |
| POST | /:workspaceId/carrental/reservations/:id/return | Return (multipart: checkin handover + optional extra fees as ledger EXTRAS). |
| POST | /:workspaceId/carrental/reservations/:id/complete | Complete (RETURNED_PENDING_INSPECTION → COMPLETED). |
Status transitions are enforced server-side; invalid transitions return 400 with a clear message.
Common errors
- 400: Invalid status transition or validation failed.
- 401: Unauthorized.
- 403: Forbidden.
- 404: Reservation or workspace not found.
- 500: Server error.