Download OpenAPI specification:Download
The Public API is the user-facing interface for external client requests. It enforces OAuth2/JWT authentication with DPoP (Demonstrating Proof-of-Possession, RFC 9449) via the OAuth2Bearer security scheme, applies rate limiting, CORS policies, and standard security headers on all responses. Authenticated endpoints require both a DPoP-bound access token and a fresh DPoP proof JWT signed with the client's private key. The API provides access to the Metadata Catalog (public, no authentication required), Vehicle Data, Charger Data, and Diagnostics endpoints.
Request an OAuth2 access token. Supports authorization_code, client_credentials, and refresh_token grant types. For DPoP-bound tokens, include a DPoP proof JWT in the DPoP header.
| DPoP | string DPoP proof JWT for binding the access token to the client's key pair. |
| grant_type required | string Enum: "authorization_code" "client_credentials" "refresh_token" OAuth2 grant type. |
| client_id required | string OAuth2 client identifier. |
| client_secret | string Client secret (for confidential clients). |
| code | string Authorization code (for authorization_code grant). |
| redirect_uri | string <uri> Redirect URI (must match the authorization request). |
| refresh_token | string Refresh token (for refresh_token grant). |
| scope | string Space-separated list of requested scopes. |
| code_verifier | string PKCE code verifier (for authorization_code with PKCE). |
{- "access_token": "string",
- "token_type": "DPoP",
- "expires_in": 0,
- "refresh_token": "string",
- "refresh_expires_in": 0,
- "scope": "string"
}Health check that returns the status of all backend services. This endpoint is publicly accessible and does not require authentication. Returns 200 if all services are healthy, 503 if one or more services are unhealthy.
{- "status": "UP",
- "services": {
- "metadata-catalog": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "credential-management": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "fleet-vehicle-management": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "customer-vehicle": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "share-agreements": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}, - "historic-data": {
- "status": "UP",
- "dependencies": {
- "property1": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}, - "property2": {
- "name": "database",
- "status": "UP",
- "detail": "Connection pool healthy"
}
}
}
}
}List all signal categories. This endpoint is publicly accessible and does not require authentication.
| name | string Filter categories by name (partial match). |
| vin | string = 17 characters Filter categories to those available for a specific vehicle. |
{- "items": [
- {
- "categoryId": "electric-data",
- "name": "Electric Data",
- "description": "Battery and electric powertrain signals including state of charge, voltage, and current",
- "signalCount": 24
}, - {
- "categoryId": "tyres",
- "name": "Tyres",
- "description": "Tyre pressure, temperature, and wear signals for all four wheels",
- "signalCount": 12
}, - {
- "categoryId": "warnings",
- "name": "Warnings",
- "description": "Warning indicator signals for driver alerts and system faults",
- "signalCount": 18
}
]
}List signals for a specific category. This endpoint is publicly accessible and does not require authentication.
| categoryId required | string Kebab-case category identifier. |
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| vin | string = 17 characters Filter signals to those available for a specific vehicle. |
| streamable | boolean Filter signals by streamable status. |
| dataType | string Filter signals by data type. |
| name | string Filter signals by name (partial match). |
{- "items": [
- {
- "name": "State of Charge",
- "description": "Current battery state of charge as a percentage of total capacity",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.StateOfCharge.Current",
- "dataType": "float",
- "typicalValues": [
- "0",
- "25",
- "50",
- "75",
- "100"
], - "valueRange": {
- "min": 0,
- "max": 100
}, - "unit": "%",
- "streamable": true
}, - {
- "name": "Battery Voltage",
- "description": "Current voltage of the high-voltage traction battery",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.CurrentVoltage",
- "dataType": "float",
- "typicalValues": [
- "350",
- "380",
- "400",
- "420"
], - "valueRange": {
- "min": 0,
- "max": 500
}, - "unit": "V",
- "streamable": true
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}List all signals across all categories. This endpoint is publicly accessible and does not require authentication.
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| vin | string = 17 characters Filter signals to those available for a specific vehicle. |
| category | string Filter signals by category identifier. |
| streamable | boolean Filter signals by streamable status. |
| dataType | string Filter signals by data type. |
| name | string Filter signals by name (partial match). |
{- "items": [
- {
- "name": "State of Charge",
- "description": "Current battery state of charge as a percentage of total capacity",
- "vssIdentifier": "Vehicle.Powertrain.TractionBattery.StateOfCharge.Current",
- "dataType": "float",
- "typicalValues": [
- "0",
- "25",
- "50",
- "75",
- "100"
], - "valueRange": {
- "min": 0,
- "max": 100
}, - "unit": "%",
- "streamable": true,
- "categoryId": "electric-data"
}, - {
- "name": "Tyre Pressure Front Left",
- "description": "Current air pressure of the front-left tyre",
- "vssIdentifier": "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure",
- "dataType": "float",
- "typicalValues": [
- "30.0",
- "32.5",
- "35.0"
], - "valueRange": {
- "min": 0,
- "max": 60
}, - "unit": "psi",
- "streamable": true,
- "categoryId": "tyres"
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}Retrieve vehicle details and capabilities.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456",
- "Brand": "Land Rover",
- "Model": "Range Rover Sport",
- "Year": 2024,
- "BodyType": "SUV",
- "LicensePlate": "AB12 CDE"
}, - "Powertrain": {
- "FuelType": "electric"
}, - "Exterior": {
- "Colour": "Santorini Black"
}, - "Capabilities": [
- "remote-lock",
- "remote-climate",
- "live-data-streaming",
- "journey-log",
- "ev-charging"
], - "Features": [
- {
- "featureId": "remote-lock",
- "name": "Remote Lock/Unlock",
- "active": true
}
]
}
}Retrieve real-time vehicle status.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "TraveledDistance": 12450.5,
- "Chassis": {
- "Axle": {
- "Row1": {
- "Wheel": {
- "Left": {
- "Tire": {
- "Pressure": 224
}
}, - "Right": {
- "Tire": {
- "Pressure": 224
}
}
}
}, - "Row2": {
- "Wheel": {
- "Left": {
- "Tire": {
- "Pressure": 234
}
}, - "Right": {
- "Tire": {
- "Pressure": 234
}
}
}
}
}
}, - "Cabin": {
- "Door": {
- "Row1": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}, - "Row2": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}
}, - "Window": {
- "Row1": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}, - "Row2": {
- "Left": {
- "IsOpen": false
}, - "Right": {
- "IsOpen": false
}
}
}
}, - "Body": {
- "Hood": {
- "IsOpen": false
}, - "Trunk": {
- "Rear": {
- "IsOpen": false
}
}, - "IsLocked": true
}, - "Powertrain": {
- "FuelSystem": {
- "Level": 72.5
}
}
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve vehicle alerts.
| vin required | string = 17 characters Vehicle Identification Number. |
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| severity | string Enum: "info" "warning" "critical" Filter alerts by severity level. |
| active | boolean Filter by active status. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "items": [
- {
- "alertId": "d4e5f6a7-b8c9-0123-def4-567890123456",
- "type": "low-tyre-pressure",
- "severity": "warning",
- "message": "Front left tyre pressure is below recommended level",
- "active": true,
- "vssPath": "Vehicle.Chassis.Axle.Row1.Wheel.Left.Tire.Pressure",
- "createdAt": "2024-06-15T14:30:00Z",
- "resolvedAt": "2024-06-15T16:00:00Z"
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}Retrieve vehicle journey history.
| vin required | string = 17 characters Vehicle Identification Number. |
| page | integer >= 0 Default: 0 Examples: page=0 Zero-based page index for paginated results. |
| size | integer [ 1 .. 100 ] Default: 20 Examples: size=20 Number of items per page. |
| sort | Array of strings Examples: sort=createdAt,desc Sort criteria in the format |
| from | string <date-time> Filter journeys starting from this date-time (inclusive). |
| to | string <date-time> Filter journeys up to this date-time (inclusive). |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "items": [
- {
- "journeyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "startTime": "2024-06-15T08:00:00Z",
- "endTime": "2024-06-15T08:45:00Z",
- "duration": 2700,
- "distance": {
- "value": 23.4,
- "unit": "km"
}, - "averageSpeed": {
- "value": 45.2,
- "unit": "km/h"
}, - "startLocation": {
- "latitude": 51.5074,
- "longitude": -0.1278
}, - "endLocation": {
- "latitude": 51.5074,
- "longitude": -0.1278
}, - "energyUsed": {
- "value": 8.3,
- "unit": "kWh"
}
}
], - "page": {
- "totalElements": 142,
- "totalPages": 8,
- "currentPage": 0,
- "pageSize": 20
}
}Retrieve current vehicle location.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "CurrentLocation": {
- "Latitude": 51.5074,
- "Longitude": -0.1278,
- "Altitude": 11,
- "Heading": 245,
- "Timestamp": "2024-06-15T14:30:00Z"
}, - "Speed": 0
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve electric vehicle data.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "Powertrain": {
- "TractionBattery": {
- "StateOfCharge": {
- "Current": 78.5
}, - "Range": 245,
- "Charging": {
- "IsCharging": true,
- "ChargeLimit": 80,
- "Mode": "ac-charging",
- "ChargeCurrent": {
- "DC": 0,
- "Phase1": 32,
- "Phase2": 32,
- "Phase3": 32
}, - "ChargeVoltage": {
- "DC": 0,
- "Phase1": 230,
- "Phase2": 230,
- "Phase3": 230
}, - "ChargeRate": 7.4,
- "TimeToComplete": 7200,
- "IsPlugConnected": true
}
}
}
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve high voltage battery telemetry.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "Vehicle": {
- "VehicleIdentification": {
- "VIN": "SALGA2BN6PH123456"
}, - "Powertrain": {
- "TractionBattery": {
- "StateOfCharge": {
- "Current": 78.5
}, - "StateOfHealth": 96.2,
- "NominalVoltage": 396.5,
- "CurrentVoltage": 392.1,
- "CurrentCurrent": -32.1,
- "Temperature": {
- "Average": 28.5,
- "Min": 26,
- "Max": 31
}, - "CellVoltage": {
- "Min": 3.28,
- "Max": 3.31,
- "Average": 3.3
}, - "GrossCapacity": 90.2,
- "AccumulatedChargedEnergy": 19350,
- "ChargeCycleCount": 215
}
}
}, - "timestamp": "2024-06-15T14:30:00Z"
}Retrieve wall charger details and status.
| chargerId required | string <uuid> <= 36 characters Unique identifier of the wall charger. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "chargerId": "c1d2e3f4-a5b6-7890-cdef-123456789012",
- "serialNumber": "WC-2024-00142",
- "model": "JLR Home Charger Pro",
- "manufacturer": "JLR Energy",
- "firmwareVersion": "2.4.1",
- "status": "online",
- "maxPower": {
- "value": 22,
- "unit": "kW"
}, - "currentPower": {
- "value": 7.4,
- "unit": "kW"
}, - "connectorType": "type-2",
- "energyDelivered": {
- "lifetime": {
- "value": 4520.8,
- "unit": "kWh"
}, - "currentSession": {
- "value": 32.5,
- "unit": "kWh"
}
}, - "connectedVehicleVin": "SALGA2BN6PH123456",
- "networkStatus": "connected",
- "lastUpdated": "2024-06-15T14:30:00Z"
}Retrieve vehicle diagnostic data including trouble codes, maintenance indicators, and overall health status.
| vin required | string = 17 characters Vehicle Identification Number. |
| DPoP required | string Examples: eyJhbGciOiJFUzI1NiIsInR5cCI6ImRwb3Arand0IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYiLCJ4IjoiLi4uIiwieSI6Ii4uLiJ9fQ.eyJqdGkiOiItQndDM0VTYzZhY2MybFRjIiwiaHRtIjoiR0VUIiwiaHR1IjoiaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEvcGFja2FnZXMiLCJpYXQiOjE3MDUzMTI2MDB9.signature DPoP proof JWT (RFC 9449). |
{- "vin": "SALGA2BN6PH123456",
- "troubleCodes": [
- {
- "code": "P0A80",
- "system": "high-voltage-battery",
- "severity": "warning",
- "description": "Replace hybrid/EV battery pack — cell imbalance detected",
- "active": true,
- "detectedAt": "2024-06-10T09:15:00Z",
- "resolvedAt": "2024-06-12T14:00:00Z",
- "odometerAtDetection": {
- "value": 12340.2,
- "unit": "km"
}
}
], - "maintenanceIndicators": [
- {
- "item": "Brake fluid change",
- "status": "due-soon",
- "dueDate": "2024-08-01",
- "dueDistance": {
- "value": 1500,
- "unit": "km"
}
}
], - "overallHealth": "attention-required",
- "lastUpdated": "2024-06-15T14:30:00Z"
}