{
  "openapi": "3.0.1",
  "info": {
    "title": "Routing",
    "version": "1.38",
    "description": "With the Routing service you can calculate routes from A to B taking into account vehicle-specific restrictions, traffic situations, toll, emissions, drivers' working hours, service times and opening intervals.",
    "contact": {
      "url": "https://developer.myptv.com/"
    }
  },
  "tags": [
    {
      "name": "Routing"
    },
    {
      "name": "Reachable Areas"
    },
    {
      "name": "Reachable Locations"
    }
  ],
  "paths": {
    "/routes": {
      "get": {
        "tags": [
          "Routing"
        ],
        "description": "Calculates a route by specifying a list of waypoints.",
        "operationId": "calculateRoute",
        "parameters": [
          {
            "name": "waypoints",
            "in": "query",
            "description": "The list of waypoints the route will be calculated for. At least two waypoints are necessary, a maximum number may apply according to your subscription.\nThe first waypoint is the start and the last is the destination of the route.\nAdditional intermediate waypoints are possible.  \nThe format of each waypoint is `<lat>,<lon>[;<attribute>;<attribute>;...]`\nrepresenting a point with the latitude value in degrees from south to north\nand the longitude value in degrees (WGS84/EPSG:4326) from west to east.\nThis point will be matched to the nearest possible road.  \nBy default the air-line connection between given and matched coordinates is not included in the route polyline, distance and duration.\nWe will refer to this type of waypoint as an _on-road waypoint_.\n\nThe behaviour of a waypoint can be changed by appending the following attributes:  \n * `includeLastMeters` to include the air-line connection between given and matched coordinates in the route polyline, distance and duration.\n We will refer to this type of waypoint as an _off-road waypoint_.\n * `roadAccess=<lat>,<lon>`, to use these coordinates for matching to the nearest road. Implies **includeLastMeters**, i.e.\n the air-line connection between the waypoint coordinates and the matched coordinates\n is included in the route polyline, distance and duration. This is useful if the waypoint should not be matched to the nearest possible road but to some road further away,\n e.g. garage exit at a different road.\n * `matchSideOfStreet`, specifies that this waypoint will be reached at the side of street on which it is located.\n This is useful to prevent the driver from crossing the street to actually reach the location represented by this waypoint.\n * `radius=<distance>`, influences the route path, so that the route passes an area defined by the given radius [m] (integer value).\n This waypoint will not appear as a waypoint event in the response and may not be used as start and destination.\n `radius` must be > 0 and is not compatible with any other attribute on the same waypoint except for `name`.\n We will refer to this type of waypoint as a _route-manipulation waypoint_.\n * `name=<name of waypoint>`, is an identifier to reference this waypoint in the response.\n * In order to influence the route path so that the route uses a specific ferry or railway connection between two locations the waypoint is formatted as follows:\n `combinedTransport=<lat>,<lon>,<lat>,<lon>`. Both locations will be matched to the nearest ports looking for a direct connection.\n If no connection can be found, this waypoint will be ignored, and the warning _ROUTING_COMBINED_TRANSPORT_WAYPOINT_IGNORED_ will be returned.\n If more than one connection is found, the best one will be used,\n and the alternative connections will be returned in the response in a warning _ROUTING_COMBINED_TRANSPORT_WAYPOINT_AMBIGUOUS_.\n This waypoint will not appear as a waypoint event in the response and may not be used as start or destination.\n We will refer to this type of waypoint as a _combined-transport waypoint_.\n\n See [here](./concepts/waypoints) for more information.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "49.01318,8.4279;name=Start ",
              "49.01835,8.36881;includeLastMeters ",
              "49.03543,8.39475;radius=1000 ",
              "49.06560,8.47087;roadAccess=49.06568,8.47184 ",
              "49.06560,8.47087;matchSideOfStreet ",
              "combinedTransport=54.5009693,11.2273406,54.6604379,11.3608932 "
            ]
          },
          {
            "$ref": "#/components/parameters/RouteIdParameter"
          },
          {
            "$ref": "#/components/parameters/ProfileParameter"
          },
          {
            "$ref": "#/components/parameters/VehicleParameter"
          },
          {
            "$ref": "#/components/parameters/OptionsParameter"
          },
          {
            "$ref": "#/components/parameters/EmissionOptionsParameter"
          },
          {
            "$ref": "#/components/parameters/MonetaryOptionsParameter"
          },
          {
            "$ref": "#/components/parameters/ResultsParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Routing"
        ],
        "description": "Calculates a route by specifying a list of waypoints taking into account opening intervals and working hours.",
        "operationId": "calculateRoutePost",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RouteRequest"
              }
            }
          },
          "required": true
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/ProfileParameterPost"
          },
          {
            "$ref": "#/components/parameters/VehicleParameter"
          },
          {
            "$ref": "#/components/parameters/DriverParameter"
          },
          {
            "$ref": "#/components/parameters/OptionsParameter"
          },
          {
            "$ref": "#/components/parameters/EmissionOptionsParameter"
          },
          {
            "$ref": "#/components/parameters/MonetaryOptionsParameter"
          },
          {
            "$ref": "#/components/parameters/EvOptionsParameter"
          },
          {
            "$ref": "#/components/parameters/ResultsParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/routes/{routeId}": {
      "get": {
        "tags": [
          "Routing"
        ],
        "description": "Returns the route of a previously calculated route, an alternative route or a route calculated by the Matrix Routing API.\nThe response will use the same parameters as the previously calculated route.  If no **results** are specified it will contain all results of the previously calculated route except for _ALTERNATIVE_ROUTES_.  If **results** are specified, the results of the previously calculated route will be ignored, only the specified results will be returned. The result _ALTERNATIVE_ROUTES_ is not allowed to be requested. Emission-related results can be requested only if the previous route was not calculated using **emissionOptions**. Results available only in the POST operation can be requested only if the previous route was calculated using the POST operation. As the response will always contain the requested **routeId**, the result _ROUTE_ID_ will have no effect.\nAlthough the route itself will be the same, other results might be slightly different such as the travel time or  toll costs. See [here](./concepts/route-ids) for more information.",
        "operationId": "getRouteByRouteId",
        "parameters": [
          {
            "name": "routeId",
            "in": "path",
            "description": "The route ID returned from a previous route calculation or alternative route.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "$ref": "#/components/parameters/ResultsParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RouteResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/eta/{routeId}": {
      "get": {
        "tags": [
          "Routing"
        ],
        "description": "Calculates the estimated time of arrival (ETA) based on a previously calculated route and the position of the vehicle.",
        "operationId": "getEstimatedTimeOfArrival",
        "parameters": [
          {
            "name": "routeId",
            "in": "path",
            "description": "The route ID returned from a previous route calculation. See [here](./concepts/route-ids) for more information.\n\nMake sure to assign unique names to all off-road and on-road waypoints in the request to obtain the route ID.\nOtherwise, the route ID cannot be used for ETA calculation because the waypoints cannot be identified. Furthermore,\nthe route ID must not contain route-manipulation waypoints, combined-transport waypoints or vehicle parameters at waypoints\nand must not have been calculated with **options[routingMode]=MONETARY**.\n",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "waypoint",
            "in": "query",
            "style": "deepObject",
            "schema": {
              "$ref": "#/components/schemas/PositionAtWaypoint"
            },
            "explode": true
          },
          {
            "name": "position",
            "in": "query",
            "style": "deepObject",
            "schema": {
              "$ref": "#/components/schemas/PositionOnRoute"
            },
            "explode": true
          },
          {
            "name": "time",
            "in": "query",
            "description": "Defines the time when the vehicle position was captured formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\nIf not specified the current time will be used, i.e. the given position of the vehicle is its current position.\n\nIf the date-time string does not include an explicit offset to UTC, the time will be interpreted as the local time of the position of the vehicle.\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00. \nThe response will contain the offset to UTC specified in the request, otherwise it will contain the offset to UTC of the position of the vehicle.\nFor best results the time should be only several minutes in the past or in the future, otherwise live traffic will not be considered properly.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "workLogbook",
            "in": "query",
            "style": "deepObject",
            "schema": {
              "$ref": "#/components/schemas/WorkLogbook"
            },
            "explode": true
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EtaResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reachable-areas": {
      "get": {
        "tags": [
          "Reachable Areas"
        ],
        "description": "Calculates the areas which can be reached from a waypoint, within given horizons (limited to 25 km or 20 minutes). Use the asynchronous POST and GET requests for larger horizons or calculation of areas from a route.",
        "operationId": "calculateReachableAreas",
        "parameters": [
          {
            "name": "waypoint",
            "in": "query",
            "required": true,
            "description": "The start or destination waypoint.\nThe format of the waypoint is `<lat>,<lon>[;<attribute>;<attribute>;...]`\nrepresenting a point with the latitude value in degrees from south to north\nand the longitude value in degrees (WGS84/EPSG:4326) from west to east.\nThis point will be matched to the nearest possible road.\nBy default the air-line connection between given and matched coordinates is not included in the distance or duration.\nWe will refer to this type of waypoint as an _on-road waypoint_.\n\nThe behaviour of a waypoint can be changed by appending the following attributes:\n  * `includeLastMeters` to include the air-line connection between given and matched coordinates in the distance or duration.\n  We will refer to this type of waypoint as an _off-road waypoint_.\n  * `roadAccess=<lat>,<lon>`, to use these coordinates for matching to the nearest road. Implies **includeLastMeters**, i.e.\n  the air-line connection between the waypoint coordinates and the matched coordinates\n  is included in the distance or duration. This is useful if the waypoint should not be matched to the nearest possible road but to some road further away,\n  e.g. garage exit at a different road.\n\nSee [here](./concepts/waypoints) for more information.",
            "schema": {
              "type": "string"
            },
            "example": "49.0133618,8.4277972"
          },
          {
            "$ref": "#/components/parameters/ProfileParameter"
          },
          {
            "$ref": "#/components/parameters/HorizonsParameter"
          },
          {
            "$ref": "#/components/parameters/HorizonTypeParameter"
          },
          {
            "$ref": "#/components/parameters/ReachableOptionsParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReachableAreas"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reachable Areas"
        ],
        "description": "Starts and creates the areas which can be reached from a waypoint or from a route, within given horizons (limited to 200 km or 2 hours from a waypoint, 50 km or 45 minutes from a route). This type of request is recommended when the **horizons** parameter is more than 20 minutes or 25 km.",
        "operationId": "startAndCreateReachableAreas",
        "parameters": [
          {
            "$ref": "#/components/parameters/WaypointParameter"
          },
          {
            "$ref": "#/components/parameters/RouteIdParameter"
          },
          {
            "$ref": "#/components/parameters/ProfileParameter"
          },
          {
            "$ref": "#/components/parameters/HorizonsParameter"
          },
          {
            "$ref": "#/components/parameters/HorizonTypeParameter"
          },
          {
            "$ref": "#/components/parameters/ReachableOptionsParameter"
          }
        ],
        "responses": {
          "202": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReachableAreasId"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reachable-areas/{id}": {
      "get": {
        "tags": [
          "Reachable Areas"
        ],
        "description": "Gets the results of a reachable areas calculation specified by its ID.",
        "operationId": "getReachableAreas",
        "parameters": [
          {
            "$ref": "#/components/parameters/ReachableAreasIdParameter"
          },
          {
            "$ref": "#/components/parameters/MaximumPollingPeriodParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReachableAreasResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reachable Areas"
        ],
        "description": "Cancels a reachable areas calculation and deletes the calculated results specified by its ID. Results already calculated cannot be requested by its ID, anymore.",
        "operationId": "deleteReachableAreas",
        "parameters": [
          {
            "$ref": "#/components/parameters/ReachableAreasIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "Response on success."
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reachable-locations": {
      "post": {
        "tags": [
          "Reachable Locations"
        ],
        "description": "Starts the calculation of the sets of reachable and unreachable locations from the given ones and creates them as the result.",
        "operationId": "startAndCreateReachableLocations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Locations"
              }
            }
          },
          "required": true
        },
        "parameters": [
          {
            "$ref": "#/components/parameters/WaypointParameter"
          },
          {
            "$ref": "#/components/parameters/RouteIdParameter"
          },
          {
            "$ref": "#/components/parameters/ProfileParameter"
          },
          {
            "name": "horizon",
            "in": "query",
            "required": true,
            "description": "The distance [m] or travel time [s] of the horizons, depending of the **horizonType** (limited to 200 km or 2 hours from a waypoint, 50 km or 45 minutes from a route).",
            "schema": {
              "type": "integer",
              "format": "int32",
              "minimum": 1,
              "example": 100
            }
          },
          {
            "$ref": "#/components/parameters/HorizonTypeParameter"
          },
          {
            "$ref": "#/components/parameters/ReachableOptionsParameter"
          }
        ],
        "responses": {
          "202": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReachableLocationsId"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/reachable-locations/{id}": {
      "get": {
        "tags": [
          "Reachable Locations"
        ],
        "description": "Gets the results of a reachable locations calculation specified by its ID.",
        "operationId": "getReachableLocations",
        "parameters": [
          {
            "$ref": "#/components/parameters/ReachableLocationsIdParameter"
          },
          {
            "$ref": "#/components/parameters/MaximumPollingPeriodParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Response on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReachableLocationsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reachable Locations"
        ],
        "description": "Cancels a reachable locations calculation and deletes the calculated results specified by its ID. Results already calculated cannot be requested by its ID, anymore.",
        "operationId": "deleteReachableLocations",
        "parameters": [
          {
            "$ref": "#/components/parameters/ReachableLocationsIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "Response on success."
          },
          "default": {
            "description": "Response on failure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "WaypointParameter": {
        "name": "waypoint",
        "in": "query",
        "description": "The start or destination waypoint.\nThe format of the waypoint is `<lat>,<lon>[;<attribute>;<attribute>;...]`\nrepresenting a point with the latitude value in degrees from south to north\nand the longitude value in degrees (WGS84/EPSG:4326) from west to east.\nThis point will be matched to the nearest possible road.\nBy default the air-line connection between given and matched coordinates is not included in the distance or duration.\nWe will refer to this type of waypoint as an _on-road waypoint_.\n\nThe behaviour of a waypoint can be changed by appending the following attributes:\n  * `includeLastMeters` to include the air-line connection between given and matched coordinates in the distance or duration.\n  We will refer to this type of waypoint as an _off-road waypoint_.\n  * `roadAccess=<lat>,<lon>`, to use these coordinates for matching to the nearest road. Implies **includeLastMeters**, i.e.\n  the air-line connection between the waypoint coordinates and the matched coordinates\n  is included in the distance or duration. This is useful if the waypoint should not be matched to the nearest possible road but to some road further away,\n  e.g. garage exit at a different road.\n\nSee [here](./concepts/waypoints) for more information.",
        "schema": {
          "type": "string"
        }
      },
      "RouteIdParameter": {
        "name": "routeId",
        "in": "query",
        "description": "Instead of the waypoint mentioned above, a **routeId** from a previously calculated route or a matched track can be entered.\nMore information and applying restrictions can be found [here](./concepts/route-ids).",
        "schema": {
          "type": "string",
          "format": "uuid"
        },
        "example": "3a58b824-fa8b-47eb-a5b8-73d6b753e1b4"
      },
      "ReachableAreasIdParameter": {
        "name": "id",
        "in": "path",
        "description": "The ID of the calculated reachable areas.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "ReachableLocationsIdParameter": {
        "name": "id",
        "in": "path",
        "description": "The ID of the calculated reachable locations.",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "MaximumPollingPeriodParameter": {
        "name": "maximumPollingPeriod",
        "in": "query",
        "description": "If the calculation is still running, this operation will be blocked and will not return before this period [ms] expires. If the calculation is completed, it will return immediately.\n\nThe default of 0 ms will cause the operation to return immediately in any case. Use a value > 0 to implement long polling to reduce the number of requests. See the [tutorial](https://developer.myptv.com/en/resources/tutorials/general/how-use-asynchronous-requests-ptv-developer-apis) on asynchronous requests for details.\n",
        "schema": {
          "type": "integer",
          "format": "int32",
          "default": 0,
          "minimum": 0,
          "maximum": 50000
        }
      },
      "ReachableOptionsParameter": {
        "name": "options",
        "in": "query",
        "description": "Routing-relevant options like driving direction or the use of additional data.\nUse array notation like `options[trafficMode]=AVERAGE` to set options.",
        "schema": {
          "$ref": "#/components/schemas/ReachableOptions"
        },
        "explode": true,
        "style": "deepObject"
      },
      "HorizonsParameter": {
        "name": "horizons",
        "in": "query",
        "description": "The distances [m] or travel times [s] of the horizons, depending on the **horizonType**. Limited to 5 horizons (or 3 with a **routeId**).",
        "required": true,
        "schema": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 100
          },
          "minItems": 1,
          "maxItems": 5
        },
        "explode": false
      },
      "HorizonTypeParameter": {
        "name": "horizonType",
        "in": "query",
        "schema": {
          "$ref": "#/components/schemas/HorizonType"
        }
      },
      "ProfileParameter": {
        "name": "profile",
        "in": "query",
        "description": "A profile defines a vehicle by a set of attributes, matching typical transport situations.\nIt must be the name of one of the [predefined profiles](../data-api/concepts/profiles) such as _EUR_TRAILER_TRUCK_.\n\nIf this parameter is not specified and the first waypoint or the routeId is located in the Americas,\n_USA_8_SEMITRAILER_5AXLE_ is used as the default instead of _EUR_TRAILER_TRUCK_.\n\nIf the first waypoint or the routeId is located in the Americas but a non-American profile is specified or vice-versa, a warning is returned (routing only).\nAlways use a profile which matches the region of the waypoints to obtain best results.\n\nIf the attributes of the profile do not fit to your vehicle, the values can be changed by the corresponding attributes in the **vehicle** parameter (routing only). \nThe values of the predefined profiles may be adapted to reflect current vehicle standards. To obtain the same results when values change, it is recommended to \nalways send with the request the **vehicle** parameters that are important for your use case.",
        "schema": {
          "$ref": "#/components/schemas/Profile"
        }
      },
      "ProfileParameterPost": {
        "name": "profile",
        "in": "query",
        "description": "A profile defines a vehicle by a set of attributes, matching typical transport situations.\nIt must either be the name of one of the [predefined profiles](../data-api/concepts/profiles) such as _EUR_TRAILER_TRUCK_ or a UUID of a predefined [vehicle model](../data-api/code-samples/vehicle-models) from the Data API.\n\nIf this parameter is not specified and the first waypoint or the routeId is located in the Americas,\n_USA_8_SEMITRAILER_5AXLE_ is used as the default instead of _EUR_TRAILER_TRUCK_.\n\nIf the first waypoint or the routeId is located in the Americas but a non-American profile is specified or vice-versa, a warning is returned (routing only).\nAlways use a profile which matches the region of the waypoints to obtain best results.\n\nIf a model of an electric vehicle is used, the electricity consumption of the concrete vehicle model can be calculated.\nSome parameters like **vehicle[engineType]** cannot be used with a model of an electric vehicle.\nThose parameters are automatically filled as applicable from the selected model. \nPlease refer to the [concept](./concepts/model-based-ev-consumption-calculation) to see specifically which parameters are not compatible.\nThese vehicle model profiles are in a preview state, the API is stable, feature changes could be introduced in future.\n\nIf the attributes of the profile do not fit to your vehicle, the values can be changed by the corresponding attributes in the **vehicle** parameter (routing only). \nThe values of the predefined profiles may be adapted to reflect current vehicle standards. To obtain the same results when values change, it is recommended to \nalways send with the request the **vehicle** parameters that are important for your use case.",
        "schema": {
          "$ref": "#/components/schemas/Profile"
        }
      },
      "VehicleParameter": {
        "name": "vehicle",
        "in": "query",
        "description": "Physical and legal properties of the vehicle such as its dimensions to override the values of the selected **profile**.\n\nThese parameters will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.\nUnsupported parameters such as **electricityType** for combustion vehicles should not be specified in the request.\n\nUse array notation like `vehicle[emissionStandard]=EURO_5` to set vehicle attributes.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/Vehicle"
        },
        "explode": true
      },
      "DriverParameter": {
        "name": "driver",
        "in": "query",
        "description": "Options regarding the drivers' working hours.\nIf no driver object with a working hours preset is passed with the request, working hours will be unlimited.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/Driver"
        },
        "explode": true
      },
      "OptionsParameter": {
        "name": "options",
        "in": "query",
        "description": "Routing-relevant options like date of travel or the use of additional data.\nUse array notation like `options[trafficMode]=AVERAGE` to set options.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/Options"
        },
        "explode": true
      },
      "EmissionOptionsParameter": {
        "name": "emissionOptions",
        "in": "query",
        "description": "Relevant options to report emissions.\nUse array notation like `emissionOptions[calculationMethods]=ISO14083_2023` to set options.\n\nThis parameter supersedes emission-related values in **results**. \nIf specified the emission-related values in **results** will be ignored.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/EmissionOptions"
        },
        "explode": true
      },
      "EvOptionsParameter": {
        "name": "evOptions",
        "in": "query",
        "description": "Relevant options to report the electricity consumption of an electric vehicle along a route when _EV_REPORT_, _EV_STATUS_EVENTS_, _EV_STATUS_EVENTS_POLYLINE_ or _EV_CHARGE_EVENTS_ are requested in the **results**.\nUse array notation like `evOptions[initialStateOfCharge]=100` to set options.\n\nThis parameter is in a preview state, the API is stable, feature changes could be introduced in future.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/EvOptions"
        },
        "explode": true
      },
      "MonetaryOptionsParameter": {
        "name": "monetaryCostOptions",
        "in": "query",
        "description": "Relevant options to report the monetary costs of a route when _MONETARY_COSTS_ are requested in the **results**.\nUsed for monetary cost routing when **options[routingMode]=MONETARY** is set.\nThe costs have to be specified in the currency that is set in **options[currency]**.",
        "style": "deepObject",
        "schema": {
          "$ref": "#/components/schemas/MonetaryCostOptions"
        },
        "explode": true
      },
      "ResultsParameter": {
        "name": "results",
        "in": "query",
        "description": "Comma-separated list that defines which results will be returned.\n\n**Main results:**\n * `ROUTE_ID`\n    Response includes the route ID. See [here](./concepts/route-ids) for more information.\n * `POLYLINE`\n    Response includes the complete **polyline** of the entire route in the format specified by **options[polylineFormat]**.\n * `LEGS`\n    Response includes information about the route **legs** defined as the parts of the route between two consecutive waypoints.\n * `LEGS_POLYLINE`\n    Response includes the **polyline** of each of the **legs** in the format specified by **options[polylineFormat]**. _LEGS_ will automatically be included.\n * `ALTERNATIVE_ROUTES`\n    Response includes up to three alternatives in addition to the optimal route. \n    Not supported, if more than two on-road or off-road waypoints are specified or if **options[routingMode]=MONETARY** is specified.\n    Please note that the additional calculations will degrade the performance.  \n * `GUIDED_NAVIGATION`\n    Response includes the guided navigation information for the [PTV Navigator](https://www.myptv.com/en/logistics-software/ptv-navigator).  \n    See [here](./concepts/guided-navigation) for more information.\n * `MONETARY_COSTS`\n    Response includes a report with monetary costs for the route. See [here](./concepts/monetary-costs) for more information.\n * `ELEVATION_REPORT`\n    Response includes a report with the estimated total ascent and descent of the route, and for the legs, if _LEGS_ are included.\n    This requires elevations, which are unavailable for some regions beyond −60° and +60° latitude. If elevations are unavailable for any part of a route, a _ROUTING_ELEVATIONS_UNAVAILABLE_ warning will be returned.\n\n**Toll-related results:**\n * `TOLL_COSTS`\n    Response includes the toll **costs** of the route.\n * `TOLL_SECTIONS`\n    Response includes the list of toll **sections** defined by the toll operators.\n * `TOLL_SYSTEMS`\n    Response includes the list of toll **systems** defined by the toll operators.\n * `TOLL_EVENTS`\n    Response includes **events** when a toll road is entered, exited or a toll booth is passed.\n\n**Events:**\n * `MANEUVER_EVENTS`\n    Response includes **events** for a **maneuver** when the driver has to take an action, e.g. turn left or right.\n * `BORDER_EVENTS`\n    Response includes **events** when a **border** of a country or subdivision is crossed by the route.\n * `VIOLATION_EVENTS`\n    Response includes **events** when the route contains a **violation**, e.g. entering or exiting an area where passing with the current vehicle is prohibited.\n * `VIOLATION_EVENTS_POLYLINE`\n    The response contains the **polyline** of each route violation. _VIOLATION_EVENTS_ will automatically be included.\n * `WAYPOINT_EVENTS`\n    Response includes **events** when a **waypoint** is reached by the route.\n * `UTC_OFFSET_CHANGE_EVENTS`\n    Response includes **events** when the offset to UTC changes (**utcOffsetChange**).\n * `COMBINED_TRANSPORT_EVENTS`\n    Response includes **events** when a combined transport is entered or exited.\n * `TRAFFIC_EVENTS`\n    Response includes **events** when a traffic incident such as a traffic jam is reached by the route.\n * `TRAFFIC_EVENTS_POLYLINE`\n    The response contains the **polyline** of each traffic event. _TRAFFIC_EVENTS_ will automatically be included.\n * `LOW_EMISSION_ZONE_EVENTS` \n    Response includes **events** when a low-emission zone is entered or exited by the route.\n * `DELIVERY_ONLY_EVENTS` \n    Response includes **events** when a road prohibited except for delivery vehicles is entered or exited by the route.\n * `DELIVERY_ONLY_EVENTS_POLYLINE`\n    The response contains the **polyline** of each delivery-only event. _DELIVERY_ONLY_EVENTS_ will automatically be included.\n\n**Emission-related results:**\n\nThese results are superseded by the parameter **emissionOptions**. \nIf **emissionOptions** is specified the emission-related results will be ignored.\n * `EMISSIONS_EN16258_2012`\n    Response includes information on **emissions** (**EN16258_2012**) calculated according to EN16258 from 2012 (a.k.a. CEN) based on the total fuel consumption for this route.\n    Only vehicles with **engineType** _COMBUSTION_ and **fuelType** _GASOLINE_, _DIESEL_, _COMPRESSED_NATURAL_GAS_ or _LIQUEFIED_PETROLEUM_GAS_ are supported.\n    For _GASOLINE_ and _DIESEL_, an arbitrary **bioFuelRatio** is supported.\n    This is a European emission calculation method which should only be used with [European profiles](../data-api/concepts/profiles).\n    This result is mutually exclusive with **EMISSIONS_EN16258_2012_HBEFA**.\n * `EMISSIONS_EN16258_2012_HBEFA`\n    Response includes information on **emissions** (**EN16258_2012**) calculated according to EN 16258 from 2012 (a.k.a. CEN) based on the total fuel consumption for this route\n    which is automatically calculated through HBEFA 4.2. The **averageFuelConsumption** will be ignored.\n    This is a European emission calculation method which should only be used with [European profiles](../data-api/concepts/profiles).\n    Supported vehicles are the same as those of _EMISSIONS_EN16258_2012_.\n    This result is mutually exclusive with **EMISSIONS_EN16258_2012**.\n * `EMISSIONS_ISO14083_2022`\n    Draft version of ISO 14083:2023. See **EMISSIONS_ISO14083_2023** for more information.\n * `EMISSIONS_ISO14083_2022_DEFAULT_CONSUMPTION`\n    Draft version of ISO 14083:2023. See **EMISSIONS_ISO14083_2023_DEFAULT_CONSUMPTION** for more information.\n * `EMISSIONS_ISO14083_2023`\n    Response includes information on **emissions** (**ISO14083_2023**) calculated according to ISO 14083:2023 (a.k.a. ISO) based on the total fuel and electricity consumption for this route.\n    Only supported for [European and American profiles](../data-api/concepts/profiles). Emissions are calculated using the respective factors.\n    All fuel and electricity types are supported, for _GASOLINE_ and _DIESEL_ an arbitrary **bioFuelRatio** is supported.\n    For **engineType** _HYBRID_ or **engineType** _COMBUSTION_ with **fuelType** _CNG_GASOLINE_ or _LPG_GASOLINE_, an arbitrary **hybridRatio** is supported.\n    This result is mutually exclusive with all other ISO14083 calculations.\n * `EMISSIONS_ISO14083_2023_DEFAULT_CONSUMPTION`\n    Response includes information on **emissions** (**ISO14083_2023**) calculated according to ISO 14083:2023 (a.k.a. ISO) for based on the default fuel and electricity consumption for this route\n    which is automatically calculated through HBEFA 4.2. The **averageFuelConsumption** and **averageElectricityConsumption** will be ignored.\n    Only supported for [European profiles](../data-api/concepts/profiles). Emissions are calculated using the European factors.\n    Supported vehicles are the same as those of _EMISSIONS_ISO14083_2023_.\n    This result is mutually exclusive with all other ISO14083 calculations.\n * `EMISSIONS_FRENCH_CO2E_DECREE_2017_639`\n    Response includes information on **emissions** (**French_CO2e_Decree_2017_639**) calculated according to the French CO2E decree from 2017 based on the total fuel consumption for this route.\n    Only vehicles with **engineType** _COMBUSTION_ and **fuelType** _GASOLINE_, _DIESEL_, _COMPRESSED_NATURAL_GAS_ or _LIQUEFIED_PETROLEUM_GAS_ are supported.\n    For _GASOLINE_ a **bioFuelRatio** of _0_, _10_ and _85_ is supported, for _DIESEL_ _0_ and _30_.\n    This is a European emission calculation method which should only be used with [European profiles](../data-api/concepts/profiles).\n\n**Results available only in the POST operation:**\n * `SCHEDULE_EVENTS`\n    We recommend to additionally request _WAYPOINT_EVENTS_ to assign service and recreation events to the waypoint at which they take place, in particular to distinguish them when there are several waypoints at the same location.\n    Response includes **events** when the driver takes a break or a rest, performs service or waits for a waypoint to open (**schedule**).\n * `SCHEDULE_EVENTS_WITH_DRIVING`\n    Response includes **events** when the driver drives, takes a break or a rest, performs service or waits for a waypoint to open (**schedule**). _SCHEDULE_EVENTS_ will automatically be included.\n    We recommend to additionally request _WAYPOINT_EVENTS_ to assign service and recreation events to the waypoint at which they take place, in particular to distinguish them when there are several waypoints at the same location.\n * `SCHEDULE_REPORT`\n    Response includes the **scheduleReport** which provides an overview of the times of the schedule of this route including break and rest times.\n * `EV_REPORT`\n    Response includes a report with detailed electricity consumption for electric vehicles for the route and, if they are requested, for legs. This is only available for concrete models of electric vehicles but not for general routing profiles (see documentation of **profile**).\n    This requires elevations, which are unavailable for some regions beyond −60° and +60° latitude. If elevations are unavailable for any part of a route, a _ROUTING_ELEVATIONS_UNAVAILABLE_ warning will be returned.\n    This result is in a preview state, the API is stable, feature changes could be introduced in future.\n * `EV_STATUS_EVENTS`\n    Response includes events reporting the electricity consumption along the route in more detail. This is only available for concrete models of electric vehicles but not for general routing profiles (see documentation of **profile**). This result is in a preview state, the API is stable, feature changes could be introduced in future.\n * `EV_STATUS_EVENTS_POLYLINE`\n    Response includes the polyline for each **evStatus**-event since the previous **evStatus**-event. _EV_STATUS_EVENTS_ will automatically be included. This is only available for concrete models of electric vehicles but not for general routing profiles (see documentation of **profile**). This result is in a preview state, the API is stable, feature changes could be introduced in future.\n * `EV_CHARGE_EVENTS`\n    Response includes events proposing where the battery of the electric vehicle should be charged. The charging time is a proposal, currently for information only. It is not included in the travel time of the route and the start time of subsequent events is not offset by it. This is only available for concrete models of electric vehicles but not for general routing profiles (see documentation of **profile**). This result is in a preview state, the API is stable, feature changes could be introduced in future.\n\n_TOLL_COSTS_, _TOLL_SECTIONS_, _TOLL_SYSTEMS_ and _TOLL_EVENTS_ will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.\nFor electric vehicles and non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_ all emission values will be 0.",
        "explode": false,
        "schema": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/Results"
          }
        },
        "example": [
          "POLYLINE",
          "TOLL_EVENTS"
        ]
      }
    },
    "schemas": {
      "Vehicle": {
        "type": "object",
        "properties": {
          "engineType": {
            "$ref": "#/components/schemas/EngineType"
          },
          "fuelType": {
            "$ref": "#/components/schemas/FuelType"
          },
          "electricityType": {
            "$ref": "#/components/schemas/ElectricityType"
          },
          "averageFuelConsumption": {
            "description": "The average fuel consumption of the vehicle.\nDepending on the **fuelType** [l/100km] for liquid fuel types or [kg/100km] for gaseous fuel types.\n\nSupported for **engineType** _COMBUSTION_  or _HYBRID_. Relevant for `emissions`.\n",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "exclusiveMinimum": true,
            "example": 35
          },
          "averageElectricityConsumption": {
            "description": "The average electricity consumption of the vehicle [kWh/100km].\n\nSupported for **engineType** _ELECTRIC_ or _HYBRID_. Relevant for `emissions`.\n",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "exclusiveMinimum": true,
            "example": 115
          },
          "bioFuelRatio": {
            "description": "The ratio of biofuel to conventional fuel [%], i.e. 10 for E10 with 10% biofuel.\n\nSupported for **engineType** _COMBUSTION_ or _HYBRID_ and only for the fuel types _GASOLINE_, _DIESEL_, _CNG_GASOLINE_ and _LNG_GASOLINE_.\nRelevant for `emissions`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 100,
            "example": 0
          },
          "hybridRatio": {
            "description": "Electric energy usage ratio from the total amount of energy consumed by the vehicle.\n\nSupported for **engineType** _HYBRID_. Relevant for `emissions`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 99,
            "example": 50
          },
          "dualFuelRatio": {
            "description": "Ratio of CNG or LPG usage from the total amount of fuel consumption.\n\nSupported for **engineType** _COMBUSTION_ with **fuelType**  _CNG_GASOLINE_ or _LPG_GASOLINE_. Relevant for `emissions`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 99,
            "example": 50
          },
          "cylinderCapacity": {
            "description": "The cylinder capacity of the vehicle [cm&#x00B3;]. This value is present for compatibility reasons and does not influence\nany of the results.\n\nSupported for **engineType** _COMBUSTION_ or _HYBRID_.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 12000
          },
          "emissionStandard": {
            "$ref": "#/components/schemas/EmissionStandard"
          },
          "co2EmissionClass": {
            "description": "The CO&#8322; emission class valid in the European Union. See also the \n[Directive 1999/62/EC](https://eur-lex.europa.eu/eli/dir/1999/62/2022-03-24) of the European Parliament and \nof the Council on the charging of heavy goods vehicles for the use of certain infrastructures, Article 7ga.\n\nMust be 1 for combustion and hybrid vehicles with any **emissionStandard**, 2-4 for combustion and hybrid vehicles with **emissionStandard**\nof at least _EURO_6_, and 5 for electric vehicles. \n\nRelevant for `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 5,
            "example": 1
          },
          "lowEmissionZoneTypes": {
            "description": "Comma-separated list of the low-emission zone types of the vehicle.\nThis parameter is deprecated and superseded by **lowEmissionZoneApprovals**.\nWhen still being used, only low-emission zones in Germany are affected, zones\nin other countries which need an environmental badge or vehicle registration can be entered without restriction.\nIt is not possible to specify both parameters.\n\nAvailable values are provided by type `LowEmissionZoneTypes`: \n\"DE_GREEN\" \"DE_YELLOW\" \"DE_RED\" \"DE_NONE\"\n\nRelevant for `routing`.\n",
            "deprecated": true,
            "type": "string"
          },
          "lowEmissionZoneApprovals": {
            "description": "Comma-separated list of approvals to enter low-emission zones.\nUsually, such approvals are environmental badges to be placed on the windscreen,\nbut that can also be any other kind of approval or vehicle registration\nallowing it to enter a low-emission zone.\n\nLow-emission zones which do not need any kind of approval but depend only on the **emissionStandard**\nare not affected by this parameter. Instead they can be entered if the **emissionStandard** \nis sufficient. Electric vehicles can always enter these zones.\n\nThe default of the selected predefined profile allows entering all low-emission zones\nthe vehicle can get an approval for. So, if you do not want to care about that and your \nvehicle operates in a region where it has all necessary approvals, leave this parameter empty.\n\nIn order to consider low-emission zones depending on the actually available approvals, i.e. on \nthe environmental badges on the windscreen and other vehicle registrations, specify all of them here.\nThe vehicle can then enter only those zones for which a proper approval is present. Low-emission zones in countries\nfor which no value is specified cannot be entered.\n\nAvailable values are provided by type `LowEmissionZoneApprovals`.\n\"NONE\" \"AT_EURO_1\" \"AT_EURO_2\" \"AT_EURO_3\" \"AT_EURO_4\" \"AT_EURO_5\" \"AT_EURO_6\"\n\"DE_GREEN\" \"DE_YELLOW\" \"DE_RED\" \"DK_AUTHORIZED\" \"ES_CAT_B\" \"ES_CAT_C\" \"ES_CAT_ECO\" \"ES_CAT_ZERO\"\n\"FR_CRITAIR_0\" \"FR_CRITAIR_1\" \"FR_CRITAIR_2\" \"FR_CRITAIR_3\" \"FR_CRITAIR_4\" \"FR_CRITAIR_5\"\n\nOnly one value per country can be specified. Relevant for `routing`.\nSee [here](./concepts/low-emission-zones) for more information.\n",
            "example": "DE_GREEN,DK_AUTHORIZED,FR_CRITAIR_1",
            "type": "string",
            "x-extensible-enum": [
              "NONE",
              "AT_EURO_1",
              "AT_EURO_2",
              "AT_EURO_3",
              "AT_EURO_4",
              "AT_EURO_5",
              "AT_EURO_6",
              "DE_GREEN",
              "DE_YELLOW",
              "DE_RED",
              "DK_AUTHORIZED",
              "ES_CAT_B",
              "ES_CAT_C",
              "ES_CAT_ECO",
              "ES_CAT_ZERO",
              "FR_CRITAIR_0",
              "FR_CRITAIR_1",
              "FR_CRITAIR_2",
              "FR_CRITAIR_3",
              "FR_CRITAIR_4",
              "FR_CRITAIR_5"
            ]
          },
          "lowEmissionZoneExemptions": {
            "description": "Comma-separated list of exemptions to enter low-emission zones.\n\nAvailable values are provided by type `LowEmissionZoneExemptions`:\n\"BE_LAGE_EMISSIEZONE_ANTWERPEN\" \"BE_LAGE_EMISSIEZONE_GENT\" \"BE_ZONE_BASSE_EMISSION_BRUXELLES\" \"DK_AALBORG_MILJOZONE\" \"DK_ARHUS_MILJOZONE\" \"DK_FREDERIKSBERG_MILJOZONE\" \"DK_KOBENHAVN_MILJOZONE\" \"DK_ODENSE_MILJOZONE\" \"ES_ZBEDEP_MADRID_PLAZA_ELIPTICA\" \"ES_ZBE_ALCOBENDAS\" \"ES_ZBE_ALICANTE\" \"ES_ZBE_ALMERIA\" \"ES_ZBE_BENIDORM\" \"ES_ZBE_BILBAO\" \"ES_ZBE_BOADILLA_DEL_MONTE\" \"ES_ZBE_BURGOS\" \"ES_ZBE_CASTELLDEFELS\" \"ES_ZBE_CERDANYOLA_DEL_VALLES\" \"ES_ZBE_CHICLANA_DE_LA_FRONTERA\" \"ES_ZBE_CORDOBA\" \"ES_ZBE_CUENCA\" \"ES_ZBE_EL_PRAT_DE_LLOBREGAT\" \"ES_ZBE_ELDA\" \"ES_ZBE_ESTEPONA\" \"ES_ZBE_FUENLABRADA\" \"ES_ZBE_GETAFE\" \"ES_ZBE_GIRONA\" \"ES_ZBE_GRANADA\" \"ES_ZBE_GRANOLLERS\" \"ES_ZBE_GUADALAJARA\" \"ES_ZBE_JEREZ_DE_LA_FRONTERA\" \"ES_ZBE_LLEIDA\" \"ES_ZBE_MOLLET_DEL_VALLES\" \"ES_ZBE_MOSTOLES\" \"ES_ZBE_MOTRIL\" \"ES_ZBE_PALMA\" \"ES_ZBE_PAMPLONA\" \"ES_ZBE_PARLA\" \"ES_ZBE_REUS\" \"ES_ZBE_RIVAS_CEIP_COLEGIO_LUYFE\" \"ES_ZBE_RIVAS_CEIP_DULCE_CHACON\" \"ES_ZBE_RIVAS_CEIP_HANS_CHRISTIAN_ANDERSEN\" \"ES_ZBE_RIVAS_CEIP_JARAMA\" \"ES_ZBE_RIVAS_CEIP_JOSE_HIERRO\" \"ES_ZBE_RIVAS_CEIP_JOSE_ITURZAETA\" \"ES_ZBE_RIVAS_CEIP_LAS_CIGUENAS\" \"ES_ZBE_RIVAS_CEIP_VICTORIA_KENT\" \"ES_ZBE_RIVAS_COLEGIO_SANTA_MONICA\" \"ES_ZBE_RUBI\" \"ES_ZBE_SABADELL\" \"ES_ZBE_SAN_SEBASTIAN\" \"ES_ZBE_SEGOVIA\" \"ES_ZBE_TARRAGONA\" \"ES_ZBE_TERRASSA\" \"ES_ZBE_TORREJON_DE_ARDOZ\" \"ES_ZBE_TORRELAVEGA\" \"ES_ZBE_TORREMOLINOS\" \"ES_ZBE_VALLADOLID\" \"ES_ZBE_VITORIA_GASTEIZ\" \"FR_ANGERS_ZFE\" \"FR_STRASBOURG_ZFE\" \"GB_ABERDEEN_LEZ\" \"GB_BATH_CAZ\" \"GB_BIRMINGHAM_CAZ\" \"GB_BRADFORD_CAZ\" \"GB_BRISTOL_CAZ\" \"GB_DUNDEE_LEZ\" \"GB_EDINBURGH_LEZ\" \"GB_GLASGOW_LEZ\" \"GB_LONDON_ULTRA_LOW_EMISSION_ZONE\" \"GB_NEWCASTLE_CAZ\" \"GB_PORTSMOUTH_CAZ\" \"GB_SHEFFIELD_CAZ\" \"IT_MILANO_AREA_C\" \"IT_PALERMO_ZTL\" \"NL_AMERSFOORT_ZERO_EMISSIEZONE\" \"NL_AMSTERDAM_MILIEUZONE\" \"NL_AMSTERDAM_ZERO_EMISSIEZONE\" \"NL_ARNHEM_MILIEUZONE\" \"NL_ASSEN_ZERO_EMISSIEZONE\" \"NL_BREDA_MILIEUZONE\" \"NL_DELFT_HAAG_ZERO_EMISSIEZONE\" \"NL_DELFT_MILIEUZONE\" \"NL_DEN_HAAG_MILIEUZONE\" \"NL_DEN_HAAG_ZERO_EMISSIEZONE\" \"NL_EINDHOVEN_MILIEUZONE\" \"NL_EINDHOVEN_ZERO_EMISSIEZONE\" \"NL_ENSCHEDE_ZERO_EMISSIEZONE\" \"NL_GOUDA_ZERO_EMISSIEZONE\" \"NL_GRONINGEN_ZERO_EMISSIEZONE\" \"NL_HAARLEM_MILIEUZONE\" \"NL_LEIDEN_MILIEUZONE\" \"NL_LEIDEN_ZERO_EMISSIEZONE\" \"NL_MAASTRICHT_MILIEUZONE\" \"NL_MAASTRICHT_ZERO_EMISSIEZONE\" \"NL_MAASVLAKTE_ROTTERDAM_MILIEUZONE\" \"NL_NIJMEGEN_ZERO_EMISSIEZONE\" \"NL_RIJSWIJK_MILIEUZONE\" \"NL_ROTTERDAM_MILIEUZONE\" \"NL_ROTTERDAM_ZERO_EMISSIEZONE\" \"NL_S_GRAVENDIJKWAL_MILIEUZONE\" \"NL_S_HERTOGENBOSCH_ZERO_EMISSIEZONE\" \"NL_SCHEVENINGSE_HAVEN_MILIEUZONE\" \"NL_SCHIPHOL_ZERO_EMISSIEZONE\" \"NL_TILBURG_MILIEUZONE\" \"NL_TILBURG_ZERO_EMISSIEZONE\" \"NL_UTRECHT_MILIEUZONE\" \"NL_UTRECHT_ZERO_EMISSIEZONE\" \"NL_ZWOLLE_ZERO_EMISSIEZONE\" \"PT_EIXO_AV_LIBERDADE_BAIXA_ZER\"\n\nThe following values are deprecated: \"NL_S_HERTOGENBOSCH_MILIEUZONE\" \"NL_LEIDEN_MILIEUZONE\" \"NL_ROTTERDAM_MILIEUZONE\" \"NL_S_GRAVENDIJKWAL_MILIEUZONE\" \"NL_TILBURG_MILIEUZONE\"\n\nRelevant for `routing`.\nSee [here](./concepts/low-emission-zones) for more information.\n",
            "example": "FR_STRASBOURG_ZFE,GB_LONDON_ULTRA_LOW_EMISSION_ZONE",
            "type": "string",
            "x-extensible-enum": [
              "BE_LAGE_EMISSIEZONE_ANTWERPEN",
              "BE_LAGE_EMISSIEZONE_GENT",
              "BE_ZONE_BASSE_EMISSION_BRUXELLES",
              "DK_AALBORG_MILJOZONE",
              "DK_ARHUS_MILJOZONE",
              "DK_FREDERIKSBERG_MILJOZONE",
              "DK_KOBENHAVN_MILJOZONE",
              "DK_ODENSE_MILJOZONE",
              "ES_ZBEDEP_MADRID_PLAZA_ELIPTICA",
              "ES_ZBE_ALCOBENDAS",
              "ES_ZBE_ALICANTE",
              "ES_ZBE_ALMERIA",
              "ES_ZBE_BENIDORM",
              "ES_ZBE_BILBAO",
              "ES_ZBE_BOADILLA_DEL_MONTE",
              "ES_ZBE_BURGOS",
              "ES_ZBE_CASTELLDEFELS",
              "ES_ZBE_CERDANYOLA_DEL_VALLES",
              "ES_ZBE_CHICLANA_DE_LA_FRONTERA",
              "ES_ZBE_CORDOBA",
              "ES_ZBE_CUENCA",
              "ES_ZBE_EL_PRAT_DE_LLOBREGAT",
              "ES_ZBE_ELDA",
              "ES_ZBE_ESTEPONA",
              "ES_ZBE_FUENLABRADA",
              "ES_ZBE_GETAFE",
              "ES_ZBE_GIRONA",
              "ES_ZBE_GRANADA",
              "ES_ZBE_GRANOLLERS",
              "ES_ZBE_GUADALAJARA",
              "ES_ZBE_JEREZ_DE_LA_FRONTERA",
              "ES_ZBE_LLEIDA",
              "ES_ZBE_MOLLET_DEL_VALLES",
              "ES_ZBE_MOSTOLES",
              "ES_ZBE_MOTRIL",
              "ES_ZBE_PALMA",
              "ES_ZBE_PAMPLONA",
              "ES_ZBE_PARLA",
              "ES_ZBE_REUS",
              "ES_ZBE_RIVAS_CEIP_COLEGIO_LUYFE",
              "ES_ZBE_RIVAS_CEIP_DULCE_CHACON",
              "ES_ZBE_RIVAS_CEIP_HANS_CHRISTIAN_ANDERSEN",
              "ES_ZBE_RIVAS_CEIP_JARAMA",
              "ES_ZBE_RIVAS_CEIP_JOSE_HIERRO",
              "ES_ZBE_RIVAS_CEIP_JOSE_ITURZAETA",
              "ES_ZBE_RIVAS_CEIP_LAS_CIGUENAS",
              "ES_ZBE_RIVAS_CEIP_VICTORIA_KENT",
              "ES_ZBE_RIVAS_COLEGIO_SANTA_MONICA",
              "ES_ZBE_RUBI",
              "ES_ZBE_SABADELL",
              "ES_ZBE_SAN_SEBASTIAN",
              "ES_ZBE_SEGOVIA",
              "ES_ZBE_TARRAGONA",
              "ES_ZBE_TERRASSA",
              "ES_ZBE_TORREJON_DE_ARDOZ",
              "ES_ZBE_TORRELAVEGA",
              "ES_ZBE_TORREMOLINOS",
              "ES_ZBE_VALLADOLID",
              "ES_ZBE_VITORIA_GASTEIZ",
              "FR_ANGERS_ZFE",
              "FR_STRASBOURG_ZFE",
              "GB_ABERDEEN_LEZ",
              "GB_BATH_CAZ",
              "GB_BIRMINGHAM_CAZ",
              "GB_BRADFORD_CAZ",
              "GB_BRISTOL_CAZ",
              "GB_DUNDEE_LEZ",
              "GB_EDINBURGH_LEZ",
              "GB_GLASGOW_LEZ",
              "GB_LONDON_ULTRA_LOW_EMISSION_ZONE",
              "GB_NEWCASTLE_CAZ",
              "GB_PORTSMOUTH_CAZ",
              "GB_SHEFFIELD_CAZ",
              "IT_MILANO_AREA_C",
              "IT_PALERMO_ZTL",
              "NL_AMERSFOORT_ZERO_EMISSIEZONE",
              "NL_AMSTERDAM_MILIEUZONE",
              "NL_AMSTERDAM_ZERO_EMISSIEZONE",
              "NL_ARNHEM_MILIEUZONE",
              "NL_ASSEN_ZERO_EMISSIEZONE",
              "NL_BREDA_MILIEUZONE",
              "NL_DELFT_HAAG_ZERO_EMISSIEZONE",
              "NL_DELFT_MILIEUZONE",
              "NL_DEN_HAAG_MILIEUZONE",
              "NL_DEN_HAAG_ZERO_EMISSIEZONE",
              "NL_EINDHOVEN_MILIEUZONE",
              "NL_EINDHOVEN_ZERO_EMISSIEZONE",
              "NL_ENSCHEDE_ZERO_EMISSIEZONE",
              "NL_GOUDA_ZERO_EMISSIEZONE",
              "NL_GRONINGEN_ZERO_EMISSIEZONE",
              "NL_HAARLEM_MILIEUZONE",
              "NL_LEIDEN_MILIEUZONE",
              "NL_LEIDEN_ZERO_EMISSIEZONE",
              "NL_MAASTRICHT_MILIEUZONE",
              "NL_MAASTRICHT_ZERO_EMISSIEZONE",
              "NL_MAASVLAKTE_ROTTERDAM_MILIEUZONE",
              "NL_NIJMEGEN_ZERO_EMISSIEZONE",
              "NL_RIJSWIJK_MILIEUZONE",
              "NL_ROTTERDAM_MILIEUZONE",
              "NL_ROTTERDAM_ZERO_EMISSIEZONE",
              "NL_S_GRAVENDIJKWAL_MILIEUZONE",
              "NL_S_HERTOGENBOSCH_MILIEUZONE",
              "NL_S_HERTOGENBOSCH_ZERO_EMISSIEZONE",
              "NL_SCHEVENINGSE_HAVEN_MILIEUZONE",
              "NL_SCHIPHOL_ZERO_EMISSIEZONE",
              "NL_TILBURG_MILIEUZONE",
              "NL_TILBURG_ZERO_EMISSIEZONE",
              "NL_UTRECHT_MILIEUZONE",
              "NL_UTRECHT_ZERO_EMISSIEZONE",
              "NL_ZWOLLE_ZERO_EMISSIEZONE",
              "PT_EIXO_AV_LIBERDADE_BAIXA_ZER"
            ]
          },
          "particleReductionClass": {
            "$ref": "#/components/schemas/ParticleReductionClass"
          },
          "emptyWeight": {
            "description": "The empty weight of the vehicle [kg].\n\nRelevant for `routing`, `emissions`, `range calculation`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 15000
          },
          "loadWeight": {
            "description": "The weight of the vehicle's load [kg].\n\nRelevant for `routing`, `emissions`, `range calculation`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "example": 25000
          },
          "totalPermittedWeight": {
            "description": "The total permitted weight of the vehicle and its load [kg]. This is the weight the vehicle is usually registered with.\nIf this value is not specified but **totalTechnicallyPermittedWeight** is specified then that value is used \nfor both **totalPermittedWeight** and **totalTechnicallyPermittedWeight**.\n\nRelevant for `routing`, `toll`, `emissions`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 40000
          },
          "totalTechnicallyPermittedWeight": {
            "description": "The total technically permitted weight of the vehicle and its load [kg]. \nSometimes vehicles are registered with a smaller **totalPermittedWeight** than technically possible. For \nsuch cases the possibly larger total technically permitted weight is specified here, it is relevant for \ntoll calculation in some European countries.\nIf this value is not specified but **totalPermittedWeight** is specified then that value is used \nfor both **totalPermittedWeight** and **totalTechnicallyPermittedWeight**.\n\nRelevant for `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 40000
          },
          "axleWeight": {
            "description": "The maximum distributed weight that may be supported by an axle of the vehicle [kg].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 11500
          },
          "numberOfAxles": {
            "description": "The total number of axles of the vehicle including the trailers.\n\nRelevant for `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 5
          },
          "numberOfTires": {
            "description": "The total number of tires of the vehicle including the trailers.\n\nRelevant for `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 10
          },
          "height": {
            "description": "The height of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 400
          },
          "heightAboveFrontAxle": {
            "description": "The height above the front axle [cm].\n\nRelevant for `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 400
          },
          "length": {
            "description": "The length of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 1650
          },
          "width": {
            "description": "The width of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 254
          },
          "hazardousMaterials": {
            "description": "Comma-separated list of hazardous materials the vehicle has loaded. If none of the specific values applies,\nspecify _OTHER_ to mark the vehicle carrying unspecific hazardous materials. If _NONE_ is specified along with\nother hazardous materials it is ignored. Depending on the load the route will avoid roads prohibited\nfor and/or prefer roads prescribed for specific hazardous materials.\n\nAvailable values are provided by type `HazardousMaterials`: \n\"HAZARDOUS_TO_WATER\" \"EXPLOSIVE\" \"FLAMMABLE\" \"RADIOACTIVE\" \"INHALATION_HAZARD\" \"MEDICAL_WASTE\" \"OTHER\" \"NONE\"\n\nRelevant for `routing`.\n",
            "type": "string"
          },
          "tunnelRestrictionCode": {
            "$ref": "#/components/schemas/TunnelRestrictionCode"
          },
          "truckRoutes": {
            "$ref": "#/components/schemas/TruckRoutesList"
          },
          "commercial": {
            "description": "Specifies if the vehicle usage is commercial.\n\nRelevant for `toll`.\n",
            "type": "boolean",
            "example": false
          },
          "etcSubscriptions": {
            "description": "Comma-separated list of ETC Subscriptions.\nSee [here](./concepts/electronic-toll-collection) for more information on available subscriptions.\n\nAvailable values are provided by type `EtcSubscriptionTypes`: \n\"AT_GOBOX\" \"BE_TELETOL\" \"BE_VIAPASS\" \"CH_LSVA\" \"DE_QUICKBOX\" \"DE_TOLLCOLLECT\" \"DE_WARNOWTUNNEL_RFID\" \"DK_BROPAS_BUSINESS\" \"IT_TELEPASS\" \"NL_TELECARD\" \"NL_TTAG\" \"NO_AUTOPASS\" \"PT_VIA_VERDE\" \"US_APASS\" \"US_BREEZEBY\" \"US_DOWNBEACH_EXPRESSPASS\" \"US_EPASS\" \"US_EXPRESSACCOUNT\" \"US_EXPRESSCARD\" \"US_EXPRESSPASS\" \"US_EXPRESSTOLL\" \"US_EZPASS\" \"US_EZTAG\" \"US_FASTRAK\" \"US_GEAUXPASS\" \"US_GOODTOGO\" \"US_GOPASS\" \"US_IPASS\" \"US_KTAG\" \"US_LEEWAY\" \"US_MACKINACBRIDGE_MACPASS\" \"US_MARYLAND_EZPASS\" \"US_MASSACHUSETTS_EZPASS\" \"US_NC_QUICKPASS\" \"US_NEWHAMPSHIRE_EZPASS\" \"US_NEWJERSEY_EZPASS\" \"US_NEWYORK_EZPASS\" \"US_NEXPRESS\" \"US_OHIO_EZPASS\" \"US_PALPASS\" \"US_PIKEPASS\" \"US_RIVERLINK\" \"US_RIVERLINK_NOTRANSPONDER\" \"US_SEAWAYTRANSITCARD\" \"US_SUNPASS\" \"US_TOLLTAG\" \"US_TXTAG\" \"US_VIRGINIA_EZPASS\" \"US_WESTVIRGINIA_EZPASS\" \"US_PEACHPASS\" \"US_NEXUS\" \"US_DELAWARE_EZPASS\" \"US_GROSSEILETOLLBRIDGE_PASSTAG\" \"US_EZPASS_PAYBYPLATE\"\n\nRelevant for `toll`.\n",
            "type": "string"
          }
        }
      },
      "EngineType": {
        "type": "string",
        "description": "The engine type of the vehicle.\nWhen changing the engine type further parameters must be specified to define a valid vehicle and to\nobtain proper results. For a hybrid or an electric vehicle **electricityType** and **averageElectricityConsumption**\nmust be specified, for a hybrid vehicle additionally the **hybridRatio**.\n\nThis and all dependent parameters cannot be used with a model of an electric vehicle, because all applicable \nparameters are automatically provided by the model.\nPlease refer to the [concept](./concepts/model-based-ev-consumption-calculation) to see specifically which \nparameters are not compatible and automatically set from the vehicle model.\n\nRelevant for `toll`, `emissions`.\n",
        "example": "COMBUSTION",
        "enum": [
          "COMBUSTION",
          "ELECTRIC",
          "HYBRID"
        ],
        "x-enum-varnames": [
          "COMBUSTION",
          "ELECTRIC",
          "HYBRID"
        ]
      },
      "FuelType": {
        "type": "string",
        "description": "The fuel type of the vehicle.\nThe fuel types _CNG_GASOLINE_ and _LNG_GASOLINE_ are used for dual-fuel vehicles, therefore the **dualFuelRatio**\nhas to be specified. These fuel types cannot be used with hybrid vehicles.\n\nSupported for **engineType** _COMBUSTION_ and _HYBRID_. Relevant for `emissions`.\n",
        "example": "DIESEL",
        "enum": [
          "GASOLINE",
          "DIESEL",
          "COMPRESSED_NATURAL_GAS",
          "LIQUEFIED_PETROLEUM_GAS",
          "LIQUEFIED_NATURAL_GAS",
          "CNG_GASOLINE",
          "LPG_GASOLINE",
          "ETHANOL",
          "NONE"
        ],
        "x-enum-varnames": [
          "GASOLINE",
          "DIESEL",
          "COMPRESSED_NATURAL_GAS",
          "LIQUEFIED_PETROLEUM_GAS",
          "LIQUEFIED_NATURAL_GAS",
          "CNG_GASOLINE",
          "LPG_GASOLINE",
          "ETHANOL",
          "NONE"
        ]
      },
      "ElectricityType": {
        "type": "string",
        "description": "The electricity type of the vehicle.\n\nSupported for **engineType** _ELECTRIC_ or _HYBRID_. Relevant for `emissions`.\n",
        "example": "BATTERY",
        "enum": [
          "BATTERY",
          "HYDROGEN_FUEL_CELL",
          "NONE"
        ],
        "x-enum-varnames": [
          "BATTERY",
          "HYDROGEN_FUEL_CELL",
          "NONE"
        ]
      },
      "EmissionStandard": {
        "type": "string",
        "description": "The emission standard of the vehicle valid in the European Union.\nThis parameter is not only important for proper toll and emission calculation, \nthere are also low-emission zones which can be entered only if the vehicle has a proper emission standard.\nIn contrast to explicit approvals like environmental badges or vehicle registrations\nthe emission standard is automatically considered when entering such low-emission zones.\n\nValues different from _NONE_ are supported for **engineType** _COMBUSTION_ and _HYBRID_. Relevant for `routing`, `toll`, `emissions`.\n",
        "example": "EURO_6",
        "enum": [
          "NONE",
          "EURO_0",
          "EURO_1",
          "EURO_2",
          "EURO_3",
          "EURO_4",
          "EURO_5",
          "EURO_EEV",
          "EURO_6",
          "EURO_6C",
          "EURO_6D_TEMP",
          "EURO_6D",
          "EURO_6E",
          "EURO_7"
        ],
        "x-enum-varnames": [
          "NONE",
          "EURO_0",
          "EURO_1",
          "EURO_2",
          "EURO_3",
          "EURO_4",
          "EURO_5",
          "EURO_EEV",
          "EURO_6",
          "EURO_6C",
          "EURO_6D_TEMP",
          "EURO_6D",
          "EURO_6E",
          "EURO_7"
        ]
      },
      "LowEmissionZoneTypes": {
        "type": "string",
        "enum": [
          "DE_GREEN",
          "DE_YELLOW",
          "DE_RED",
          "DE_NONE"
        ],
        "x-enum-varnames": [
          "DE_GREEN",
          "DE_YELLOW",
          "DE_RED",
          "DE_NONE"
        ]
      },
      "LowEmissionZoneApprovals": {
        "type": "string",
        "enum": [
          "NONE",
          "AT_EURO_1",
          "AT_EURO_2",
          "AT_EURO_3",
          "AT_EURO_4",
          "AT_EURO_5",
          "AT_EURO_6",
          "DE_GREEN",
          "DE_YELLOW",
          "DE_RED",
          "DK_AUTHORIZED",
          "ES_CAT_B",
          "ES_CAT_C",
          "ES_CAT_ECO",
          "ES_CAT_ZERO",
          "FR_CRITAIR_0",
          "FR_CRITAIR_1",
          "FR_CRITAIR_2",
          "FR_CRITAIR_3",
          "FR_CRITAIR_4",
          "FR_CRITAIR_5"
        ],
        "x-enum-varnames": [
          "NONE",
          "AT_EURO_1",
          "AT_EURO_2",
          "AT_EURO_3",
          "AT_EURO_4",
          "AT_EURO_5",
          "AT_EURO_6",
          "DE_GREEN",
          "DE_YELLOW",
          "DE_RED",
          "DK_AUTHORIZED",
          "ES_CAT_B",
          "ES_CAT_C",
          "ES_CAT_ECO",
          "ES_CAT_ZERO",
          "FR_CRITAIR_0",
          "FR_CRITAIR_1",
          "FR_CRITAIR_2",
          "FR_CRITAIR_3",
          "FR_CRITAIR_4",
          "FR_CRITAIR_5"
        ]
      },
      "LowEmissionZoneExemptions": {
        "type": "string",
        "enum": [
          "BE_LAGE_EMISSIEZONE_ANTWERPEN",
          "BE_LAGE_EMISSIEZONE_GENT",
          "BE_ZONE_BASSE_EMISSION_BRUXELLES",
          "DK_AALBORG_MILJOZONE",
          "DK_ARHUS_MILJOZONE",
          "DK_FREDERIKSBERG_MILJOZONE",
          "DK_KOBENHAVN_MILJOZONE",
          "DK_ODENSE_MILJOZONE",
          "ES_ZBEDEP_MADRID_PLAZA_ELIPTICA",
          "ES_ZBE_ALCOBENDAS",
          "ES_ZBE_ALICANTE",
          "ES_ZBE_ALMERIA",
          "ES_ZBE_BENIDORM",
          "ES_ZBE_BILBAO",
          "ES_ZBE_BOADILLA_DEL_MONTE",
          "ES_ZBE_BURGOS",
          "ES_ZBE_CASTELLDEFELS",
          "ES_ZBE_CERDANYOLA_DEL_VALLES",
          "ES_ZBE_CHICLANA_DE_LA_FRONTERA",
          "ES_ZBE_CORDOBA",
          "ES_ZBE_CUENCA",
          "ES_ZBE_EL_PRAT_DE_LLOBREGAT",
          "ES_ZBE_ELDA",
          "ES_ZBE_ESTEPONA",
          "ES_ZBE_FUENLABRADA",
          "ES_ZBE_GETAFE",
          "ES_ZBE_GIRONA",
          "ES_ZBE_GRANADA",
          "ES_ZBE_GRANOLLERS",
          "ES_ZBE_GUADALAJARA",
          "ES_ZBE_JEREZ_DE_LA_FRONTERA",
          "ES_ZBE_LLEIDA",
          "ES_ZBE_MOLLET_DEL_VALLES",
          "ES_ZBE_MOSTOLES",
          "ES_ZBE_MOTRIL",
          "ES_ZBE_PALMA",
          "ES_ZBE_PAMPLONA",
          "ES_ZBE_PARLA",
          "ES_ZBE_REUS",
          "ES_ZBE_RIVAS_CEIP_COLEGIO_LUYFE",
          "ES_ZBE_RIVAS_CEIP_DULCE_CHACON",
          "ES_ZBE_RIVAS_CEIP_HANS_CHRISTIAN_ANDERSEN",
          "ES_ZBE_RIVAS_CEIP_JARAMA",
          "ES_ZBE_RIVAS_CEIP_JOSE_HIERRO",
          "ES_ZBE_RIVAS_CEIP_JOSE_ITURZAETA",
          "ES_ZBE_RIVAS_CEIP_LAS_CIGUENAS",
          "ES_ZBE_RIVAS_CEIP_VICTORIA_KENT",
          "ES_ZBE_RIVAS_COLEGIO_SANTA_MONICA",
          "ES_ZBE_RUBI",
          "ES_ZBE_SABADELL",
          "ES_ZBE_SAN_SEBASTIAN",
          "ES_ZBE_SEGOVIA",
          "ES_ZBE_TARRAGONA",
          "ES_ZBE_TERRASSA",
          "ES_ZBE_TORREJON_DE_ARDOZ",
          "ES_ZBE_TORRELAVEGA",
          "ES_ZBE_TORREMOLINOS",
          "ES_ZBE_VALLADOLID",
          "ES_ZBE_VITORIA_GASTEIZ",
          "FR_ANGERS_ZFE",
          "FR_STRASBOURG_ZFE",
          "GB_ABERDEEN_LEZ",
          "GB_BATH_CAZ",
          "GB_BIRMINGHAM_CAZ",
          "GB_BRADFORD_CAZ",
          "GB_BRISTOL_CAZ",
          "GB_DUNDEE_LEZ",
          "GB_EDINBURGH_LEZ",
          "GB_GLASGOW_LEZ",
          "GB_LONDON_ULTRA_LOW_EMISSION_ZONE",
          "GB_NEWCASTLE_CAZ",
          "GB_PORTSMOUTH_CAZ",
          "GB_SHEFFIELD_CAZ",
          "IT_MILANO_AREA_C",
          "IT_PALERMO_ZTL",
          "NL_AMERSFOORT_ZERO_EMISSIEZONE",
          "NL_AMSTERDAM_MILIEUZONE",
          "NL_AMSTERDAM_ZERO_EMISSIEZONE",
          "NL_ARNHEM_MILIEUZONE",
          "NL_ASSEN_ZERO_EMISSIEZONE",
          "NL_BREDA_MILIEUZONE",
          "NL_DELFT_HAAG_ZERO_EMISSIEZONE",
          "NL_DELFT_MILIEUZONE",
          "NL_DEN_HAAG_MILIEUZONE",
          "NL_DEN_HAAG_ZERO_EMISSIEZONE",
          "NL_EINDHOVEN_MILIEUZONE",
          "NL_EINDHOVEN_ZERO_EMISSIEZONE",
          "NL_ENSCHEDE_ZERO_EMISSIEZONE",
          "NL_GOUDA_ZERO_EMISSIEZONE",
          "NL_GRONINGEN_ZERO_EMISSIEZONE",
          "NL_HAARLEM_MILIEUZONE",
          "NL_LEIDEN_MILIEUZONE",
          "NL_LEIDEN_ZERO_EMISSIEZONE",
          "NL_MAASTRICHT_MILIEUZONE",
          "NL_MAASTRICHT_ZERO_EMISSIEZONE",
          "NL_MAASVLAKTE_ROTTERDAM_MILIEUZONE",
          "NL_NIJMEGEN_ZERO_EMISSIEZONE",
          "NL_RIJSWIJK_MILIEUZONE",
          "NL_ROTTERDAM_MILIEUZONE",
          "NL_ROTTERDAM_ZERO_EMISSIEZONE",
          "NL_S_GRAVENDIJKWAL_MILIEUZONE",
          "NL_S_HERTOGENBOSCH_MILIEUZONE",
          "NL_S_HERTOGENBOSCH_ZERO_EMISSIEZONE",
          "NL_SCHEVENINGSE_HAVEN_MILIEUZONE",
          "NL_SCHIPHOL_ZERO_EMISSIEZONE",
          "NL_TILBURG_MILIEUZONE",
          "NL_TILBURG_ZERO_EMISSIEZONE",
          "NL_UTRECHT_MILIEUZONE",
          "NL_UTRECHT_ZERO_EMISSIEZONE",
          "NL_ZWOLLE_ZERO_EMISSIEZONE",
          "PT_EIXO_AV_LIBERDADE_BAIXA_ZER"
        ],
        "x-enum-varnames": [
          "BE_LAGE_EMISSIEZONE_ANTWERPEN",
          "BE_LAGE_EMISSIEZONE_GENT",
          "BE_ZONE_BASSE_EMISSION_BRUXELLES",
          "DK_AALBORG_MILJOZONE",
          "DK_ARHUS_MILJOZONE",
          "DK_FREDERIKSBERG_MILJOZONE",
          "DK_KOBENHAVN_MILJOZONE",
          "DK_ODENSE_MILJOZONE",
          "ES_ZBEDEP_MADRID_PLAZA_ELIPTICA",
          "ES_ZBE_ALCOBENDAS",
          "ES_ZBE_ALICANTE",
          "ES_ZBE_ALMERIA",
          "ES_ZBE_BENIDORM",
          "ES_ZBE_BILBAO",
          "ES_ZBE_BOADILLA_DEL_MONTE",
          "ES_ZBE_BURGOS",
          "ES_ZBE_CASTELLDEFELS",
          "ES_ZBE_CERDANYOLA_DEL_VALLES",
          "ES_ZBE_CHICLANA_DE_LA_FRONTERA",
          "ES_ZBE_CORDOBA",
          "ES_ZBE_CUENCA",
          "ES_ZBE_EL_PRAT_DE_LLOBREGAT",
          "ES_ZBE_ELDA",
          "ES_ZBE_ESTEPONA",
          "ES_ZBE_FUENLABRADA",
          "ES_ZBE_GETAFE",
          "ES_ZBE_GIRONA",
          "ES_ZBE_GRANADA",
          "ES_ZBE_GRANOLLERS",
          "ES_ZBE_GUADALAJARA",
          "ES_ZBE_JEREZ_DE_LA_FRONTERA",
          "ES_ZBE_LLEIDA",
          "ES_ZBE_MOLLET_DEL_VALLES",
          "ES_ZBE_MOSTOLES",
          "ES_ZBE_MOTRIL",
          "ES_ZBE_PALMA",
          "ES_ZBE_PAMPLONA",
          "ES_ZBE_PARLA",
          "ES_ZBE_REUS",
          "ES_ZBE_RIVAS_CEIP_COLEGIO_LUYFE",
          "ES_ZBE_RIVAS_CEIP_DULCE_CHACON",
          "ES_ZBE_RIVAS_CEIP_HANS_CHRISTIAN_ANDERSEN",
          "ES_ZBE_RIVAS_CEIP_JARAMA",
          "ES_ZBE_RIVAS_CEIP_JOSE_HIERRO",
          "ES_ZBE_RIVAS_CEIP_JOSE_ITURZAETA",
          "ES_ZBE_RIVAS_CEIP_LAS_CIGUENAS",
          "ES_ZBE_RIVAS_CEIP_VICTORIA_KENT",
          "ES_ZBE_RIVAS_COLEGIO_SANTA_MONICA",
          "ES_ZBE_RUBI",
          "ES_ZBE_SABADELL",
          "ES_ZBE_SAN_SEBASTIAN",
          "ES_ZBE_SEGOVIA",
          "ES_ZBE_TARRAGONA",
          "ES_ZBE_TERRASSA",
          "ES_ZBE_TORREJON_DE_ARDOZ",
          "ES_ZBE_TORRELAVEGA",
          "ES_ZBE_TORREMOLINOS",
          "ES_ZBE_VALLADOLID",
          "ES_ZBE_VITORIA_GASTEIZ",
          "FR_ANGERS_ZFE",
          "FR_STRASBOURG_ZFE",
          "GB_ABERDEEN_LEZ",
          "GB_BATH_CAZ",
          "GB_BIRMINGHAM_CAZ",
          "GB_BRADFORD_CAZ",
          "GB_BRISTOL_CAZ",
          "GB_DUNDEE_LEZ",
          "GB_EDINBURGH_LEZ",
          "GB_GLASGOW_LEZ",
          "GB_LONDON_ULTRA_LOW_EMISSION_ZONE",
          "GB_NEWCASTLE_CAZ",
          "GB_PORTSMOUTH_CAZ",
          "GB_SHEFFIELD_CAZ",
          "IT_MILANO_AREA_C",
          "IT_PALERMO_ZTL",
          "NL_AMERSFOORT_ZERO_EMISSIEZONE",
          "NL_AMSTERDAM_MILIEUZONE",
          "NL_AMSTERDAM_ZERO_EMISSIEZONE",
          "NL_ARNHEM_MILIEUZONE",
          "NL_ASSEN_ZERO_EMISSIEZONE",
          "NL_BREDA_MILIEUZONE",
          "NL_DELFT_HAAG_ZERO_EMISSIEZONE",
          "NL_DELFT_MILIEUZONE",
          "NL_DEN_HAAG_MILIEUZONE",
          "NL_DEN_HAAG_ZERO_EMISSIEZONE",
          "NL_EINDHOVEN_MILIEUZONE",
          "NL_EINDHOVEN_ZERO_EMISSIEZONE",
          "NL_ENSCHEDE_ZERO_EMISSIEZONE",
          "NL_GOUDA_ZERO_EMISSIEZONE",
          "NL_GRONINGEN_ZERO_EMISSIEZONE",
          "NL_HAARLEM_MILIEUZONE",
          "NL_LEIDEN_MILIEUZONE",
          "NL_LEIDEN_ZERO_EMISSIEZONE",
          "NL_MAASTRICHT_MILIEUZONE",
          "NL_MAASTRICHT_ZERO_EMISSIEZONE",
          "NL_MAASVLAKTE_ROTTERDAM_MILIEUZONE",
          "NL_NIJMEGEN_ZERO_EMISSIEZONE",
          "NL_RIJSWIJK_MILIEUZONE",
          "NL_ROTTERDAM_MILIEUZONE",
          "NL_ROTTERDAM_ZERO_EMISSIEZONE",
          "NL_S_GRAVENDIJKWAL_MILIEUZONE",
          "NL_S_HERTOGENBOSCH_MILIEUZONE",
          "NL_S_HERTOGENBOSCH_ZERO_EMISSIEZONE",
          "NL_SCHEVENINGSE_HAVEN_MILIEUZONE",
          "NL_SCHIPHOL_ZERO_EMISSIEZONE",
          "NL_TILBURG_MILIEUZONE",
          "NL_TILBURG_ZERO_EMISSIEZONE",
          "NL_UTRECHT_MILIEUZONE",
          "NL_UTRECHT_ZERO_EMISSIEZONE",
          "NL_ZWOLLE_ZERO_EMISSIEZONE",
          "PT_EIXO_AV_LIBERDADE_BAIXA_ZER"
        ]
      },
      "ParticleReductionClass": {
        "type": "string",
        "example": "PMK_0",
        "description": "The particle reduction class (Partikelminderungsklasse) according to 'Anlage XIV zu &sect; 48 StVZO' (German law).\nThis value is present for compatibility reasons and does not influence any of the results.\n\nSupported for **engineType** _COMBUSTION_ and _HYBRID_.\n",
        "enum": [
          "PMK_0",
          "PMK_1",
          "PMK_2",
          "PMK_3",
          "PMK_4",
          "NONE"
        ],
        "x-enum-varnames": [
          "PMK_0",
          "PMK_1",
          "PMK_2",
          "PMK_3",
          "PMK_4",
          "NONE"
        ]
      },
      "HazardousMaterials": {
        "type": "string",
        "example": "OTHER",
        "enum": [
          "HAZARDOUS_TO_WATER",
          "EXPLOSIVE",
          "FLAMMABLE",
          "RADIOACTIVE",
          "INHALATION_HAZARD",
          "MEDICAL_WASTE",
          "OTHER",
          "NONE"
        ],
        "x-enum-varnames": [
          "HAZARDOUS_TO_WATER",
          "EXPLOSIVE",
          "FLAMMABLE",
          "RADIOACTIVE",
          "INHALATION_HAZARD",
          "MEDICAL_WASTE",
          "OTHER",
          "NONE"
        ]
      },
      "TunnelRestrictionCode": {
        "type": "string",
        "example": "NONE",
        "description": "The tunnel restriction code according to ADR (European Agreement Concerning the International Carriage of Dangerous Goods by Road) depending on the load of the vehicle.\nSee [here](./concepts/truck-restrictions#tunnel-restriction-codes) for more information.\n\nRelevant for `routing`.\n",
        "enum": [
          "NONE",
          "B",
          "C",
          "D",
          "E"
        ],
        "x-enum-varnames": [
          "NONE",
          "B",
          "C",
          "D",
          "E"
        ]
      },
      "TruckRoutesList": {
        "description": "Comma-separated list of truck routes the vehicle has to follow.\n\nAvailable values are provided by type `TruckRoutes`:\n * `DE_LKWUEBERLSTVAUSNV`\n Preferred routes for long trucks in Germany, also known as Lang-LKW.\n * `NL_LZV`\n Preferred routes for long trucks in the Netherlands, also known as LZV (Langere en Zwaardere Vrachtautocombinatie).\n * `NZ_HPMV`\n The network for High Productivity Motor Vehicles (HPMV) carrying the maximum loads available under a permit (New Zealand Transport Agency).\n * `SE_BK_1`\n Public roads and bridges that support up to 64 t total permitted weight (Swedish Transport Administration).\n * `SE_BK_2`\n Public roads and bridges that support up to 51.4 t total permitted weight.\n Actual limit depends on wheelbase and axle weight (Swedish Transport Administration).\n * `SE_BK_3`\n Public roads and bridges that support up to 37.5 t total permitted weight.\n Actual limit depends on wheelbase and axle weight (Swedish Transport Administration).\n * `SE_BK_4`\n Public roads and bridges that support up to 74 t total permitted weight (draft summer 2018, Swedish Transport Administration).\n * `US_STAA`\n Routes that belong to the highway network as defined by the Surface Transportation Assistance Act in the US.\n * `US_TD`\n Part of a state-designated highway network for trucks in the US.\n * `AU_B_DOUBLE`\n B-Double routes as defined in Australia.\n * `AU_B_DOUBLE_HML`\n Routes for B-Double vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `AU_B_TRIPLE`\n B-Triple routes as defined in Australia.\n * `AU_B_TRIPLE_HML`\n Routes for B-Triple vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `AU_AB_TRIPLE`\n Routes for AB-Triple vehicle combinations operating (Australian Transport Administration).\n * `AU_AB_TRIPLE_HML`\n Routes for AB-Triple vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `GENERAL_TRUCK_ROUTES`\n General routes designated for trucks, for example to prevent trucks routing through city centres when they are on transit.\n * `NONE`\n Overrides the profile settings to specify not to follow any truck routes. \n If _NONE_ is specified along with other truck routes it is ignored.\n\nThis parameter will be ignored for non-truck profiles, e.g. _EUR_CAR_, _EUR_VAN_, _USA_1_PICKUP_ or _AUS_LCV_LIGHT_COMMERCIAL_\nand for routing modes other than _FAST_.\nRelevant for `routing`.\n",
        "type": "string"
      },
      "TruckRoutes": {
        "type": "string",
        "example": "SE_BK_1",
        "enum": [
          "DE_LKWUEBERLSTVAUSNV",
          "NL_LZV",
          "NZ_HPMV",
          "SE_BK_1",
          "SE_BK_2",
          "SE_BK_3",
          "SE_BK_4",
          "US_STAA",
          "US_TD",
          "AU_B_DOUBLE",
          "AU_B_DOUBLE_HML",
          "AU_B_TRIPLE",
          "AU_B_TRIPLE_HML",
          "AU_AB_TRIPLE",
          "AU_AB_TRIPLE_HML",
          "GENERAL_TRUCK_ROUTES",
          "NONE"
        ],
        "x-enum-varnames": [
          "DE_LKWUEBERLSTVAUSNV",
          "NL_LZV",
          "NZ_HPMV",
          "SE_BK_1",
          "SE_BK_2",
          "SE_BK_3",
          "SE_BK_4",
          "US_STAA",
          "US_TD",
          "AU_B_DOUBLE",
          "AU_B_DOUBLE_HML",
          "AU_B_TRIPLE",
          "AU_B_TRIPLE_HML",
          "AU_AB_TRIPLE",
          "AU_AB_TRIPLE_HML",
          "GENERAL_TRUCK_ROUTES",
          "NONE"
        ]
      },
      "EtcSubscriptionTypes": {
        "type": "string",
        "example": "DE_TOLLCOLLECT",
        "enum": [
          "AT_GOBOX",
          "BE_TELETOL",
          "BE_VIAPASS",
          "CH_LSVA",
          "DE_QUICKBOX",
          "DE_TOLLCOLLECT",
          "DE_WARNOWTUNNEL_RFID",
          "DK_BROPAS_BUSINESS",
          "IT_TELEPASS",
          "NL_TELECARD",
          "NL_TTAG",
          "NO_AUTOPASS",
          "PT_VIA_VERDE",
          "US_APASS",
          "US_BREEZEBY",
          "US_DOWNBEACH_EXPRESSPASS",
          "US_EPASS",
          "US_EXPRESSACCOUNT",
          "US_EXPRESSCARD",
          "US_EXPRESSPASS",
          "US_EXPRESSTOLL",
          "US_EZPASS",
          "US_EZTAG",
          "US_FASTRAK",
          "US_GEAUXPASS",
          "US_GOODTOGO",
          "US_GOPASS",
          "US_IPASS",
          "US_KTAG",
          "US_LEEWAY",
          "US_MACKINACBRIDGE_MACPASS",
          "US_MARYLAND_EZPASS",
          "US_MASSACHUSETTS_EZPASS",
          "US_NC_QUICKPASS",
          "US_NEWHAMPSHIRE_EZPASS",
          "US_NEWJERSEY_EZPASS",
          "US_NEWYORK_EZPASS",
          "US_NEXPRESS",
          "US_OHIO_EZPASS",
          "US_PALPASS",
          "US_PIKEPASS",
          "US_RIVERLINK",
          "US_RIVERLINK_NOTRANSPONDER",
          "US_SEAWAYTRANSITCARD",
          "US_SUNPASS",
          "US_TOLLTAG",
          "US_TXTAG",
          "US_VIRGINIA_EZPASS",
          "US_WESTVIRGINIA_EZPASS",
          "US_PEACHPASS",
          "US_NEXUS",
          "US_DELAWARE_EZPASS",
          "US_GROSSEILETOLLBRIDGE_PASSTAG",
          "US_EZPASS_PAYBYPLATE"
        ],
        "x-enum-varnames": [
          "AT_GOBOX",
          "BE_TELETOL",
          "BE_VIAPASS",
          "CH_LSVA",
          "DE_QUICKBOX",
          "DE_TOLLCOLLECT",
          "DE_WARNOWTUNNEL_RFID",
          "DK_BROPAS_BUSINESS",
          "IT_TELEPASS",
          "NL_TELECARD",
          "NL_TTAG",
          "NO_AUTOPASS",
          "PT_VIA_VERDE",
          "US_APASS",
          "US_BREEZEBY",
          "US_DOWNBEACH_EXPRESSPASS",
          "US_EPASS",
          "US_EXPRESSACCOUNT",
          "US_EXPRESSCARD",
          "US_EXPRESSPASS",
          "US_EXPRESSTOLL",
          "US_EZPASS",
          "US_EZTAG",
          "US_FASTRAK",
          "US_GEAUXPASS",
          "US_GOODTOGO",
          "US_GOPASS",
          "US_IPASS",
          "US_KTAG",
          "US_LEEWAY",
          "US_MACKINACBRIDGE_MACPASS",
          "US_MARYLAND_EZPASS",
          "US_MASSACHUSETTS_EZPASS",
          "US_NC_QUICKPASS",
          "US_NEWHAMPSHIRE_EZPASS",
          "US_NEWJERSEY_EZPASS",
          "US_NEWYORK_EZPASS",
          "US_NEXPRESS",
          "US_OHIO_EZPASS",
          "US_PALPASS",
          "US_PIKEPASS",
          "US_RIVERLINK",
          "US_RIVERLINK_NOTRANSPONDER",
          "US_SEAWAYTRANSITCARD",
          "US_SUNPASS",
          "US_TOLLTAG",
          "US_TXTAG",
          "US_VIRGINIA_EZPASS",
          "US_WESTVIRGINIA_EZPASS",
          "US_PEACHPASS",
          "US_NEXUS",
          "US_DELAWARE_EZPASS",
          "US_GROSSEILETOLLBRIDGE_PASSTAG",
          "US_EZPASS_PAYBYPLATE"
        ]
      },
      "AvoidFeature": {
        "type": "string",
        "enum": [
          "TOLL",
          "FERRIES",
          "RAIL_SHUTTLES",
          "HIGHWAYS"
        ],
        "x-enum-varnames": [
          "TOLL",
          "FERRIES",
          "RAIL_SHUTTLES",
          "HIGHWAYS"
        ]
      },
      "Profile": {
        "description": "A profile defines a vehicle by a set of attributes, matching typical transport situations.",
        "type": "string",
        "default": "EUR_TRAILER_TRUCK",
        "minLength": 1,
        "maxLength": 50
      },
      "AccessType": {
        "type": "string",
        "description": "Indicates if a route section is entered or exited. Not present for violation events of type _SCHEDULE_.\n * `ENTER` - Entering a section.  \n * `EXIT` - Exiting a section.  \n * `PASS` - Passing an intersection, a gate or a specific location. Can only occur with violation events of type _RESTRICTED_ACCESS_ and _PROHIBITED_BY_INTERSECTING_POLYLINE_.",
        "enum": [
          "ENTER",
          "EXIT",
          "PASS"
        ],
        "x-enum-varnames": [
          "ENTER",
          "EXIT",
          "PASS"
        ]
      },
      "CombinedTransportType": {
        "type": "string",
        "description": "The type of the combined transport, i.e. how the vehicle is transported.\n * `BOAT` - The combined transport is by boat, i.e. on a ferry.\n * `RAIL` - The combined transport is by rail, i.e. on a train or rail shuttle.",
        "enum": [
          "BOAT",
          "RAIL"
        ],
        "x-enum-varnames": [
          "BOAT",
          "RAIL"
        ]
      },
      "BorderEvent": {
        "type": "object",
        "description": "Issued when a border of a country of a subdivision is crossed by the route, i.e. the current country code changes. Requires _BORDER_EVENTS_ to be requested.",
        "required": [
          "countryCode"
        ],
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "The country or subdivision the route enters represented by its code according to [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision."
          }
        }
      },
      "Results": {
        "type": "string",
        "enum": [
          "ROUTE_ID",
          "LEGS",
          "LEGS_POLYLINE",
          "TOLL_COSTS",
          "TOLL_SECTIONS",
          "TOLL_SYSTEMS",
          "TOLL_EVENTS",
          "POLYLINE",
          "MANEUVER_EVENTS",
          "BORDER_EVENTS",
          "VIOLATION_EVENTS",
          "VIOLATION_EVENTS_POLYLINE",
          "WAYPOINT_EVENTS",
          "UTC_OFFSET_CHANGE_EVENTS",
          "COMBINED_TRANSPORT_EVENTS",
          "TRAFFIC_EVENTS",
          "TRAFFIC_EVENTS_POLYLINE",
          "LOW_EMISSION_ZONE_EVENTS",
          "DELIVERY_ONLY_EVENTS",
          "DELIVERY_ONLY_EVENTS_POLYLINE",
          "SCHEDULE_EVENTS",
          "SCHEDULE_EVENTS_WITH_DRIVING",
          "EMISSIONS_EN16258_2012",
          "EMISSIONS_EN16258_2012_HBEFA",
          "EMISSIONS_ISO14083_2022",
          "EMISSIONS_ISO14083_2022_DEFAULT_CONSUMPTION",
          "EMISSIONS_ISO14083_2023",
          "EMISSIONS_ISO14083_2023_DEFAULT_CONSUMPTION",
          "EMISSIONS_FRENCH_CO2E_DECREE_2017_639",
          "ALTERNATIVE_ROUTES",
          "SCHEDULE_REPORT",
          "GUIDED_NAVIGATION",
          "MONETARY_COSTS",
          "ELEVATION_REPORT",
          "EV_REPORT",
          "EV_STATUS_EVENTS",
          "EV_STATUS_EVENTS_POLYLINE",
          "EV_CHARGE_EVENTS"
        ],
        "x-enum-varnames": [
          "ROUTE_ID",
          "LEGS",
          "LEGS_POLYLINE",
          "TOLL_COSTS",
          "TOLL_SECTIONS",
          "TOLL_SYSTEMS",
          "TOLL_EVENTS",
          "POLYLINE",
          "MANEUVER_EVENTS",
          "BORDER_EVENTS",
          "VIOLATION_EVENTS",
          "VIOLATION_EVENTS_POLYLINE",
          "WAYPOINT_EVENTS",
          "UTC_OFFSET_CHANGE_EVENTS",
          "COMBINED_TRANSPORT_EVENTS",
          "TRAFFIC_EVENTS",
          "TRAFFIC_EVENTS_POLYLINE",
          "LOW_EMISSION_ZONE_EVENTS",
          "DELIVERY_ONLY_EVENTS",
          "DELIVERY_ONLY_EVENTS_POLYLINE",
          "SCHEDULE_EVENTS",
          "SCHEDULE_EVENTS_WITH_DRIVING",
          "EMISSIONS_EN16258_2012",
          "EMISSIONS_EN16258_2012_HBEFA",
          "EMISSIONS_ISO14083_2022",
          "EMISSIONS_ISO14083_2022_DEFAULT_CONSUMPTION",
          "EMISSIONS_ISO14083_2023",
          "EMISSIONS_ISO14083_2023_DEFAULT_CONSUMPTION",
          "EMISSIONS_FRENCH_CO2E_DECREE_2017_639",
          "ALTERNATIVE_ROUTES",
          "SCHEDULE_REPORT",
          "GUIDED_NAVIGATION",
          "MONETARY_COSTS",
          "ELEVATION_REPORT",
          "EV_REPORT",
          "EV_STATUS_EVENTS",
          "EV_STATUS_EVENTS_POLYLINE",
          "EV_CHARGE_EVENTS"
        ]
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "description",
          "errorCode",
          "traceId"
        ],
        "example": {
          "traceId": "dc5b4c9a240458dd57128194dfbef0c8",
          "description": "Invalid or missing authentication credentials.",
          "errorCode": "GENERAL_UNAUTHENTICATED",
          "details": {
            "message": "Invalid API Key."
          }
        },
        "properties": {
          "description": {
            "description": "A human readable message that describes the error.",
            "type": "string"
          },
          "errorCode": {
            "description": "A constant string that can be used to identify this error class programmatically.\n\nIf additional information is available for an errorCode, it will be provided as key-value pairs with the parameter **details**. The keys available for a specific errorCode are documented directly with the errorCode. Unless stated otherwise, the values are of type string.\n\nAs an example, the following errorCode provides one key-value pair in the **details**. The key is called **message**.\n* `GENERAL_UNAUTHENTICATED` - Invalid or missing authentication credentials.\n  * `message` - An additional error message.\n\nNote that additional errorCodes as well as the **details** of existing errorCodes may be added at any time. Furthermore, the **description** may change at any time.\n\n**HTTP status code: 400**\n* `GENERAL_VALIDATION_ERROR` - The validation of the request failed. Details can be found in **causes**.\n* `GENERAL_PARSING_ERROR` - The JSON syntax is invalid.\n* `ROUTING_ERROR` - The calculation failed. Details can be found in **causes**.\n\n**HTTP status code: 401**\n* `GENERAL_UNAUTHENTICATED` - Invalid or missing authentication credentials.\n  * `message` - An additional error message.\n\n**HTTP status code: 403**\n* `GENERAL_FORBIDDEN` - Insufficient access rights.\n* `GENERAL_QUOTA_EXCEEDED` - The transaction limit is exceeded.\n  * `message` - An additional error message.\n* `ROUTING_RESTRICTION_EXCEEDED` - A product-specific restriction is exceeded.\n\n**HTTP status code: 404**\n* `GENERAL_RESOURCE_NOT_FOUND` - A requested resource does not exist.\n  * `message` - An additional error message.\n\n**HTTP status code: 410**\n* `GENERAL_GONE` - A requested resource is not longer available.\n  * `message` - An additional error message.\n  * `hint` - A hint how to solve the problem.\n\n**HTTP status code: 429**\n* `GENERAL_RATE_LIMIT_EXCEEDED` - The rate limit is exceeded.\n\n**HTTP status code: 500**\n* `GENERAL_INTERNAL_SERVER_ERROR` - The request could not be processed due to an internal error.\n  * `message` - An additional error message.\n  * `hint` - A hint how to solve the problem.\n\n**HTTP status code: 503**\n* `GENERAL_SERVICE_UNAVAILABLE` - The service is temporarily unavailable.\n\n**HTTP status code: 4xx-5xx**\n* `GENERAL_INTERNAL_GATEWAY_ERROR` - The request could not be processed due to an internal gateway error.\n  * `hint` - A hint how to solve the problem.",
            "type": "string"
          },
          "traceId": {
            "description": "A unique identifier of the corresponding trace forest. It can be used to trace errors by the support.",
            "type": "string"
          },
          "errorId": {
            "description": "A unique identifier specific to this error instance. It can be used to trace errors by the support.",
            "type": "string"
          },
          "causes": {
            "description": "A list of affected parameters and/or properties that caused this error.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CausingError"
            }
          },
          "details": {
            "description": "Additional properties specific to this error class.",
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "CausingError": {
        "type": "object",
        "required": [
          "description",
          "errorCode"
        ],
        "properties": {
          "description": {
            "description": "A human readable message that describes the error.",
            "type": "string"
          },
          "errorCode": {
            "description": "A constant string that can be used to identify this error class programmatically.\n\nIf additional information is available for an errorCode, it will be provided as key-value pairs with the parameter **details**. The keys available for a specific errorCode are documented directly with the errorCode. Unless stated otherwise, the values are of type string.\n\nAs an example, the following errorCode provides one key-value pair in the **details**. The key is called **value**.\n* `GENERAL_INVALID_VALUE` - A parameter is set to an invalid value.\n  * `value` - The invalid value.\n\nNote that additional errorCodes as well as the **details** of existing errorCodes may be added at any time. Furthermore, the **description** may change at any time.\n\n**Error codes for** `GENERAL_VALIDATION_ERROR`\n\n* `GENERAL_UNRECOGNIZED_PARAMETER` - A parameter is unknown.\n* `GENERAL_MISSING_PARAMETER` - A required parameter is missing.\n* `GENERAL_TYPE_VIOLATED` - The value of a parameter has an invalid type.\n  * `type` - The type.\n* `GENERAL_FORMAT_VIOLATED` - The value of a parameter has an invalid format.\n  * `format` - The format.\n* `GENERAL_PATTERN_VIOLATED` - The value of a string parameter does not satisfy the required pattern.\n  * `pattern` - The pattern.\n* `GENERAL_MINIMUM_LENGTH_VIOLATED` - The minimum length of a string is violated.\n  * `minimumLength` - The minimum length (integer).\n* `GENERAL_MAXIMUM_LENGTH_VIOLATED` - The maximum length of a string is violated.\n  * `maximumLength` - The maximum length (integer).\n* `GENERAL_MINIMUM_ITEMS_VIOLATED` - The minimum number of items of an array is violated.\n  * `minimumItems` - The minimum number of items (integer).\n* `GENERAL_MAXIMUM_ITEMS_VIOLATED` - The maximum number of items of an array is violated.\n  * `maximumItems` - The maximum number of items (integer).\n* `GENERAL_MINIMUM_VALUE_VIOLATED` - The minimum value of a parameter is violated.\n  * `minimumValue` - The minimum value (integer or double).\n* `GENERAL_MAXIMUM_VALUE_VIOLATED` - The maximum value of a parameter is violated.\n  * `maximumValue` - The maximum value (integer or double).\n* `GENERAL_ENUM_VIOLATED` - The value of a parameter is not one of the specified enum values.\n  * `enum` - The allowed enum values.\n* `GENERAL_INVALID_VALUE` - A parameter is set to an invalid value.\n  * `value` - The invalid value.\n* `GENERAL_DUPLICATE_PARAMETER` - A parameter is duplicated.\n* `GENERAL_INVALID_LIST` - A list has an invalid format such as duplicate commas.\n  * `value` - The invalid list.\n* `GENERAL_INVALID_INTERVAL` - A time interval is invalid, i.e. start is greater than end.\n* `ROUTING_INVALID_WAYPOINT_ATTRIBUTE` - A waypoint attribute is set to an invalid value.\n  * `attribute` - The invalid waypoint attribute.\n* `ROUTING_UNRECOGNIZED_WAYPOINT_ATTRIBUTE` - A waypoint attribute is unknown.\n  * `attribute` - The invalid waypoint key.\n* `ROUTING_DUPLICATE_WAYPOINT_ATTRIBUTE` - A waypoint attribute is duplicated.\n  * `attribute` - The duplicated waypoint key.\n* `ROUTING_WAYPOINT_ATTRIBUTE_CONFLICT` - Two waypoint attributes are in conflict with each other.\n  * `attribute` - The first conflicting attribute.\n  * `conflictingAttribute` - The second conflicting attribute.\n* `ROUTING_INVALID_MANIPULATION_WAYPOINT_ORDER` - The manipulation waypoint is not valid for start or destination.\n* `ROUTING_INVALID_COMBINED_TRANSPORT_WAYPOINT_ORDER` - The combinedTransport waypoint is not valid for start or destination.\n* `ROUTING_INVALID_WAYPOINT_LIST_FOR_ALTERNATIVE_ROUTES` - Alternative routes are supported only for two on-road or off-road waypoints.\n* `ROUTING_INVALID_WAYPOINT` - A waypoint contains multiple types or none of them, but exactly one must be specified.\n* `ROUTING_MUST_HAVE_WAYPOINTS_OR_ROUTE_ID` - The request must have either at least two **waypoints** or a **routeId**.\n* `ROUTING_EMISSIONS_MUTUALLY_EXCLUSIVE` - All emissions _EN16258_2012_ results and _ISO14083_2022_ or _ISO14083_2023_ results are mutually exclusive.\n  * `attribute` - The first conflicting emissions standard.\n  * `conflictingAttributes` - The list of other conflicting emissions standards.\n* `ROUTING_START_AND_ARRIVAL_TIME_MUTUALLY_EXCLUSIVE` - **options[startTime]** and **options[arrivalTime]** are mutually exclusive. - _The **parameter** remains empty._\n* `ROUTING_ESTIMATED_DISTANCE_TOO_LONG` - The distance of the whole route or one leg (estimated by air-line) for the selected vehicle and parameterization is too long. - _The **parameter** contains 'route' or 'leg'._\n  * `distance` - The estimated distance (integer).\n  * `limit` - The maximum allowable distance (integer).\n* `ROUTING_PARAMETER_CONFLICT` - Two parameters are in conflict with each other.\n  * `conflictingParameter` - The conflicting parameter.\n  * `message` - The error message.\n* `ROUTING_NO_VALID_COUNTRY_ALLOWED` - The list of allowed countries does not contain any of the available countries so that the effective list of countries allowed for routing is empty.\n  * `allowedCountries` - The list of allowed countries.\n* `ROUTING_ALL_VALID_COUNTRIES_PROHIBITED` - The list of prohibited countries contains all available countries so that the effective list of countries allowed for routing is empty.\n  * `prohibitedCountries` - The list of prohibited countries.\n* `ROUTING_MAXIMUM_HORIZON_VALUE_VIOLATED` - The maximum value of horizon is violated.\n  * `limit` - The maximum allowable horizon (integer).\n* `ROUTING_MUST_HAVE_ONE_WAYPOINT_OR_ROUTE_ID` - The request must have either a **waypoint** or a **routeId**.\n* `ROUTING_HORIZONS_EQUAL_OR_NOT_ASCENDING` - The horizons have equal values or are not ascending.\n  * `value` - The invalid horizon.\n* `ROUTING_ROUTE_TOO_LONG_FOR_REACHABILITY` - The route is too long to be used with reachable areas or locations.\n  * `length` - The actual route length (integer).\n  * `limit` - The maximum allowable route length (integer).\n* `ROUTING_ALLOWED_AND_PROHIBITED_COUNTRIES_IN_CONFLICT_WITH_ROUTE_ID` - The lists of allowed and prohibited countries are in conflict with the **routeId** which passes an effectively prohibited country.\n  * `value` - The value in conflict.\n* `ROUTING_ROUTE_ID_NOT_FOUND` - The **routeId** cannot be found.\n  * `value` - The routeId.\n* `ROUTING_ROUTE_ID_CANNOT_BE_USED` - The **routeId** cannot be used for this operation as it was created by a service other than routing and lacks a routing context.\n  * `value` - The routeId.\n* `ROUTING_PROFILE_NOT_FOUND` - The requested **profile** could not be found.\n  * `value` - The profile name.\n* `ROUTING_UNSUPPORTED_CURRENCY` - The specified currency is not supported.\n  * `currency` - The unsupported currency.\n* `ROUTING_PARAMETER_ONLY_SUPPORTED_BY_POST` - The requested parameter is not supported by this GET operation, it is only supported by the corresponding POST operation.\n  * `value` - The invalid parameter value.\n* `ROUTING_PARAMETER_NOT_SUPPORTED_BY_GET_ROUTE_BY_ROUTE_ID` - The requested parameter is not supported by this **getRouteByRouteId** operation.\n  * `value` - The invalid parameter value.\n* `ROUTING_OPENING_INTERVALS_REQUIRE_TIME` - When using waypoints with opening intervals or a **routeId** containing such waypoints, a start time has to be specified when **options[trafficMode]** is _AVERAGE_.\n* `ROUTING_ARRIVAL_TIME_WITH_SCHEDULE` - **options[arrivalTime]** cannot be used with the **results** _SCHEDULE_REPORT_ and _SCHEDULE_EVENT_ nor when **openingIntervals**, **serviceTime** or **workingHoursPreset** are specified.\n  * `value` - The invalid parameter value.\n* `ROUTING_INVALID_NUMBER_OF_COORDINATES` - The polyline cannot be parsed because the number of coordinates is not even or less than 4.\n  * `value` - The invalid parameter value.\n  * `polylineIndex` - The index denoting the polyline in which the error was found (integer).\n* `ROUTING_INVALID_COORDINATE` - The provided coordinate is not in the valid range or cannot be parsed.\n  * `value` - The invalid parameter value.\n  * `polylineIndex` - The index denoting the polyline in which the error was found (integer).\n  * `coordinateIndex` - The index denoting the erroneous coordinate within the polyline (integer).\n* `ROUTING_FEATURE_NOT_SUPPORTED_WITH_MONETARY_COSTS` - The requested feature is not supported when **options[routingMode]** is _MONETARY_.\n  * `value` - The invalid parameter value.\n* `ROUTING_MUST_HAVE_MONETARY_COST_VALUE` - Both values **monetaryCostOptions[costPerKilometer]** and **monetaryCostOptions[workingCostPerHour]** are zero. Use a value greater zero for at least one of this **monetaryCostOptions** parameters.\n* `ROUTING_CUSTOM_ROAD_ATTRIBUTE_SCENARIO_NOT_FOUND` - At least one of the requested **options[customRoadAttributeScenarios]** could not be found.\n  * `scenarios` - The scenarios which could not be found (comma-separated list).\n* `ROUTING_CUSTOM_ROAD_ATTRIBUTE_SCENARIOS_TOO_LARGE` - The scenarios given in **options[customRoadAttributeScenarios]** are too large and can not all be considered at the same time.\n* `ROUTING_POSITION_AND_WAYPOINT_MUTUALLY_EXCLUSIVE` - **position** and **waypoint** are mutually exclusive. - _The **parameter** remains empty._\n* `ROUTING_VEHICLE_POSITION_MISSING` - The position of the vehicle must be specified by either **position** or **waypoint**. - _The **parameter** remains empty._\n* `ROUTING_UNSUPPORTED_WAYPOINT_TYPE_FOR_ETA_CALCULATION` - The ETA calculation does not support route-manipulation waypoints, combined-transport waypoints or vehicle parameters at waypoints.\n  * `waypointIndex` - The index of the waypoint (integer).\n* `ROUTING_MISSING_WAYPOINT_NAME` - The requested route for the **routeId** contains a waypoint which does not have a name.\n  * `waypointIndex` - The index of the waypoint (integer).\n* `ROUTING_DUPLICATE_WAYPOINT_NAME` - The requested route for the **routeId** contains waypoints with a duplicate name.\n  * `waypointIndexes` - The indexes of the waypoints with the duplicated name (comma-separated list).\n  * `name` - The duplicate waypoint name.\n* `ROUTING_WAYPOINT_NAME_NOT_FOUND` - The waypoint name could not be found in the requested route for the **routeId**.\n  * `name` - The invalid waypoint name.\n* `ROUTING_VEHICLE_POSITION_BEFORE_FIRST_WAYPOINT` - The position of the vehicle cannot be before the first waypoint.\n* `ROUTING_ROUTE_ID_REQUIRES_WORKLOGBOOK` - The route associated with the given **routeId** has been calculated with a **driver** and requires the **workLogbook** to be specified in the ETA request.\n* `ROUTING_ROUTE_ID_DOES_NOT_SUPPORT_WORKLOGBOOK` - The route associated with the given **routeId** has been calculated without a **driver** and does not support the **workLogbook** specified in the ETA request.\n* `ROUTING_CONFLICTING_LOW_EMISSION_ZONE_TYPES` - Some requested low-emission zone types are in conflict with each other, specify only one of them.\n* `ROUTING_SERVICE_CANNOT_BE_SCHEDULED` - The **serviceTime** at a waypoint cannot be scheduled as it exceeds the maximum time between breaks permitted by the selected **workingHoursPreset**. - _The **parameter** remains empty._\n\n**Error codes for** `ROUTING_ERROR`\n\n* `ROUTING_WAYPOINT_CANNOT_BE_MATCHED` - The waypoint cannot be matched to the nearest possible road.\n* `ROUTING_ROUTE_NOT_FOUND` - A route between at least two waypoints could not be found for the current configuration and profile. The **parameter** contains the waypoint where the problematic part that could not be routed starts, i.e., the problematic part of the route is between this waypoint and the next one. Note that only the first problematic part that was encountered is reported.\n* `ROUTING_TIMEOUT` - The route calculation has timed out.\n* `ROUTING_UTC_OFFSET_CANNOT_BE_DETERMINED` - The UTC offset of the start waypoint cannot be determined.\n* `ROUTING_BLOCK_INTERSECTING_ROADS_TOO_MANY_SEGMENTS` - The maximum number of road segments intersecting one polyline must not exceed 5000.\n\n**Error codes for** `ROUTING_RESTRICTION_EXCEEDED`\n\n* `ROUTING_TOO_MANY_WAYPOINTS` - The request contains too many waypoints.\n  * `limit`- The maximum allowed number of waypoints for a single request (integer).\n\n**Error codes for** `GENERAL_RESOURCE_NOT_FOUND`\n\n* `GENERAL_INVALID_ID` - No resource exists for the provided ID.\n  * `value` - The ID for which no resource exists.",
            "type": "string"
          },
          "parameter": {
            "description": "The name of the affected query or path parameter or a JSONPath to the affected property of the request.",
            "type": "string"
          },
          "details": {
            "description": "Additional properties specific to this error class.",
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "Warning": {
        "type": "object",
        "required": [
          "description",
          "warningCode"
        ],
        "properties": {
          "description": {
            "description": "A human readable message that describes the warning.",
            "type": "string"
          },
          "warningCode": {
            "description": "A constant string that can be used to identify this warning class programmatically.\n\nIf additional information is available for a warningCode, it will be provided as key-value pairs with the parameter **details**. The keys available for a specific warningCode are documented directly with the warningCode. Unless stated otherwise, the values are of type string.\n\nAs an example, the following warningCode provides four key-value pairs in the **details**. \nThe keys are called **parameter**, **value**, **relatedParameter** and **relatedValue**.\n* `GENERAL_PARAMETER_IGNORED` - A parameter was ignored.\n  * `parameter` - The ignored parameter.\n  * `value` - The value of the ignored parameter.\n  * `relatedParameter` - The parameter which caused the parameter in question to be ignored.\n  * `relatedValue` - The value which caused the parameter in question to be ignored. Not present if the conflict is independent of the value.\n\nNote that additional warningCode as well as the **details** of existing warningCode may be added at any time. Furthermore, the **description** may change at any time.\n\n* `GENERAL_PARAMETER_IGNORED` - A parameter was ignored.\n  * `parameter` - The ignored parameter.\n  * `value` - The value of the ignored parameter.\n  * `relatedParameter` - The parameter which caused the parameter in question to be ignored.\n  * `relatedValue` - The value which caused the parameter in question to be ignored. Not present if the conflict is independent of the value.\n* `ROUTING_PARAMETER_INCONSISTENCY` - A parameter was inconsistent with other vehicle parameters. Some results like emissions or toll may not be correct.\n  * `parameter` - The inconsistent parameter.\n  * `value` - The value of the inconsistent parameter.\n  * `relatedParameter` - The parameter which caused the parameter in question to be inconsistent.\n  * `relatedValue` - The value which caused the parameter in question to be inconsistent.\n* `ROUTING_MISSING_VEHICLE_PARAMETER` - The requested vehicle contains a parameter which requires another parameter to be specified. Some results like emissions or toll may not be correct.\n  * `missingParameter` - The missing parameter.\n  * `relatedParameter` - The parameter which requires the missing parameter to be specified.\n  * `relatedValue` - The value which requires the missing parameter to be specified.\n* `ROUTING_MANEUVERS_IN_DIFFERENT_LANGUAGE` - The requested language is not available for maneuvers, a different language is used instead.\n  * `requestedLanguage` - The language requested by the user.\n  * `usedLanguage` - The language of maneuvers in the response.\n* `ROUTING_UNSUPPORTED_EMISSION_PARAMETER` - The requested emission calculation method does not support the specified vehicle.\n  * `relatedParameter` - The parameter causing the emission calculation failure.\n  * `relatedValue` - The value of the related parameter.\n* `ROUTING_REGION_NOT_SUPPORTED_BY_EMISSION_STANDARD` - The requested emission calculation method does not support the region the profile was designed for.\n  * `region` - The requested region not supported by the requested emission calculation method.\n  * `supportedRegions` - The regions which are supported by the requested emission calculation method.\n  * `emissionStandard` - The requested emission calculation method.\n* `ROUTING_COUNTRY_IGNORED` - The country code given in **options[allowedCountries]** or **options[prohibitedCountries]** was ignored as it is not covered by the map.\n  * `ignoredCountryCode` - The ignored country code.\n* `ROUTING_SUBDIVISION_FALLBACK` - The country code given in **options[allowedCountries]** contains a country subdivision code that is not supported by the map, and that instead the enclosing country code was used. In such cases, routes are constrained to the country, rather than only the subdivision.\n  * `requestedSubdivisionCode` - The country subdivision code that was requested, but cannot be used.\n  * `fallbackCountryCode` - The enclosing country that is used as a fallback instead.\n* `ROUTING_LIVE_TRAFFIC_DATA_UNAVAILABLE` - Live traffic data are temporarily unavailable.\n* `ROUTING_ETC_SUBSCRIPTION_REQUIRED` - The route passes through toll areas but the configured vehicle does not contain the required electronic toll collection subscriptions.\n  * `requiredEtcSubscriptions` - The required electronic toll collection subscriptions.\n* `ROUTING_WAYPOINT_MATCH_DISTANCE` - The distance from the waypoint to the nearest accessible road is greater than 1000 meters. Closed areas, countries or roads can be the reason for this.\n  * `distance`- The air-line distance between waypoint and match point on the road.\n  * `parameter` - The waypoint parameter.\n* `ROUTING_COMBINED_TRANSPORT_WAYPOINT_IGNORED` - The combined-transport waypoint was ignored as no connection could be found.\n  * `parameter` - The waypoint parameter.\n  * `availableConnections` - The list of connections available for the start coordinates (array of strings). This will only be returned if connections for the start coordinates are found, but none match the destination coordinates.\n* `ROUTING_COMBINED_TRANSPORT_WAYPOINT_AMBIGUOUS` - Multiple combined-transport connections were found. The closest connection was selected, for a sorted list by distance see **availableConnections**.\n  * `parameter` - The waypoint parameter.\n  * `usedConnection` - The connection used for this route.\n  * `availableConnections` - The list of connections available for the combined-transport waypoint (array of strings).\n* `ROUTING_WAYPOINTS_DONT_MATCH_PROFILE_REGION` - The **waypoints** or the **routeId** do not match the region of the **profile** specified in the request.\n  * `waypointsRegion` - The region of the **waypoints** or **routeId**.\n  * `profileRegion` - The region of the profile.\n* `ROUTING_INACTIVE_ROADATTRIBUTE_SCENARIOS` - The scenarios given in **options[customRoadAttributeScenarios]** or the **routeId** contain at least one which is not active.\n  * `scenarios` - The inactive scenarioIds (comma-separated list).\n* `ROUTING_ROADATTRIBUTES_MAYBE_IGNORED` - At least one of the scenarios given in **options[customRoadAttributeScenarios]** or the **routeId** could not be fully considered in the route calculation after a map update, i.e. some road attributes may have been ignored.\n  * `scenarios` - The scenarios that may be ignored (comma-separated list).\n* `ROUTING_PARAMETER_VALUE_DEPRECATED` - The parameter value is deprecated.\n  * `parameter` - The deprecated parameter.\n  * `value` - The deprecated value.\n* `ROUTING_UPDATED_ROUTE_ID` - The requested **routeId** has been updated to a new map.\n* `ROUTING_RANGE_CALCULATION_FALLBACK` - A predefined profile is used with range calculation. Only vehicles models are officially supported for range calculation (evReport, evStatusEvents, evChargeEvents). As a fallback, a similar vehicle model has been used for the range calculation. Please consider using a vehicle model for this feature.\n* `ROUTING_STATE_OF_CHARGE_BELOW_MINIMUM` - The state of charge of the electric vehicle fell below the minimum defined in **evOptions[minimumStateOfCharge]** at least once. The calculated route may not be feasible.\n* `ROUTING_WEATHER_SERVICE_UNAVAILABLE` - The weather service is temporarily unavailable. A fallback to default weather was used for the consumption calculation. Please specify the weather explicitly, if this is not sufficient.\n* `ROUTING_WEATHER_FORECAST_UNAVAILABLE` - The weather forecast for at least one waypoint is unavailable because the time is too far in the future. A fallback to default weather is used for the consumption calculation if weather is unavailable for all waypoints. Please specify the weather explicitly, if this is not sufficient.\n  * `maximumDaysInFuture` - The maximum number of days the past, for which weather forecast is available.\n* `ROUTING_ELEVATIONS_UNAVAILABLE` - Elevations are unavailable for regions beyond -60° and +60° latitude.\n  * `results` - No elevations were considered when calculating these **results** for such parts of the route.\n",
            "type": "string"
          },
          "details": {
            "description": "Additional properties specific to this class of warnings.",
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "Emissions": {
        "type": "object",
        "description": "Emissions such as the CO2-equivalent (CO2e) according to the selected standards. \nThe CO2e value is the unit for comparing the radiative forcing of a greenhouse gas to carbon\ndioxide according to [ISO 14064-1:2006](https://en.wikipedia.org/wiki/ISO_14064).",
        "properties": {
          "en16258_2012": {
            "$ref": "#/components/schemas/Emissions_EN16258_2012"
          },
          "iso14083_2022": {
            "$ref": "#/components/schemas/Emissions_ISO14083_2022"
          },
          "iso14083_2023": {
            "$ref": "#/components/schemas/Emissions_ISO14083_2023"
          },
          "frenchCO2eDecree2017_639": {
            "$ref": "#/components/schemas/Emissions_French_CO2e_Decree_2017_639"
          }
        }
      },
      "Emissions_EN16258_2012": {
        "type": "object",
        "description": "Emissions according to EN16258 from 2012 (a.k.a. CEN standard).",
        "required": [
          "fuelConsumption",
          "co2eTankToWheel",
          "co2eWellToWheel",
          "energyUseTankToWheel",
          "energyUseWellToWheel"
        ],
        "properties": {
          "fuelConsumption": {
            "minimum": 0,
            "type": "number",
            "description": "The total fuel consumption [kg].",
            "format": "double"
          },
          "co2eTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from tank to wheel [kg].",
            "format": "double"
          },
          "co2eWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from well to wheel [kg].",
            "format": "double"
          },
          "energyUseTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The tank-to-wheel energy use [MJ].",
            "format": "double"
          },
          "energyUseWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The well-to-wheel energy use [MJ].",
            "format": "double"
          }
        }
      },
      "Emissions_ISO14083_2022": {
        "type": "object",
        "description": "Emissions according to the draft version of ISO 14083:2023.",
        "required": [
          "fuelConsumption",
          "electricityConsumption",
          "co2eTankToWheel",
          "co2eWellToWheel",
          "energyUseTankToWheel",
          "energyUseWellToWheel"
        ],
        "properties": {
          "fuelConsumption": {
            "minimum": 0,
            "type": "number",
            "description": "The total conventional fuel consumption [kg].",
            "format": "double"
          },
          "electricityConsumption": {
            "minimum": 0,
            "type": "number",
            "description": "The total electric power consumption of the vehicle if the **engineType** is _ELECTRIC_ or _HYBRID_ [kWh].",
            "format": "double"
          },
          "co2eTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from tank to wheel [kg].",
            "format": "double"
          },
          "co2eWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from well to wheel [kg].",
            "format": "double"
          },
          "energyUseTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The tank-to-wheel energy use [MJ].",
            "format": "double"
          },
          "energyUseWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The well-to-wheel energy use [MJ].",
            "format": "double"
          }
        }
      },
      "Emissions_ISO14083_2023": {
        "type": "object",
        "description": "Emissions according to ISO 14083:2023 (a.k.a. ISO standard).",
        "required": [
          "fuelConsumption",
          "electricityConsumption",
          "co2eTankToWheel",
          "co2eWellToWheel",
          "energyUseTankToWheel",
          "energyUseWellToWheel"
        ],
        "properties": {
          "fuelConsumption": {
            "minimum": 0,
            "type": "number",
            "description": "The total conventional fuel consumption [kg].",
            "format": "double"
          },
          "electricityConsumption": {
            "minimum": 0,
            "type": "number",
            "description": "The total electric power consumption of the vehicle if the **engineType** is _ELECTRIC_ or _HYBRID_ [kWh].",
            "format": "double"
          },
          "co2eTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from tank to wheel [kg].",
            "format": "double"
          },
          "co2eWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from well to wheel [kg].",
            "format": "double"
          },
          "energyUseTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The tank-to-wheel energy use [MJ].",
            "format": "double"
          },
          "energyUseWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The well-to-wheel energy use [MJ].",
            "format": "double"
          }
        }
      },
      "Emissions_French_CO2e_Decree_2017_639": {
        "type": "object",
        "description": "Emissions according to the French CO2E decree from 2017.",
        "required": [
          "co2eWellToWheel",
          "co2eTankToWheel"
        ],
        "properties": {
          "co2eWellToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from well to wheel [kg].",
            "format": "double"
          },
          "co2eTankToWheel": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of emitted CO2e from tank to wheel [kg].",
            "format": "double"
          }
        }
      },
      "Leg": {
        "type": "object",
        "required": [
          "distance",
          "travelTime",
          "violated"
        ],
        "properties": {
          "distance": {
            "minimum": 0,
            "type": "integer",
            "description": "The distance of the leg [m].",
            "format": "int32",
            "example": 1422
          },
          "travelTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The travel time for the leg [s].",
            "format": "int32",
            "example": 56
          },
          "trafficDelay": {
            "minimum": 0,
            "type": "integer",
            "description": "The total delay due to live traffic on this leg [s].\n\nThis value contains the sum of all traffic events on this leg and will be non-zero only if **options[trafficMode]=REALISTIC**.\nSee [here](./concepts/traffic-modes) for more information.",
            "format": "int32",
            "example": 0
          },
          "violated": {
            "type": "boolean",
            "description": "If there is no valid connection between the waypoints of this leg but the resulting leg can be calculated by using actually prohibited roads, the route is marked as violated.",
            "example": false
          },
          "tollCosts": {
            "$ref": "#/components/schemas/TollCosts"
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the leg in the format specified by **options[polylineFormat]**."
          },
          "evReport": {
            "$ref": "#/components/schemas/EvReportLeg"
          },
          "elevationReport": {
            "$ref": "#/components/schemas/ElevationReport"
          }
        }
      },
      "Legs": {
        "type": "array",
        "description": "The legs of the route.",
        "items": {
          "$ref": "#/components/schemas/Leg"
        }
      },
      "ManeuverEvent": {
        "type": "object",
        "description": "Issued when the driver has to perform a maneuver, e.g. to turn or to enter a roundabout. Requires _MANEUVER_EVENTS_ to be requested.",
        "required": [
          "type",
          "description"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ManeuverType"
          },
          "relativeDirection": {
            "maximum": 180,
            "minimum": -180,
            "type": "integer",
            "description": "The direction of the outgoing road relative to continuing in the same direction as the incoming road (clockwise).",
            "format": "int32"
          },
          "absoluteDirection": {
            "maximum": 360,
            "minimum": 0,
            "type": "integer",
            "description": "The absolute direction of the outgoing road (clockwise). North represents 0 degrees.",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "A descriptive text for the current maneuver. The language can be specified by the parameter **options[language]**. A warning with **warningCode** _ROUTING_MANEUVERS_IN_DIFFERENT_LANGUAGE_ and the actual language is returned when the requested language is not available. Geographical names such as town and road names are always given in the local language."
          },
          "roadAhead": {
            "$ref": "#/components/schemas/RoadAhead"
          },
          "directionSignText": {
            "type": "string",
            "description": "The city names and road numbers on a signpost at the current location to follow for the current maneuver. Empty if no signpost is present or the data is not available."
          },
          "exitNumber": {
            "type": "string",
            "description": "The number of an exit or interchange of a highway or a freeway-like road. Only present if the maneuver type is _CHANGE_ or _EXIT_. Empty if the data does not contain an exit number."
          },
          "exitName": {
            "type": "string",
            "description": "The name of an exit or interchange of a highway or a freeway-like road. Only present if the maneuver type is _CHANGE_ or _EXIT_. Empty if the data does not contain an exit name."
          },
          "roundaboutExit": {
            "minimum": 0,
            "type": "integer",
            "description": "The exit number at a roundabout. Only drivable roads are counted. Only present if the maneuver type is _TAKE\\_ROUNDABOUT_.",
            "format": "int32"
          },
          "combinedTransportName": {
            "type": "string",
            "description": "The name of the combined transport to take a the current location. Only present if the maneuver type is _TAKE\\_COMBINED\\_TRANSPORT_."
          },
          "combinedTransportType": {
            "$ref": "#/components/schemas/CombinedTransportType"
          },
          "crossingRoadName": {
            "type": "string",
            "description": "The name of the crossing road at which a U-turn has to be made. Only present if the maneuver type is _MAKE\\_U\\_TURN_ and if the U-turn takes place at a crossing."
          }
        }
      },
      "ManeuverType": {
        "type": "string",
        "description": "Describes the type of maneuver to execute.   \n * `START` - Departure at an on-road waypoint.   \n * `START_LEFT` - Departure at an off-road waypoint to begin the route heading left.   \n * `START_RIGHT` - Departure at an off-road waypoint to begin the route heading right.   \n * `ARRIVE` - Arrival at an on-road waypoint.   \n * `ARRIVE_LEFT` - Arrival at an off-road waypoint if the waypoint is on the left.   \n * `ARRIVE_RIGHT` - Arrival at an off-road waypoint if the waypoint is on the right.   \n * `CONTINUE` - Follow the current road, usually when the road type changes although the road goes straight.   \n * `KEEP_STRAIGHT` - Stay on the straight lane, usually in fork-shaped intersections with more than two spikes.   \n * `KEEP_LEFT` - Keep left or to take the left lane, usually in Y-shaped intersections.   \n * `KEEP_RIGHT` - Keep right or to take the right lane, usually  in Y-shaped intersections.   \n * `TURN_HALF_LEFT` - Turn half left at a crossing where at least one additional trailing road exists,\n usually at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `TURN_LEFT` - Turn left at a crossing where at least one additional trailing road exists, usually\n at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `TURN_SHARP_LEFT` - Turn sharp left at a crossing where at least one additional trailing road exists, usually \n at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `TURN_HALF_RIGHT` - Turn half right at a crossing where at least one additional trailing road exists, usually \n at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `TURN_RIGHT` - Turn right at a crossing where at least one additional trailing road exists, usually\n at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `TURN_SHARP_RIGHT` - Turn sharp right at a crossing where at least one additional trailing road exists, usually \n at T- or X-shaped crossings on urban or country roads. Even if the name of the turning road does not change a maneuver will be created.   \n * `MAKE_U_TURN` - Make a U-turn, either at the same road or at structurally separated roads. The **relativeDirection** \n indicates whether to turn left or right.   \n * `TAKE_ROUNDABOUT_LEFT` - Enter a roundabout to the left and leave it at the given **roundaboutExit**. \n Only drivable roads of the roundabout are counted.   \n * `TAKE_ROUNDABOUT_RIGHT` - Enter a roundabout to the right and leave it at the given **roundaboutExit**. \n Only drivable roads of the roundabout are counted.   \n * `TAKE_COMBINED_TRANSPORT` - Take boat (ferry) or rail (train or rail shuttle) connection.\n * `ENTER` - Enter a highway/freeway/major road straight.   \n * `ENTER_LEFT` - Enter a highway/freeway/major road to the left.   \n * `ENTER_RIGHT` - Enter a highway/freeway/major road to the right.   \n * `EXIT` - Leave a highway/freeway/major road straight.   \n * `EXIT_LEFT` - Leave a highway/freeway/major road to the left.   \n * `EXIT_RIGHT` - Leave a highway/freeway/major road to the right.   \n * `CHANGE` - Change straight to another highway/freeway at an interchange.   \n * `CHANGE_LEFT` - Change to the left to another highway/freeway at an interchange.   \n * `CHANGE_RIGHT` - Change to the right to another highway/freeway at an interchange.",
        "enum": [
          "START",
          "START_LEFT",
          "START_RIGHT",
          "ARRIVE",
          "ARRIVE_LEFT",
          "ARRIVE_RIGHT",
          "CONTINUE",
          "KEEP_STRAIGHT",
          "KEEP_LEFT",
          "KEEP_RIGHT",
          "TURN_HALF_LEFT",
          "TURN_LEFT",
          "TURN_SHARP_LEFT",
          "TURN_HALF_RIGHT",
          "TURN_RIGHT",
          "TURN_SHARP_RIGHT",
          "MAKE_U_TURN",
          "TAKE_ROUNDABOUT_LEFT",
          "TAKE_ROUNDABOUT_RIGHT",
          "TAKE_COMBINED_TRANSPORT",
          "ENTER",
          "ENTER_LEFT",
          "ENTER_RIGHT",
          "EXIT",
          "EXIT_LEFT",
          "EXIT_RIGHT",
          "CHANGE",
          "CHANGE_LEFT",
          "CHANGE_RIGHT"
        ],
        "x-enum-varnames": [
          "START",
          "START_LEFT",
          "START_RIGHT",
          "ARRIVE",
          "ARRIVE_LEFT",
          "ARRIVE_RIGHT",
          "CONTINUE",
          "KEEP_STRAIGHT",
          "KEEP_LEFT",
          "KEEP_RIGHT",
          "TURN_HALF_LEFT",
          "TURN_LEFT",
          "TURN_SHARP_LEFT",
          "TURN_HALF_RIGHT",
          "TURN_RIGHT",
          "TURN_SHARP_RIGHT",
          "MAKE_U_TURN",
          "TAKE_ROUNDABOUT_LEFT",
          "TAKE_ROUNDABOUT_RIGHT",
          "TAKE_COMBINED_TRANSPORT",
          "ENTER",
          "ENTER_LEFT",
          "ENTER_RIGHT",
          "EXIT",
          "EXIT_LEFT",
          "EXIT_RIGHT",
          "CHANGE",
          "CHANGE_LEFT",
          "CHANGE_RIGHT"
        ]
      },
      "PaymentMethod": {
        "type": "string",
        "description": "A payment method for toll costs.  \n * `ELECTRONIC_TOLL_COLLECTION_SUBSCRIPTION` - Pay with an electronic toll collection system for which a subscription is required.  \n * `ELECTRONIC_TOLL_COLLECTION` - Pay with some electronic toll collection system for which no prior subscription is required.  \n * `CASH` - Pay with cash at a toll booth.  \n * `CREDIT_CARD` - Pay with credit card at a toll booth.",
        "enum": [
          "ELECTRONIC_TOLL_COLLECTION_SUBSCRIPTION",
          "ELECTRONIC_TOLL_COLLECTION",
          "CASH",
          "CREDIT_CARD"
        ],
        "x-enum-varnames": [
          "ELECTRONIC_TOLL_COLLECTION_SUBSCRIPTION",
          "ELECTRONIC_TOLL_COLLECTION",
          "CASH",
          "CREDIT_CARD"
        ]
      },
      "RoadAhead": {
        "type": "object",
        "description": "Name and number of the road ahead.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the road. It does not depend on the selected language, instead it is presented as it can be found on local signs."
          },
          "number": {
            "type": "string",
            "description": "The number of the road which may consist of several numbers separated by \"/\"."
          }
        }
      },
      "Event": {
        "type": "object",
        "required": [
          "latitude",
          "longitude",
          "distanceFromStart",
          "travelTimeFromStart",
          "countryCode",
          "utcOffset"
        ],
        "properties": {
          "latitude": {
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "The latitude of the position where the event takes place in degrees (WGS84/EPSG:4326) from south to north.",
            "format": "double",
            "example": 49.254878
          },
          "longitude": {
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "The longitude of the position where the event takes place in degrees (WGS84/EPSG:4326) from west to east.",
            "format": "double",
            "example": 8.544585
          },
          "startsAt": {
            "type": "string",
            "description": "The time at which the event starts formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339). Will not be present for **trafficMode** _AVERAGE_ when neither **startTime** nor **arrivalTime** is specified.",
            "format": "date-time",
            "example": "2020-04-06T06:00:00+00:00"
          },
          "distanceFromStart": {
            "minimum": 0,
            "type": "integer",
            "description": "The distance from the start to this event [m].",
            "format": "int32",
            "example": 1422
          },
          "travelTimeFromStart": {
            "minimum": 0,
            "type": "integer",
            "description": "The travel time from the start to this event [s].",
            "format": "int32",
            "example": 56
          },
          "countryCode": {
            "type": "string",
            "description": "Countries are represented according to their [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision.",
            "example": "DE"
          },
          "utcOffset": {
            "minimum": -720,
            "maximum": 840,
            "type": "integer",
            "description": "The offset to UTC [min]. Will not contain daylight-saving time for **trafficMode** _AVERAGE_ when neither **startTime** nor **arrivalTime** is specified.",
            "format": "int32"
          },
          "toll": {
            "$ref": "#/components/schemas/TollEvent"
          },
          "maneuver": {
            "$ref": "#/components/schemas/ManeuverEvent"
          },
          "border": {
            "$ref": "#/components/schemas/BorderEvent"
          },
          "violation": {
            "$ref": "#/components/schemas/ViolationEvent"
          },
          "waypoint": {
            "$ref": "#/components/schemas/WaypointEvent"
          },
          "utcOffsetChange": {
            "$ref": "#/components/schemas/UTCOffsetChangeEvent"
          },
          "schedule": {
            "$ref": "#/components/schemas/ScheduleEvent"
          },
          "combinedTransport": {
            "$ref": "#/components/schemas/CombinedTransportEvent"
          },
          "traffic": {
            "$ref": "#/components/schemas/TrafficEvent"
          },
          "lowEmissionZone": {
            "$ref": "#/components/schemas/LowEmissionZoneEvent"
          },
          "deliveryOnly": {
            "$ref": "#/components/schemas/DeliveryOnlyEvent"
          },
          "evStatus": {
            "$ref": "#/components/schemas/EvStatusEvent"
          },
          "charge": {
            "$ref": "#/components/schemas/ChargeEvent"
          }
        }
      },
      "Events": {
        "type": "array",
        "description": "Detailed information on maneuvers, border crossings and other events along the route in chronological order.",
        "items": {
          "$ref": "#/components/schemas/Event"
        }
      },
      "Options": {
        "type": "object",
        "properties": {
          "startTime": {
            "description": "Defines the start time of the route formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\n\nIf the date-time string does not include an explicit offset to UTC, the time will be interpreted as the local time of the start waypoint.\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00. \nThe response will contain the offset to UTC specified in the request or that of the start waypoint.\nFor best results it should not be more than one month in the past nor more than six months in the future.  \nThis parameter is mutually exclusive with **arrivalTime** and **tollTime**.\nSee [here](./concepts/date-and-time) for more information on the relevance of date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2020-12-04T06:00:00+00:00"
          },
          "arrivalTime": {
            "description": "Defines the arrival time of the route formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\n\nIf the date-time string does not include an explicit offset to UTC, the time will be interpreted as the local time of the destination waypoint.\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00. \nThe response will contain the offset to UTC specified in the request or that of the destination waypoint.\nFor best results it should not be more than one month in the past nor more than six months in the future.  \nThis parameter is mutually exclusive with **startTime** and **tollTime** and cannot be used with the **results** _SCHEDULE_REPORT_ and _SCHEDULE_EVENT_ nor\nwhen **openingIntervals**, **serviceTime** or **workingHoursPreset** are specified.\nSee [here](./concepts/date-and-time) for more information on the relevance of date and time.",
            "type": "string",
            "format": "date-time"
          },
          "tollTime": {
            "description": "Defines the date and time at which to calculate toll prices formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\n\nIf the date-time string does not include an explicit offset to UTC, the time will be interpreted as the local time of the start waypoint.\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00.  \nThis parameter only has an influence if toll related results are requested. It can only be used in combination with **trafficMode** _AVERAGE_ \nand is mutually exclusive with both **startTime** and **arrivalTime**.\nIt will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.\nSee [here](./concepts/date-and-time) for more information on the relevance of date and time.",
            "type": "string",
            "format": "date-time"
          },
          "trafficMode": {
            "$ref": "#/components/schemas/TrafficMode"
          },
          "language": {
            "description": "The language of texts such as the descriptions of _MANEUVER_EVENTS_ and _TRAFFIC_EVENTS_.\nLanguages have to be specified according to their [ISO-639-1](https://www.loc.gov/standards/iso639-2/php/code_list.php)\ncode or as a combination of language code and sub-tag according to [BCP47](https://tools.ietf.org/rfc/bcp/bcp47.txt).  \nThe **warningCode** _ROUTING_MANEUVERS_IN_DIFFERENT_LANGUAGE_ is returned if the language is not supported for maneuvers.",
            "type": "string",
            "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",
            "default": "en"
          },
          "polylineFormat": {
            "$ref": "#/components/schemas/PolylineFormat"
          },
          "polylineMapType": {
            "$ref": "#/components/schemas/PolylineMapType"
          },
          "allowedCountries": {
            "$ref": "#/components/schemas/AllowedCountries"
          },
          "prohibitedCountries": {
            "$ref": "#/components/schemas/ProhibitedCountries"
          },
          "currency": {
            "description": "The currency code according to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).  \nIf it is not specified, the currency is taken from the **profile**.  \nIt is used for the costs in the monetary cost report if _MONETARY_COSTS_ are requested in the **results** and for \ntoll price conversion if _TOLL_COSTS_ or _TOLL_SECTIONS_ are requested in the **results**. Furthermore, it is used \nwhen setting **options[routingMode]=MONETARY**.",
            "type": "string",
            "pattern": "[A-Z]{3}"
          },
          "preferTurnsOnPassengerSide": {
            "description": "Specifies that the route is constructed such that turns to the passenger side are preferred. \nThis parameter will be ignored, if **options[routingMode]=MONETARY**, **vehicle[truckRoutes]** or a **routeId** is specified.\nIt will also be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.\n",
            "type": "boolean",
            "default": false,
            "example": false
          },
          "avoid": {
            "description": "Comma-separated list of features which should be avoided on the route.\nAvoided features could be included in a route if there is no possibility to reach the target otherwise.\n\nAvailable values are provided by type `AvoidFeature`:\n* `TOLL` - Avoid roads with toll.\n* `FERRIES` - Avoid ferries. Ferries which cannot be avoided can be requested with _COMBINED_TRANSPORT_EVENTS_ and will appear with the type _BOAT_.\n* `RAIL_SHUTTLES` - Avoid rail shuttles. Rail shuttles which cannot be avoided can be requested with _COMBINED_TRANSPORT_EVENTS_ and will appear with the type _RAIL_.\n* `HIGHWAYS` - Avoid highways and motorways. Waypoints will not be matched to highways, they will be matched to the nearest road which is not a highway.\n\nThis parameter will be ignored, if **options[routingMode]=MONETARY** or a **routeId** is specified.\nSee [here](./concepts/avoid) for more information. ",
            "type": "string"
          },
          "blockIntersectingRoads": {
            "$ref": "#/components/schemas/BlockIntersectingRoads"
          },
          "customRoadAttributeScenarios": {
            "description": "Comma-separated list of [custom road attribute scenarios](../data-api/concepts/custom-road-attributes) to be considered in the route calculation. \nEach scenario can be specified by its name or its ID. A shared scenario can only be specified by its ID.\n\nThe size limitations that apply to each scenario, also apply to the collection of scenarios, i.e. the limit \non the number of roads in one scenario can not be circumvented by splitting it in multiple scenarios.\nIf the request contains a **routeId**, specifying custom road attribute scenarios may lead to violated routes in case one of the\nrequested scenarios prohibits roads on the route represented by the **routeId**.",
            "type": "string"
          },
          "routingMode": {
            "$ref": "#/components/schemas/RoutingMode"
          },
          "maximumSpeed": {
            "description": "The maximum speed of the vehicle [km/h]. The speeds for calculating the driving times on all roads\nwill be limited to this value. \nSee [here](./concepts/speeds) for more information.",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "speedFactor": {
            "description": "An additional factor to apply to the speed of the vehicle. This modified speed is used to modify the driving times after the\nroute has been calculated. That means in particular that the route itself will not be modified by applying a speed factor.\nWhen lower than one, the driving time of the vehicle will increase, when greater than one, the driving time of the vehicle will decrease.\nNote that the factor is only applied on the parts of the route where the vehicle is driving. Therefore, a speed factor of 1.1 does not\nnecessarily mean that the **travelTime** of the resulting route will be 10% faster. The speed is not capped by the maximum speed of the \nvehicle or of the road. \nSee [here](./concepts/speeds) for more information.",
            "type": "number",
            "format": "double",
            "default": 1,
            "example": 1.1,
            "minimum": 0.1,
            "maximum": 10
          }
        }
      },
      "EmissionOptions": {
        "type": "object",
        "required": [
          "calculationMethods"
        ],
        "properties": {
          "calculationMethods": {
            "description": "Comma-separated list of the calculation method to be returned.\n\nAvailable values are provided by type `EmissionCalculationMethod`:\n * `EN16258_2012`\n    Emissions according to EN16258 from 2012 (a.k.a. CEN).\n * `ISO14083_2023`\n    Emissions according to ISO 14083:2023 (a.k.a. ISO). \n    Only supported for [European and American profiles](../data-api/concepts/profiles).\n    If **defaultConsumption** is true, only supported for [European profiles](../data-api/concepts/profiles).\n * `FRENCH_CO2E_DECREE_2017_639`\n    Emissions according to the French CO2E decree from 2017.",
            "type": "string",
            "minLength": 1
          },
          "defaultConsumption": {
            "description": "If true, the fuel or electricity consumption is automatically calculated through HBEFA 4.2. \nOtherwise, the **averageFuelConsumption** or **averageElectricityConsumption** specified calculating the route represented by **routeId** will be considered.\nThis requires elevations, which are unavailable for some regions beyond −60° and +60° latitude. If elevations are unavailable for any part of a route, a _ROUTING_ELEVATIONS_UNAVAILABLE_ warning will be returned.\nThis parameter will be ignored for calculation method _FRENCH_CO2E_DECREE_2017_639_.",
            "type": "boolean",
            "default": false
          },
          "iso14083EmissionFactorsVersion": {
            "$ref": "#/components/schemas/Iso14083EmissionFactorsVersion"
          }
        }
      },
      "Iso14083EmissionFactorsVersion": {
        "description": "Defines the version of the emission factors to use for emission calculation based on ISO 14083. This parameter will be ignored for other calculation methods.",
        "default": "INITIAL",
        "type": "string",
        "enum": [
          "INITIAL",
          "VERSION_2",
          "LATEST"
        ],
        "x-enum-varnames": [
          "INITIAL",
          "VERSION_2",
          "LATEST"
        ]
      },
      "EmissionCalculationMethod": {
        "type": "string",
        "enum": [
          "EN16258_2012",
          "ISO14083_2023",
          "FRENCH_CO2E_DECREE_2017_639"
        ],
        "x-enum-varnames": [
          "EN16258_2012",
          "ISO14083_2023",
          "FRENCH_CO2E_DECREE_2017_639"
        ]
      },
      "VehicleParametersAtWaypoint": {
        "type": "object",
        "description": "The vehicle parameters that change at a waypoint. A vehicle parameter specified at a waypoint overrides the\nsetting from the **profile** and **vehicle**. It is valid until the end of the route unless it is changed again\nat a subsequent waypoint.\n\nWhen requesting the _ROUTE_ID_, these vehicle parameters are also taken into account during route recalculation. \nTo recalculate a route with different vehicle parameters, we recommend not specifying any vehicle parameters at the waypoints, \nas this may lead to unexpected toll or emission results.\n",
        "properties": {
          "averageFuelConsumption": {
            "description": "The average fuel consumption of the vehicle.\nDepending on the **fuelType** [l/100km] for liquid fuel types or [kg/100km] for gaseous fuel types.\n\nSupported for **engineType** _COMBUSTION_  or _HYBRID_. Relevant for `emissions`.\n",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "exclusiveMinimum": true,
            "example": 35
          },
          "averageElectricityConsumption": {
            "description": "The average electricity consumption of the vehicle if the **engineType** is _ELECTRIC_ or _HYBRID_ [kWh/100km].\n\nThis parameter is not used, if a model of an electric vehicle is used. In this case the average electricity \nconsumption from the model based consumption calculation is used for the emissions calculation.\n\nSupported for **engineType** _ELECTRIC_ or _HYBRID_. Relevant for `emissions`.\n",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "exclusiveMinimum": true,
            "example": 115
          },
          "loadWeight": {
            "description": "The weight of the vehicle's load [kg].\n\nRelevant for `routing`, `emissions`, `range calculation`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "example": 25000
          },
          "axleWeight": {
            "description": "The maximum distributed weight that may be supported by an axle of the vehicle [kg].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 11500
          },
          "height": {
            "description": "The height of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 400
          },
          "length": {
            "description": "The length of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 1650
          },
          "width": {
            "description": "The width of the vehicle [cm].\n\nRelevant for `routing`, `toll`.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "example": 254
          },
          "hazardousMaterials": {
            "description": "The list of hazardous materials the vehicle has loaded.\nUse a list with only the _NONE_ value to specify that no hazardous material is loaded from that waypoint\non. An empty list means that the hazardous materials don't change at the waypoint. If _NONE_ is specified\nalong with other hazardous materials it is ignored.\n\nRelevant for `routing`.\n",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HazardousMaterials"
            }
          },
          "tunnelRestrictionCode": {
            "$ref": "#/components/schemas/TunnelRestrictionCode"
          },
          "truckRoutes": {
            "description": "The list of truck routes the vehicle has to follow.\n * `DE_LKWUEBERLSTVAUSNV`\n Preferred routes for long trucks in Germany, also known as Lang-LKW.\n * `NL_LZV`\n Preferred routes for long trucks in the Netherlands, also known as LZV (Langere en Zwaardere Vrachtautocombinatie).\n * `NZ_HPMV`\n The network for High Productivity Motor Vehicles (HPMV) carrying the maximum loads available under a permit (New Zealand Transport Agency).\n * `SE_BK_1`\n Public roads and bridges that support up to 64 t total permitted weight (Swedish Transport Administration).\n * `SE_BK_2`\n Public roads and bridges that support up to 51.4 t total permitted weight.\n Actual limit depends on wheelbase and axle weight (Swedish Transport Administration).\n * `SE_BK_3`\n Public roads and bridges that support up to 37.5 t total permitted weight.\n Actual limit depends on wheelbase and axle weight (Swedish Transport Administration).\n * `SE_BK_4`\n Public roads and bridges that support up to 74 t total permitted weight (draft summer 2018, Swedish Transport Administration).\n * `US_STAA`\n Routes that belong to the highway network as defined by the Surface Transportation Assistance Act in the US.\n * `US_TD`\n Part of a state-designated highway network for trucks in the US.\n * `AU_B_DOUBLE`\n B-Double routes as defined in Australia.\n * `AU_B_DOUBLE_HML`\n Routes for B-Double vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `AU_B_TRIPLE`\n B-Triple routes as defined in Australia.\n * `AU_B_TRIPLE_HML`\n Routes for B-Triple vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `AU_AB_TRIPLE`\n Routes for AB-Triple vehicle combinations operating (Australian Transport Administration).\n * `AU_AB_TRIPLE_HML`\n Routes for AB-Triple vehicle combinations operating at Higher Mass Limits (HML) (Australian Transport Administration).\n * `GENERAL_TRUCK_ROUTES`\n General routes designated for trucks, for example to prevent trucks routing through city centres when they are on transit.\n * `NONE`\n Use a list with only the _NONE_ value for the truck routes\n at a waypoint to specify that no truck route must be used from that waypoint on. An empty list of truck routes\n at a waypoint means that the truck routes don't change at the waypoint. If _NONE_ is specified along with other\n truck routes it is ignored.\n\nThis parameter will be ignored for non-truck profiles, e.g. _EUR_CAR_, _EUR_VAN_, _USA_1_PICKUP_ or _AUS_LCV_LIGHT_COMMERCIAL_\nand for routing modes other than _FAST_.\nRelevant for `routing`.\n",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TruckRoutes"
            }
          }
        }
      },
      "RouteResponse": {
        "type": "object",
        "required": [
          "distance",
          "travelTime",
          "violated"
        ],
        "properties": {
          "distance": {
            "minimum": 0,
            "type": "integer",
            "description": "The distance of the route [m].",
            "format": "int32",
            "example": 1422
          },
          "travelTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The travel time for the route [s].",
            "format": "int32",
            "example": 56
          },
          "trafficDelay": {
            "minimum": 0,
            "type": "integer",
            "description": "The total delay due to live traffic on the route [s].\n\nThis value contains the sum of all traffic events on the route and will be non-zero only if **options[trafficMode]=REALISTIC**.\nSee [here](./concepts/traffic-modes) for more information.",
            "format": "int32",
            "example": 0
          },
          "violated": {
            "type": "boolean",
            "description": "If there is no valid route but the resulting route can be calculated by using actually prohibited roads, the route is marked as violated. When requesting _VIOLATION_EVENTS_ there is a corresponding violation event containing the position, time and the vehicle property in question. See [here](./concepts/violations) for more information.",
            "example": false
          },
          "routeId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the calculated route. It is valid for 12 hours."
          },
          "legs": {
            "$ref": "#/components/schemas/Legs"
          },
          "toll": {
            "$ref": "#/components/schemas/Toll"
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the route in the format specified by **options[polylineFormat]**."
          },
          "events": {
            "$ref": "#/components/schemas/Events"
          },
          "emissions": {
            "$ref": "#/components/schemas/Emissions"
          },
          "alternativeRoutes": {
            "$ref": "#/components/schemas/AlternativeRoutes"
          },
          "scheduleReport": {
            "$ref": "#/components/schemas/ScheduleReport"
          },
          "evReport": {
            "$ref": "#/components/schemas/EvReport"
          },
          "guidedNavigation": {
            "type": "string",
            "description": "A base64 encoded representation of the route that can be used for the [PTV Navigator](https://www.myptv.com/en/logistics-software/ptv-navigator). The base64 binary has to be decoded and saved as a text file with the extension .bcr.\nRequires _GUIDED_NAVIGATION_ to be requested."
          },
          "monetaryCosts": {
            "$ref": "#/components/schemas/MonetaryCosts"
          },
          "elevationReport": {
            "$ref": "#/components/schemas/ElevationReport"
          },
          "warnings": {
            "description": "A list of warnings concerning the validity of the result.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        }
      },
      "ViolationEvent": {
        "type": "object",
        "description": "Issued when the route passes a road which is prohibited for the given vehicle but passed nevertheless as there is no other valid route or when schedule restrictions are violated. Requires _VIOLATION_EVENTS_ to be requested. See [here](./concepts/violations) for more information.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ViolationType"
          },
          "scheduleViolationTypes": {
            "type": "array",
            "description": "Contains the list of violated schedule restrictions at this event. Only present if **type=SCHEDULE**.\n",
            "items": {
              "$ref": "#/components/schemas/ScheduleViolationType"
            }
          },
          "violatedVehicleProperties": {
            "type": "array",
            "description": "Contains the list of violated vehicle properties at this event. Only present if **type=VEHICLE_PROPERTY**.\n",
            "items": {
              "$ref": "#/components/schemas/ViolatedVehicleProperty"
            }
          },
          "temporary": {
            "type": "boolean",
            "description": "States whether the cause of the violation is only temporary, e.g. a road construction site. In such cases \nsee the corresponding traffic event for more information.\n"
          },
          "timeDomain": {
            "type": "string",
            "description": "Returns the time validity of the violated restriction in the GDF time domain format if the restriction is only active at certain times. See [here](./concepts/date-and-time#gdftimedomains) for more information.",
            "example": "[(y2016M2h10){m30}]"
          },
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the violation in the format specified by **options[polylineFormat]**. Only present for **accessType** _ENTER_. Requires _VIOLATION_EVENTS_POLYLINE_ to be requested."
          }
        }
      },
      "ViolatedVehicleProperty": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "property": {
            "type": "string",
            "description": "The name of the violated vehicle property.\n\nThe following values represent a vehicle property which is greater than the given **limit**:\n\"WEIGHT\", \"HEIGHT\", \"LENGTH\", \"AXLE_WEIGHT\", \"WIDTH\", \"KPRA_LENGTH\", \"NUMBER_OF_AXLES\", \"TOTAL_PERMITTED_WEIGHT\".\n\nThe following values represent a vehicle property for which **value** contains additional information:\n\"LOW_EMISSION_ZONE\", \"TRUCK_ROUTE\", \"HAZARDOUS_MATERIALS\", \"TUNNEL_RESTRICTION\", \"TRAILER\".\n\nThis list can be extended at any time, clients should handle unknown values properly. \nSee [here](./concepts/violations) for more information.",
            "x-extensible-enum": [
              "WEIGHT",
              "HEIGHT",
              "LENGTH",
              "AXLE_WEIGHT",
              "WIDTH",
              "KPRA_LENGTH",
              "NUMBER_OF_AXLES",
              "TOTAL_PERMITTED_WEIGHT",
              "LOW_EMISSION_ZONE",
              "TRUCK_ROUTE",
              "HAZARDOUS_MATERIALS",
              "TUNNEL_RESTRICTION",
              "TRAILER"
            ]
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "If the **property** represents a vehicle dimension such as _WEIGHT_ or _HEIGHT_, this value contains the limit which was exceeded by the vehicle."
          },
          "value": {
            "type": "string",
            "description": "If the **property** is: \n* _LOW_EMISSION_ZONE_, this value contains the name of the low-emission zone, see the corresponding\nlow-emission zone event for details on what is required to enter this zone,\n* _TRUCK_ROUTE_, this value contains the name of the truck route prohibited for the selected vehicle,\n* _HAZARDOUS_MATERIALS_, this value contains a comma-separated list of the prohibited hazardous materials.\n* _TUNNEL_RESTRICTION_, this value represents the allowed tunnel restriction code.\n* _TRAILER_, this value represents that a trailer is not allowed."
          }
        }
      },
      "ViolationType": {
        "type": "string",
        "description": "The reason why the road or the schedule is violated.\n * `PROHIBITED` - The violated road is prohibited in general for the current vehicle such as some roads in city centers, parks, forests and farmland or it is temporarily closed due to construction sites.  \n * `DELIVERY_ONLY` - The violated road is prohibited except for delivery vehicles such as factory premises or pedestrian zones. Cars and vans are no delivery vehicles and may produce such violations.  \n * `URBAN` - The violated road is prohibited because urban roads are prohibited for the current vehicle. This will not happen for the predefined profiles.  \n * `RESIDENTS_ONLY` - The violated road is prohibited because roads flagged as residents only are prohibited for the current vehicle. This will not happen for the predefined profiles.\n * `RESTRICTED_ACCESS` - The violated road is prohibited because it has restricted access because a gate or a bollard has to be passed. This will always have **accessType** _PASS_.  \n * `VEHICLE_PROPERTY` - The violated road is prohibited for the current vehicle as some vehicle property exceeds a limit such as the weight or height, or the road is prohibited for trucks in general.  \n * `COMBINED_TRANSPORT` - The violated road is a boat (ferry) or rail (train or rail shuttle) connection prohibited for the current vehicle.\n * `SCHEDULE` - The schedule is violated. The reasons can be found in **scheduleViolationTypes**.\n * `BLOCKED_ROAD_BY_INTERSECTION` - The violated road has been blocked through **options[blockIntersectingRoads]**.",
        "enum": [
          "PROHIBITED",
          "DELIVERY_ONLY",
          "URBAN",
          "RESIDENTS_ONLY",
          "RESTRICTED_ACCESS",
          "VEHICLE_PROPERTY",
          "COMBINED_TRANSPORT",
          "SCHEDULE",
          "BLOCKED_ROAD_BY_INTERSECTION"
        ],
        "x-enum-varnames": [
          "PROHIBITED",
          "DELIVERY_ONLY",
          "URBAN",
          "RESIDENTS_ONLY",
          "RESTRICTED_ACCESS",
          "VEHICLE_PROPERTY",
          "COMBINED_TRANSPORT",
          "SCHEDULE",
          "BLOCKED_ROAD_BY_INTERSECTION"
        ]
      },
      "TrafficEvent": {
        "type": "object",
        "description": "Issued when the route passes a road for which live traffic data contain an incident such as a traffic jam. Requires _TRAFFIC_EVENTS_ to be requested.",
        "required": [
          "delay",
          "accessType"
        ],
        "properties": {
          "delay": {
            "description": "The delay due to this incident [s].",
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "The description of the incident in the language specified by the parameter **options[language]**.\n"
          },
          "language": {
            "type": "string",
            "description": "The language of the description, if the given language is not supported for this incident. Not present otherwise.",
            "pattern": "[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
          },
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the traffic event in the format specified by **options[polylineFormat]**. Only present for **accessType** _ENTER_. Requires _TRAFFIC_EVENTS_POLYLINE_ to be requested."
          }
        }
      },
      "LowEmissionZoneEvent": {
        "type": "object",
        "description": "Issued when the route passes a low-emission zone. Requires _LOW_EMISSION_ZONE_EVENTS_ to be requested.",
        "required": [
          "name",
          "accessType"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the low-emission zone.\n"
          },
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          }
        }
      },
      "DeliveryOnlyEvent": {
        "type": "object",
        "description": "Issued when the route passes roads which are prohibited except for delivery vehicles such as factory premises or pedestrian zones.  Requires _DELIVERY_ONLY_EVENTS_ to be requested.",
        "required": [
          "accessType"
        ],
        "properties": {
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the delivery-only event in the format specified by **options[polylineFormat]**. Only present for **accessType** _ENTER_. Requires _DELIVERY_ONLY_EVENTS_POLYLINE_ to be requested."
          }
        }
      },
      "Toll": {
        "type": "object",
        "description": "Detailed information on the toll costs, providers and tariff information.  \nToll prices do not include VAT.\n",
        "properties": {
          "costs": {
            "$ref": "#/components/schemas/TollCosts"
          },
          "sections": {
            "type": "array",
            "description": "The list of toll sections defined by the toll operators.",
            "items": {
              "$ref": "#/components/schemas/TollSection"
            }
          },
          "systems": {
            "type": "array",
            "description": "The list of toll systems defined by the toll operators.",
            "items": {
              "$ref": "#/components/schemas/TollSystem"
            }
          },
          "currencies": {
            "$ref": "#/components/schemas/Currencies"
          }
        }
      },
      "TollSectionCost": {
        "type": "object",
        "required": [
          "price",
          "currency"
        ],
        "properties": {
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price in the specified currency.",
            "format": "double"
          },
          "currency": {
            "type": "string",
            "description": "The currency code according to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)."
          },
          "paymentMethods": {
            "type": "array",
            "description": "The payment methods for toll costs.  \n * `ELECTRONIC_TOLL_COLLECTION_SUBSCRIPTION` - Electronic toll collection system with a subscription required.  \n * `ELECTRONIC_TOLL_COLLECTION` - Electronic toll collection system with no subscription required.  \n * `CASH` - Cash payment at a toll booth.  \n * `CREDIT_CARD` - Credit card payment at a toll booth.",
            "items": {
              "$ref": "#/components/schemas/PaymentMethod"
            }
          },
          "etcSubscriptions": {
            "type": "array",
            "description": "The required electronic toll collection subscriptions for the payment method _ELECTRONIC_TOLL_COLLECTION_SUBSCRIPTION_.",
            "items": {
              "type": "string"
            }
          },
          "convertedPrice": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TollPrice"
              }
            ],
            "description": "The price of the section in the converted currency."
          }
        }
      },
      "TollEvent": {
        "type": "object",
        "description": "Issued when a road subject to toll is entered or exited. Requires _TOLL_EVENTS_ to be requested.",
        "required": [
          "accessType"
        ],
        "properties": {
          "sectionIndex": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "The index of the corresponding toll section.  The section indexes of a pair of ENTER and EXIT events define the range of sections between the two events."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the toll event. Only present if a name is available. For example, this name can be a toll location name defined by the toll operator. In some cases the display names of the toll event and the toll section can differ. In case the toll section has been approximated, the display name of the affected toll event contains the hint \"(approximated)\"."
          },
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          }
        }
      },
      "TollPrice": {
        "type": "object",
        "description": "The toll price payable in this country.",
        "required": [
          "price",
          "currency"
        ],
        "properties": {
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The toll price in the specified currency.",
            "format": "double",
            "example": 12.91
          },
          "currency": {
            "type": "string",
            "description": "The currency code according to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
            "example": "EUR"
          }
        }
      },
      "ElectricityPrice": {
        "type": "object",
        "description": "The electricity price payable for charging the battery.",
        "required": [
          "price",
          "currency"
        ],
        "properties": {
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The electricity price in the specified currency.",
            "format": "double",
            "example": 12.91
          },
          "currency": {
            "type": "string",
            "description": "The currency code according to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
            "example": "EUR"
          }
        }
      },
      "TollRoadType": {
        "type": "string",
        "description": "The reason why toll is charged.  \n * `GENERAL` - A general toll road where no special toll applies.  \n * `CITY` - An urban area or city is subject to toll.  \n * `BRIDGE` - A bridge is subject to toll.  \n * `TUNNEL` - A tunnel is subject to toll.  \n * `FERRY` - A ferry is subject to toll.  \n * `MOUNTAIN_PASS` - A mountain pass is subject to toll.  ",
        "enum": [
          "GENERAL",
          "CITY",
          "BRIDGE",
          "TUNNEL",
          "FERRY",
          "MOUNTAIN_PASS"
        ],
        "x-enum-varnames": [
          "GENERAL",
          "CITY",
          "BRIDGE",
          "TUNNEL",
          "FERRY",
          "MOUNTAIN_PASS"
        ]
      },
      "TollSection": {
        "type": "object",
        "required": [
          "costs",
          "tollRoadType",
          "countryCode"
        ],
        "properties": {
          "costs": {
            "type": "array",
            "description": "The toll costs payable for this section. If different prices according to the payment method exist, this list contains one item for each price.\nThe first item contains the price used to calculate the total toll costs for the route.\nFurther items are alternative costs for the section with different payment methods or different subscriptions.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/TollSectionCost"
            }
          },
          "tollRoadType": {
            "$ref": "#/components/schemas/TollRoadType"
          },
          "tollSystemIndex": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "The index in the list of toll systems this toll section belongs to."
          },
          "countryCode": {
            "type": "string",
            "description": "Countries are represented according to their [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision."
          },
          "displayName": {
            "type": "string",
            "description": "A name that describes this toll section. It can relate to the names of the road intersections, to the area in general or to the type of toll."
          },
          "officialDistance": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "The official distance defined by the toll operator [m].  It may be different from the travel distance. Only present if the toll operator provides an official distance.",
            "example": 142
          },
          "calculatedDistance": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "The calculated distance of the toll section on the current route.  It may be different from the official distance.",
            "example": 141
          },
          "approximated": {
            "type": "boolean",
            "description": "States whether the section is approximated because the start or destination waypoint is located inside a toll section and thus the exact toll price cannot be calculated. The closest toll location after the waypoint is used to approximate the toll price.",
            "example": false
          }
        }
      },
      "TollCosts": {
        "type": "object",
        "description": "The toll prices payable for this route or leg aggregated by currency.",
        "required": [
          "prices",
          "countries"
        ],
        "properties": {
          "prices": {
            "type": "array",
            "description": "The toll prices payable in the given currencies. The price may be 0 if no toll applies for a currency in a country passed by the route.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/TollPrice"
            }
          },
          "convertedPrice": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TollPrice"
              }
            ],
            "description": "The cumulated toll price in the converted currency."
          },
          "countries": {
            "type": "array",
            "description": "The toll prices by country or subdivision. The price may be 0 if no toll applies in a country passed by the route.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/TollCostsByCountry"
            }
          },
          "containsApproximatedSections": {
            "type": "boolean",
            "description": "True, if the start or destination waypoint is located inside a toll section. In such cases the exact toll price cannot be calculated and the closest toll location after the waypoint is used to approximate the toll price. When toll sections are requested, the affected section is marked as well.",
            "example": false
          }
        }
      },
      "TollCostsByCountry": {
        "type": "object",
        "required": [
          "countryCode",
          "price"
        ],
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "Countries are represented according to their [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision."
          },
          "price": {
            "$ref": "#/components/schemas/TollPrice"
          },
          "convertedPrice": {
            "$ref": "#/components/schemas/TollPrice"
          }
        }
      },
      "TollSystem": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the toll system."
          },
          "operatorName": {
            "type": "string",
            "description": "The name of the toll operator."
          },
          "tariffVersion": {
            "type": "string",
            "description": "The tariff version that has been used."
          },
          "tariffVersionValidFrom": {
            "type": "string",
            "description": "The starting date of the tariff version validity formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).",
            "format": "date-time"
          }
        }
      },
      "Currencies": {
        "type": "object",
        "required": [
          "date",
          "provider",
          "baseCurrency",
          "exchangeRates"
        ],
        "description": "Information about the currencies that are listed in the toll costs and/or toll sections objects.",
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "description": "The date of the exchange rates formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339)."
          },
          "provider": {
            "type": "string",
            "description": "The provider of the exchange rates."
          },
          "baseCurrency": {
            "type": "string",
            "pattern": "[A-Z]{3}",
            "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code as provided in the request."
          },
          "exchangeRates": {
            "type": "array",
            "description": "The exchange rates that were used to determine the converted prices.",
            "items": {
              "$ref": "#/components/schemas/ExchangeRate"
            }
          }
        }
      },
      "ExchangeRate": {
        "type": "object",
        "required": [
          "currency",
          "rate"
        ],
        "properties": {
          "currency": {
            "type": "string",
            "pattern": "[A-Z]{3}",
            "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code of the currency from which a price has been converted."
          },
          "rate": {
            "type": "number",
            "format": "double",
            "description": "The exchange rate to convert a price from the base currency to this currency."
          }
        }
      },
      "UTCOffsetChangeEvent": {
        "type": "object",
        "description": "Issued when the offset to UTC changes, mostly when traveling into a different time zone.\nRequires _UTC_OFFSET_CHANGE_EVENTS_ to be requested.  \n\nChanging the UTC offset does not necessarily mean to change the time\nzone. Vice-versa changing the time zone does not necessarily mean to\nchange the UTC offset. There are some special cases to consider.\n *  The UTC offset may change even within a time zone when the route takes place exactly when the daylight-saving time changes.\n *  The UTC offset may not change when changing the time zone. In Canada, for example, there are regions which do not use DST \n so that the neighboring time zone has the same UTC offset in summer.",
        "required": [
          "utcOffset"
        ],
        "properties": {
          "utcOffset": {
            "minimum": -720,
            "maximum": 840,
            "type": "integer",
            "description": "The new UTC offset [min].",
            "format": "int32"
          }
        }
      },
      "WaypointEvent": {
        "type": "object",
        "description": "Issued when a waypoint is reached by the route, but not for route-manipulation waypoints. When using drivers' working hours and the schedule requires a break or a waiting time before the service, the waypoint event is issued already with the break or the waiting time as the location is already reached. Requires _WAYPOINT_EVENTS_ to be requested.",
        "required": [
          "index"
        ],
        "properties": {
          "index": {
            "minimum": 0,
            "type": "integer",
            "description": "The index of the waypoint in the request.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The name of the waypoint as given in the request. This parameter is only present if it is not empty."
          }
        }
      },
      "CombinedTransportEvent": {
        "type": "object",
        "description": "Issued when a combined transport is entered or exited. Requires _COMBINED_TRANSPORT_EVENTS_ to be requested.",
        "required": [
          "name",
          "type",
          "accessType"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the combined transport."
          },
          "type": {
            "$ref": "#/components/schemas/CombinedTransportType"
          },
          "accessType": {
            "$ref": "#/components/schemas/AccessType"
          },
          "relatedEventIndex": {
            "minimum": 0,
            "type": "integer",
            "description": "For **accessType** _ENTER_ this index points to the corresponding event with **accessType** _EXIT_ and vice-versa. Not present otherwise.",
            "format": "int32"
          }
        }
      },
      "ScheduleEvent": {
        "type": "object",
        "description": "Issued when the driver has to take a break or a rest, perform service or wait for a waypoint to open. If **useServiceTimeForRecreation** is true, each _SERVICE_ is reported along with another type depending on whether or not the service time is actually used for recreation. Times on a combined transport are always _WAITING_ unless used for recreation. Requires _SCHEDULE_EVENTS_ or _SCHEDULE_EVENTS_WITH_DRIVING_ to be requested, POST only.\nIt can be helpful to take other events into account such as **waypoint** and **combinedTransport** to interpret the results, consider requesting them. When there are several waypoints at the same location, **waypoint** helps to match _SERVICE_ to the proper waypoint, **combinedTransport** helps to match recreation time.",
        "required": [
          "duration",
          "scheduleTypes"
        ],
        "properties": {
          "duration": {
            "minimum": 0,
            "type": "integer",
            "format": "int32",
            "description": "The duration [s]."
          },
          "scheduleTypes": {
            "type": "array",
            "description": "Tells what happens at this position of the route.\n",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/ScheduleType"
            }
          }
        }
      },
      "ScheduleType": {
        "type": "string",
        "enum": [
          "BREAK",
          "DAILY_REST",
          "WAITING",
          "SERVICE",
          "DRIVING"
        ],
        "x-enum-varnames": [
          "BREAK",
          "DAILY_REST",
          "WAITING",
          "SERVICE",
          "DRIVING"
        ]
      },
      "ScheduleViolationType": {
        "type": "string",
        "enum": [
          "OPENING_INTERVAL",
          "MAXIMUM_TRAVEL_TIME",
          "MAXIMUM_DRIVING_TIME"
        ],
        "x-enum-varnames": [
          "OPENING_INTERVAL",
          "MAXIMUM_TRAVEL_TIME",
          "MAXIMUM_DRIVING_TIME"
        ]
      },
      "TrafficMode": {
        "type": "string",
        "description": "Defines how to consider traffic in a route calculation.\n * `REALISTIC` - Returns the most realistic **travelTime** and **distance** for the selected vehicle and the\n given **startTime** or **arrivalTime** or the current time if none of them is specified.\n Takes into account the live traffic situation such as traffic jams or road works\n as well as the typical traffic situation at the time of day and the day of week of travel such as the rush-hour\n on Monday morning or light traffic on Saturday evening.\n * `AVERAGE` - Returns the average **travelTime** and **distance** for the selected vehicle.\n If **startTime** or **arrivalTime** is specified, the typical traffic situation for that time of day and day of week will be considered such as the rush-hour\n on Monday morning or light traffic on Saturday evening. Toll will be calculated according to that date and time.\n If none of them is specified the typical traffic situation will not be considered, and **travelTime** and **distance** are an average independent of when to travel.\n Tolls will be calculated based on the toll prices valid at noon on Monday of the current week, using the time zone of the start waypoint.\n\nSee [here](./concepts/traffic-modes) for more information.\nThis parameter will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.",
        "default": "REALISTIC",
        "enum": [
          "REALISTIC",
          "AVERAGE"
        ],
        "x-enum-varnames": [
          "REALISTIC",
          "AVERAGE"
        ]
      },
      "ReachableTrafficMode": {
        "type": "string",
        "description": "Defines how to consider traffic in a reachable areas or a reachable locations calculation.\n * `REALISTIC` - Uses the most realistic **travelTime** and **distance** for the selected vehicle and the\n given **referenceTime** or the current time if **referenceTime** is not specified.\n Takes into account the live traffic situation such as traffic jams or road works\n as well as the typical traffic situation at the time of day and the day of week of travel such as the rush-hour\n on Monday morning or light traffic on Saturday evening.\n * `AVERAGE` - Uses the average **travelTime** and **distance** for the selected vehicle.\n If **referenceTime** is specified, the typical traffic situation for that time of day and day of week will be considered such as the rush-hour\n on Monday morning or light traffic on Saturday evening.\n If no **referenceTime** is specified the typical traffic situation will not be considered, and **travelTime** and **distance** are an average independent of when to travel.\n\nSee [here](./concepts/traffic-modes) for more information.\nThis parameter will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.",
        "default": "AVERAGE",
        "enum": [
          "REALISTIC",
          "AVERAGE"
        ],
        "x-enum-varnames": [
          "REALISTIC",
          "AVERAGE"
        ]
      },
      "RoutingMode": {
        "type": "string",
        "enum": [
          "FAST",
          "SHORT",
          "SHORTEST",
          "MONETARY"
        ],
        "x-enum-varnames": [
          "FAST",
          "SHORT",
          "SHORTEST",
          "MONETARY"
        ],
        "default": "FAST",
        "description": "Specifies which objective function should be used for the route calculation.  \n* `FAST` is the default which returns a route considering a tradeoff between distance and travel time.\nAll vehicle-specific restrictions are properly considered and violated only, if no other route can be found.\n* `SHORT` returns a route which is probably shorter but accepting longer travel times.\nThe resulting route is still sensible and can be driven with the given vehicle, but it may disregard restrictions like driving through residential areas.\n* `SHORTEST` is even more aggressively optimized for minimizing distance, which can significantly increase travel times.\nThe route remains valid and drivable for the vehicle, but may more readily use slower or smaller roads.\n* `MONETARY` assigns monetary costs to each road segment according the provided cost parameters and the vehicles properties like its consumption.\nFurthermore, toll costs are integrated as well. See [here](./concepts/monetary-costs) for more information.\n\nThis parameter will be ignored, if a **routeId** is specified. \nFor non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_, the parameter will be ignored as well."
      },
      "PolylineFormat": {
        "type": "string",
        "description": "Defines the format for polylines in the response.  \n * `GEO_JSON` - Polylines are returned in [GeoJSON](https://en.wikipedia.org/wiki/GeoJSON) format.  \n * `GOOGLE_ENCODED_POLYLINE` - Polylines are returned in [Google's Encoded Polyline](https://developers.google.com/maps/documentation/utilities/polylinealgorithm) format.  ",
        "default": "GEO_JSON",
        "enum": [
          "GEO_JSON",
          "GOOGLE_ENCODED_POLYLINE"
        ],
        "x-enum-varnames": [
          "GEO_JSON",
          "GOOGLE_ENCODED_POLYLINE"
        ]
      },
      "PolylineMapType": {
        "type": "string",
        "description": "Defines whether polylines should match the Raster Maps API or the Vector Maps API.\n\nNot only the polyline itself, but also other results and parameters that use the polyline of the route may change slightly, e.g. emission-related results and **matchSideOfStreet**.",
        "default": "RASTER",
        "enum": [
          "RASTER",
          "VECTOR"
        ],
        "x-enum-varnames": [
          "RASTER",
          "VECTOR"
        ]
      },
      "AlternativeRoutes": {
        "type": "array",
        "description": "Detailed information on alternative routes. Requires _ALTERNATIVE_ROUTES_ to be requested. The array may be empty when no alternative routes are found.",
        "items": {
          "$ref": "#/components/schemas/AlternativeRoute"
        }
      },
      "AlternativeRoute": {
        "type": "object",
        "required": [
          "distance",
          "travelTime",
          "violated"
        ],
        "properties": {
          "distance": {
            "minimum": 0,
            "type": "integer",
            "description": "The distance of the alternative route [m].",
            "format": "int32",
            "example": 1422
          },
          "travelTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The travel time for the alternative route [s].",
            "format": "int32",
            "example": 56
          },
          "trafficDelay": {
            "minimum": 0,
            "type": "integer",
            "description": "The total delay due to live traffic on this alternative route [s].\n\nThis value contains the sum of all traffic events on this alternative route and  will be non-zero only if **options[trafficMode]=REALISTIC**.\nSee [here](./concepts/traffic-modes) for more information.",
            "format": "int32",
            "example": 0
          },
          "violated": {
            "type": "boolean",
            "description": "If the alternative route cannot be calculated for the given vehicle the resulting alternative route is marked as violated.",
            "example": false
          },
          "polyline": {
            "type": "string",
            "description": "The polyline of the alternative route in the format specified by **options[polylineFormat]**."
          },
          "routeId": {
            "type": "string",
            "format": "uuid",
            "description": "The ID of the alternative route. It is valid for 12 hours."
          }
        }
      },
      "ScheduleReport": {
        "type": "object",
        "required": [
          "drivingTime",
          "serviceTime",
          "waitingTime",
          "breakTime",
          "restTime"
        ],
        "description": "Provides an overview of the times of the schedule of this route including break and rest times.\nThe sum of all times is equal to the **travelTime** of the route.        \nIf **useServiceTimeForRecreation** is true, waiting, break and rest times which take place during service will\nnot be reported here. If that does not match your needs, please evaluate the corresponding **scheduleEvent**s. \nRequires _SCHEDULE_REPORT_ to be requested, POST only.",
        "properties": {
          "startTime": {
            "type": "string",
            "description": "The start time of the route formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339). Only present with **options[trafficMode]** _REALISTIC_ or when **options[startTime]** is specified.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "The end time of the route formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339). Only present with **options[trafficMode]** _REALISTIC_ or when **options[startTime]** is specified.",
            "format": "date-time"
          },
          "drivingTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The total driving time of the route [s]. Time which is not service, waiting, break or rest is considered as driving.",
            "format": "int32"
          },
          "serviceTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The total service time of the route [s], equal to the sum of **schedule** events of type _SERVICE_.",
            "format": "int32"
          },
          "waitingTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The total waiting time of the route [s], equal to the sum of **schedule** events of type _WAITING_ which are not _SERVICE_ at the same time.",
            "format": "int32"
          },
          "breakTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The total break time of the route [s], equal to the sum of **schedule** events of type _BREAK_ which are not _SERVICE_ at the same time.",
            "format": "int32"
          },
          "restTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The total rest time of the route [s], equal to the sum of **schedule** events of type _DAILY_REST_ which are not _SERVICE_ at the same time.",
            "format": "int32"
          }
        }
      },
      "MonetaryCosts": {
        "type": "object",
        "required": [
          "currency",
          "totalCost",
          "distanceCost",
          "workingTimeCost",
          "energyCost",
          "tollCost"
        ],
        "properties": {
          "currency": {
            "description": "The currency code according to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).",
            "type": "string",
            "pattern": "[A-Z]{3}"
          },
          "totalCost": {
            "minimum": 0,
            "type": "number",
            "description": "The total monetary cost of the route.",
            "format": "double"
          },
          "distanceCost": {
            "minimum": 0,
            "type": "number",
            "description": "The distance cost based on the **monetaryCostOptions[costPerKilometer]** and the driving distance.",
            "format": "double"
          },
          "workingTimeCost": {
            "minimum": 0,
            "type": "number",
            "description": "The working time cost based on **monetaryCostOptions[costPerWorkingHour]** and the driving time. Break, service and rest times are not considered.",
            "format": "double"
          },
          "energyCost": {
            "minimum": 0,
            "type": "number",
            "description": "The energy cost based on the vehicle's consumption and the corresponding cost parameters.",
            "format": "double"
          },
          "tollCost": {
            "minimum": 0,
            "type": "number",
            "description": "The toll cost based on the route and the vehicle.  \nToll prices do not include VAT.\n",
            "format": "double"
          }
        },
        "description": "Provides an overview of the costs of the route.  \nRequires the result _MONETARY_COSTS_ to be requested."
      },
      "ElevationReport": {
        "type": "object",
        "description": "Provides information on the topography of the route or leg, i.e. the total ascent and descent. Elevation‑based metrics represent approximate values and may differ from real‑world measurements.\n\nFor each leg the constraint ascent − descent = net elevation difference (last point minus first point) is maintained. Because of this, the sum of ascent or descent values across all legs may slightly exceed the corresponding route total.",
        "required": [
          "ascent",
          "descent"
        ],
        "properties": {
          "ascent": {
            "description": "Total ascent of the route or leg [m], estimated from sampled elevation data along the route.",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "descent": {
            "description": "Total descent of the route or leg [m], estimated from sampled elevation data along the route.",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          }
        }
      },
      "AllowedCountries": {
        "description": "Comma-separated list of countries the route is allowed to pass. By default, all countries are allowed. If this parameter is present, only these countries are allowed to be passed,\ni.e. drive only in these countries.\nCountries are represented according to their [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision.\nThis parameter is mutually exclusive with **prohibitedCountries** and will be ignored, if a **routeId** is specified.",
        "type": "string"
      },
      "ProhibitedCountries": {
        "description": "Comma-separated list of countries the route must not pass. By default, all countries are allowed. If this parameter is present, all but the given countries are allowed to be passed,\ni.e. do not drive in these countries. \nCountries are represented according to their [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) or [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) if referring to a subdivision.\nThis parameter is mutually exclusive with **allowedCountries** and will be ignored, if a **routeId** is specified.",
        "type": "string"
      },
      "ReachableAreasId": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "The ID of the calculated reachable areas.",
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ReachableLocationsId": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "description": "The ID of the calculated reachable locations.",
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "ReachableAreaPolygons": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "The list of polygons calculated for the specified horizons in GeoJson format. For each horizon there is a separate polygon at the same index."
      },
      "ReachableAreasResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/CalculationStatus"
          },
          "reachableAreas": {
            "$ref": "#/components/schemas/ReachableAreas"
          },
          "error": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "ReachableAreas": {
        "description": "The result of the reachable areas calculation.",
        "type": "object",
        "required": [
          "polygons"
        ],
        "properties": {
          "polygons": {
            "$ref": "#/components/schemas/ReachableAreaPolygons"
          },
          "warnings": {
            "description": "A list of warnings concerning the validity of the result.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        }
      },
      "ReachableLocationsResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/CalculationStatus"
          },
          "reachableLocations": {
            "$ref": "#/components/schemas/ReachableLocations"
          },
          "error": {
            "$ref": "#/components/schemas/ErrorResponse"
          }
        }
      },
      "ReachableLocations": {
        "description": "The results of a reachable locations calculation.",
        "type": "object",
        "properties": {
          "reachable": {
            "description": "Reachable locations ordered by distance or travel time (depending on the request **horizonType**).",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReachableLocation"
            }
          },
          "unreachable": {
            "description": "Indexes of the unreachable locations as given in the request locations.",
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "warnings": {
            "description": "A list of warnings concerning the validity of the result.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        }
      },
      "ReachableLocation": {
        "description": "Contains the distance and travel time from the input waypoint or route to a reached location or vice versa (depending on the request drivingDirection).",
        "type": "object",
        "properties": {
          "distance": {
            "description": "The distance from the input waypoint to this location or vice versa.",
            "type": "integer",
            "format": "int32"
          },
          "travelTime": {
            "description": "The travel time from the input waypoint to this location or vice versa.",
            "type": "integer",
            "format": "int32"
          },
          "index": {
            "description": "The index of the reached input location.",
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "DrivingDirection": {
        "default": "OUTBOUND",
        "description": "Specifies the driving direction, i.e. from start to destination or from destination to start..\n * `OUTBOUND` - Indicates an outbound routing from start to destination, i.e. the area which can be reached from the location within the given horizon. Use this value to calculate which can be covered e.g. by an emergency service such as a fire department.\n * `INBOUND` - Indicates an inbound routing from destination to start, i.e. from where the location can be reached within the given horizon. Use this value to calculate the catchment area, e.g. of a school or a hospital.",
        "type": "string",
        "enum": [
          "OUTBOUND",
          "INBOUND"
        ],
        "x-enum-varnames": [
          "OUTBOUND",
          "INBOUND"
        ]
      },
      "HorizonType": {
        "default": "TRAVEL_TIME",
        "description": "Specifies the geographical horizon.\n * `DISTANCE` - Represents a geographical horizon that is described by a distance. Every point or road segment that is reachable from the source within the specified distance is included in the horizon.\n * `TRAVEL_TIME` - Represents a geographical horizon that is described by a travel time. Every point or road segment that is reachable from the source within the specified travel time is included in the horizon.",
        "type": "string",
        "enum": [
          "DISTANCE",
          "TRAVEL_TIME"
        ],
        "x-enum-varnames": [
          "DISTANCE",
          "TRAVEL_TIME"
        ]
      },
      "CalculationStatus": {
        "description": "The current status of the calculation.\n * `RUNNING` - The calculation is still running.\n * `SUCCEEDED` - The calculation has completed successfully.\n * `FAILED` - The calculation has completed with a failure.",
        "type": "string",
        "enum": [
          "RUNNING",
          "SUCCEEDED",
          "FAILED"
        ],
        "x-enum-varnames": [
          "RUNNING",
          "SUCCEEDED",
          "FAILED"
        ]
      },
      "ReachableOptions": {
        "type": "object",
        "properties": {
          "drivingDirection": {
            "$ref": "#/components/schemas/DrivingDirection"
          },
          "referenceTime": {
            "description": "Defines the start time for **drivingDirection** _OUTBOUND_ or the arrival time for **drivingDirection** _INBOUND_ formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\n\nIf the date-time string does not include an explicit offset to UTC, the time will be interpreted as the local time of the waypoint.\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00.\nThe response will contain the offset to UTC specified in the request or that of the waypoint.\nFor best results it should not be more than one month in the past nor more than six months in the future.\nSee [here](./concepts/date-and-time) for more information on the relevance of date and time.",
            "type": "string",
            "format": "date-time",
            "example": "2020-12-04T06:00:00+00:00"
          },
          "trafficMode": {
            "$ref": "#/components/schemas/ReachableTrafficMode"
          },
          "allowedCountries": {
            "$ref": "#/components/schemas/AllowedCountries"
          },
          "prohibitedCountries": {
            "$ref": "#/components/schemas/ProhibitedCountries"
          },
          "blockIntersectingRoads": {
            "$ref": "#/components/schemas/BlockIntersectingRoads"
          }
        }
      },
      "Locations": {
        "required": [
          "locations"
        ],
        "type": "object",
        "properties": {
          "locations": {
            "description": "The list of locations which should be taken into account for the calculation of reachable locations.",
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Location"
            }
          }
        }
      },
      "Location": {
        "required": [
          "latitude",
          "longitude"
        ],
        "type": "object",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          }
        }
      },
      "RouteRequest": {
        "type": "object",
        "properties": {
          "waypoints": {
            "type": "array",
            "description": "The list of waypoints the route will be calculated for. At least two waypoints are necessary, a maximum number may apply according to your subscription.\nThe first waypoint is the start and the last is the destination of the route.\nAdditional intermediate waypoints are possible.\n\nEach waypoint must either have latitude and longitude or one of the representations combinedTransport, address or place.",
            "items": {
              "$ref": "#/components/schemas/Waypoint"
            }
          },
          "routeId": {
            "type": "string",
            "format": "uuid",
            "description": "Instead of the list of waypoints, a **routeId** from a previously calculated route or a matched track can be entered.\nSee [here](./concepts/route-ids) for more information."
          },
          "driver": {
            "$ref": "#/components/schemas/DriverBody"
          },
          "routeOptions": {
            "$ref": "#/components/schemas/RouteOptions"
          }
        }
      },
      "Waypoint": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "An identifier to reference this waypoint in the response."
          },
          "onRoad": {
            "$ref": "#/components/schemas/OnRoadWaypoint"
          },
          "offRoad": {
            "$ref": "#/components/schemas/OffRoadWaypoint"
          },
          "manipulate": {
            "$ref": "#/components/schemas/ManipulateRouteWaypoint"
          },
          "combinedTransport": {
            "$ref": "#/components/schemas/CombinedTransport"
          }
        }
      },
      "OnRoadWaypoint": {
        "type": "object",
        "required": [
          "latitude",
          "longitude"
        ],
        "description": "An _on-road waypoint_ will be matched to the nearest possible road.\nThe air-line connection between given and matched coordinates is not included in the route polyline, distance and duration.",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          },
          "matchSideOfStreet": {
            "$ref": "#/components/schemas/MatchSideOfStreet"
          },
          "serviceTime": {
            "$ref": "#/components/schemas/ServiceTime"
          },
          "useServiceTimeForRecreation": {
            "$ref": "#/components/schemas/UseServiceTimeForRecreation"
          },
          "openingIntervals": {
            "$ref": "#/components/schemas/OpeningIntervals"
          },
          "vehicleParameters": {
            "$ref": "#/components/schemas/VehicleParametersAtWaypoint"
          },
          "evParameters": {
            "$ref": "#/components/schemas/EvParametersAtWaypoint"
          }
        }
      },
      "OffRoadWaypoint": {
        "type": "object",
        "required": [
          "latitude",
          "longitude"
        ],
        "description": "An _off-road waypoint_ will be part of the route.\nThe air-line connection between given and matched coordinates is included in the route polyline, distance and duration.\nUse this waypoint type to recalculate a route planned by the Route Optimization API.",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          },
          "roadAcess": {
            "$ref": "#/components/schemas/RoadAccess"
          },
          "matchSideOfStreet": {
            "$ref": "#/components/schemas/MatchSideOfStreet"
          },
          "serviceTime": {
            "$ref": "#/components/schemas/ServiceTime"
          },
          "useServiceTimeForRecreation": {
            "$ref": "#/components/schemas/UseServiceTimeForRecreation"
          },
          "openingIntervals": {
            "$ref": "#/components/schemas/OpeningIntervals"
          },
          "vehicleParameters": {
            "$ref": "#/components/schemas/VehicleParametersAtWaypoint"
          },
          "evParameters": {
            "$ref": "#/components/schemas/EvParametersAtWaypoint"
          }
        }
      },
      "ManipulateRouteWaypoint": {
        "type": "object",
        "required": [
          "latitude",
          "longitude",
          "radius"
        ],
        "description": "A _manipulate-route waypoint_ will not actually be reached but it influences the route path, so that the route passes an area defined by the given radius.\nThis waypoint will not appear as a waypoint event in the response and may not be used as start and destination.",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          },
          "radius": {
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "description": "The radius [m] at which the waypoint has to be passed."
          }
        }
      },
      "Latitude": {
        "maximum": 90,
        "minimum": -90,
        "type": "number",
        "description": "The latitude value in degrees (WGS84/EPSG:4326) from south to north.",
        "format": "double",
        "example": 49.480301
      },
      "Longitude": {
        "maximum": 180,
        "minimum": -180,
        "type": "number",
        "description": "The longitude value in degrees (WGS84/EPSG:4326) from west to east.",
        "format": "double",
        "example": 6.110667
      },
      "MatchSideOfStreet": {
        "type": "boolean",
        "default": false,
        "description": "Specifies that this waypoint will be reached at the side of street on which it is located.\nThis is useful to prevent the driver from crossing the street to actually reach the location represented by this waypoint."
      },
      "ServiceTime": {
        "type": "integer",
        "format": "int32",
        "default": 0,
        "minimum": 0,
        "maximum": 31535999,
        "description": "The service time [s] that is required at this waypoint, e.g. for pickup or delivery."
      },
      "UseServiceTimeForRecreation": {
        "type": "boolean",
        "default": false,
        "description": "If true, the service time can be used for a break or rest. This parameter will be ignored, if **serviceTime** is 0 or if no **driver** is specified."
      },
      "OpeningIntervals": {
        "type": "array",
        "description": "The opening intervals at this waypoint, each specified by two points in time - the beginning and the end of the interval.\nLeaving this parameter empty means that the waypoint is always open. Service can only start within one of the opening intervals.\nIf the vehicle does not arrive at a waypoint within an opening interval, a waiting time will be scheduled. \nWhen using a multi-day **workingHoursPreset** this waiting time will usually be used for daily rests instead, in order\nto continue the route with a rested driver.",
        "items": {
          "$ref": "#/components/schemas/TimeInterval"
        },
        "maxItems": 30
      },
      "RoadAccess": {
        "required": [
          "latitude",
          "longitude"
        ],
        "type": "object",
        "description": "Use these coordinates for matching to the nearest road.\nThis is useful if the waypoint should not be matched to the nearest possible road but to some road further away,\ne.g. garage exit at a different road.",
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          }
        }
      },
      "TimeInterval": {
        "required": [
          "start",
          "end"
        ],
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "The beginning of the time interval formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339). The date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00.",
            "format": "date-time",
            "example": "2020-12-07T00:00:00+00:00"
          },
          "end": {
            "type": "string",
            "description": "The end of the time interval formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339). The date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00.",
            "format": "date-time",
            "example": "2020-12-07T01:00:00+00:00"
          }
        },
        "description": "A time interval specified by two points in time - the beginning and the end of the interval."
      },
      "CombinedTransport": {
        "type": "object",
        "required": [
          "start",
          "destination"
        ],
        "properties": {
          "start": {
            "$ref": "#/components/schemas/CombinedTransportLocation"
          },
          "destination": {
            "$ref": "#/components/schemas/CombinedTransportLocation"
          }
        },
        "description": "Influences the route path, so that the route uses a ferry or railway connection between the given locations. Both locations will be matched to the nearest ports looking for a direct connection. If no connection can be found, this waypoint will be ignored, and the warning _ROUTING_COMBINED_TRANSPORT_WAYPOINT_IGNORED_ will be returned. If more than one connection is found, the best one will be used, and the alternative connections will be returned in the response in a warning _ROUTING_COMBINED_TRANSPORT_WAYPOINT_AMBIGUOUS_. This waypoint will not appear as a waypoint event in the response and may not be used as start or destination. We will refer to this type of waypoint as a _combined-transport waypoint_."
      },
      "CombinedTransportLocation": {
        "type": "object",
        "required": [
          "latitude",
          "longitude"
        ],
        "properties": {
          "latitude": {
            "$ref": "#/components/schemas/Latitude"
          },
          "longitude": {
            "$ref": "#/components/schemas/Longitude"
          }
        },
        "description": "Represents the start or destination location of a combined transport, e.g. the port."
      },
      "Driver": {
        "type": "object",
        "required": [
          "workingHoursPreset"
        ],
        "properties": {
          "workingHoursPreset": {
            "$ref": "#/components/schemas/WorkingHoursPreset"
          }
        }
      },
      "WorkingHoursPreset": {
        "description": "Enables the calculation of break and rest times according to the selected rules.\nBreaks and rests will be added to the **travelTime**, details can be requested through the _SCHEDULE_EVENTS_.\nFor single day presets no schedule events of type _DAILY_REST_ will be returned. Only _VIOLATION_EVENTS_ will be\nreturned when the maximum working time or maximum driving time is exceeded.\n  * `EU_DRIVING_TIME_REGULATION_FOR_SINGLE_DAY` - Based on Regulation (EC) 561/2006 of the European Parliament and of the Council.\n  Break time 45 min, maximum driving time between breaks 4.5 hours, maximum driving time 9 hours, maximum travel time 13 hours.\n  * `EU_DRIVING_TIME_REGULATION_FOR_LONG_SINGLE_DAY` - In contrast to `EU_DRIVING_TIME_REGULATION_FOR_SINGLE_DAY`,\n  the exception rules \"Maximum driving time may be extended to 10h twice a week.\" and \"A daily rest may be reduced to 9h three times between weekly rests.\"\n  are observed in so far as the driving time limit is extended and the daily rest time is reduced.\n  * `EU_WORKING_TIME_DIRECTIVE_FOR_SINGLE_DAY` - Based on Directive 2002/15/EC of the European Parliament and of the Council \"on the organisation of the working time of persons performing mobile road transport activities\".\n  Break time 30 min, maximum working time between breaks 6 hours, maximum travel time 9.5 hours.\n  * `EU_WORKING_TIME_DIRECTIVES_FOR_LONG_SINGLE_DAY` - Makes sure that the standard rules of the EU directives 2003/88/EC and 2002/15/EC that are applicable for a route within a long single day are observed.\n  If working hours total more than 9h, a break must be 45min long. Here, a working time of at most 10h is guaranteed.\n  * `EU_DRIVING_TIME_REGULATION_FOR_MULTIPLE_DAYS ` - Based on Regulation (EC) 561/2006 of the European Parliament and of the Council.\n  Break time 45 min, maximum driving time between breaks 4.5 hours,\n  daily rest time 11 hours, maximum driving time between daily rests 9 hours, maximum travel time between daily rests 13 hours,\n  maximum driving time 56 hours, maximum travel time 144 hours.\n  * `EU_DRIVING_TIME_REGULATION_FOR_TEAM_AND_MULTIPLE_DAYS` - When two drivers form a team, they can take turns.\n  In contrast to `EU_DRIVING_TIME_REGULATION_FOR_MULTIPLE_DAYS`, no breaks are scheduled and the daily rest time limits are raised.\n  * `US_HOURS_OF_SERVICE_REGULATIONS_FOR_SINGLE_DAY` - Based on Hours of Service (HOS) of Drivers as issued by the Federal Motor Carrier Safety Administration (FMCSA).\n  Break time 30 min, maximum driving time between breaks 8 hours, maximum driving time 11 hours, maximum travel time 14 hours.\n  * `US_HOURS_OF_SERVICE_REGULATIONS_FOR_SHORT_HAUL_AND_SINGLE_DAY` - Makes sure that the standard rules of the HOS regulations in 49 CFR 395 that are applicable for a route within a single day are observed.\n  It is assumed that the short-haul exception does apply so breaks are not scheduled.\n  * `US_HOURS_OF_SERVICE_REGULATIONS_FOR_MULTIPLE_DAYS` - Based on Hours of Service (HOS) of Drivers as issued by the Federal Motor Carrier Safety Administration (FMCSA).\n  Break time 30 min, maximum driving time between breaks 8 hours,\n  daily rest time 10 hours, maximum driving time between daily rests 11 hours, maximum travel time between daily rests 14 hours.\n\nIf this parameter is given both as query parameter and in the body then it must match. Otherwise an error is returned.\nThis parameter will be ignored for non-motorized profiles such as _BICYCLE_ or _PEDESTRIAN_.\nFor details see this [concept](./concepts/drivers-working-hours).",
        "type": "string",
        "enum": [
          "EU_DRIVING_TIME_REGULATION_FOR_SINGLE_DAY",
          "EU_DRIVING_TIME_REGULATION_FOR_LONG_SINGLE_DAY",
          "EU_WORKING_TIME_DIRECTIVE_FOR_SINGLE_DAY",
          "EU_WORKING_TIME_DIRECTIVES_FOR_LONG_SINGLE_DAY",
          "EU_DRIVING_TIME_REGULATION_FOR_MULTIPLE_DAYS",
          "EU_DRIVING_TIME_REGULATION_FOR_TEAM_AND_MULTIPLE_DAYS",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_SINGLE_DAY",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_SHORT_HAUL_AND_SINGLE_DAY",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_MULTIPLE_DAYS"
        ],
        "x-enum-varnames": [
          "EU_DRIVING_TIME_REGULATION_FOR_SINGLE_DAY",
          "EU_DRIVING_TIME_REGULATION_FOR_LONG_SINGLE_DAY",
          "EU_WORKING_TIME_DIRECTIVE_FOR_SINGLE_DAY",
          "EU_WORKING_TIME_DIRECTIVES_FOR_LONG_SINGLE_DAY",
          "EU_DRIVING_TIME_REGULATION_FOR_MULTIPLE_DAYS",
          "EU_DRIVING_TIME_REGULATION_FOR_TEAM_AND_MULTIPLE_DAYS",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_SINGLE_DAY",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_SHORT_HAUL_AND_SINGLE_DAY",
          "US_HOURS_OF_SERVICE_REGULATIONS_FOR_MULTIPLE_DAYS"
        ]
      },
      "DriverBody": {
        "type": "object",
        "description": "Options regarding the drivers' working hours and work logbook.\nIf no driver object with a working hours preset is passed with the request, working hours will be unlimited.",
        "required": [
          "workingHoursPreset"
        ],
        "properties": {
          "workingHoursPreset": {
            "$ref": "#/components/schemas/WorkingHoursPreset"
          },
          "workLogbook": {
            "$ref": "#/components/schemas/WorkLogbook"
          },
          "useTimeOnCombinedTransportForRecreation": {
            "type": "boolean",
            "default": false,
            "description": "If true, the time on a combined transport, e.g. on a ferry, can be used for recreation. \nThat means that a break or a rest can be scheduled when traveling on a ferry or by rail.\nAs breaks and daily rests may be split to match the time of the combined transport, we recommend to additionally\nrequest _COMBINED_TRANSPORT_EVENTS_ when _SCHEDULE_EVENTS_ or _SCHEDULE_EVENTS_WITH_DRIVING_ are requested."
          }
        }
      },
      "WorkLogbook": {
        "description": "Defines the accumulated driving, working and travel times since the last break or daily rest. For details see this [concept](./concepts/drivers-working-hours).",
        "type": "object",
        "required": [
          "lastTimeTheDriverWorked"
        ],
        "properties": {
          "lastTimeTheDriverWorked": {
            "type": "string",
            "format": "date-time",
            "example": "2020-12-04T06:00:00+00:00",
            "description": "The last time the driver worked formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).  \n\nThe date must not be before 1970-01-01T00:00:00+00:00 nor after 2037-12-31T23:59:59+00:00. \nThe date must provide an offset to UTC.  \nSee [here](./concepts/date-and-time) for more information on the relevance of date and time."
          },
          "accumulatedDrivingTimeSinceLastBreak": {
            "type": "integer",
            "format": "int32",
            "default": 0,
            "minimum": 0,
            "maximum": 31535999,
            "description": "Accumulated driving time since end of last break [s], this includes all time behind the wheel.  \nValues higher than the maximum driving time between breaks of the **workingHoursPreset** are capped and effectively equal to the value given by the preset.\n"
          },
          "accumulatedWorkingTimeSinceLastBreak": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 31535999,
            "description": "Accumulated working time since end of last break [s], this includes driving time, service time at depot and customers, and idle time if lower than working time threshold.    \nValues higher than the maximum working time between breaks of the **workingHoursPreset** are capped and effectively equal to the value given by the preset. May not be smaller than **accumulatedDrivingTimeSinceLastBreak** if the value is specified. If no other value is specified, the default value is 0.\n"
          },
          "accumulatedDrivingTimeSinceLastDailyRest": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 31535999,
            "description": "Accumulated driving time since end of last daily rest [s], this includes all time behind the wheel.  \nValues higher than the maximum driving time between daily rests of the **workingHoursPreset** are capped and effectively equal to the value given by preset. May not be smaller than **accumulatedDrivingTimeSinceLastBreak** if the value is specified. If no other value is specified, the default value is 0.\n"
          },
          "accumulatedTravelTimeSinceLastDailyRest": {
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 31535999,
            "description": "Accumulated travel time since end of last daily rest [s], this includes all time since the last daily rest.  \nValues higher than maximum travel time between daily rests of the **workingHoursPreset** are capped and effectively equal to the value given by the preset. May not be smaller than **accumulatedWorkingTimeSinceLastBreak** or **accumulatedDrivingTimeSinceLastDailyRest** if the values are specified. If no other value is specified, the default value is 0.\n"
          }
        }
      },
      "RouteOptions": {
        "type": "object",
        "description": "Routing-relevant options which control the route path in detail. These parameters can be specified in addition to those in **options** and will override them.\nThe default values depend on the **profile** and can be retrieved from the Data API.",
        "properties": {
          "maximumSpeed": {
            "description": "The maximum speed of the vehicle [km/h]. The speeds for calculating the driving times on all roads\nwill be limited to this value.\nSee [here](./concepts/speeds) for more information.\nDo not specify **options[maximumSpeed]**, if this parameter is given.",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "speedsByRoadCategory": {
            "$ref": "#/components/schemas/SpeedsByRoadCategory"
          },
          "timePreferenceOverDistance": {
            "description": "Specifies the weighting between travel time and travel distance when calculating a route.\nThe value defines the preference for minimizing travel time over minimizing travel distance.\n- 0: Route is optimized purely for shortest distance.\n- 100: Route is optimized purely for shortest travel time.\n- 1-99: A weighted combination of travel time and distance is applied, with higher values\n    giving more importance to travel time.\n\nFor motorized profiles, values between 80 and 90 typically provide the most realistic and efficient routing behavior\nwhereas values below 30 often produce routes that are not realistically driveable. Such low values\nare mainly useful for determining theoretical lower bounds on distance rather than for practical\nroute planning.\n\nThis parameter will be ignored, if a **routeId** is specified.",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 100
          }
        }
      },
      "SpeedsByRoadCategory": {
        "type": "array",
        "description": "The speeds used to calculate the driving times by road category. For each road category a minimum and a maximum speed have to be specified.\nThe first array element represents motorways, the last one pedestrian and cycle paths, see [here](../data-api/concepts/road-categories)\nfor more information on road categories.\n\nThe speed actually used for a road segment depends on its road category and a speed category defined in the map data\nand is calculated by linear interpolation between the minimum and maximum speed.\n\nThis parameter can be specified only, if **options[trafficMode]** is _AVERAGE_ and neither **options[startTime]** \nnor **options[arrivalTime]** is specified. Otherwise, an error will be returned.\n\nSee [here](./concepts/speeds) for more information, in particular on the influence of further speed-related parameters\nsuch as **options[maximumSpeed]**, **options[speedFactor]** and relative speeds applied by custom road attribute scenarios.",
        "minItems": 8,
        "maxItems": 8,
        "items": {
          "$ref": "#/components/schemas/SpeedByRoadCategory"
        }
      },
      "SpeedByRoadCategory": {
        "type": "object",
        "required": [
          "minimumSpeed",
          "maximumSpeed"
        ],
        "properties": {
          "minimumSpeed": {
            "description": "The minimum speed of the vehicle [km/h] for roads of this road category. Must be less or equal to the maximum speed.",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 255
          },
          "maximumSpeed": {
            "description": "The maximum speed of the vehicle [km/h] for roads of this road category. Must be greater or equal to the minimum speed.",
            "type": "integer",
            "format": "int32",
            "minimum": 1,
            "maximum": 255
          }
        }
      },
      "BlockIntersectingRoads": {
        "description": "Pipe-separated list of polylines.  \nRoads and combined transports that intersect the given polylines will be considered as prohibited and will not be used in the route calculation.\nEach list element is a polyline. Each point is a coordinate of latitude and longitude. Coordinates and points are separated by a comma.\nFormat: `<poly1_lat1>,<poly1_lon1>,...,<poly1_latN>,<poly1_lonN>|<poly2_lat1>,<poly2_lon1>,...,<poly2_latN>,<poly2_lonN>|...`  \nNotes:\n* Be aware of the URL length restrictions.\n* If there is no other route connecting two waypoints the will be reported as violated and correspondingly violation events with type **BLOCKED_ROAD_BY_INTERSECTION** will be reported if violation events are requested.\n* Requests will be rejected if at least one provided polyline\n  * does not consist of an even number of coordinates,\n  * consists of less than two points,\n  * contains invalid coordinates or\n  * intersects more than 5000 road segments.\n\nThis parameter will be ignored, if a **routeId** is specified.\n",
        "type": "string",
        "example": "49.8,9.9,49.9,10|33.1,-111.1,33.0,-111.2"
      },
      "MonetaryCostOptions": {
        "type": "object",
        "properties": {
          "costPerKilometer": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Specifies the cost per kilometer. This value can contain the cost from the energy consumption, but it also\npossible to define the energy costs using **monetaryCostOptions[costPerKwh]** and **monetaryCostOptions[costPerFuelUnit]**.\nIf it is not specified the default value depends on the used **profile**. The default value of the profile can change at any time."
          },
          "workingCostPerHour": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Specifies the cost per hour. It is not applied to service, break or rest periods.\nIf it is not specified the default value depends on the used **profile**. The default value of the profile can change at any time."
          },
          "costPerKwh": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Specifies the cost per kilowatt hour. Only relevant for **vehicle[engineType]** _ELECTRIC_ and _HYBRID_."
          },
          "costPerFuelUnit": {
            "type": "number",
            "format": "double",
            "minimum": 0,
            "description": "Specifies the cost per fuel unit (per liter Diesel or per kg CNG). Only used for **vehicle[engineType]** _COMBUSTION_ and _HYBRID_."
          }
        }
      },
      "PositionAtWaypoint": {
        "type": "object",
        "description": "The vehicle position if it is at a waypoint.\nThis parameter is mutually exclusive with **position**.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "description": "The name of the waypoint.",
            "type": "string"
          },
          "performedServiceTime": {
            "description": "The service time [s] which has already been performed.",
            "type": "integer",
            "format": "int32",
            "default": 0,
            "minimum": 0,
            "maximum": 31535999
          }
        }
      },
      "PositionOnRoute": {
        "type": "object",
        "description": "The position of the vehicle if the vehicle position is not at a waypoint but somewhere on the route.\nThis parameter is mutually exclusive with **waypoint**.",
        "required": [
          "latitude",
          "longitude",
          "nextWaypointName"
        ],
        "properties": {
          "latitude": {
            "maximum": 90,
            "minimum": -90,
            "type": "number",
            "description": "The latitude value in degrees (WGS84/EPSG:4326) from south to north.",
            "format": "double",
            "example": 49.480301
          },
          "longitude": {
            "maximum": 180,
            "minimum": -180,
            "type": "number",
            "description": "The longitude value in degrees (WGS84/EPSG:4326) from west to east.",
            "format": "double",
            "example": 6.110667
          },
          "nextWaypointName": {
            "description": "The name of the next waypoint on the route.",
            "type": "string"
          },
          "heading": {
            "description": "The current heading of the vehicle [deg]. It denotes the driving direction,\nNorth represents 0 degrees, East represents 90 degrees, South represents 180 degrees, West represents 270 degrees.\n\nIf specified and if the heading of the vehicle is not in the direction of the route near the given **position**,\nit is assumed that the vehicle has left the route so that a new route will be calculated. This new route will then be \ncalculated from the road closest to the position matching the vehicle heading. For more information see\nthis [concept](./concepts/estimated-time-arrival).",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 360
          },
          "headingTolerance": {
            "description": "Denotes the tolerance between **heading** and the direction of a road, i.e. roads with a direction of **heading**±**headingTolerance** are taken into account. Applies only if **heading** is specified.",
            "type": "integer",
            "default": 45,
            "format": "int32",
            "minimum": 0,
            "maximum": 180
          }
        }
      },
      "EtaResponse": {
        "type": "object",
        "description": "The response of an ETA calculation.",
        "required": [
          "remainingWaypoints"
        ],
        "properties": {
          "remainingWaypoints": {
            "description": "The ETA and the remaining distance and travel time to the waypoints not yet reached by the route.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RemainingWaypoint"
            },
            "minItems": 1
          },
          "routeId": {
            "type": "string",
            "format": "uuid",
            "description": "If the route has been recalculated, this is the ID of the new route.\nThat will happen when it is likely that the vehicle has left the route, so the vehicle position is too far away from the route,\nor when the estimated time of arrival at the last waypoint is delayed in a way that another route may result in arriving earlier."
          },
          "warnings": {
            "description": "A list of warnings concerning the validity of the result.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        }
      },
      "RemainingWaypoint": {
        "type": "object",
        "required": [
          "name",
          "estimatedTimeOfArrival",
          "distance",
          "travelTime",
          "trafficDelay",
          "waitingTime",
          "scheduleViolations",
          "violated"
        ],
        "properties": {
          "name": {
            "description": "The name of this waypoint.",
            "type": "string"
          },
          "estimatedTimeOfArrival": {
            "description": "The estimated time of arrival at this waypoint formatted according to [RFC 3339](https://tools.ietf.org/html/rfc3339).\nDoes not include service, break, rest and waiting at this waypoint.",
            "type": "string",
            "format": "date-time"
          },
          "distance": {
            "minimum": 0,
            "type": "integer",
            "description": "The distance from the current position to this waypoint [m].",
            "format": "int32"
          },
          "travelTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The travel time from the current position to this waypoint [s]. Does not include service, break, rest and waiting at this waypoint.",
            "format": "int32"
          },
          "trafficDelay": {
            "minimum": 0,
            "type": "integer",
            "description": "The delay due to live traffic from the current position to this waypoint [s].",
            "format": "int32"
          },
          "waitingTime": {
            "minimum": 0,
            "type": "integer",
            "description": "The waiting time at this waypoint [s].",
            "format": "int32"
          },
          "scheduleViolations": {
            "type": "array",
            "minItems": 0,
            "items": {
              "$ref": "#/components/schemas/ScheduleViolationType"
            },
            "description": "Contains the list of violated schedule restrictions at this waypoint."
          },
          "violated": {
            "type": "boolean",
            "description": "If there is no valid route for the given vehicle between the vehicle position and this waypoint, but the resulting route can be calculated using roads actually prohibited, the route is marked as violated.",
            "example": false
          }
        }
      },
      "EvOptions": {
        "type": "object",
        "properties": {
          "initialStateOfCharge": {
            "type": "number",
            "format": "double",
            "default": 100,
            "minimum": 0,
            "maximum": 100,
            "description": "The available battery capacity at the start of the route [%]."
          },
          "minimumStateOfCharge": {
            "type": "number",
            "format": "double",
            "minimum": 1,
            "maximum": 99,
            "default": 10,
            "description": "The minimum wanted remaining battery capacity at the end of the route and at the end of each leg [%]."
          },
          "energyEfficientRoute": {
            "description": "Specifies if an energy efficient route should be calculated.",
            "type": "boolean",
            "default": false
          }
        }
      },
      "EvReport": {
        "type": "object",
        "description": "The consumption and charging summary for the specified vehicle model. Only present if _EV_REPORT_ is requested.\n",
        "required": [
          "electricityConsumption",
          "batteryStateOfCharge",
          "chargingTime",
          "electricityCharged",
          "percentageCharged",
          "cost"
        ],
        "properties": {
          "electricityConsumption": {
            "description": "The electricity consumption since the start of the route [kWh].",
            "type": "number",
            "format": "double"
          },
          "batteryStateOfCharge": {
            "description": "The remaining state of charge at the end of the route [%]. May be below the defined minimum state of charge or even below zero, if the electricity consumption exceeds the available energy in the battery and charging is not possible before falling below zero.",
            "type": "number",
            "format": "double",
            "maximum": 100,
            "example": 58
          },
          "chargingTime": {
            "description": "The time spent for charging the battery [s]. The charging time is a proposal, currently for information only. It is not included in the travel time of the route and the start time of subsequent events is not offset by it.",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "electricityCharged": {
            "description": "The amount of electricity charged along the route [kWh].",
            "type": "number",
            "format": "double",
            "minimum": 0
          },
          "percentageCharged": {
            "description": "The percentage of battery charged along the route [%].",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "cost": {
            "$ref": "#/components/schemas/ElectricityPrice"
          }
        }
      },
      "EvReportLeg": {
        "type": "object",
        "description": "The consumption summary for the specified vehicle model including the weather used for consumption calculation. Only present if both _EV_REPORT_ and _LEGS_ is requested.\n",
        "required": [
          "electricityConsumption",
          "batteryStateOfCharge",
          "weatherAtStart",
          "weatherAtEnd"
        ],
        "properties": {
          "electricityConsumption": {
            "description": "The electricity consumption since the start of the leg [kWh].",
            "type": "number",
            "format": "double"
          },
          "batteryStateOfCharge": {
            "description": "The remaining state of charge at the end of the leg [%]. May be below the defined minimum state of charge or even below zero, if the electricity consumption exceeds the available energy in the battery and charging is not possible before falling below zero.",
            "type": "number",
            "format": "double",
            "maximum": 100,
            "example": 58
          },
          "weatherAtStart": {
            "$ref": "#/components/schemas/WeatherResponse"
          },
          "weatherAtEnd": {
            "$ref": "#/components/schemas/WeatherResponse"
          }
        }
      },
      "EvStatusEvent": {
        "description": "Issued periodically to report electricity consumption and battery status.\nRequires _EV_STATUS_EVENTS_ or _EV_STATUS_EVENTS_POLYLINE_ to be requested.",
        "type": "object",
        "required": [
          "batteryStateOfCharge",
          "electricityConsumption"
        ],
        "properties": {
          "batteryStateOfCharge": {
            "description": "The remaining state of charge at the location of this event [%]. May be below the defined minimum state of charge or even below zero, if the electricity consumption exceeds the available energy in the battery and charging is not possible before falling below zero.",
            "type": "number",
            "format": "double",
            "maximum": 100,
            "example": 58
          },
          "electricityConsumption": {
            "description": "The electricity consumption since the previous event containing **evStatus** [kWh].",
            "type": "number",
            "format": "double"
          },
          "polyline": {
            "description": "The route polyline snippet since the previous event containing **evStatus** in the format specified by **options[polylineFormat]**.\nThe polyline may be null for events without distance to the previous **evStatus** event, for example events generated at a waypoint \nwith power consumption during service.\nRequires _EV_STATUS_EVENTS_POLYLINE_ to be requested.",
            "type": "string"
          }
        }
      },
      "ChargeEvent": {
        "description": "Issued when the battery should be charged at a waypoint. \nRequires _EV_CHARGE_EVENTS_ to be requested.",
        "type": "object",
        "required": [
          "chargingTime",
          "electricityCharged",
          "percentageCharged",
          "cost"
        ],
        "properties": {
          "chargingTime": {
            "description": "The time spent for charging the battery [s]. The charging time is a proposal, currently for information only. It is not included in the travel time of the route and the start time of subsequent events is not offset by it.",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "electricityCharged": {
            "description": "The amount of electricity charged [kWh].",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "exclusiveMinimum": true
          },
          "percentageCharged": {
            "description": "The percentage of battery charged [%].",
            "type": "integer",
            "format": "int32",
            "minimum": 1
          },
          "cost": {
            "$ref": "#/components/schemas/ElectricityPrice"
          }
        }
      },
      "EvParametersAtWaypoint": {
        "type": "object",
        "description": "The ev parameters that are specific to a waypoint.\n\nThis parameter is in a preview state, the API is stable, feature changes could be introduced in future.\n",
        "properties": {
          "weather": {
            "$ref": "#/components/schemas/Weather"
          },
          "chargingStation": {
            "$ref": "#/components/schemas/ChargingStation"
          },
          "powerConsumptionDuringService": {
            "description": "The electricity consumed during service by electrical appliances (e.g. crane, cooling, tail lift) [kWh].\n",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "default": 0
          }
        }
      },
      "Weather": {
        "type": "object",
        "description": "The weather at a waypoint. It is relevant to the electricity consumption calculation of electric vehicles. The \nweather is valid until the end of the route unless it is changed again at a subsequent waypoint. If no weather \nis configured at any waypoint, the weather is automatically determined using the [OpenMeteo](https://open-meteo.com) \nweather service. This is only available if the time of the route is no more than 14 days in the future. If the\nrouting is outside of this time box and no weather is configured at any waypoint, a temperature of 23°C and no \nwind is assumed for minimal impact on the consumption calculation. The parameter **windDirection** must not be\nnull if **windSpeed** is set to anything but 0.\n",
        "properties": {
          "temperature": {
            "description": "The average temperature at a waypoint at 2 meters above ground[°C]. Used to estimate the state of health of the \nbattery and consumption due to air conditioning.",
            "type": "number",
            "format": "double",
            "minimum": -50,
            "maximum": 70
          },
          "windSpeed": {
            "description": "The average wind speed at a waypoint at 10 meters above ground [km/h].",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "windDirection": {
            "$ref": "#/components/schemas/WindDirection"
          }
        }
      },
      "WeatherResponse": {
        "type": "object",
        "description": "The weather used for the electricity consumption calculation.\n",
        "properties": {
          "temperature": {
            "description": "The average temperature at 2 meters above ground [°C]. Used to estimate the state of health of the \nbattery and consumption due to air conditioning.",
            "type": "number",
            "format": "double",
            "minimum": -50,
            "maximum": 70
          },
          "windSpeed": {
            "description": "The average wind speed at 10 meters above ground [km/h].",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "windDirection": {
            "$ref": "#/components/schemas/WindDirection"
          }
        }
      },
      "WindDirection": {
        "description": "The wind direction (clockwise) at 10 meters above ground. North represents 0 degrees.",
        "type": "integer",
        "format": "int32"
      },
      "ChargingStation": {
        "type": "object",
        "description": "Defines the charging capabilities available at a waypoint.\n",
        "required": [
          "power",
          "currentType"
        ],
        "properties": {
          "power": {
            "description": "The power delivered by the charging station [kW].",
            "type": "integer",
            "format": "int32",
            "minimum": 0
          },
          "currentType": {
            "$ref": "#/components/schemas/CurrentType"
          },
          "setupTime": {
            "description": "The time to setup the connection [s].",
            "type": "integer",
            "format": "int32",
            "minimum": 0,
            "maximum": 31535999,
            "default": 0
          },
          "kWhPrice": {
            "description": "The price of one kWh in the currency defined in **options[currency]**.",
            "type": "number",
            "format": "double",
            "minimum": 0,
            "default": 0
          },
          "useServiceTimeForCharging": {
            "type": "boolean",
            "default": false,
            "description": "If true, the service time can be used for charging. This parameter will be ignored, if **serviceTime** is 0. This can have \nan influence on charging optimization because the additional time needed for charging is minimized."
          }
        }
      },
      "CurrentType": {
        "description": "The type of the electric current, direct or alternating.\n",
        "type": "string",
        "enum": [
          "DIRECT",
          "ALTERNATING"
        ],
        "x-enum-varnames": [
          "DIRECT",
          "ALTERNATING"
        ],
        "example": "DIRECT",
        "default": "ALTERNATING"
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "apiKey"
      }
    }
  },
  "security": [
    {
      "apiKeyAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://api.myptv.com/routing/v1"
    }
  ]
}
