1.8 KiB
1.8 KiB
API contract summary
The machine-readable baseline is contracts/openapi.yaml.
Authentication
The demo may use signed server-issued sessions or short-lived JWTs. Demo-role buttons create an authenticated session; they do not bypass authorization middleware.
Required routes
System and demo
GET /healthGET /api/v1/system/statusPOST /api/v1/demo/loginPOST /api/v1/demo/reset— Operations Manager only
Dashboard
GET /api/v1/dashboard
Vehicles
GET /api/v1/vehiclesGET /api/v1/vehicles/{public_ref}
Bookings and return
GET /api/v1/bookingsGET /api/v1/bookings/{public_ref}POST /api/v1/bookings/{public_ref}/return
Return commands require an Idempotency-Key header and optimistic version where relevant.
Data quality
GET /api/v1/data-quality/issuesGET /api/v1/data-quality/issues/{public_ref}POST /api/v1/data-quality/issues/{public_ref}/deferPOST /api/v1/data-quality/issues/{public_ref}/rejectPOST /api/v1/data-quality/issues/{public_ref}/merge-customers
Knowledge
POST /api/v1/knowledge/questionsGET /api/v1/knowledge/status
Automation and audit
GET /api/v1/workflowsPOST /api/v1/workflows/{event_id}/retryGET /api/v1/audit
MCP-provider endpoints
Service-token protected:
GET /api/v1/integrations/mcp/operations-summaryGET /api/v1/integrations/mcp/attention-vehiclesGET /api/v1/integrations/mcp/vehicles/{public_ref}
Knowledge search may be routed by the Hub directly to RAGcore or through a narrowly scoped MobilityOps façade. Use the contract chosen in docs/10-mcp-hub-integration.md.
Error shape
{
"error": {
"code": "ODOMETER_REGRESSION",
"message": "The submitted reading is below the current canonical odometer.",
"correlation_id": "...",
"details": {}
}
}