molobrakos / volvooncall

Retrieve information from the Volvo On Call (VOC) web service
The Unlicense
154 stars 49 forks source link

API Availability #71

Open nikagl opened 3 years ago

nikagl commented 3 years ago

Not really an issue, but I saw Volvo published their API: https://developer.volvocars.com/volvo-api/extended-vehicle/

nikagersonlohman commented 3 years ago

Tried some stuff and it's similar to the VoC API we are using. Biggest differences are:

  1. Diff kind of authorization vcc-api-key which is related to your app Authorization Bearer which is related to the car you're querying (retrieved using a VoC login)

  2. Only thing available (currently) are resources

From an XC40 I retrieved the following resources: https://api.volvocars.com/extended-vehicle/v1/vehicles/VIN_HERE/resources/*

averageFuelConsumption
averageSpeed
brakeFluid
carLocked
distanceToEmpty
engineCoolantLevel
engineCoolantTemp
engineHoursToService
engineRunning
externalTemp
frontLeftDoorOpen
frontLeftTyrePressure
frontLeftWindowOpen
frontRightDoorOpen
frontRightTyrePressure
frontRightWindowOpen
fuelAmount
hoodOpen
kmToService
monthsToService
odometer
oilLevel
oilPressure
rearLeftDoorOpen
rearLeftTyrePressure
rearLeftWindowOpen
rearRightDoorOpen
rearRightTyrePressure
rearRightWindowOpen
serviceWarningStatus
serviceWarningTrigger
tailGateOpen
tripMeter1
tripMeter2
washerFluidLevel
nikagersonlohman commented 3 years ago

I tried some of our requests as well on the new api, like /preclimatization/stop but they really do not work (yet)...

Additionally, I also tried the /resources call on the VoC API to see what resources are supported in a car, but that doesn't work either...

FireWizard52 commented 3 years ago

Hi

I tried some of our requests as well on the new api, like /preclimatization/stop but they really do not work (yet)...

Sending commands to your Volvo is not (yet) implemented in the Extended API specification. You can only read sensor information. The API support 39 sensors from which 36 are available for my car (V40 T3). The Demo car supports 35 sensors. Some are extra, compared to the Python script, but also sensors are missing.

Additionally, I also tried the /resources call on the VoC API to see what resources are supported in a car, but that doesn't work either...

That has worked for me always, but you need the correct authorization.

I created a Node Red flow to read the data for Domoticz, but with some modification this can of course be used by any other Home Automation system, that supports MQTT or a HTTP call.

More information is available at: https://www.domoticz.com/forum/viewtopic.php?f=38&t=26549&hilit=connected+cars&start=60, starting March 9, 2021.

Another developer has in the same period created a native Volvo application.

The biggest problem, we have is that Volvo does not respond to our request of providing a valid key for permanent use. Both the "Demo" API key as your own cars API key expire in 1 hour.

However you are invited to test the Node Red flow and see if it is possible to modify for your OpenHAB (as I believe you use). Regards

lancer73 commented 3 years ago

I have a new Android based Volvo and the old VoC API does not work for this car (yet?) It just says "vehicle not found".

nikagersonlohman commented 3 years ago

Correct, same for me. Android received an update though which supposedly fixes it. Screens totally change in the app, so I kind of expect the app might take a different route too. When I select the XC40 plugin hybride, it works fine and the old screens are back. With the P8 the screens are different again. In my case much doesn't work yet, because it also requires an OTA in the car which is released / rolled out depending on VIN and I have not yet received it...

nikagersonlohman commented 3 years ago

https://photos.app.goo.gl/5KqSRssMkiSmq9bw9

nikagersonlohman commented 3 years ago

Good to know, I added the new P8 (XC40 Pure Electric) to my Volvo Oncall account and it does not show up in the vehiclelist. As you can see from the screenshots it's an entire different look and feel, and I expect they have also switched from the voc api to the new connected-vehicle API (not extended-vehicle API): https://developer.volvocars.com/volvo-api/connected-vehicle/

/v1/vehicles/{vin}
/v1/vehicles/{vin}/brakes
/v1/vehicles/{vin}/commands
/v1/vehicles/{vin}/commands/climatization-start
/v1/vehicles/{vin}/commands/climatization-stop
/v1/vehicles/{vin}/commands/engine-start
/v1/vehicles/{vin}/commands/engine-stop
/v1/vehicles/{vin}/commands/flash
/v1/vehicles/{vin}/commands/honk
/v1/vehicles/{vin}/commands/honk-flash
/v1/vehicles/{vin}/commands/lock
/v1/vehicles/{vin}/commands/unlock
/v1/vehicles/{vin}/diagnostics
/v1/vehicles/{vin}/doors
/v1/vehicles/{vin}/engine
/v1/vehicles/{vin}/engine-status
/v1/vehicles/{vin}/environment
/v1/vehicles/{vin}/fuel
/v1/vehicles/{vin}/odometer
/v1/vehicles/{vin}/requests
/v1/vehicles/{vin}/requests/search
/v1/vehicles/{vin}/requests/{id}
/v1/vehicles/{vin}/statistics
/v1/vehicles/{vin}/tyres
/v1/vehicles/{vin}/warnings
/v1/vehicles/{vin}/windows

See also the following json:


    "openapi": "3.0.1",
    "info": {
        "title": "Connected Vehicle",
        "description": "This API allows to get latest status, diagnostics and statistics data of a connected vehicle as well as providing functionalities to invoke designated actions towards the vehicle",
        "version": "1.0"
    },
    "servers": [
        {
            "url": "https://api.volvocars.com/connected-vehicle"
        }
    ],
    "paths": {
        "/v1/vehicles": {
            "get": {
                "tags": [
                    "Vehicle-List"
                ],
                "summary": "Get Vehicle List",
                "description": "Provides all current valid relations between a Volvo Id (user) and its connected vehicles. Returns a list of VINs. Required Scope(s):vehicle:attributes",
                "operationId": "GetVehicleList",
                "parameters": [
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehiclelist.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VehicleListResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}": {
            "get": {
                "tags": [
                    "Vehicle-Details"
                ],
                "summary": "Get Vehicle Details",
                "description": "Provides details about the vehicle such as model, model-year etc. Required Scope(s):vehicle:attributes",
                "operationId": "GetVehicleDetails",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicle.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VehicleDetailResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/brakes": {
            "get": {
                "tags": [
                    "GetBrakeStatus"
                ],
                "summary": "Get Brake Status",
                "description": "Vehicle's Latest Brake Status Values like brake fluid level",
                "operationId": "GetBrakeStatus",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BrakeStatusResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands": {
            "get": {
                "tags": [
                    "Command-List"
                ],
                "summary": "GetCommandList",
                "description": "Used to list the commands which can be sent to the vehicle",
                "operationId": "GetCommandList",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandlist.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CommandListResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/climatization-start": {
            "post": {
                "tags": [
                    "Invoke-Climatization-Start"
                ],
                "summary": "Invoke Climatization Start",
                "description": "Used to send a climatization-start command to the vehicle.",
                "operationId": "InvokeClimatizationStart",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.climatizationstart.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/climatization-stop": {
            "post": {
                "tags": [
                    "Invoke-Climatization-Stop"
                ],
                "summary": "Invoke Climatization Stop",
                "description": "Used to send a climatization-stop command to the vehicle.",
                "operationId": "InvokeClimatizationStop",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.climatizationstop.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/engine-start": {
            "post": {
                "tags": [
                    "Invoke-Engine-Start"
                ],
                "summary": "Invoke EngineStart",
                "description": "Used to send a engine-start command to the vehicle.",
                "operationId": "InvokeEngineStart",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Engine start action parameters like run-in-minutes",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.enginestart.v1+json": {
                            "schema": {
                                "$ref": "#/components/schemas/EngineStartRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/engine-stop": {
            "post": {
                "tags": [
                    "Invoke-Engine-Stop"
                ],
                "summary": "Invoke EngineStop",
                "description": "Used to send a engine-stop command to the vehicle.",
                "operationId": "InvokeEngineStop",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.enginestop.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/flash": {
            "post": {
                "tags": [
                    "Invoke-Flash"
                ],
                "summary": "Invoke Flash",
                "description": "Used to send a flash command to the vehicle.",
                "operationId": "InvokeFlash",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.flash.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/honk": {
            "post": {
                "tags": [
                    "Invoke-Honk"
                ],
                "summary": "Invoke Honk",
                "description": "Used to send a honk command to the vehicle.",
                "operationId": "InvokeHonk",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.honk.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/honk-flash": {
            "post": {
                "tags": [
                    "Invoke-HonkAndFlash"
                ],
                "summary": "Invoke Honk And Flash",
                "description": "Used to send a honk-and-flash command to the vehicle.",
                "operationId": "InvokeHonkAndFlash",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.honkandflash.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/lock": {
            "post": {
                "tags": [
                    "Invoke-Lock"
                ],
                "summary": "Invoke Lock",
                "description": "Used to send a lock command to the vehicle.",
                "operationId": "InvokeLock",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Empty request body for this command.",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.lock.v1+json": {}
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/commands/unlock": {
            "post": {
                "tags": [
                    "Invoke-Unlock"
                ],
                "summary": "Invoke Unlock",
                "description": "Used to send a unlock command to the vehicle.",
                "operationId": "InvokeUnlock",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Unlock command parameters such as unlock-duration",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.unlock.v1+json": {
                            "schema": {
                                "$ref": "#/components/schemas/UnlockRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.commandinvokeresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AsyncResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/diagnostics": {
            "get": {
                "tags": [
                    "GetDiagnostics"
                ],
                "summary": "Get Vehicle Diagnostics",
                "description": "Vehicle's Latest Diagnostic Values",
                "operationId": "GetDiagnostics",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DiagnosticResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/doors": {
            "get": {
                "tags": [
                    "GetDoorAndLockStatus"
                ],
                "summary": "Get Door And Lock Status Values",
                "description": "Vehicle's Door and Lock Status Values",
                "operationId": "GetDoorAndLockStatus",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DoorStatusResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/engine": {
            "get": {
                "tags": [
                    "GetEngineDiagnostics"
                ],
                "summary": "Get Engine Diagnostics",
                "description": "Vehicle's Latest Engine Diagnostic Values such as engine-coolant-level, oil level etc.",
                "operationId": "GetEngineDiagnostics",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EngineDiagnosticResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/engine-status": {
            "get": {
                "tags": [
                    "GetEngineStatus"
                ],
                "summary": "Get Engine Status",
                "description": "Vehicle's Latest Engine Status Value like RUNNING or STOPPED",
                "operationId": "GetWindowStatus_1",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EngineStatusResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/environment": {
            "get": {
                "tags": [
                    "GetEnvironmentVals"
                ],
                "summary": "Get Environment Values",
                "description": "Environment Values such as external temperature collected by means of Vehicle sensors",
                "operationId": "GetEnvironmentVals",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EnvironmentResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/fuel": {
            "get": {
                "tags": [
                    "GetFuelAmount"
                ],
                "summary": "Get Latest Fuel Amount",
                "description": "Vehicle's Latest Fuel Amount in Liters",
                "operationId": "GetFuelAmount",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FuelAmountResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/odometer": {
            "get": {
                "tags": [
                    "GetOdometer"
                ],
                "summary": "Get Vehicle's Latest Odometer Value",
                "description": "Vehicle's latest odometer value in kilometers",
                "operationId": "GetOdometer",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OdometerResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/requests": {
            "get": {
                "tags": [
                    "Command-Request-List"
                ],
                "summary": "ListCommandRequests",
                "description": "Used to get a list of the active and past command-requests invoked against the vehicle.",
                "operationId": "ListCommandRequests",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Format - int32. number of the items to display in each result set. Default is 50",
                        "schema": {
                            "type": "integer",
                            "default": 50
                        }
                    },
                    {
                        "name": "after",
                        "in": "query",
                        "description": "an identifier to for the next page of the result",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.requestlist.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CommandRequestListResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/requests/search": {
            "post": {
                "tags": [
                    "Search-Command-Requests"
                ],
                "summary": "SearchCommandRequests",
                "description": "Used to perform an advanced search through the command-requests",
                "operationId": "SearchCommandRequests",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Format - int32. number of the items to display in each result set. Default is 50",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "after",
                        "in": "query",
                        "description": "an identifier to for the next page of the result",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "request model encapsulating search filters such as request-ids, start-date and end-date",
                    "content": {
                        "application/vnd.volvocars.api.connected-vehicle.searchrequestlist.v1+json": {
                            "schema": {
                                "$ref": "#/components/schemas/SearchCommandRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.requestlist.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CommandRequestListResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/requests/{id}": {
            "get": {
                "tags": [
                    "Get-Request-Details"
                ],
                "summary": "GetRequestDetails",
                "description": "Used to get the details of the command referenced by the id parameter.",
                "operationId": "GetRequestDetails",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "request identifier generated by Connected-Vehicle-API when the request has been received.",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.requestdetailresponse.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/CommandRequestDetailResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/statistics": {
            "get": {
                "tags": [
                    "GetStatistics"
                ],
                "summary": "Get Vehicle Statistics",
                "description": "Vehicle's Latest Statistics such as average-speed, trip-meters",
                "operationId": "GetStatistics",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/StatisticResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/tyres": {
            "get": {
                "tags": [
                    "GetTyrePressureValues"
                ],
                "summary": "Get Tyre Pressure Values",
                "description": "Vehicle's Latest Tyre Pressure Values",
                "operationId": "GetTyrePressureValues",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TyrePressureResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/warnings": {
            "get": {
                "tags": [
                    "GetWarnings"
                ],
                "summary": "Get Warnings",
                "description": "Vehicle's Latest Warning Values like bulb failure",
                "operationId": "GetWarnings",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WarningsResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/v1/vehicles/{vin}/windows": {
            "get": {
                "tags": [
                    "GetWindowStatus"
                ],
                "summary": "Get Window Status Values",
                "description": "Vehicle's Latest Window Status Values",
                "operationId": "GetWindowStatus",
                "parameters": [
                    {
                        "name": "vin",
                        "in": "path",
                        "description": "vehicle identifier (VIN)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcc-api-operationId",
                        "in": "header",
                        "description": "A transaction unique id which can be used do identify the transaction in integrated systems",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/vnd.volvocars.api.connected-vehicle.vehicledata.v1+json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WindowStatusResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request contains an unaccepted input",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "415": {
                        "description": "Unsupported Media Type",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "AsyncInfo": {
                "type": "object",
                "properties": {
                    "expires": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "href": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                }
            },
            "AsyncResponse": {
                "type": "object",
                "properties": {
                    "async": {
                        "$ref": "#/components/schemas/AsyncInfo"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "partial": {
                        "$ref": "#/components/schemas/Partial"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "BrakeStatus": {
                "type": "object",
                "properties": {
                    "brakeFluid": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "BrakeStatusResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/BrakeStatus"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "CommandListItem": {
                "type": "object",
                "properties": {
                    "command": {
                        "enum": [
                            "HONK_AND_FLASH",
                            "HONK",
                            "FLASH",
                            "LOCK",
                            "UNLOCK",
                            "ENGINE_START",
                            "ENGINE_STOP",
                            "CLIMATIZATION_START",
                            "CLIMATIZATION_STOP",
                            "DASHBOARD",
                            "NAVIGATION"
                        ],
                        "type": "string"
                    },
                    "href": {
                        "type": "string"
                    }
                }
            },
            "CommandListResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/CommandListItem"
                        }
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "CommandRequestDetailItem": {
                "type": "object",
                "properties": {
                    "command": {
                        "enum": [
                            "HONK_AND_FLASH",
                            "HONK",
                            "FLASH",
                            "LOCK",
                            "UNLOCK",
                            "ENGINE_START",
                            "ENGINE_STOP",
                            "CLIMATIZATION_START",
                            "CLIMATIZATION_STOP",
                            "DASHBOARD",
                            "NAVIGATION"
                        ],
                        "type": "string"
                    },
                    "created": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "href": {
                        "type": "string"
                    },
                    "invokeStatus": {
                        "enum": [
                            "WAITING",
                            "RUNNING",
                            "COMPLETED",
                            "REJECTED",
                            "UNKNOWN",
                            "TIMEOUT",
                            "CONNECTION_FAILURE",
                            "VEHICLE_IN_SLEEP",
                            "UNLOCK_TIME_FRAME_PASSED",
                            "UNABLE_TO_LOCK_DOOR_OPEN"
                        ],
                        "type": "string"
                    },
                    "requestId": {
                        "type": "string"
                    },
                    "updated": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "CommandRequestDetailResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/CommandRequestDetailItem"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "CommandRequestListResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/CommandRequestDetailItem"
                        }
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "pagination": {
                        "$ref": "#/components/schemas/Pagination"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "DescriptionTexts": {
                "type": "object",
                "properties": {
                    "model": {
                        "type": "string"
                    },
                    "steering": {
                        "type": "string"
                    },
                    "upholstery": {
                        "type": "string"
                    }
                }
            },
            "DiagnosticResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/DiagnosticVals"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "DiagnosticVals": {
                "type": "object",
                "properties": {
                    "backupBatteryRemaining": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "engineHoursToService": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "kmToService": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "mainBatteryStatus": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "monthsToService": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "serviceStatus": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "serviceTrigger": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "serviceType": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "washerFluidLevel": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "DoorAndLockStatus": {
                "type": "object",
                "properties": {
                    "cap": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "carLocked": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "frontLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "frontRight": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "hood": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearRight": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "tailGate": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "DoorStatusResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/DoorAndLockStatus"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "EngineDiagnosticResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/EngineDiagnosticVals"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "EngineDiagnosticVals": {
                "type": "object",
                "properties": {
                    "engineCoolantLevel": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "engineCoolantTemp": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "oilLevel": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "oilPressure": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "EngineStartRequest": {
                "type": "object",
                "properties": {
                    "runtimeMinutes": {
                        "maximum": 15,
                        "minimum": 0,
                        "type": "integer",
                        "description": "Time in minutes engine will be running. Can be set to maximum 15 minutes",
                        "format": "int32"
                    }
                }
            },
            "EngineStatus": {
                "type": "object",
                "properties": {
                    "engineRunning": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "EngineStatusResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/EngineStatus"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "EnvironmentResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/EnvironmentVals"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "EnvironmentVals": {
                "type": "object",
                "properties": {
                    "externalTemp": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    }
                }
            },
            "Error": {
                "type": "object",
                "properties": {
                    "description": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    }
                }
            },
            "ErrorResponse": {
                "type": "object",
                "properties": {
                    "error": {
                        "$ref": "#/components/schemas/Error"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "Fuel": {
                "type": "object",
                "properties": {
                    "fuelAmount": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    }
                }
            },
            "FuelAmountResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/Fuel"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "Odometer": {
                "type": "object",
                "properties": {
                    "odometer": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    }
                }
            },
            "OdometerResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/Odometer"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "Pagination": {
                "type": "object",
                "properties": {
                    "limit": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "next": {
                        "type": "string"
                    },
                    "previous": {
                        "type": "string"
                    }
                }
            },
            "Partial": {
                "type": "object",
                "properties": {
                    "currentStep": {
                        "type": "integer",
                        "format": "int32"
                    },
                    "totalSteps": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "RInstance": {
                "type": "object",
                "properties": {
                    "timestamp": {
                        "type": "integer",
                        "description": "unix timestamp value",
                        "format": "int64",
                        "example": "1599996619.0"
                    },
                    "value": {
                        "type": "string"
                    }
                }
            },
            "RInstanceWithUnit": {
                "type": "object",
                "properties": {
                    "timestamp": {
                        "type": "integer",
                        "description": "unix timestamp value",
                        "format": "int64",
                        "example": "1599996619.0"
                    },
                    "unit": {
                        "type": "string"
                    },
                    "value": {
                        "type": "string"
                    }
                }
            },
            "SearchCommandRequest": {
                "type": "object",
                "properties": {
                    "commands": {
                        "type": "array",
                        "items": {
                            "enum": [
                                "HONK_AND_FLASH",
                                "HONK",
                                "FLASH",
                                "LOCK",
                                "UNLOCK",
                                "ENGINE_START",
                                "ENGINE_STOP",
                                "CLIMATIZATION_START",
                                "CLIMATIZATION_STOP",
                                "DASHBOARD",
                                "NAVIGATION"
                            ],
                            "type": "string"
                        }
                    },
                    "endDate": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "ids": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "startDate": {
                        "type": "string",
                        "format": "date-time"
                    }
                }
            },
            "StatisticResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/StatisticVals"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "StatisticVals": {
                "type": "object",
                "properties": {
                    "averageFuelConsumption": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "averageSpeed": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "distanceToEmpty": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "tripMeter1": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    },
                    "tripMeter2": {
                        "$ref": "#/components/schemas/RInstanceWithUnit"
                    }
                }
            },
            "TyrePressure": {
                "type": "object",
                "properties": {
                    "frontLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "frontRight": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearRight": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "TyrePressureResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/TyrePressure"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "UnlockRequest": {
                "type": "object",
                "properties": {
                    "unlockDuration": {
                        "maximum": 120,
                        "minimum": 0,
                        "type": "integer",
                        "description": "Time in seconds that the doors can be unlocked. Can maximum be set to 120 seconds",
                        "format": "int32"
                    }
                }
            },
            "VehicleDetailResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/VehicleMetadata"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "VehicleImages": {
                "type": "object",
                "properties": {
                    "exteriorDefaultUrl": {
                        "type": "string"
                    },
                    "interiorDefaultUrl": {
                        "type": "string"
                    }
                }
            },
            "VehicleListItem": {
                "type": "object",
                "properties": {
                    "vin": {
                        "type": "string"
                    }
                }
            },
            "VehicleListResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/VehicleListItem"
                        }
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "pagination": {
                        "$ref": "#/components/schemas/Pagination"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "VehicleMetadata": {
                "type": "object",
                "properties": {
                    "descriptions": {
                        "$ref": "#/components/schemas/DescriptionTexts"
                    },
                    "externalColour": {
                        "type": "string"
                    },
                    "images": {
                        "$ref": "#/components/schemas/VehicleImages"
                    },
                    "modelYear": {
                        "type": "string"
                    },
                    "vin": {
                        "type": "string"
                    }
                }
            },
            "WarningVals": {
                "type": "object",
                "properties": {
                    "bulbFailure": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "WarningsResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/WarningVals"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            },
            "WindowStatus": {
                "type": "object",
                "properties": {
                    "frontLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "frontRight": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearLeft": {
                        "$ref": "#/components/schemas/RInstance"
                    },
                    "rearRight": {
                        "$ref": "#/components/schemas/RInstance"
                    }
                }
            },
            "WindowStatusResponse": {
                "type": "object",
                "properties": {
                    "data": {
                        "$ref": "#/components/schemas/WindowStatus"
                    },
                    "operationId": {
                        "type": "string"
                    },
                    "status": {
                        "type": "integer",
                        "format": "int32"
                    }
                }
            }
        },
        "securitySchemes": {
            "apiKeyHeader": {
                "type": "apiKey",
                "name": "vcc-api-key",
                "in": "header"
            },
            "apiKeyQuery": {
                "type": "apiKey",
                "name": "vcc-api-key",
                "in": "query"
            },
            "accessToken": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "JWT",
                "description": "A valid access token from the Volvo ID account service. See the Authorization Guide for details. The access token must have been issued on behalf of the current user."
            }
        }
    },
    "security": [
        {
            "apiKeyHeader": []
        },
        {
            "apiKeyQuery": []
        },
        {
            "accessToken": []
        }
    ]
}``` 
greentux commented 3 years ago

Do You plan to integrate this api or not?

FireWizard52 commented 3 years ago

Hi all,

For those interested in these API's.

I implemented both the Extended Vehicle API and the Connected Vehicle API for my Volvo in Node Red and prepared the interface to Domoticz using MQTT.

As I may guess, the Extended Vehicle API is targeted to companies, which has a fleet ownership, such as leasing companies and perhaps also assurance companies. This API is only capable of reading sensors and has no possibility to send commands to the car.

I guess, that the Connected Vehicle API is targeted to car owners and sooner or later will replace the old Volvo on Call API, as used by the Volvo on Call IOS and Android app. This API supports commands to the car. (It has been tested and it works). I prepared it for interfacing with Domoticz using MQTT, but did not actually test it with Domoticz.

If this happens the Python script of molobrakos will also stop functioning.

As another developer, who created a native component for Domoticz with the Extended API, tried to get contact with Volvo has been asked to submit a business plan. etc, I guess that the Extended API is targeted to companies and the Connected API to individuals.

Unfortunately the Connected API is in early beta stage and I have no idea how to get a permanent authorization to access my car. The keys you receive at https://developer.volvocars.com/volvo-api/connected-vehicle/, expire after 1 hour and are therefor not useful for permanent use.

If someone is interested in the flow, let me know.

Regards

greentux commented 3 years ago

Ok, I am interested in the mqtt / NodeRed. At first step I would be interested in the SoC (Charging state of battery) for control the wallbox at home. I assume, "mainBatteryStatus": { "$ref": "#/components/schemas/RInstance" could it be, but I didnt found it in the API at volvo website.

greentux commented 3 years ago

It should be possible to simple show all values above in the app on the central display, right?

FireWizard52 commented 3 years ago

Hi all interested users,

As already mentioned above in this thread, Volvo has published a Volvo Extended Vehicle API. I mentioned that March 9, 2021 on the Domoticz forum. More information about the Volvo Extended Vehicle API, you can find at: https://www.domoticz.com/forum/viewtopic.php?f=38&t=26549&hilit=connected+cars&start=60

The Node Red flow has been published there as well, but you also can find it at: https://github.com/FireWizard52/Volvo-Extended-Vehicle-API-to-Domoticz

Full documentation about the Extended API, you can find at: https://developer.volvocars.com/volvo-api/extended-vehicle/

Very recently, Volvo has also made available a Volvo Connected Vehicle API, which is currently in early beta. The Node Red flow has been published at: https://github.com/FireWizard52/Volvo-Connected-Vehicle-API-to-Domoticz

Full documentation about the Connected API, you can find at: https://developer.volvocars.com/volvo-api/connected-vehicle/

Remember that both API's are in (early) beta stage. Currently it is undocumented, how to get a permanent User Access Key for the "Connected" API. In contradiction with the Volvo statement, that you can apply for a key, Volvo does not answer on the request or on mails. Both the Access Key for the Demo car and your own car (if you own a Volvo) do expire in 1 hour.

Regards

elestedt commented 2 years ago

Hi, The old My Volvo site (and android app) is shutting down tomorrow. I'm wondering (for myself) if this old API is also going to shut down at that time. Perhaps the new API is the only one that will be useable. This might mean that #73 is a must

FireWizard52 commented 2 years ago

Hi, @elestedt

Where did you find that information?

I did not received any mail, nor saw it in the, now called, Volvo Cars app. If I log-in into the developer portal and authorize my car, I receive a key, only valid for 1 hour. I have no idea how to get a key for a longer period, as Volvo does not react on emails. So what their intention is with their "Connected API" ????

Regards

elestedt commented 2 years ago

I have no idea. But I can try to find out.

I got emails because I was a user of the old side and android app. I have no idea if the API will be shut down as well - it's just a guess and that if things stop working during this week - we all know why. If it doesn't stop working, that's great.

elestedt commented 2 years ago

The mail is in swedish, but here is the content:

Hej då Min Volvo, hej Volvo Cars app!
--
Imorgon stänger Min Volvo, eftersom vi istället samlar fler smarta tjänster på ett och samma ställe - appen Volvo Cars. Vi kommer successivt att vässa och bygga ut appen. Idag kan du bland annat se manualer, få support, fjärrstyra kupévärmaren, kontrollera låsstatus och hantera din körjournal. Framöver kommer du också att hitta populära Min Volvo-funktioner som servicebokning, avtalsöversikt och leveransstatus i Volvo Cars-appen.Vänliga hälsningarVolvo Car Sverige
greentux commented 2 years ago

Has nobody an technical contact to Volvo to solve the key problem?

zupancicmarko commented 2 years ago

Wrote to openinnovationportal.swe@volvocars.com that is available on the https://developer.volvocars.com/volvo-api/connected-vehicle/, but no response. Using the API does not return other results other then Vehicle List & Details. Have XC60 2022.

Appelg commented 2 years ago

I have been trying to get in contact with Volvo for 6+ months now. They won't "accept" my request to make my own "application" published.

Has anyone else had success in solving the 1hr expire demo-key problem for your vehicle? Or getting an published application accepted?

eddyvanroy commented 1 year ago

Has anyone else had success in solving the 1hr expire demo-key problem for your vehicle? Or getting an published application accepted?

Can you share the legal disclaimer used in the intake? Did you succeed in getting the key?

greentux commented 1 year ago

The ioBroker guys did the job... perhaps an inspiration? https://github.com/TA2k/ioBroker.volvo

FireWizard52 commented 1 year ago

Hi,

@greentux

Have you been able to generate a key, which last longer than 1 hour?

Because that was the problem in the past.

Volvo Extended Vehicle API and Volvo Connected Vehicle API existed for about 2 years. But you could get only a key for one hour. New is the Energy part.

Regards

nikagersonlohman commented 1 year ago

My 2cts... use Selenium to emulate the clicks going into the portal and (re)generate the 1 hour tokens when you need them...

greentux commented 1 year ago

As I assume while reading, they used an alternative way of authorisation.

elestedt commented 1 year ago

I don't think there is a way to get a token that lasts for more than 1 hour. According to https://developer.volvocars.com/apis/docs/authorisation/ you have to refresh the token (section 3)

nikagl commented 1 year ago

It's the same oath2 authentication as described in the API. No clue where they got the key from but I assume it was somehow found in the current Volvo On Call app. Use that key and it works fine. Make sure to refresh the token and do not regenerate it all the time as it has weird results.

Check my sample code here: https://github.com/nikagl/volvo

I've been using it for a few weeks and it works great 👍

Screenshot_20230311-150505_Chrome

nikagl commented 1 year ago

While reviewing the HASS MQTT plugin code I noticed they have location too!

I hadn't realised/noticed it yet, but also published the location API: https://developer.volvocars.com/apis/location/v1/overview/

Regards,

Nika.

FireWizard52 commented 1 year ago

Hello @nikagl ,

Nice that this has been added to the collection of API's. In fact this was the only topic, that was missing, compared to the molobrakos Python script.

Question.

Have you been able to solve the 1 hour expiration of the key or did you find a solution to refresh the key? In two weeks time I will receive my new XC40 hybrid with Google and I assume that the molobrakos script will not work with this model.

Regards

nikagl commented 1 year ago

Yes, read the post above and check my code, it works with the authorization code that was part of the iobroker

https://github.com/molobrakos/volvooncall/issues/71#issuecomment-1464919260

nikagl commented 1 year ago

Not sure what Home Automation you use, but several have plugins already. Depending on the language you want to use i have provided several examples on my repo as well. Javascript, python and DSL rules of OpenHAB. For instance getting the token with python is as follows:

authentication = requests.post( "https://volvoid.eu.volvocars.com/as/token.oauth2", headers = { 'authorization': 'Basic aDRZZjBiOlU4WWtTYlZsNnh3c2c1WVFxWmZyZ1ZtSWFEcGhPc3kxUENhVXNpY1F0bzNUUjVrd2FKc2U0QVpkZ2ZJZmNMeXc=', 'content-type': 'application/x-www-form-urlencoded', 'user-agent': 'okhttp/4.10.0' }, data = { 'username': config["volvoid_username"], 'password': config["volvoid_password"], 'grant_type': 'password', 'scope': 'openid email profile care_by_volvo:financial_information:invoice:read care_by_volvo:financial_information:payment_method care_by_volvo:subscription:read customer:attributes customer:attributes:write order:attributes vehicle:attributes tsp_customer_api:all conve:brake_status conve:climatization_start_stop conve:command_accessibility conve:commands conve:diagnostics_engine_status conve:diagnostics_workshop conve:doors_status conve:engine_status conve:environment conve:fuel_status conve:honk_flash conve:lock conve:lock_status conve:navigation conve:odometer_status conve:trip_statistics conve:tyre_status conve:unlock conve:vehicle_relation conve:warnings conve:windows_status energy:battery_charge_level energy:charging_connection_status energy:charging_system_status energy:electric_range energy:estimated_charging_time energy:recharge_status vehicle:attributes' } )

toogitter commented 7 months ago

Hi!

Maybe someone can tell me, which Nodes palette in NodeRed is missing for the two config nodes (I am not using Domoticz, so I think I only need the left one)?

Thanks a lot!!

2024-03-05 09_21_27-Window

FireWizard52 commented 7 months ago

Hello @toogitter,

You asked:

Maybe someone can tell me, which Nodes palette in NodeRed is missing for the two config nodes

The 2 nodes used in my flow are: "node-red-contrib-config¨ See: https://flows.nodered.org/node/node-red-contrib-config You need the most left one, as this one is used to configure the VCC-API key and the authorization. If you do not use Domoticz, you can safely delete the right config node, but you have to modify the remaining flow. This right node configures the relationship with the Domoticz IDX and you don't need that.

However I do not use this contrib node anymore, as I prefer as much as possible to use default available core nodes, although this node still works.

This node can be replaced by an "Inject" node followed by a "Change" node, as follows

Screenshot_Volvo_authorization

The complete flow for these 2 nodes:

[ { "id": "1d33aebc35bf4268", "type": "inject", "z": "d99b351ba6644c24", "name": "Start Authorization", "props": [ { "p": "payload" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 850, "y": 60, "wires": [ [ "f5c58b55258df779" ] ] }, { "id": "f5c58b55258df779", "type": "change", "z": "d99b351ba6644c24", "name": "Set Authorization", "rules": [ { "t": "set", "p": "vcc-api-key", "pt": "flow", "to": "", "tot": "str" }, { "t": "set", "p": "authorzation", "pt": "flow", "to": "", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1090, "y": 60, "wires": [ [] ] } ]

Be aware that this application once has been made for the "Connected" API, version 1. This version 1 will be deprecated on April 30, 2024 and be replaced by version 2.

Note also that this configuration requires you to copy the data from the Volvo developer site into the Change node. Your authorization expires in 1 hour. See: https://developer.volvocars.com/apis/connected-vehicle/v2/specification/

If you need more info, please ask.

Regards

Appelg commented 7 months ago

@FireWizard52 I have a question, how do I fix a authenticationsoultion that doesn't expire in 1 hour?

FireWizard52 commented 7 months ago

Hello @Appelg,

That is dependent on the application you want to use. For e.g. Python see the post of @nikagl, earlier in this thread.

Regards