openapi: 3.0.2
info:
  title: Routing API v8
  description: A location service providing customizable route calculations for a
    variety of vehicle types as well as pedestrian modes.
  termsOfService: https://legal.here.com/en-gb/terms
  license:
    name: HERE Documentation License
    url: https://legal.here.com/en-gb/terms/documentation-license
  version: 8.142.0
externalDocs:
  description: "The Developer guide, Release notes, and Migration guide are available\
    \ here."
  url: https://www.here.com/docs/category/routing-api-v8
servers:
- url: https://router.hereapi.com/v8
  description: Production server for the HERE Routing Service
security:
- Bearer: []
- ApiKey: []
tags:
- name: Routing
- name: API Information
  description: Additional API Information
paths:
  /routes:
    get:
      tags:
      - Routing
      summary: Calculate routes via GET
      description: "Calculates a route using a generic vehicle/pedestrian mode, e.g.\
        \ car, truck, pedestrian, etc..."
      operationId: calculateRoutes
      parameters:
      - name: transportMode
        in: query
        description: |
          Mode of transport to be used for the calculation of the route.

          Note:
          `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
          Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RouterMode'
      - name: origin
        in: query
        description: |
          A location defining the origin of the trip.

          ## Format

          Format: `Place[WaypointOptions]`

          * Place: `{lat},{lng}[PlaceOptions]`
          * PlaceOptions: `;option1=<value1>;option2=<value2>...`
          * WaypointOptions: `!option1=<value1>!option2=<value2>...`

          A waypoint consists of:

          * Exactly one place
          * Optional settings for the place
          * Optional settings for the waypoint itself

          ## Supported place options

          * `course`: int, degrees clock-wise from north. Indicating desired direction at the place.
            E.g. `90` indicating `east`. Often combined with `radius` and/or `minCourseDistance`
          * `sideOfStreetHint`: `{lat},{lng}`. Indicating the side of the street that should be
            used. E.g. if the location is to the left of the street, the router will prefer using
            that side in case the street has dividers. E.g.
            `52.511496,13.304140;sideOfStreetHint=52.512149,13.304076` indicates that the `north`
            side of the street should be preferred. This option is required, if `matchSideOfStreet`
            is set to `always`.
            Option cannot be combined with `radius`, `radiusPenalty` or `snapRadius`.
          * `displayLocation`: `{lat},{lng}`. Indicates the location on the map where this POI is to be displayed. This attribute is passed through to the `displayLocation` attribute in the corresponding `Place` object in the output.
          * `uTurnPermission`: enum `[allow, avoid]`. Specifies the U-Turn Permission mode at the stop-over waypoint. If unspecified, the permission will be determined by the global setting, avoid[features]=uTurns. This feature is not supported for pass-through waypoints and U-Turns are generally avoided in that case.
            + `allow` : Allow making a U-Turn at this stop-over waypoint
            + `avoid` : Avoid making a U-Turn at this stop-over waypoint
          * `matchSideOfStreet`: enum `[always, onlyIfDivided]`. Specifies how the location set by
            `sideOfStreetHint` should be handled. Requires `sideOfStreetHint` to be specified as
            well.
            + `always` : Always prefer the given side of street.
            + `onlyIfDivided`: Only prefer using side of street set by `sideOfStreetHint` in case
              the street has dividers. This is the default behavior.
          * `nameHint`: string. Causes the router to look for the place with the most similar name.
            The typical examples include: `North` being used to differentiate between
            interstates `I66 North` and `I66 South`, `Downtown Avenue` being used to correctly
            select a residental street.

            Empty string values are ignored.
          * `radius`: int, meters. Asks the router to consider all places within the given radius as
            potential candidates for route calculation. This can be either because it is not
            important which place is used, or because it is unknown. Radiuses wider than 200 meters are
            not supported.
            Option cannot be combined with `snapRadius`.
          * `radiusPenalty`: int, percentage 0-10000. Penalty as percentage: Used in conjunction with the `radius`
            parameter. Router will match the waypoint within the specified radius and apply a penalty to candidates
            based on their air distance to the waypoint. This penalty is proportional to the given percentage,
            where 100 is just the cost of the air distance, and 200 is twice the cost of the air distance. The penalty
            must be chosen so that, when multiplied by the radius, the result is less than or equal to 7200.
            Regardless, only values up to and including 10000 will be accepted. This means that a maximum penalty
            of 3600% is allowed for a radius of 200m, 7200% for 100m and 10000% for 72m and less.
            Higher values will result in an error response. `radiusPenalty` cannot be combined with `snapRadius`.
            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
          * `snapRadius`: int, meters. Instructs the router to match the waypoint, within the specified radius,
            to the most "significant" road. In contrast to the regular `radius` parameter, `snapRadius` sorts potential
            candidates in order of "significance". For example, a highway is more significant on a zoomed-out map than
            a national road, a national road is more significant than a city road, etc. Hence, `snapRadius` cannot be
            combined with `radius` or `radiusPenalty` parameters. The typical use case for `snapRadius` is when selecting a waypoint on a
            zoomed-out view of a map on a drag-and-drop interface. The expectation on such UIs is that only roads that
            are visible at that zoom level are considered for matching and a large snapRadius would enable that.
          * `minCourseDistance`: int, meters. Instructs the routing service to try to find a route that avoids actions for the indicated distance.
            For example, if the origin is determined by a moving vehicle, the user might not have time to react to early actions.
            Values greater than 2000 meters will be capped at 2000 meters.
          * `customizationIndex`: int. Specifies the zero-based index into the list of customizations
            specified in the `customizations` parameter. The customization at that index must be an
            Extension Map.
            Providing a `customizationIndex` indicates the this waypoint is located within that
            Extension Map.
            **Alpha**: This customization API parameter is in development. It may not be stable and is subject to change.
          * `segmentIdHint`: string. Causes the router to try and match to the specified segment.
            Waypoint coordinates need to be on the segment, otherwise waypoint will be matched ignoring the segment hint
            This parameter can be used when the waypoint is too close to more than one segment to force matching to a specific one.
          * `onRoadThreshold`: int, meters. allows specifying a distance within which
            the waypoint could be considered as being on a highway/bridge/tunnel/sliproad.
            Within this threshold, the attributes of the segments do not impact the matching.
            Outside the threshold only segments which aren't one of highway/bridge/tunnel/sliproad can be matched.

          ## Notes

          * `origin` currently does not support any WaypointOptions. They are available for `via` and `destination` waypoints.
          * Non-structural reserved characters in options' values need to be properly percent-encoded.
            Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: destination
        in: query
        description: |
          A location defining the destination of the trip.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter.

          `destination` supports the same options as the `origin` parameter, with the following exceptions:

          ## Additional waypoint options:

          * `stopDuration`: desired duration for the stop, in seconds. The section arriving at this
            via waypoint will have a `wait` post action reflecting the stopping time. The
            subsequent section will start at the arrival time of the former section + stop
            duration.
        required: true
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          duration:
            summary: Addition a stopDuration for an intermediate stop
            value: "51.611571,11.351608!stopDuration=600"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: via
        in: query
        description: |
          A location defining a via waypoint.

          A via waypoint is a location between origin and destination. There are two types of via waypoints:
          * `passThrough=false` (default) : The route will stop at the via waypoint, creating a new route section.
          * `passThrough=true` : The route will pass through the via waypoint.

          Multiple waypoints can be specified by using multiple via parameters like
          `via=...&via=...`, in which case the route will traverse these waypoints sequentially in
          the order specified in the request.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter.
          `via` supports the same options as the `origin` parameter, with the following exceptions:

          ## Additional waypoint options:
          * `stopDuration`: desired duration for the stop, in seconds.
          * `passThrough`: boolean. Default value is `false`.
             Setting to `true` asks the router to avoid the following during route calculation:
            + Introducing a stop at the waypoint.
            + Splitting the route into sections.
            + Changing the direction of travel.

            The following scenarios are not supported for `passThrough` parameter:
            + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.

          * `charging`: Structured string denoting a user-planned charging stop.

            Format: `charging=(power=<value>;current=<value>;voltage=<value>;supplyType=<value>;minDuration=<value>;maxDuration=<value>)`.

            The properties `power`, `current`, `voltage` and `supplyType` denote the characteristics of the chosen compatible connector at the station. These are all required.
            `minDuration` and `maxDuration` set the time bounds for the charging time. At least one of them is required. For most use cases we recommend to provide at least `minDuration`.
            The following are the specifications for the properties:
            + `power`:        value in kW, type: number. Rated power of the connector.
            + `voltage`:      value in V, type: number. Rated voltage of the connector.
            + `current`:      value in A, type: number. Rated current of the connector.
            + `supplyType`:   one of {"acSingle", "acThree", "dc"} for 1-phase AC, 3-phase AC and DC respectively, type: string.
            + `minDuration`:  value in seconds, type: int. Minimum time the user expects to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.
            + `maxDuration`:  value in seconds, type: int. Maximum time the user plans to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.

            For a user-planned charging stop, the following properties of the `ev` parameter are also required (see documentation for the `ev` parameter):
            * `initialCharge`
            * `maxCharge`
            * `chargingCurve`

            *Notes*:
              * This option is not supported for pass-through waypoints.
              * If `makeReachable=true` and `minDuration` is not provided (or if `minDuration=0`), route calculation may suggest not to charge on this station, for example,
                if a better station is available in the vicinity.
              * If `stopDuration` is provided then the total time at the stop is the higher of (`stopDuration`, `chargingSetupDuration` + `chargingDuration`).
              * If charging for `minDuration` would charge above `maxCharge`, the time spent charging is capped by `maxCharge`.
              * If `stopDuration` or `minDuration` exceed `chargingSetupDuration` + `chargingDuration`, the `waiting` post action duration is set to the remaining time.
              * If `makeReachable=true` is not set, the target charge is `maxChargeAfterChargingStation`, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.
              * In getRoutesByHandle requests, the target charge from the original route response is used, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.

          * `currentWeightChange`: Changes the value of `vehicle[currentWeight]` by this value. Enables the support of scenarios where the vehicle takes additional cargo or unloads its cargo along the route. Changes to the configuration of the vehicle, such as adding a trailer, aren't supported.
          Relative value in kilograms, beginning with either `+` or `-`. Available range: from -40000 to +40000 (inclusive).

             If this parameter is specified on any of the via waypoints or the request has the `vehicle[currentWeight]` set, the response contains the `currentWeight` value used for each section.

             When this parameter is provided, both `vehicle[currentWeight]` and `vehicle[grossWeight]` must also be provided.

             If the `currentWeight` value falls below 0 due to `currentWeightChange`, the system returns a critical violation notice, but a route is still calculated. The system returns notices only for negative values. Very low positive values are likely invalid, but don't trigger notices since they are greater than 0.

             The `currentWeightChange` value is stored in the `RouteHandle` at each waypoint and can't be changed in `RouteHandle` calculation requests.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          duration:
            summary: Addition a stopDuration for an intermediate stop
            value: "51.611571,11.351608!stopDuration=600"
          pass-through:
            summary: Setting pass-through parameter to avoid possibly making a u-turn
              for a stop
            value: "51.611571,11.351608!passThrough=true"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
          currentWeightChange:
            summary: Adding a weight of 500 kg to the vehicle for the remainder of
              the route.
            value: "52.531052,13.384872!currentWeightChange=+500"
          charging:
            summary: Waypoint with a 100 kW charging station; charging at this station
              for at least 20 minutes.
            value: "51.611571,11.351608!charging=(power=100;current=250;voltage=400;supplyType=dc;minDuration=1200)"
      - name: departureTime
        in: query
        description: |
          Specifies the time of departure as defined by either `date-time` or `full-date` `T`
          `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

          The requested time is converted to local time at origin. When the optional timezone offset
          is not specified, time is assumed to be local. The special value `any` can be used to
          indicate that time should not be taken into account during routing. If neither
          `departureTime` or `arrivalTime` are specified, current time at departure place will be
          used. All time values in the response are returned in the timezone of each location.

          **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
          `traffic[mode]=default` or no `traffic[mode]` are specified.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/TimeWithAny'
      - name: arrivalTime
        in: query
        description: |
          Specifies the time of arrival as defined by either `date-time` or `full-date` `T` `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).
          The requested time is converted to the local time at destination. When the optional timezone offset is
          not specified, time is assumed to be local.
          All `Time` values in the response are returned in the timezone of each location.

          Note : The following features do not support the arrivalTime parameter:
          * EV Routing
          * Route Handle
          * Route Import
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Time'
      - name: routingMode
        in: query
        description: |
          Specifies which optimization is applied during the calculation.

          * `fast`: Route calculation from start to destination optimized by travel time. In many
            cases, the route returned by `fast` mode may not be the route with the fastest
            possible travel time. For example, the routing service may favor a route that remains on
            a highway, even if a faster travel time can be achieved by taking a detour or shortcut
            through an inconvenient side road.
          * `short`: Route calculation from start to destination disregarding any speed information.
            In this mode, the distance of the route is minimized, while keeping the route sensible.
            This includes, for example, penalizing turns. Because of that, the resulting route will
            not necessarily be the one with minimal distance.

          Notes:
          * The following Transport modes only support `fast` routingMode
            - `bicycle`
            - `bus`
            - `pedestrian`
            - `privateBus`
            - `scooter`
            - `taxi`
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RoutingMode'
      - name: alternatives
        in: query
        description: Number of alternative routes to return aside from the optimal
          route.
        required: false
        style: form
        explode: true
        schema:
          maximum: 6
          minimum: 0
          type: integer
          default: 0
      - name: avoid
        in: query
        description: |
          Avoid roads that violate certain features of road network or that go through
          user-specified areas, segments, or zones.

          Note that if the origin, destination, or any via is in an avoided area or on an avoided
          feature, a route is produced that violates the avoid restriction. In such a case, the
          route is trying to minimize the violation of the avoid restrictions and can therefore
          include large deviations from a route that is calculated without these avoid
          restrictions.

          It is also possible that the produced route violates the avoid restriction in between
          waypoints, if no other route is possible or too hard to find. One such example is
          requesting a route to an island that is only reachable with ferries while specifying
          `avoid[features]=ferry`.

          When using avoid features, it's not guaranteed to get alternatives. Further, they can even
          cause the route calculation to fail, if no route is possible or too hard to find.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Avoid'
        examples:
          features:
            summary: Avoid specific features like `tunnel' or `ferry`
            value:
              features: "tunnel,ferry"
          area:
            summary: Avoid a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Avoid multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
          complete:
            summary: Avoid both features and geographical bounding boxes
            value:
              features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
          segment:
            summary: Avoid a segment using its identifier
            value:
              segments: here:cm:segment:207551710
          segmentsWithDirection:
            summary: "Avoid two segments using their identifiers, also specifying\
              \ the direction"
            value:
              segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
          zones:
            summary: Avoid multiple environmental zones using identifiers
            value:
              zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
          zoneCategory:
            summary: Avoid all environmental zones
            value:
              zoneCategories: environmental
          zoneCategoryWithException:
            summary: Avoid all environmental zones except a specific one
            value:
              zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
          truckRoadTypes:
            summary: Avoid the specified truck road types
            value:
              truckRoadTypes: "BK1,BK2,BK3,BK4"
          tollTransponders:
            summary: Avoid all toll transponders
            value:
              tollTransponders: all
      - name: allow
        in: query
        description: Explicitly allow features that require users to opt in.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Allow'
      - name: exclude
        in: query
        description: |
          Defines properties which will be strictly excluded from route calculation.

          Note - Exclude options guarantees exclusion, but doesn't guarantee
          finding a route.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Exclude'
        examples:
          country:
            summary: Exclude the country of Switzerland from the route calculation
            value:
              countries: CHE
          countries:
            summary: Exclude both the country of Switzerland and the country of Austria
              from the route calculation
            value:
              countries: "CHE,AUT"
          state:
            summary: Exclude DC state of USA from the route calculation
            value:
              states: USA:DC
          states:
            summary: Exclude both states DC and TX of USA from the route calculation
            value:
              states: "USA:DC,TX"
          states_multicountry:
            summary: "Exclude both states DC, TX of USA and AL state of Canada from\
              \ the route calculation"
            value:
              states: "USA:DC,TX|CAN:AL"
          area:
            summary: Exclude a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Exclude multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
      - name: units
        in: query
        description: |
          Units of measurement used in guidance instructions. The default is `metric`.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/Units'
      - name: lang
        in: query
        description: |
          Specifies the list of preferred languages of the response.
          The first supported language from the list will be used for for the response if available.
          The next languages are used as fallbacks if the first one is not available.
          Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
          The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
          A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

          Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          default:
          - en-US
        example: "zh-tw,en-gb,en-us"
      - name: return
        in: query
        description: |
          Defines which attributes are included in the response as part of data representation of a
          `Route` or `Section`.

          * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
             Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
          * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
          * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
          * `summary` - Include summary for the section.
          * `travelSummary` - Include summary for the travel portion of the section.
          * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
          * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
             **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
          * `typicalDuration` - Include route duration under typical traffic conditions.
          * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
          * `routeHandle` - Encode calculated route and return a handle which can be used with
            `routes/{routeHandle}` to decode the route at a later point in time.
          * `passthrough` - Include information on passthrough via waypoints in the section.
          * `incidents` - Include a list of all incidents applicable to each section.
             Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
             Incidents are localized to the requested language.
          * `routingZones` - Include information about routing zones each section goes through.
          * `truckRoadTypes` - Include information about road types each section goes through.
          * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
            parameters such as vehicle dimensions in the query,
            e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
            If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

            **Note**:
              - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
              Therefore the request will return the most "typical" toll cost for the parameters provided.
              - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
          * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
          * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
          * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

          The following restrictions apply when specifying the `return` parameter:

          * If `actions` is requested, then `polyline` must also be requested as well.
          * If `instructions` is requested, then `actions` must also be requested as well.
          * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
          * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Return'
      - name: spans
        in: query
        description: |
          Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
          For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

          This parameter also requires that the `polyline` option is set within the `return` parameter.

          **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Spans'
      - name: truck
        in: query
        description: |
          Truck-specific parameters.

          **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
        required: false
        deprecated: true
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Truck'
      - name: vehicle
        in: query
        description: |
          Vehicle-specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Vehicle'
      - name: consumptionModel
        in: query
        description: |
          Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

          * `empirical`
          * `physical`

          **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ConsumptionModel'
      - name: ev
        in: query
        description: |
          EV properties to be used for calculating consumption.

          There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

          Required `empirical` model properties:
          * `freeFlowSpeedTable`

          Required `physical` model properties:
          * `driveEfficiency`
          * `recuperationEfficiency`

          When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
          * `rollingResistanceCoefficient`
          * `airDragCoefficient`
          * `currentWeight`
          * `frontalArea` or combination of `width` and `height`

          The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
          * `initialCharge`
          * `maxCharge`

          Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
          * `minChargeAtDestination`
          * `minChargeAtFirstChargingStation`
          * `minChargeAtChargingStation`

          The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
          * `chargingCurve`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

          The following properties are additionally required for the router to automatically enhance the route with charging stops
          * `makeReachable` set to `true`
          * `chargingCurve`
          * `connectorTypes`
          * `maxChargeAfterChargingStation`
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/EV'
        examples:
          physicalModelExample:
            summary: Typical physical model values.
            value:
              driveEfficiency: 0.8
              recuperationEfficiency: 0.7
      - name: fuel
        in: query
        description: |
          **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

          Fuel parameters to be used for calculating consumption and related CO2 emission.

          The following attributes are required for calculating consumption:
            * `type`
            * `freeFlowSpeedTable`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Fuel'
      - name: driver
        in: query
        description: |
          Driver parameters to be used for calculating routes with automatically added
          rest stops.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Driver'
      - name: "pedestrian[speed]"
        in: query
        description: |
          Walking speed in meters per second. Influences the duration of walking segments along the route.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/PedestrianSpeed'
      - name: scooter
        in: query
        description: |
          Scooter-specific parameters.
            * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
              If not provided, the default is to avoid highways.
              There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
              avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
              to use highways even if `allowHighway` is set to `true`.
              The following values are possible:
                * `true`: The scooter is allowed to use highways.
                * `false`: The scooter is not allowed to use highways.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Scooter'
      - name: currency
        in: query
        description: |
          Currency code compliant to ISO 4217.
          Costs for the calculated route will be returned using this currency.

          If not provided, the router will specify it.
          On a best-effort basis, the router will try to specify the costs in the local currency.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: customizations
        in: query
        description: |
          Specifies a list of customizations to be used. The data provided by these customizations either
          replaces or augments the standard HERE map data. The provided credentials must authorize access
          to all of the customizations specified.

          **Alpha**: This API is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationHRN'
      - name: taxi
        in: query
        description: |
          Taxi-specific parameters.
            * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
              taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
              allowed on taxi-only roads at the start of the route and at the destination.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Taxi'
      - name: tolls
        in: query
        description: |
          Defines properties which control toll calculation and reporting in the response.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Tolls'
      - name: maxSpeedOnSegment
        in: query
        description: |
          Specify new base speed for segment by value. Affects route selection and the ETA. Cannot increase base speed on segment.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/MaxSpeedOnSegment'
        examples:
          speed:
            summary: Setting new base speed on segment
            value:
              speed: here:cm:segment:76771992#*;speed=42
      - name: traffic
        in: query
        description: Traffic specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Traffic'
      - name: billingTag
        in: query
        description: |
          A list of up to six billing tags, separated by the `+` sign.

          This parameter provides a way to track your platform usage.
          For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
        required: false
        style: form
        explode: true
        schema:
          pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
          type: string
          example: ABCD+EFGH
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Routes API response in case of success
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResponse'
              examples:
                routeResponseExample:
                  $ref: '#/components/examples/routeResponseExample'
                evRouteResponseExample:
                  $ref: '#/components/examples/evRouteResponseExample'
        "400":
          description: |
            Failure to parse the request, caused by, for example, invalid parameter values such as
            `transportMode=spaceShuttle` or `alternatives=999`.

            Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
            for details on route calculation errors.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/400RoutingErrorResponseExample'
        "401":
          description: API response in case of unauthorized access.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/401errorResponseExample'
        "403":
          description: |
            Not allowed, such as trying to calculate routes in Japan without having necessary
            permissions.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Routing403ErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/403RoutingErrorResponseExample'
        "500":
          description: Internal server error
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500RoutingErrorResponseExample'
    post:
      tags:
      - Routing
      summary: Calculate routes via POST
      description: |
        Calculates a route using a generic vehicle/pedestrian mode, e.g. car, truck, pedestrian, etc...

        At the moment, only selected parameters are permitted in the POST body,
        particularly those that may be restricted in the query string due to request size limitations.
        See the request body section below for details. All other parameters must be provided in the query string.
        If a parameter is provided in both the query string and the POST body, their values are merged.

        Post body size limit is 10MiB.
      operationId: calculateRoutesPost
      parameters:
      - name: transportMode
        in: query
        description: |
          Mode of transport to be used for the calculation of the route.

          Note:
          `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
          Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RouterMode'
      - name: origin
        in: query
        description: |
          A location defining the origin of the trip.

          ## Format

          Format: `Place[WaypointOptions]`

          * Place: `{lat},{lng}[PlaceOptions]`
          * PlaceOptions: `;option1=<value1>;option2=<value2>...`
          * WaypointOptions: `!option1=<value1>!option2=<value2>...`

          A waypoint consists of:

          * Exactly one place
          * Optional settings for the place
          * Optional settings for the waypoint itself

          ## Supported place options

          * `course`: int, degrees clock-wise from north. Indicating desired direction at the place.
            E.g. `90` indicating `east`. Often combined with `radius` and/or `minCourseDistance`
          * `sideOfStreetHint`: `{lat},{lng}`. Indicating the side of the street that should be
            used. E.g. if the location is to the left of the street, the router will prefer using
            that side in case the street has dividers. E.g.
            `52.511496,13.304140;sideOfStreetHint=52.512149,13.304076` indicates that the `north`
            side of the street should be preferred. This option is required, if `matchSideOfStreet`
            is set to `always`.
            Option cannot be combined with `radius`, `radiusPenalty` or `snapRadius`.
          * `displayLocation`: `{lat},{lng}`. Indicates the location on the map where this POI is to be displayed. This attribute is passed through to the `displayLocation` attribute in the corresponding `Place` object in the output.
          * `uTurnPermission`: enum `[allow, avoid]`. Specifies the U-Turn Permission mode at the stop-over waypoint. If unspecified, the permission will be determined by the global setting, avoid[features]=uTurns. This feature is not supported for pass-through waypoints and U-Turns are generally avoided in that case.
            + `allow` : Allow making a U-Turn at this stop-over waypoint
            + `avoid` : Avoid making a U-Turn at this stop-over waypoint
          * `matchSideOfStreet`: enum `[always, onlyIfDivided]`. Specifies how the location set by
            `sideOfStreetHint` should be handled. Requires `sideOfStreetHint` to be specified as
            well.
            + `always` : Always prefer the given side of street.
            + `onlyIfDivided`: Only prefer using side of street set by `sideOfStreetHint` in case
              the street has dividers. This is the default behavior.
          * `nameHint`: string. Causes the router to look for the place with the most similar name.
            The typical examples include: `North` being used to differentiate between
            interstates `I66 North` and `I66 South`, `Downtown Avenue` being used to correctly
            select a residental street.

            Empty string values are ignored.
          * `radius`: int, meters. Asks the router to consider all places within the given radius as
            potential candidates for route calculation. This can be either because it is not
            important which place is used, or because it is unknown. Radiuses wider than 200 meters are
            not supported.
            Option cannot be combined with `snapRadius`.
          * `radiusPenalty`: int, percentage 0-10000. Penalty as percentage: Used in conjunction with the `radius`
            parameter. Router will match the waypoint within the specified radius and apply a penalty to candidates
            based on their air distance to the waypoint. This penalty is proportional to the given percentage,
            where 100 is just the cost of the air distance, and 200 is twice the cost of the air distance. The penalty
            must be chosen so that, when multiplied by the radius, the result is less than or equal to 7200.
            Regardless, only values up to and including 10000 will be accepted. This means that a maximum penalty
            of 3600% is allowed for a radius of 200m, 7200% for 100m and 10000% for 72m and less.
            Higher values will result in an error response. `radiusPenalty` cannot be combined with `snapRadius`.
            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
          * `snapRadius`: int, meters. Instructs the router to match the waypoint, within the specified radius,
            to the most "significant" road. In contrast to the regular `radius` parameter, `snapRadius` sorts potential
            candidates in order of "significance". For example, a highway is more significant on a zoomed-out map than
            a national road, a national road is more significant than a city road, etc. Hence, `snapRadius` cannot be
            combined with `radius` or `radiusPenalty` parameters. The typical use case for `snapRadius` is when selecting a waypoint on a
            zoomed-out view of a map on a drag-and-drop interface. The expectation on such UIs is that only roads that
            are visible at that zoom level are considered for matching and a large snapRadius would enable that.
          * `minCourseDistance`: int, meters. Instructs the routing service to try to find a route that avoids actions for the indicated distance.
            For example, if the origin is determined by a moving vehicle, the user might not have time to react to early actions.
            Values greater than 2000 meters will be capped at 2000 meters.
          * `customizationIndex`: int. Specifies the zero-based index into the list of customizations
            specified in the `customizations` parameter. The customization at that index must be an
            Extension Map.
            Providing a `customizationIndex` indicates the this waypoint is located within that
            Extension Map.
            **Alpha**: This customization API parameter is in development. It may not be stable and is subject to change.
          * `segmentIdHint`: string. Causes the router to try and match to the specified segment.
            Waypoint coordinates need to be on the segment, otherwise waypoint will be matched ignoring the segment hint
            This parameter can be used when the waypoint is too close to more than one segment to force matching to a specific one.
          * `onRoadThreshold`: int, meters. allows specifying a distance within which
            the waypoint could be considered as being on a highway/bridge/tunnel/sliproad.
            Within this threshold, the attributes of the segments do not impact the matching.
            Outside the threshold only segments which aren't one of highway/bridge/tunnel/sliproad can be matched.

          ## Notes

          * `origin` currently does not support any WaypointOptions. They are available for `via` and `destination` waypoints.
          * Non-structural reserved characters in options' values need to be properly percent-encoded.
            Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: destination
        in: query
        description: |
          A location defining the destination of the trip.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter.

          `destination` supports the same options as the `origin` parameter, with the following exceptions:

          ## Additional waypoint options:

          * `stopDuration`: desired duration for the stop, in seconds. The section arriving at this
            via waypoint will have a `wait` post action reflecting the stopping time. The
            subsequent section will start at the arrival time of the former section + stop
            duration.
        required: true
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          duration:
            summary: Addition a stopDuration for an intermediate stop
            value: "51.611571,11.351608!stopDuration=600"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: via
        in: query
        description: |
          A location defining a via waypoint.

          A via waypoint is a location between origin and destination. There are two types of via waypoints:
          * `passThrough=false` (default) : The route will stop at the via waypoint, creating a new route section.
          * `passThrough=true` : The route will pass through the via waypoint.

          Multiple waypoints can be specified by using multiple via parameters like
          `via=...&via=...`, in which case the route will traverse these waypoints sequentially in
          the order specified in the request.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter.
          `via` supports the same options as the `origin` parameter, with the following exceptions:

          ## Additional waypoint options:
          * `stopDuration`: desired duration for the stop, in seconds.
          * `passThrough`: boolean. Default value is `false`.
             Setting to `true` asks the router to avoid the following during route calculation:
            + Introducing a stop at the waypoint.
            + Splitting the route into sections.
            + Changing the direction of travel.

            The following scenarios are not supported for `passThrough` parameter:
            + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.

          * `charging`: Structured string denoting a user-planned charging stop.

            Format: `charging=(power=<value>;current=<value>;voltage=<value>;supplyType=<value>;minDuration=<value>;maxDuration=<value>)`.

            The properties `power`, `current`, `voltage` and `supplyType` denote the characteristics of the chosen compatible connector at the station. These are all required.
            `minDuration` and `maxDuration` set the time bounds for the charging time. At least one of them is required. For most use cases we recommend to provide at least `minDuration`.
            The following are the specifications for the properties:
            + `power`:        value in kW, type: number. Rated power of the connector.
            + `voltage`:      value in V, type: number. Rated voltage of the connector.
            + `current`:      value in A, type: number. Rated current of the connector.
            + `supplyType`:   one of {"acSingle", "acThree", "dc"} for 1-phase AC, 3-phase AC and DC respectively, type: string.
            + `minDuration`:  value in seconds, type: int. Minimum time the user expects to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.
            + `maxDuration`:  value in seconds, type: int. Maximum time the user plans to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.

            For a user-planned charging stop, the following properties of the `ev` parameter are also required (see documentation for the `ev` parameter):
            * `initialCharge`
            * `maxCharge`
            * `chargingCurve`

            *Notes*:
              * This option is not supported for pass-through waypoints.
              * If `makeReachable=true` and `minDuration` is not provided (or if `minDuration=0`), route calculation may suggest not to charge on this station, for example,
                if a better station is available in the vicinity.
              * If `stopDuration` is provided then the total time at the stop is the higher of (`stopDuration`, `chargingSetupDuration` + `chargingDuration`).
              * If charging for `minDuration` would charge above `maxCharge`, the time spent charging is capped by `maxCharge`.
              * If `stopDuration` or `minDuration` exceed `chargingSetupDuration` + `chargingDuration`, the `waiting` post action duration is set to the remaining time.
              * If `makeReachable=true` is not set, the target charge is `maxChargeAfterChargingStation`, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.
              * In getRoutesByHandle requests, the target charge from the original route response is used, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.

          * `currentWeightChange`: Changes the value of `vehicle[currentWeight]` by this value. Enables the support of scenarios where the vehicle takes additional cargo or unloads its cargo along the route. Changes to the configuration of the vehicle, such as adding a trailer, aren't supported.
          Relative value in kilograms, beginning with either `+` or `-`. Available range: from -40000 to +40000 (inclusive).

             If this parameter is specified on any of the via waypoints or the request has the `vehicle[currentWeight]` set, the response contains the `currentWeight` value used for each section.

             When this parameter is provided, both `vehicle[currentWeight]` and `vehicle[grossWeight]` must also be provided.

             If the `currentWeight` value falls below 0 due to `currentWeightChange`, the system returns a critical violation notice, but a route is still calculated. The system returns notices only for negative values. Very low positive values are likely invalid, but don't trigger notices since they are greater than 0.

             The `currentWeightChange` value is stored in the `RouteHandle` at each waypoint and can't be changed in `RouteHandle` calculation requests.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
              of a moving vehicle
            value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          duration:
            summary: Addition a stopDuration for an intermediate stop
            value: "51.611571,11.351608!stopDuration=600"
          pass-through:
            summary: Setting pass-through parameter to avoid possibly making a u-turn
              for a stop
            value: "51.611571,11.351608!passThrough=true"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
          currentWeightChange:
            summary: Adding a weight of 500 kg to the vehicle for the remainder of
              the route.
            value: "52.531052,13.384872!currentWeightChange=+500"
          charging:
            summary: Waypoint with a 100 kW charging station; charging at this station
              for at least 20 minutes.
            value: "51.611571,11.351608!charging=(power=100;current=250;voltage=400;supplyType=dc;minDuration=1200)"
      - name: departureTime
        in: query
        description: |
          Specifies the time of departure as defined by either `date-time` or `full-date` `T`
          `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

          The requested time is converted to local time at origin. When the optional timezone offset
          is not specified, time is assumed to be local. The special value `any` can be used to
          indicate that time should not be taken into account during routing. If neither
          `departureTime` or `arrivalTime` are specified, current time at departure place will be
          used. All time values in the response are returned in the timezone of each location.

          **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
          `traffic[mode]=default` or no `traffic[mode]` are specified.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/TimeWithAny'
      - name: arrivalTime
        in: query
        description: |
          Specifies the time of arrival as defined by either `date-time` or `full-date` `T` `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).
          The requested time is converted to the local time at destination. When the optional timezone offset is
          not specified, time is assumed to be local.
          All `Time` values in the response are returned in the timezone of each location.

          Note : The following features do not support the arrivalTime parameter:
          * EV Routing
          * Route Handle
          * Route Import
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Time'
      - name: routingMode
        in: query
        description: |
          Specifies which optimization is applied during the calculation.

          * `fast`: Route calculation from start to destination optimized by travel time. In many
            cases, the route returned by `fast` mode may not be the route with the fastest
            possible travel time. For example, the routing service may favor a route that remains on
            a highway, even if a faster travel time can be achieved by taking a detour or shortcut
            through an inconvenient side road.
          * `short`: Route calculation from start to destination disregarding any speed information.
            In this mode, the distance of the route is minimized, while keeping the route sensible.
            This includes, for example, penalizing turns. Because of that, the resulting route will
            not necessarily be the one with minimal distance.

          Notes:
          * The following Transport modes only support `fast` routingMode
            - `bicycle`
            - `bus`
            - `pedestrian`
            - `privateBus`
            - `scooter`
            - `taxi`
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RoutingMode'
      - name: alternatives
        in: query
        description: Number of alternative routes to return aside from the optimal
          route.
        required: false
        style: form
        explode: true
        schema:
          maximum: 6
          minimum: 0
          type: integer
          default: 0
      - name: avoid
        in: query
        description: |
          Avoid roads that violate certain features of road network or that go through
          user-specified areas, segments, or zones.

          Note that if the origin, destination, or any via is in an avoided area or on an avoided
          feature, a route is produced that violates the avoid restriction. In such a case, the
          route is trying to minimize the violation of the avoid restrictions and can therefore
          include large deviations from a route that is calculated without these avoid
          restrictions.

          It is also possible that the produced route violates the avoid restriction in between
          waypoints, if no other route is possible or too hard to find. One such example is
          requesting a route to an island that is only reachable with ferries while specifying
          `avoid[features]=ferry`.

          When using avoid features, it's not guaranteed to get alternatives. Further, they can even
          cause the route calculation to fail, if no route is possible or too hard to find.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Avoid'
        examples:
          features:
            summary: Avoid specific features like `tunnel' or `ferry`
            value:
              features: "tunnel,ferry"
          area:
            summary: Avoid a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Avoid multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
          complete:
            summary: Avoid both features and geographical bounding boxes
            value:
              features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
          segment:
            summary: Avoid a segment using its identifier
            value:
              segments: here:cm:segment:207551710
          segmentsWithDirection:
            summary: "Avoid two segments using their identifiers, also specifying\
              \ the direction"
            value:
              segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
          zones:
            summary: Avoid multiple environmental zones using identifiers
            value:
              zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
          zoneCategory:
            summary: Avoid all environmental zones
            value:
              zoneCategories: environmental
          zoneCategoryWithException:
            summary: Avoid all environmental zones except a specific one
            value:
              zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
          truckRoadTypes:
            summary: Avoid the specified truck road types
            value:
              truckRoadTypes: "BK1,BK2,BK3,BK4"
          tollTransponders:
            summary: Avoid all toll transponders
            value:
              tollTransponders: all
      - name: allow
        in: query
        description: Explicitly allow features that require users to opt in.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Allow'
      - name: exclude
        in: query
        description: |
          Defines properties which will be strictly excluded from route calculation.

          Note - Exclude options guarantees exclusion, but doesn't guarantee
          finding a route.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Exclude'
        examples:
          country:
            summary: Exclude the country of Switzerland from the route calculation
            value:
              countries: CHE
          countries:
            summary: Exclude both the country of Switzerland and the country of Austria
              from the route calculation
            value:
              countries: "CHE,AUT"
          state:
            summary: Exclude DC state of USA from the route calculation
            value:
              states: USA:DC
          states:
            summary: Exclude both states DC and TX of USA from the route calculation
            value:
              states: "USA:DC,TX"
          states_multicountry:
            summary: "Exclude both states DC, TX of USA and AL state of Canada from\
              \ the route calculation"
            value:
              states: "USA:DC,TX|CAN:AL"
          area:
            summary: Exclude a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Exclude multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
      - name: units
        in: query
        description: |
          Units of measurement used in guidance instructions. The default is `metric`.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/Units'
      - name: lang
        in: query
        description: |
          Specifies the list of preferred languages of the response.
          The first supported language from the list will be used for for the response if available.
          The next languages are used as fallbacks if the first one is not available.
          Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
          The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
          A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

          Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          default:
          - en-US
        example: "zh-tw,en-gb,en-us"
      - name: return
        in: query
        description: |
          Defines which attributes are included in the response as part of data representation of a
          `Route` or `Section`.

          * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
             Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
          * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
          * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
          * `summary` - Include summary for the section.
          * `travelSummary` - Include summary for the travel portion of the section.
          * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
          * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
             **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
          * `typicalDuration` - Include route duration under typical traffic conditions.
          * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
          * `routeHandle` - Encode calculated route and return a handle which can be used with
            `routes/{routeHandle}` to decode the route at a later point in time.
          * `passthrough` - Include information on passthrough via waypoints in the section.
          * `incidents` - Include a list of all incidents applicable to each section.
             Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
             Incidents are localized to the requested language.
          * `routingZones` - Include information about routing zones each section goes through.
          * `truckRoadTypes` - Include information about road types each section goes through.
          * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
            parameters such as vehicle dimensions in the query,
            e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
            If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

            **Note**:
              - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
              Therefore the request will return the most "typical" toll cost for the parameters provided.
              - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
          * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
          * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
          * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

          The following restrictions apply when specifying the `return` parameter:

          * If `actions` is requested, then `polyline` must also be requested as well.
          * If `instructions` is requested, then `actions` must also be requested as well.
          * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
          * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Return'
      - name: spans
        in: query
        description: |
          Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
          For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

          This parameter also requires that the `polyline` option is set within the `return` parameter.

          **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Spans'
      - name: truck
        in: query
        description: |
          Truck-specific parameters.

          **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
        required: false
        deprecated: true
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Truck'
      - name: vehicle
        in: query
        description: |
          Vehicle-specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Vehicle'
      - name: consumptionModel
        in: query
        description: |
          Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

          * `empirical`
          * `physical`

          **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ConsumptionModel'
      - name: ev
        in: query
        description: |
          EV properties to be used for calculating consumption.

          There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

          Required `empirical` model properties:
          * `freeFlowSpeedTable`

          Required `physical` model properties:
          * `driveEfficiency`
          * `recuperationEfficiency`

          When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
          * `rollingResistanceCoefficient`
          * `airDragCoefficient`
          * `currentWeight`
          * `frontalArea` or combination of `width` and `height`

          The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
          * `initialCharge`
          * `maxCharge`

          Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
          * `minChargeAtDestination`
          * `minChargeAtFirstChargingStation`
          * `minChargeAtChargingStation`

          The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
          * `chargingCurve`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

          The following properties are additionally required for the router to automatically enhance the route with charging stops
          * `makeReachable` set to `true`
          * `chargingCurve`
          * `connectorTypes`
          * `maxChargeAfterChargingStation`
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/EV'
        examples:
          physicalModelExample:
            summary: Typical physical model values.
            value:
              driveEfficiency: 0.8
              recuperationEfficiency: 0.7
      - name: fuel
        in: query
        description: |
          **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

          Fuel parameters to be used for calculating consumption and related CO2 emission.

          The following attributes are required for calculating consumption:
            * `type`
            * `freeFlowSpeedTable`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Fuel'
      - name: driver
        in: query
        description: |
          Driver parameters to be used for calculating routes with automatically added
          rest stops.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Driver'
      - name: "pedestrian[speed]"
        in: query
        description: |
          Walking speed in meters per second. Influences the duration of walking segments along the route.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/PedestrianSpeed'
      - name: scooter
        in: query
        description: |
          Scooter-specific parameters.
            * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
              If not provided, the default is to avoid highways.
              There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
              avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
              to use highways even if `allowHighway` is set to `true`.
              The following values are possible:
                * `true`: The scooter is allowed to use highways.
                * `false`: The scooter is not allowed to use highways.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Scooter'
      - name: currency
        in: query
        description: |
          Currency code compliant to ISO 4217.
          Costs for the calculated route will be returned using this currency.

          If not provided, the router will specify it.
          On a best-effort basis, the router will try to specify the costs in the local currency.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: customizations
        in: query
        description: |
          Specifies a list of customizations to be used. The data provided by these customizations either
          replaces or augments the standard HERE map data. The provided credentials must authorize access
          to all of the customizations specified.

          **Alpha**: This API is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/CustomizationHRN'
      - name: taxi
        in: query
        description: |
          Taxi-specific parameters.
            * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
              taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
              allowed on taxi-only roads at the start of the route and at the destination.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Taxi'
      - name: tolls
        in: query
        description: |
          Defines properties which control toll calculation and reporting in the response.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Tolls'
      - name: maxSpeedOnSegment
        in: query
        description: |
          Specify new base speed for segment by value. Affects route selection and the ETA. Cannot increase base speed on segment.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/MaxSpeedOnSegment'
        examples:
          speed:
            summary: Setting new base speed on segment
            value:
              speed: here:cm:segment:76771992#*;speed=42
      - name: traffic
        in: query
        description: Traffic specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Traffic'
      - name: billingTag
        in: query
        description: |
          A list of up to six billing tags, separated by the `+` sign.

          This parameter provides a way to track your platform usage.
          For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
        required: false
        style: form
        explode: true
        schema:
          pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
          type: string
          example: ABCD+EFGH
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateRoutesPostParameters'
            examples:
              avoid:
                $ref: '#/components/examples/calculateRoutesPostAvoidExample'
              exclude:
                $ref: '#/components/examples/calculateRoutesPostExcludeExample'
              ev:
                $ref: '#/components/examples/calculateRoutesPostEvExample'
              maxSpeedOnSegment:
                $ref: '#/components/examples/calculateRoutesPostMaxSpeedOnSegmentExample'
      responses:
        "200":
          description: Routes API response in case of success
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResponse'
              examples:
                routeResponseExample:
                  $ref: '#/components/examples/routeResponseExample'
                evRouteResponseExample:
                  $ref: '#/components/examples/evRouteResponseExample'
        "400":
          description: |
            Failure to parse the request, caused by, for example, invalid parameter values such as
            `transportMode=spaceShuttle` or `alternatives=999`.

            Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
            for details on route calculation errors.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/400RoutingErrorResponseExample'
        "401":
          description: API response in case of unauthorized access.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/401errorResponseExample'
        "403":
          description: |
            Not allowed, such as trying to calculate routes in Japan without having necessary
            permissions.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Routing403ErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/403RoutingErrorResponseExample'
        "500":
          description: Internal server error
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500RoutingErrorResponseExample'
  /routes/{routeHandle}:
    get:
      tags:
      - Routing
      summary: Get route by handle via GET
      description: |
        Decodes and returns a route from a previously calculated route handle.

        **Disclaimer: A route handle is not suitable for persistent route storage! It can be
        invalidated at any time.**

        A route handle encodes a previously calculated route. A route can be decoded from a handle
        as long as the service uses the same map data and encoding that were used when retrieving the handle.

        Thus it is suitable for caching routes compactly. It can be used to retrieve updated traffic
        information or other data along the route. However, a user should be prepared to recalculate
        the route when decoding the handle fails.

        All parameters of the `/routes` endpoint are supported, except for `destination`, `via`,
        `alternatives` and `routingMode`. See also the `return` parameter of `/routes` endpoint.

        The `origin` parameter can be provided to update the start of the previously calculated
        route.

        The `transportMode` parameter does not have to match the transport mode previously used for
        route calculation. However, when using a different transport mode, the request may fail,
        e.g. when the route has road segments forbidden for the provided transport mode.

        Please refer to the Developer Guide for more information and examples.
      operationId: getRoutesByHandle
      parameters:
      - name: routeHandle
        in: path
        description: |
          Route handle returned from a previous route calculation.

          See `return` parameter of `/routes` endpoint for more information.
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: transportMode
        in: query
        description: |
          Mode of transport to be used for the calculation of the route.

          Note:
          `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
          Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RouterMode'
      - name: origin
        in: query
        description: |
          A location defining the origin of the trip. The origin has to be located along the
          previously calculated route.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter in `Calculate routes via GET`.

          This parameter supports the same options as the `origin` parameter in `Calculate routes via GET`,
          with the following exceptions:

          ## Notes

          * `minCourseDistance`: While this parameter can be provided for compatibility reasons,
            it will not affect the result of a getRoutesByHandle request.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius an uncertain GPS coordinate of a moving
              vehicle
            value: "51.611571,11.351608;course=170;radius=20"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: departureTime
        in: query
        description: |
          Specifies the time of departure as defined by either `date-time` or `full-date` `T`
          `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

          The requested time is converted to local time at origin. When the optional timezone offset
          is not specified, time is assumed to be local. The special value `any` can be used to
          indicate that time should not be taken into account during routing. If neither
          `departureTime` or `arrivalTime` are specified, current time at departure place will be
          used. All time values in the response are returned in the timezone of each location.

          **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
          `traffic[mode]=default` or no `traffic[mode]` are specified.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/TimeWithAny'
      - name: avoid
        in: query
        description: |
          Avoid roads that violate certain features of road network or that go through
          user-specified areas, segments, or zones.

          Note that if the origin, destination, or any via is in an avoided area or on an avoided
          feature, a route is produced that violates the avoid restriction. In such a case, the
          route is trying to minimize the violation of the avoid restrictions and can therefore
          include large deviations from a route that is calculated without these avoid
          restrictions.

          It is also possible that the produced route violates the avoid restriction in between
          waypoints, if no other route is possible or too hard to find. One such example is
          requesting a route to an island that is only reachable with ferries while specifying
          `avoid[features]=ferry`.

          When using avoid features, it's not guaranteed to get alternatives. Further, they can even
          cause the route calculation to fail, if no route is possible or too hard to find.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Avoid'
        examples:
          features:
            summary: Avoid specific features like `tunnel' or `ferry`
            value:
              features: "tunnel,ferry"
          area:
            summary: Avoid a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Avoid multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
          complete:
            summary: Avoid both features and geographical bounding boxes
            value:
              features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
          segment:
            summary: Avoid a segment using its identifier
            value:
              segments: here:cm:segment:207551710
          segmentsWithDirection:
            summary: "Avoid two segments using their identifiers, also specifying\
              \ the direction"
            value:
              segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
          zones:
            summary: Avoid multiple environmental zones using identifiers
            value:
              zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
          zoneCategory:
            summary: Avoid all environmental zones
            value:
              zoneCategories: environmental
          zoneCategoryWithException:
            summary: Avoid all environmental zones except a specific one
            value:
              zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
          truckRoadTypes:
            summary: Avoid the specified truck road types
            value:
              truckRoadTypes: "BK1,BK2,BK3,BK4"
          tollTransponders:
            summary: Avoid all toll transponders
            value:
              tollTransponders: all
      - name: allow
        in: query
        description: Explicitly allow features that require users to opt in.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Allow'
      - name: exclude
        in: query
        description: |
          Defines properties which will be strictly excluded from route calculation.

          Note - Exclude options guarantees exclusion, but doesn't guarantee
          finding a route.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Exclude'
        examples:
          country:
            summary: Exclude the country of Switzerland from the route calculation
            value:
              countries: CHE
          countries:
            summary: Exclude both the country of Switzerland and the country of Austria
              from the route calculation
            value:
              countries: "CHE,AUT"
          state:
            summary: Exclude DC state of USA from the route calculation
            value:
              states: USA:DC
          states:
            summary: Exclude both states DC and TX of USA from the route calculation
            value:
              states: "USA:DC,TX"
          states_multicountry:
            summary: "Exclude both states DC, TX of USA and AL state of Canada from\
              \ the route calculation"
            value:
              states: "USA:DC,TX|CAN:AL"
          area:
            summary: Exclude a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Exclude multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
      - name: units
        in: query
        description: |
          Units of measurement used in guidance instructions. The default is `metric`.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/Units'
      - name: lang
        in: query
        description: |
          Specifies the list of preferred languages of the response.
          The first supported language from the list will be used for for the response if available.
          The next languages are used as fallbacks if the first one is not available.
          Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
          The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
          A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

          Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          default:
          - en-US
        example: "zh-tw,en-gb,en-us"
      - name: return
        in: query
        description: |
          Defines which attributes are included in the response as part of data representation of a
          `Route` or `Section`.

          * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
             Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
          * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
          * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
          * `summary` - Include summary for the section.
          * `travelSummary` - Include summary for the travel portion of the section.
          * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
          * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
             **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
          * `typicalDuration` - Include route duration under typical traffic conditions.
          * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
          * `routeHandle` - Encode calculated route and return a handle which can be used with
            `routes/{routeHandle}` to decode the route at a later point in time.
          * `passthrough` - Include information on passthrough via waypoints in the section.
          * `incidents` - Include a list of all incidents applicable to each section.
             Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
             Incidents are localized to the requested language.
          * `routingZones` - Include information about routing zones each section goes through.
          * `truckRoadTypes` - Include information about road types each section goes through.
          * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
            parameters such as vehicle dimensions in the query,
            e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
            If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

            **Note**:
              - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
              Therefore the request will return the most "typical" toll cost for the parameters provided.
              - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
          * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
          * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
          * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

          The following restrictions apply when specifying the `return` parameter:

          * If `actions` is requested, then `polyline` must also be requested as well.
          * If `instructions` is requested, then `actions` must also be requested as well.
          * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
          * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Return'
      - name: spans
        in: query
        description: |
          Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
          For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

          This parameter also requires that the `polyline` option is set within the `return` parameter.

          **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Spans'
      - name: truck
        in: query
        description: |
          Truck-specific parameters.

          **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
        required: false
        deprecated: true
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Truck'
      - name: vehicle
        in: query
        description: |
          Vehicle-specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Vehicle'
      - name: consumptionModel
        in: query
        description: |
          Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

          * `empirical`
          * `physical`

          **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ConsumptionModel'
      - name: ev
        in: query
        description: |
          EV properties to be used for calculating consumption.

          There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

          Required `empirical` model properties:
          * `freeFlowSpeedTable`

          Required `physical` model properties:
          * `driveEfficiency`
          * `recuperationEfficiency`

          When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
          * `rollingResistanceCoefficient`
          * `airDragCoefficient`
          * `currentWeight`
          * `frontalArea` or combination of `width` and `height`

          The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
          * `initialCharge`
          * `maxCharge`

          Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
          * `minChargeAtDestination`
          * `minChargeAtFirstChargingStation`
          * `minChargeAtChargingStation`

          The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
          * `chargingCurve`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/EVRouteHandle'
      - name: fuel
        in: query
        description: |
          **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

          Fuel parameters to be used for calculating consumption and related CO2 emission.

          The following attributes are required for calculating consumption:
            * `type`
            * `freeFlowSpeedTable`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Fuel'
      - name: "pedestrian[speed]"
        in: query
        description: |
          Walking speed in meters per second. Influences the duration of walking segments along the route.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/PedestrianSpeed'
      - name: scooter
        in: query
        description: |
          Scooter-specific parameters.
            * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
              If not provided, the default is to avoid highways.
              There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
              avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
              to use highways even if `allowHighway` is set to `true`.
              The following values are possible:
                * `true`: The scooter is allowed to use highways.
                * `false`: The scooter is not allowed to use highways.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Scooter'
      - name: currency
        in: query
        description: |
          Currency code compliant to ISO 4217.
          Costs for the calculated route will be returned using this currency.

          If not provided, the router will specify it.
          On a best-effort basis, the router will try to specify the costs in the local currency.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: rerouting
        in: query
        description: |
          Rerouting parameters allow to request a new route calculation based on the route handle.

          All attributes are optional.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Rerouting'
      - name: taxi
        in: query
        description: |
          Taxi-specific parameters.
            * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
              taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
              allowed on taxi-only roads at the start of the route and at the destination.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Taxi'
      - name: tolls
        in: query
        description: |
          Defines properties which control toll calculation and reporting in the response.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Tolls'
      - name: maxSpeedOnSegment
        in: query
        description: |
          Specify new base speed for segment by value. Affects route selection and the ETA. Cannot increase base speed on segment.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/MaxSpeedOnSegment'
        examples:
          speed:
            summary: Setting new base speed on segment
            value:
              speed: here:cm:segment:76771992#*;speed=42
      - name: traffic
        in: query
        description: Traffic specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Traffic'
      - name: billingTag
        in: query
        description: |
          A list of up to six billing tags, separated by the `+` sign.

          This parameter provides a way to track your platform usage.
          For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
        required: false
        style: form
        explode: true
        schema:
          pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
          type: string
          example: ABCD+EFGH
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: Routes API response in case of success
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResponse'
              examples:
                routeResponseExample:
                  $ref: '#/components/examples/routeResponseExample'
                evRouteResponseExample:
                  $ref: '#/components/examples/evRouteResponseExample'
        "400":
          description: |
            Failure to parse the request, caused by, for example, invalid parameter values such as
            `transportMode=spaceShuttle` or `alternatives=999`.

            Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
            for details on route calculation errors.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/400RoutingErrorResponseExample'
        "401":
          description: API response in case of unauthorized access.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/401errorResponseExample'
        "403":
          description: |
            Not allowed, such as trying to calculate routes in Japan without having necessary
            permissions.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Routing403ErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/403RoutingErrorResponseExample'
        "500":
          description: Internal server error
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500RoutingErrorResponseExample'
    post:
      tags:
      - Routing
      summary: Get route by handle via POST
      description: |
        Decodes and returns a route from a previously calculated route handle.

        **Disclaimer: A route handle is not suitable for persistent route storage! It can be
        invalidated at any time.**

        A route handle encodes a previously calculated route. A route can be decoded from a handle
        as long as the service uses the same map data and encoding that were used when retrieving the handle.

        Thus it is suitable for caching routes compactly. It can be used to retrieve updated traffic
        information or other data along the route. However, a user should be prepared to recalculate
        the route when decoding the handle fails.

        All parameters of the `/routes` endpoint are supported, except for `destination`, `via`,
        `alternatives` and `routingMode`. See also the `return` parameter of `/routes` endpoint.

        The `origin` parameter can be provided to update the start of the previously calculated
        route.

        The `transportMode` parameter does not have to match the transport mode previously used for
        route calculation. However, when using a different transport mode, the request may fail,
        e.g. when the route has road segments forbidden for the provided transport mode.

        Only selected parameters are permitted in the POST body. See the request body section below for details.
        If a parameter is provided in both the query string and the POST body, their values are merged.

        Post body size limit is 10MiB.

        Please refer to the Developer Guide for more information and examples.
      operationId: getRoutesByHandlePost
      parameters:
      - name: routeHandle
        in: path
        description: |
          Route handle returned from a previous route calculation.

          See `return` parameter of `/routes` endpoint for more information.
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: transportMode
        in: query
        description: |
          Mode of transport to be used for the calculation of the route.

          Note:
          `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
          Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RouterMode'
      - name: origin
        in: query
        description: |
          A location defining the origin of the trip. The origin has to be located along the
          previously calculated route.

          For a description of the format and options for this parameter, please refer to the description of
          the `origin` parameter in `Calculate routes via GET`.

          This parameter supports the same options as the `origin` parameter in `Calculate routes via GET`,
          with the following exceptions:

          ## Notes

          * `minCourseDistance`: While this parameter can be provided for compatibility reasons,
            it will not affect the result of a getRoutesByHandle request.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Waypoint'
        examples:
          coordinate:
            summary: A simple WGS84 coordinate
            value: "51.611571,11.351608"
          side:
            summary: Populating sideOfStreetHint in addition to location to avoid
              ending on the wrong side of the street
            value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
          course:
            summary: Setting course/radius an uncertain GPS coordinate of a moving
              vehicle
            value: "51.611571,11.351608;course=170;radius=20"
          name:
            summary: Setting nameHint to avoid matching to the wrong location
            value: "52.510319,13.285616;nameHint=Kaiserdamm"
          displayLocation:
            summary: This coordinate is the location of the POI as shown by the pin
              on a map.
            value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
      - name: departureTime
        in: query
        description: |
          Specifies the time of departure as defined by either `date-time` or `full-date` `T`
          `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

          The requested time is converted to local time at origin. When the optional timezone offset
          is not specified, time is assumed to be local. The special value `any` can be used to
          indicate that time should not be taken into account during routing. If neither
          `departureTime` or `arrivalTime` are specified, current time at departure place will be
          used. All time values in the response are returned in the timezone of each location.

          **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
          `traffic[mode]=default` or no `traffic[mode]` are specified.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/TimeWithAny'
      - name: avoid
        in: query
        description: |
          Avoid roads that violate certain features of road network or that go through
          user-specified areas, segments, or zones.

          Note that if the origin, destination, or any via is in an avoided area or on an avoided
          feature, a route is produced that violates the avoid restriction. In such a case, the
          route is trying to minimize the violation of the avoid restrictions and can therefore
          include large deviations from a route that is calculated without these avoid
          restrictions.

          It is also possible that the produced route violates the avoid restriction in between
          waypoints, if no other route is possible or too hard to find. One such example is
          requesting a route to an island that is only reachable with ferries while specifying
          `avoid[features]=ferry`.

          When using avoid features, it's not guaranteed to get alternatives. Further, they can even
          cause the route calculation to fail, if no route is possible or too hard to find.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Avoid'
        examples:
          features:
            summary: Avoid specific features like `tunnel' or `ferry`
            value:
              features: "tunnel,ferry"
          area:
            summary: Avoid a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Avoid multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
          complete:
            summary: Avoid both features and geographical bounding boxes
            value:
              features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
          segment:
            summary: Avoid a segment using its identifier
            value:
              segments: here:cm:segment:207551710
          segmentsWithDirection:
            summary: "Avoid two segments using their identifiers, also specifying\
              \ the direction"
            value:
              segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
          zones:
            summary: Avoid multiple environmental zones using identifiers
            value:
              zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
          zoneCategory:
            summary: Avoid all environmental zones
            value:
              zoneCategories: environmental
          zoneCategoryWithException:
            summary: Avoid all environmental zones except a specific one
            value:
              zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
          truckRoadTypes:
            summary: Avoid the specified truck road types
            value:
              truckRoadTypes: "BK1,BK2,BK3,BK4"
          tollTransponders:
            summary: Avoid all toll transponders
            value:
              tollTransponders: all
      - name: allow
        in: query
        description: Explicitly allow features that require users to opt in.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Allow'
      - name: exclude
        in: query
        description: |
          Defines properties which will be strictly excluded from route calculation.

          Note - Exclude options guarantees exclusion, but doesn't guarantee
          finding a route.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Exclude'
        examples:
          country:
            summary: Exclude the country of Switzerland from the route calculation
            value:
              countries: CHE
          countries:
            summary: Exclude both the country of Switzerland and the country of Austria
              from the route calculation
            value:
              countries: "CHE,AUT"
          state:
            summary: Exclude DC state of USA from the route calculation
            value:
              states: USA:DC
          states:
            summary: Exclude both states DC and TX of USA from the route calculation
            value:
              states: "USA:DC,TX"
          states_multicountry:
            summary: "Exclude both states DC, TX of USA and AL state of Canada from\
              \ the route calculation"
            value:
              states: "USA:DC,TX|CAN:AL"
          area:
            summary: Exclude a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Exclude multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
      - name: units
        in: query
        description: |
          Units of measurement used in guidance instructions. The default is `metric`.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/Units'
      - name: lang
        in: query
        description: |
          Specifies the list of preferred languages of the response.
          The first supported language from the list will be used for for the response if available.
          The next languages are used as fallbacks if the first one is not available.
          Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
          The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
          A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

          Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          default:
          - en-US
        example: "zh-tw,en-gb,en-us"
      - name: return
        in: query
        description: |
          Defines which attributes are included in the response as part of data representation of a
          `Route` or `Section`.

          * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
             Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
          * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
          * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
          * `summary` - Include summary for the section.
          * `travelSummary` - Include summary for the travel portion of the section.
          * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
          * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
             **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
          * `typicalDuration` - Include route duration under typical traffic conditions.
          * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
          * `routeHandle` - Encode calculated route and return a handle which can be used with
            `routes/{routeHandle}` to decode the route at a later point in time.
          * `passthrough` - Include information on passthrough via waypoints in the section.
          * `incidents` - Include a list of all incidents applicable to each section.
             Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
             Incidents are localized to the requested language.
          * `routingZones` - Include information about routing zones each section goes through.
          * `truckRoadTypes` - Include information about road types each section goes through.
          * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
            parameters such as vehicle dimensions in the query,
            e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
            If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

            **Note**:
              - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
              Therefore the request will return the most "typical" toll cost for the parameters provided.
              - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
          * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
          * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
          * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

          The following restrictions apply when specifying the `return` parameter:

          * If `actions` is requested, then `polyline` must also be requested as well.
          * If `instructions` is requested, then `actions` must also be requested as well.
          * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
          * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Return'
      - name: spans
        in: query
        description: |
          Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
          For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

          This parameter also requires that the `polyline` option is set within the `return` parameter.

          **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Spans'
      - name: truck
        in: query
        description: |
          Truck-specific parameters.

          **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
        required: false
        deprecated: true
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Truck'
      - name: vehicle
        in: query
        description: |
          Vehicle-specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Vehicle'
      - name: consumptionModel
        in: query
        description: |
          Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

          * `empirical`
          * `physical`

          **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ConsumptionModel'
      - name: ev
        in: query
        description: |
          EV properties to be used for calculating consumption.

          There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

          Required `empirical` model properties:
          * `freeFlowSpeedTable`

          Required `physical` model properties:
          * `driveEfficiency`
          * `recuperationEfficiency`

          When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
          * `rollingResistanceCoefficient`
          * `airDragCoefficient`
          * `currentWeight`
          * `frontalArea` or combination of `width` and `height`

          The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
          * `initialCharge`
          * `maxCharge`

          Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
          * `minChargeAtDestination`
          * `minChargeAtFirstChargingStation`
          * `minChargeAtChargingStation`

          The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
          * `chargingCurve`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/EVRouteHandle'
      - name: fuel
        in: query
        description: |
          **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

          Fuel parameters to be used for calculating consumption and related CO2 emission.

          The following attributes are required for calculating consumption:
            * `type`
            * `freeFlowSpeedTable`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Fuel'
      - name: "pedestrian[speed]"
        in: query
        description: |
          Walking speed in meters per second. Influences the duration of walking segments along the route.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/PedestrianSpeed'
      - name: scooter
        in: query
        description: |
          Scooter-specific parameters.
            * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
              If not provided, the default is to avoid highways.
              There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
              avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
              to use highways even if `allowHighway` is set to `true`.
              The following values are possible:
                * `true`: The scooter is allowed to use highways.
                * `false`: The scooter is not allowed to use highways.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Scooter'
      - name: currency
        in: query
        description: |
          Currency code compliant to ISO 4217.
          Costs for the calculated route will be returned using this currency.

          If not provided, the router will specify it.
          On a best-effort basis, the router will try to specify the costs in the local currency.
        required: false
        style: form
        explode: true
        schema:
          type: string
      - name: rerouting
        in: query
        description: |
          Rerouting parameters allow to request a new route calculation based on the route handle.

          All attributes are optional.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Rerouting'
      - name: taxi
        in: query
        description: |
          Taxi-specific parameters.
            * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
              taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
              allowed on taxi-only roads at the start of the route and at the destination.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Taxi'
      - name: tolls
        in: query
        description: |
          Defines properties which control toll calculation and reporting in the response.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Tolls'
      - name: maxSpeedOnSegment
        in: query
        description: |
          Specify new base speed for segment by value. Affects route selection and the ETA. Cannot increase base speed on segment.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/MaxSpeedOnSegment'
        examples:
          speed:
            summary: Setting new base speed on segment
            value:
              speed: here:cm:segment:76771992#*;speed=42
      - name: traffic
        in: query
        description: Traffic specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Traffic'
      - name: billingTag
        in: query
        description: |
          A list of up to six billing tags, separated by the `+` sign.

          This parameter provides a way to track your platform usage.
          For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
        required: false
        style: form
        explode: true
        schema:
          pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
          type: string
          example: ABCD+EFGH
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRoutesByHandlePostParameters'
            examples:
              avoid:
                $ref: '#/components/examples/calculateRoutesPostAvoidExample'
              exclude:
                $ref: '#/components/examples/calculateRoutesPostExcludeExample'
              maxSpeedOnSegment:
                $ref: '#/components/examples/calculateRoutesPostMaxSpeedOnSegmentExample'
      responses:
        "200":
          description: Routes API response in case of success
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResponse'
              examples:
                routeResponseExample:
                  $ref: '#/components/examples/routeResponseExample'
                evRouteResponseExample:
                  $ref: '#/components/examples/evRouteResponseExample'
        "400":
          description: |
            Failure to parse the request, caused by, for example, invalid parameter values such as
            `transportMode=spaceShuttle` or `alternatives=999`.

            Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
            for details on route calculation errors.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/400RoutingErrorResponseExample'
        "401":
          description: API response in case of unauthorized access.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/401errorResponseExample'
        "403":
          description: |
            Not allowed, such as trying to calculate routes in Japan without having necessary
            permissions.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Routing403ErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/403RoutingErrorResponseExample'
        "500":
          description: Internal server error
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500RoutingErrorResponseExample'
  /import:
    post:
      tags:
      - Routing
      summary: Calculate a route from a sequence of trace points
      description: |
        Creates a route from a sequence of trace points.

        Post body size limit is 10MiB.

        For best results, use 1Hz GPS data or any points that have a spacing of a few meters between them.
        For traces with less frequent points, the Route Import service will attempt to create an approximate reconstruction.
        In some situations, when consecutive points are too far apart (more than about 30 kilometers of on-road distance), they could be considered unreachable and one of them could fail to be matched.
      operationId: importRoute
      parameters:
      - name: transportMode
        in: query
        description: |
          Mode of transport to be used for the calculation of the route.

          Note:
          `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
          Please refer to the Developer Guide for more details.
        required: true
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/RouterMode'
      - name: departureTime
        in: query
        description: |
          Specifies the time of departure as defined by either `date-time` or `full-date` `T`
          `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

          The requested time is converted to local time at origin. When the optional timezone offset
          is not specified, time is assumed to be local. The special value `any` can be used to
          indicate that time should not be taken into account during routing. If neither
          `departureTime` or `arrivalTime` are specified, current time at departure place will be
          used. All time values in the response are returned in the timezone of each location.

          **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
          `traffic[mode]=default` or no `traffic[mode]` are specified.
        required: false
        style: form
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/TimeWithAny'
      - name: avoid
        in: query
        description: |
          Avoid roads that violate certain features of road network or that go through
          user-specified areas, segments, or zones.

          Note that if the origin, destination, or any via is in an avoided area or on an avoided
          feature, a route is produced that violates the avoid restriction. In such a case, the
          route is trying to minimize the violation of the avoid restrictions and can therefore
          include large deviations from a route that is calculated without these avoid
          restrictions.

          It is also possible that the produced route violates the avoid restriction in between
          waypoints, if no other route is possible or too hard to find. One such example is
          requesting a route to an island that is only reachable with ferries while specifying
          `avoid[features]=ferry`.

          When using avoid features, it's not guaranteed to get alternatives. Further, they can even
          cause the route calculation to fail, if no route is possible or too hard to find.
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/Avoid'
        examples:
          features:
            summary: Avoid specific features like `tunnel' or `ferry`
            value:
              features: "tunnel,ferry"
          area:
            summary: Avoid a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Avoid multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
          complete:
            summary: Avoid both features and geographical bounding boxes
            value:
              features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
          segment:
            summary: Avoid a segment using its identifier
            value:
              segments: here:cm:segment:207551710
          segmentsWithDirection:
            summary: "Avoid two segments using their identifiers, also specifying\
              \ the direction"
            value:
              segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
          zones:
            summary: Avoid multiple environmental zones using identifiers
            value:
              zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
          zoneCategory:
            summary: Avoid all environmental zones
            value:
              zoneCategories: environmental
          zoneCategoryWithException:
            summary: Avoid all environmental zones except a specific one
            value:
              zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
          truckRoadTypes:
            summary: Avoid the specified truck road types
            value:
              truckRoadTypes: "BK1,BK2,BK3,BK4"
          tollTransponders:
            summary: Avoid all toll transponders
            value:
              tollTransponders: all
      - name: allow
        in: query
        description: Explicitly allow features that require users to opt in.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Allow'
      - name: exclude
        in: query
        description: |
          Defines properties which will be strictly excluded from route calculation.

          Note - Exclude options guarantees exclusion, but doesn't guarantee
          finding a route.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Exclude'
        examples:
          country:
            summary: Exclude the country of Switzerland from the route calculation
            value:
              countries: CHE
          countries:
            summary: Exclude both the country of Switzerland and the country of Austria
              from the route calculation
            value:
              countries: "CHE,AUT"
          state:
            summary: Exclude DC state of USA from the route calculation
            value:
              states: USA:DC
          states:
            summary: Exclude both states DC and TX of USA from the route calculation
            value:
              states: "USA:DC,TX"
          states_multicountry:
            summary: "Exclude both states DC, TX of USA and AL state of Canada from\
              \ the route calculation"
            value:
              states: "USA:DC,TX|CAN:AL"
          area:
            summary: Exclude a specific geographical bounding box
            value:
              areas: "bbox:13.082,52.416,13.628,52.626"
          areas:
            summary: Exclude multiple geographical bounding boxes using `|` as element
              separator
            value:
              areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
      - name: units
        in: query
        description: |
          Units of measurement used in guidance instructions. The default is `metric`.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/Units'
      - name: lang
        in: query
        description: |
          Specifies the list of preferred languages of the response.
          The first supported language from the list will be used for for the response if available.
          The next languages are used as fallbacks if the first one is not available.
          Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
          The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
          A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

          Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
        required: false
        style: form
        explode: false
        schema:
          type: array
          items:
            type: string
          default:
          - en-US
        example: "zh-tw,en-gb,en-us"
      - name: return
        in: query
        description: |
          Defines which attributes are included in the response as part of data representation of a
          `Route` or `Section`.

          * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
             Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
          * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
          * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
          * `summary` - Include summary for the section.
          * `travelSummary` - Include summary for the travel portion of the section.
          * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
          * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
             **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
          * `typicalDuration` - Include route duration under typical traffic conditions.
          * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
          * `routeHandle` - Encode calculated route and return a handle which can be used with
            `routes/{routeHandle}` to decode the route at a later point in time.
          * `passthrough` - Include information on passthrough via waypoints in the section.
          * `incidents` - Include a list of all incidents applicable to each section.
             Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
             Incidents are localized to the requested language.
          * `routingZones` - Include information about routing zones each section goes through.
          * `truckRoadTypes` - Include information about road types each section goes through.
          * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
            parameters such as vehicle dimensions in the query,
            e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
            If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

            **Note**:
              - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
              Therefore the request will return the most "typical" toll cost for the parameters provided.
              - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
          * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
          * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
          * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

          The following restrictions apply when specifying the `return` parameter:

          * If `actions` is requested, then `polyline` must also be requested as well.
          * If `instructions` is requested, then `actions` must also be requested as well.
          * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
          * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Return'
      - name: spans
        in: query
        description: |
          Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
          For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

          This parameter also requires that the `polyline` option is set within the `return` parameter.

          **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
        required: false
        style: form
        explode: false
        schema:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Spans'
      - name: truck
        in: query
        description: |
          Truck-specific parameters.

          **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
        required: false
        deprecated: true
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Truck'
      - name: vehicle
        in: query
        description: |
          Vehicle-specific parameters.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Vehicle'
      - name: consumptionModel
        in: query
        description: |
          Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

          * `empirical`
          * `physical`

          **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ConsumptionModel'
      - name: ev
        in: query
        description: |
          EV properties to be used for calculating consumption.

          There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

          Required `empirical` model properties:
          * `freeFlowSpeedTable`

          Required `physical` model properties:
          * `driveEfficiency`
          * `recuperationEfficiency`

          When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
          * `rollingResistanceCoefficient`
          * `airDragCoefficient`
          * `currentWeight`
          * `frontalArea` or combination of `width` and `height`

          The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
          * `initialCharge`
          * `maxCharge`

          Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
          * `minChargeAtDestination`
          * `minChargeAtFirstChargingStation`
          * `minChargeAtChargingStation`

          The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
          * `chargingCurve`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

          **Note**: Route import does not support adding charging stations, therefore the following related parameters are ignored:
          * chargingCurve
          * maxChargingVoltage
          * maxChargingCurrent
          * maxChargeAfterChargingStation
          * minChargeAtChargingStation
          * minChargeAtFirstChargingStation
          * chargingSetupDuration
          * connectorTypes
        required: false
        style: deepObject
        explode: true
        allowReserved: true
        schema:
          $ref: '#/components/schemas/EVConsumption'
      - name: fuel
        in: query
        description: |
          **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

          Fuel parameters to be used for calculating consumption and related CO2 emission.

          The following attributes are required for calculating consumption:
            * `type`
            * `freeFlowSpeedTable`

          **Notes**:
          * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
          * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Fuel'
      - name: scooter
        in: query
        description: |
          Scooter-specific parameters.
            * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
              If not provided, the default is to avoid highways.
              There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
              avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
              to use highways even if `allowHighway` is set to `true`.
              The following values are possible:
                * `true`: The scooter is allowed to use highways.
                * `false`: The scooter is not allowed to use highways.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Scooter'
      - name: taxi
        in: query
        description: |
          Taxi-specific parameters.
            * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
              taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
              allowed on taxi-only roads at the start of the route and at the destination.
        required: false
        style: deepObject
        explode: true
        schema:
          $ref: '#/components/schemas/Taxi'
      - name: billingTag
        in: query
        description: |
          A list of up to six billing tags, separated by the `+` sign.

          This parameter provides a way to track your platform usage.
          For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
        required: false
        style: form
        explode: true
        schema:
          pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
          type: string
          example: ABCD+EFGH
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MatchTrace'
      responses:
        "200":
          description: Routes API response in case of success
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RouterRouteResponse'
              examples:
                routeResponseExample:
                  $ref: '#/components/examples/routeResponseExample'
                evRouteResponseExample:
                  $ref: '#/components/examples/evRouteResponseExample'
        "400":
          description: |
            Failure to parse the request, caused by, for example, invalid parameter values such as
            `transportMode=spaceShuttle` or `alternatives=999`.

            Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
            for details on route calculation errors.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/400RoutingErrorResponseExample'
        "401":
          description: API response in case of unauthorized access.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/401errorResponseExample'
        "403":
          description: |
            Not allowed, such as trying to calculate routes in Japan without having necessary
            permissions.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Routing403ErrorResponseSchema'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/403RoutingErrorResponseExample'
        "500":
          description: Internal server error
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoutingErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500RoutingErrorResponseExample'
  /health:
    get:
      tags:
      - API Information
      summary: Health status of the service
      description: Returns the health of the service
      operationId: getHealth
      parameters:
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: API response in case of success.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponseOKSchema'
        default:
          description: API response in case of failure.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthResponseFailSchema'
            text/plain:
              schema:
                type: string
      security: []
  /version:
    get:
      tags:
      - API Information
      summary: Full version of the API
      description: Returns the version of the service
      operationId: getVersion
      parameters:
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: API response in case of success.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VersionResponse'
              examples:
                versionResponseOkExample:
                  $ref: '#/components/examples/VersionResponseOkExample'
        "500":
          description: API response in case of internal server error.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500errorResponseExample'
        "502":
          description: API response in case of bad gateway.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/502errorResponseExample'
        "503":
          description: API response in case of service unavailable.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/503errorResponseExample'
        "504":
          description: API response in case of gateway timeout.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/504errorResponseExample'
      security: []
  /openapi:
    get:
      tags:
      - API Information
      summary: Retrieves this API specification in OpenAPI 3 format
      operationId: getOpenapi
      parameters:
      - name: X-Request-ID
        in: header
        description: User-provided token that can be used to trace a request or a
          group of requests sent to the service.
        required: false
        style: simple
        explode: false
        schema:
          type: string
      responses:
        "200":
          description: API specification in OpenAPI 3 format
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/x-yaml:
              schema:
                type: string
            text/x-yaml:
              schema:
                type: string
        "500":
          description: API response in case of internal server error.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/500errorResponseExample'
        "502":
          description: API response in case of bad gateway.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/502errorResponseExample'
        "503":
          description: API response in case of service unavailable.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/503errorResponseExample'
        "504":
          description: API response in case of gateway timeout.
          headers:
            X-Correlation-Id:
              $ref: '#/components/headers/X-Correlation-Id'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                errorResponseExample:
                  $ref: '#/components/examples/504errorResponseExample'
      security: []
components:
  schemas:
    AccessAttributes:
      type: string
      description: "Extensible enum: `open` `noThrough` `tollRoad` `...`  \n`AccessAttributes`\
        \ is applied to a span of a route section and describes access flags of a\
        \ street.\n\n* `open`: A part of the route that can be traversed.\n* `noThrough`:\
        \ A part of the route that can only be traversed if origin, destination or\
        \ any via waypoint is located there.\n* `tollRoad`: Access to this part of\
        \ the route is restricted with a fee (or toll).\n\nAs it is possible that\
        \ new access attributes are supported in the future, unknown access attributes\
        \ should be ignored.\n"
      x-extensible-enum:
      - open
      - noThrough
      - tollRoad
    Allow:
      type: object
      properties:
        hov:
          type: boolean
          description: |
            This parameter specifies whether HOV lanes can be used in the calculation.

            An HOV (High occupancy Vehicle) lane or carpool lane is reserved for carpool usage.
            Carpool lane requires a minimum number of passengers in order for the car to use the
            carpool lane.

            **Notes**:
              - This parameter can't be used with 'vehicle[hovOccupancy]'.
              - This parameter should be used with `vehicle[occupancy]`. If `vehicle[occupancy]` is set, then only HOV lanes allowing this number of occupants will be allowed. If `vehicle[occupancy]` is not set, occupancy requirements are always considered fulfilled.
              - In case of violation, `violatedCarpool` notice will be returned.
          default: false
        hot:
          type: boolean
          description: |
            This parameter specifies whether HOT lanes can be used in the calculation.

            HOT (high-occupancy toll) lanes are HOV lanes where vehicles that do not qualify as high-occupancy are allowed to pass by paying a toll.

            **Notes**:
              - This parameter can't be used with 'vehicle[hovOccupancy]'.
              - This parameter can be used with `allow[hov]`.
              - In case of violation, `violatedCarpool` notice will be returned.
              - No toll information is returned for HOT lanes since it is dynamic information.
          default: false
      description: Explicitly allow features that require users to opt in.
    Areas:
      type: string
      description: |
        A pipe separated list of user-defined areas that routes should avoid/exclude going through.

        Notes:
        * Maximum count of avoided and excluded polygons and corridors is 20.
        * Maximum total count of avoided and excluded bounding boxes, polygons, corridors, including exceptions, is 250.

        Format: `{area1}[!exception1.1[!exception1.2...]]|{area2}[!exception2.1[!exception2.2...]]|{area3}[!exception3.1[!exception3.2...]]...`

        Supported areas:
        * Bounding box - A rectangular area on earth defined by a comma separated list of two latitude and two longitude values.
          - Format: `bbox:{west},{south},{east},{north}`
            + `{west}`  - Longitude value of the westernmost point of the area.
            + `{south}` - Latitude value of the southernmost point of the area.
            + `{east}`  - Longitude value of the easternmost point of the area.
            + `{north}` - Latitude value of the northernmost point of the area.
          - Example: `bbox:13.082,52.416,13.628,52.626` - Bounding box of Berlin
        * Polygon - A polygon on earth which defines area.
          Possible formats:
          1) As list of geopoints.
            - Format: `polygon:{lat},{lon};{lat},{lon};{lat},{lon}...`
              + `{lat}` - Latitude
              + `{lon}` - Longitude
            - Example: `polygon:52.416,13.082;52.626,13.628;52.916,13.482` - Polygon in Berlin
          2) As [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
            - Support only 2D polyline (without `elevation` specified).
            - Format: `polygon:{encoded_polyline}`
              + `{encoded_polyline}` - encoded [Flexible Polyline](https://github.com/heremaps/flexible-polyline)
            - Example: `polygon:BF05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e`
        * Corridor - A polyline with a specified radius in meters that defines width of corridor area.
          Possible formats:
          1) As a list of geopoints that defines a polyline and a radius that defines an area around the polyline.
            - Format: `corridor:{lat},{lon};{lat},{lon};{lat},{lon}...;r={radius}`
            - Example: `corridor:52.416,13.082;52.626,13.628;52.916,13.482;r=1000`
          2) As [Flexible Polyline](https://github.com/heremaps/flexible-polyline) encoding and a radius that defines an area around the polyline.
            - Supports only 2D polyline (without `elevation` specified).
            - Format: `corridor:{encoded_polyline};r={radius}`
              + `{encoded_polyline}` - encoded [Flexible Polyline](https://github.com/heremaps/flexible-polyline)
            - Example: `corridor:BF05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e;r=1000`

        * Exception - area to exclude from avoidance. Any area type can be specified. Any area type can be used as an exception. Multiple exceptions can be specified for each area.
          - Format: `{area to avoid/exclude}!exception={area}`
          - Example: `bbox:13.082,52.416,13.628,52.626!exception=polygon:BF05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e!exception=bbox:13.082,52.416,13.628,52.626`

          Notes:
          * Maximum count of avoided and excluded polygons and corridors is 20.
          * Maximum total count of avoided and excluded bounding boxes, polygons, corridors, including exceptions, is 250.
          * Minimum count of coordinates in one polygon is 3
          * Minimum count of coordinates in any single corridor is 2.
          * Maximum count of coordinates in one polygon or in one corridor is 100
          * The polygon is closed automatically, there is no need to duplicate the first point as the last one.
          * Self-intersecting polygons are not supported.
    AttributionLinkType:
      type: string
      description: |
        Attribution link type.

        * `disclaimer` - Page with further legal information from the agency.
        * `tariff` - Page with information on the tariff.
      enum:
      - disclaimer
      - tariff
    AuthErrorResponseSchema:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error
        error_description:
          type: string
          description: Human-readable error description
    AxleGroupWeight:
      type: object
      properties:
        maxWeight:
          minimum: 0
          type: integer
          description: "Maximum weight of the axle-group-weight restriction, in kilograms."
          format: int32
        axleGroup:
          type: string
          description: "Extensible enum: `single` `tandem` `triple` `quad` `quint`\
            \ `...`  \nAxle-group associated with the restriction.\n\nPossible values\
            \ are:\n\n* single\n* tandem\n* triple\n* quad\n* quint\n"
          x-extensible-enum:
          - single
          - tandem
          - triple
          - quad
          - quint
      description: |
        Contains the maximum allowed weight for an axle-group.
    BaseNoticeDetail:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
    BoundingBoxArea:
      required:
      - east
      - north
      - south
      - type
      - west
      type: object
      properties:
        type:
          type: string
          example: boundingBox
        north:
          maximum: 90
          minimum: -90
          type: number
          description: Latitude in WGS-84 degrees of the northern boundary of the
            box.
          example: 30.0
        south:
          maximum: 90
          minimum: -90
          type: number
          description: Latitude in WGS-84 degrees of the southern boundary of the
            box.
          example: 30.0
        east:
          maximum: 180
          minimum: -180
          type: number
          description: Longitude in WGS-84 degrees of the eastern boundary of the
            box
          example: 30.0
        west:
          maximum: 180
          minimum: -180
          type: number
          description: Longitude in WGS-84 degrees of the western boundary of the
            box.
          example: 30.0
      description: A bounding box defined by two longitudes and two latitudes.
    CO2Emission:
      type: number
      description: |
        Estimation of the carbon dioxide emission for the given route section. Unit is kilograms with precision to three decimal places.

        Definitions:

        * Total Emission (Well-to-Wheel) = Production Emission (Well-to-Tank) + Operational Emission (Tank-to-Wheel)
        * CO2 Equivalent Emission (CO2e for CH4, N2O, etc.) = Gas Emission * Global Warming Potential (GWP)

        **Notes:**

        * This value represents the operational (tank-to-wheel) carbon dioxide emission.
        * This value represents only the carbon dioxide emission and does not represent the carbon dioxide equivalent emission for other gases or particulates.
    ChargePointOperator:
      type: object
      properties:
        id:
          type: string
          description: |
            Charging station charge-point-operator ID.
        name:
          type: string
          description: Charge-point-operator name
      description: Information about the charging station charge-point-operator
    ChargingConnectorType:
      type: string
      description: "Extensible enum: `iec62196Type1Combo` `iec62196Type2Combo` `chademo`\
        \ `tesla` `gbtDc` `unknown` `...`  \nCurrently supported connector types are:\n\
        * `iec62196Type1Combo`:  Type 1 Combo connector, commonly called \"CCS1\"\n\
        * `iec62196Type2Combo`:  Type 2 Combo connector, commonly called \"CCS2\"\n\
        * `chademo`: CHAdeMO connector\n* `tesla`: Tesla connector\n* `gbtDc`: GB/T\
        \ Guobiao GB/T 20234.3 DC connector\n* `unknown`: Connector type is not known,\
        \ e.g., if station is provided by user in request\n"
      x-extensible-enum:
      - iec62196Type1Combo
      - iec62196Type2Combo
      - chademo
      - tesla
      - gbtDc
      - unknown
    ChargingStationBrand:
      type: object
      properties:
        name:
          type: string
          description: Charging station brand name
        hrn:
          type: string
          description: |
            Charging station brand unique ID.
            If specified in `ev[preferredBrands]` parameter
            then it would apply preference to adding stations of the given brand.

            **NOTE:** As of now it is generated as a brand name hash.
      description: Information regarding the charging station brand
    ChargingSupplyType:
      type: string
      description: "Extensible enum: `acSingle` `acThree` `dc` `...`  \nCurrently\
        \ possible values are:\n\n* `acSingle` : Single phase Alternating Current\
        \ supply\n* `acThree`: Three phase Alternating Current supply\n* `dc`: Direct\
        \ Current supply\n"
      x-extensible-enum:
      - acSingle
      - acThree
      - dc
    Color:
      pattern: "#[0-9A-Fa-f]{6}"
      type: string
      example: '#FF0000'
    Consumption:
      type: number
      description: |
        Energy or fuel consumption.
        For EV energy consumption is in kilowatt hours (kWh). For fuel-based vehicles fuel consumption is in Liters (L) for diesel, petrol and LPG vehicles, and Kilograms (kg) for CNG vehicles.
    ConsumptionModel:
      type: string
      description: "Extensible enum: `empirical` `physical` `...`  \nSpecifies which\
        \ of the EV consumption models is being used. See the `ev` parameter for details\
        \ on the models.\n\n* `empirical`\n* `physical`\n\n**Alpha**: Physical consumption\
        \ model is in development. It may not be stable and is subject to change.\n"
      default: empirical
      x-extensible-enum:
      - empirical
      - physical
    ConsumptionSpeedTable:
      type: string
      description: |
        Function curve specifying consumption rate at a given speed.

        The format of the string is a comma-separated list of numbers, as follows:

        ```
        <SPEED_0>,<CONSUMPTION_0>,<SPEED_1>,<CONSUMPTION_1>,...,<SPEED_N>,<CONSUMPTION_N>
        ```

        where speed values are strictly increasing, non-negative integers in units of (km/h), and
        consumption values are non-negative floating point values.

        * Unit for EV:
        | Vehicle Type | Unit |
        |--------------|------|
        | Electric | Wh/m i.e., Watt-hours per meter|

        * Units for Fuel-based vehicles:
        | Vehicle Type | Unit |
        |--------------|------|
        | Diesel, Petrol & LPG | ml/m i.e., milliliters per meter|
        | CNG | gm/m i.e., grams per meter|

        The function is linearly interpolated between data points. For speeds less than `SPEED_0`
        the value of the function is `CONSUMPTION_0`, and for speeds greater than `SPEED_N` the
        value of the function is `CONSUMPTION_N`.
      example: "0,0.2394,14,0.2394,36,0.2586,52,0.196,68,0.2074,83,0.238,95,0.2597,105,0.2597,115,0.2964,125,0.3367,135,0.3508"
    ConsumptionType:
      type: string
      description: "Extensible enum: `electric` `diesel` `petrol` `lpg` `cng` `lng`\
        \ `ethanol` `propane` `hydrogen` `...`  \nVehicle consumption type. The energy\
        \ or fuel consumption type (electric, diesel, petrol, lpg, cng, etc.)\nof\
        \ a vehicle which provides the relevant information required to parse (unit,\
        \ etc.) the energy or fuel\n`consumption` value of a vehicle.\n"
      x-extensible-enum:
      - electric
      - diesel
      - petrol
      - lpg
      - cng
      - lng
      - ethanol
      - propane
      - hydrogen
    Coordinate:
      required:
      - lat
      - lng
      type: object
      properties:
        lat:
          type: number
          description: Latitude in WGS-84 degrees.
          format: double
        lng:
          type: number
          description: Longitude in WGS-84 degrees.
          format: double
      example:
        lat: 52.53787
        lng: 13.40896
    CountryCode:
      maxLength: 3
      minLength: 3
      type: string
      description: ISO-3166-1 alpha-3 code
      example: FRA
    CustomizationHRN:
      pattern: "^hrn:here:[a-z]+::[a-z|-]+:custom:[a-z|-]+$"
      type: string
      description: "HERE Resource Name identifier for customization. This HRN must\
        \ follow a convention below: hrn:here:<service_id>::<customer-realm-id>:custom:<customization_type>:<customization_id>."
      example: hrn:here:routing::olp-abc:custom:extension-map:abc-yard-routing
    DataVersion:
      required:
      - name
      - version
      type: object
      properties:
        name:
          type: string
          description: "Identifies a data set, for example, a HRN, or a service specific\
            \ identifier"
          example: optimized-map-for-routing
        version:
          type: string
          description: The current version of this data set
          example: 2022.346.5.48
      description: Version of a specific data set
    Distance:
      minimum: 0
      type: integer
      description: Distance in meters.
      example: 189
    Driver:
      type: object
      properties:
        schedule:
          type: string
          description: |
            A comma separated list of duration pairs in seconds. Each pair is two positive non-zero integers.
            The first specifies the maximum allowed drive duration before stopping to rest, and the second the resting duration before continuing driving.

            Format `driveDuration,restDuration[,driveDuration,restDuration]...`

            * driveDuration - duration in seconds, describes maximum driving duration allowed in a route's section
              till the next stop or route end. Minimum value is 240.
            * restDuration - duration in seconds, describes minimum resting duration required before continuing driving

            The routing engine adds necessary stops for rest to fulfill driver work hours requirements.
            If the route duration exceeds the defined drive-rest sequence the remaining route is added as the last drive section
            (or several sections if there are `via` waypoints on the remaining route) with critical notice `travelTimeExceedsDriverWorkHours`.

            **Limitations**:
            * `driver[schedule]` is only supported for `truck`, `bus` and `privateBus` transport modes.
            * `driver[schedule]` is not supported in combination with any of these parameters: `arrivalTime`, `ev[*]`.
            * `driver[schedule]` doesn't support route alternatives. So `alternatives` parameter value is ignored in combination with `driver[schedule]`.
            * Ferry travel, boarding, and deboarding durations are neither considered part of drive duration nor rest duration unless ferry
              travel duration is below 15 minutes. In this case, ferry travel duration is considered as drive duration.
            * Via waypoint stop-durations are neither considered part of drive duration nor rest duration.
            * Routing requires a minimum driving duration (`driveDuration`) of 240 seconds before a rest stop.
      description: |
        Driver parameters to be used for calculating routes with automatically added
        rest stops.
    Duration:
      type: integer
      description: Duration in seconds.
      example: 198
    EMobilityServiceProvider:
      type: object
      properties:
        id:
          type: string
          description: E-Mobility Service Provider ID
        name:
          type: string
          description: E-Mobility Service Provider name
      description: Information about E-Mobility Service Provider
    EVPost:
      type: object
      properties:
        preferredBrands:
          type: array
          description: |
            An array of charging station brand IDs. If `makeReachable` is set to `true`, then charging stations from the specified brands
            will be preferred as potential charging stops, even if this makes the total route duration (travel time plus charging time) longer (up to 15 minutes per charging stop)

            Example of a parameter value preferring two charging station brands:
            ```
              {
                "preferredBrands": [
                  "6e1a148e8ddf06f613599134197b7c1c",
                  "6211c90a063d36429b599dda79ae85e3"
                ]
              }
              ```
          deprecated: true
          items:
            type: string
        preferredChargePointOperators:
          type: array
          description: |
            An array of charge-point-operator identifiers. If `makeReachable` is set to `true`, then charging stations with one
            of the listed charge-point-operator ids will be preferred as potential charging stops, even if this makes the total
            route duration (travel time plus charging time) longer (up to 15 minutes per charging stop)

            Example with two preferred charge-point-operators specified:
              ```
              {
                "preferredChargePointOperators": [
                  "1f608648-cca5-11ed-bb1e-42010aa40002",
                  "1f90fdf0-cca5-11ed-be23-42010aa40002"
                ]
              }
              ```
          items:
            type: string
    EncodedCorridorArea:
      required:
      - polyline
      - radius
      - type
      type: object
      properties:
        type:
          type: string
          example: encodedCorridor
        polyline:
          type: string
          description: |
            [Flexible Polyline](https://github.com/heremaps/flexible-polyline) that defines a supporting structure for a corridor.
            Notes:
            * Support only 2D polyline (without `elevation` specified).
            * Minimum count of vertices in polyline is 2.
            * Maximum count of vertices in polyline is 100.
          example: BFoz5xJ67i1B1B7PzIhaxL7Y
        radius:
          maximum: 1000
          minimum: 1
          type: number
          description: The width in meters of the corridor determines the outline
            of the polygon.
      description: |
        A polygon defined as a [Flexible Polyline](https://github.com/heremaps/flexible-polyline) encoded string
        and with a specified radius that defines an area.
    EncodedPolygonArea:
      required:
      - outer
      - type
      type: object
      properties:
        type:
          type: string
          example: encodedPolygon
        outer:
          type: string
          description: |
            [Flexible Polyline](https://github.com/heremaps/flexible-polyline) that defines the outline of the polygon.
            Notes:
            * Support only 2D polyline (without `elevation` specified).
            * Minimum count of vertices in polygon is 3.
            * Maximum count of vertices in polygon is 16.
          example: BFoz5xJ67i1B1B7PzIhaxL7Y
      description: |
        A polygon defined as a [Flexible Polyline](https://github.com/heremaps/flexible-polyline) encoded string.

        The polygon is automatically closed, so repeating the first vertex is not required.
    ErrorResponse:
      required:
      - action
      - cause
      - code
      - correlationId
      - status
      - title
      type: object
      properties:
        title:
          type: string
          description: Human-readable error description
          example: Input data failed validation
        status:
          type: integer
          description: HTTP status code
          example: 400
        code:
          type: string
          description: |
            Error code.

            All error codes start with "`E60`".
          example: E600101
        cause:
          type: string
          description: Human-readable explanation for the error
          example: The input data in question does not comply with validation rules
        action:
          type: string
          description: Human-readable description of the action that can be taken
            to correct the error
          example: Request a valid id
        correlationId:
          type: string
          description: Auto-generated id that univocally identifies the request
          example: 4199533b-6290-41db-8d79-edf4f4019a74
      description: Response in case of error
    FarePassValidityPeriod:
      required:
      - period
      type: object
      properties:
        period:
          type: string
          description: "Extensible enum: `annual` `extendedAnnual` `minutes` `days`\
            \ `months` `...`  \nSpecifies one of the following validity periods:\n\
            \  - `annual`: pass is valid from Jan 1 to Dec 31\n  - `extendedAnnual`:\
            \ pass is valid from Jan 1 to Jan 31 of the following year\n  - `minutes`:\
            \ pass is valid for a specified number of minutes See `unit`.\n  - `days`:\
            \ pass is valid for a specified number of days. See `unit`.\n  - `months`:\
            \ pass is valid for a specified number of months. See `unit`.\n"
          x-extensible-enum:
          - annual
          - extendedAnnual
          - minutes
          - days
          - months
        count:
          type: integer
          description: "Required if period is `minutes`, days` or `months`, it specifies\
            \ how many of these units are covered by the pass."
      description: Specifies a temporal validity period for a pass
    FuelType:
      type: string
      description: "Extensible enum: `diesel` `petrol` `lpg` `cng` `lng` `ethanol`\
        \ `propane` `hydrogen` `...`  \nVehicle fuel type. It is mandatory for calculation\
        \ of consumption and CO2 emission.\n"
      x-extensible-enum:
      - diesel
      - petrol
      - lpg
      - cng
      - lng
      - ethanol
      - propane
      - hydrogen
    FunctionalClass:
      maximum: 5
      minimum: 1
      type: integer
      description: |
        Functional class defines a hierarchical network used to determine a logical and efficient route. The following classifications are used:

        * `1`: Roads that allow for high volume, maximum speed traffic movement between and through major metropolitan areas.
        * `2`: Roads that are used to channel traffic to functional class 1 roads for travel between and through cities in the shortest amount of time.
        * `3`: Roads that intersect functional class 2 roads and provide a high volume of traffic movement at a lower level of mobility than functional class 2 roads.
        * `4`: Roads that provide for a high volume of traffic movement at moderate speeds between neighborhoods.
        * `5`: Roads with volume and traffic movement below the level of any other functional class.
      format: int32
    Gate:
      type: string
      description: "Extensible enum: `keyAccess` `permissionRequired` `emergency`\
        \ `...`  \nType of gate crossing.\n"
      x-extensible-enum:
      - keyAccess
      - permissionRequired
      - emergency
    HazardousGoodsRestriction:
      type: string
      description: "Extensible enum: `explosive` `gas` `flammable` `combustible` `organic`\
        \ `poison` `radioactive` `corrosive` `poisonousInhalation` `harmfulToWater`\
        \ `other` `...`  \nHazardous goods restrictions refer to the limitations and\
        \ regulations imposed on the transportation of specific types of hazardous\
        \ materials during a trip. The following categories of hazardous goods are\
        \ commonly considered:\n\n* `explosive`: Materials that are capable of causing\
        \ an explosion\n* `gas`: Gas (definition varies from country to country).\
        \ For details, check [here](https://en.wikipedia.org/wiki/HAZMAT_Class_2_Gases)\n\
        * `flammable`: Materials that are easily ignited and capable of catching fire.\n\
        * `combustible`: Materials that have the potential to burn or catch fire.\n\
        * `organic`: Materials derived from living organisms or containing carbon\
        \ compounds.\n* `poison`: Substances that can cause harm or death when ingested,\
        \ inhaled, or absorbed.\n* `radioactive`: Materials that emit radiation and\
        \ pose potential health risks.\n* `corrosive`: Substances that can cause damage\
        \ or destruction through chemical reactions.\n* `poisonousInhalation`: Materials\
        \ that are toxic when inhaled.\n* `harmfulToWater`: Materials that can cause\
        \ pollution or harm to water bodies.\n* `other`: Other types of hazardous\
        \ materials not covered by the above categories\n"
      x-extensible-enum:
      - explosive
      - gas
      - flammable
      - combustible
      - organic
      - poison
      - radioactive
      - corrosive
      - poisonousInhalation
      - harmfulToWater
      - other
    HazardousGoodsRestrictionAny:
      type: string
      description: Indicates that all hazardous goods are subject to restrictions
        during the trip.
      example: any
      enum:
      - any
    LicensePlateRestrictionType:
      type: string
      description: "Extensible enum: `lastCharacter` `...`  \nSpecifies the components\
        \ of the vehicle license plate\nconsidered for the restriction.\n"
      x-extensible-enum:
      - lastCharacter
    LocalizedString:
      required:
      - value
      type: object
      properties:
        value:
          type: string
          description: String written in the language specified in the language property.
        language:
          type: string
          description: Language in BCP47 format
      description: String with optional language code.
      example:
        value: Invalidenstraße
        language: de
    Location:
      required:
      - lat
      - lng
      type: object
      properties:
        lat:
          type: number
          description: Location of a point on the Earth north or south of the equator
            in decimal degrees.
          format: double
          example: 52.531677
        lng:
          type: number
          description: Location of a place on the Earth east or west of the prime
            meridian in decimal degrees.
          format: double
          example: 13.381777
        elv:
          type: number
          description: |
            Ellipsoid(geodetic) height in meters. Difference between the WGS84 ellipsoid and a point on the Earth’s surface.
            Note: Similar elevation can be obtained from a GPS receiver.
          example: 512.5
      description: Location on the Earth
      example:
        lat: 52.531677
        lng: 13.381777
    MatchTracePoint:
      required:
      - lat
      - lng
      type: object
      properties:
        lat:
          type: number
          description: Latitude in degrees
          format: double
        lng:
          type: number
          description: Longitude in degrees
          format: double
      description: GPS probe point with parameters relevant to path or route matching
    MaxSpeed:
      description: "Speed in meters per second, or \"unlimited\" indicating that the\
        \ speed is unlimited, e.g., on a German autobahn"
      oneOf:
      - minimum: 0
        type: number
      - type: string
        enum:
        - unlimited
    MaxSpeedOnSegment:
      type: string
      description: "A comma separated list of segments with restrictions on maximum\
        \ baseSpeed.\n\nEach entry has the following structure:\n`{segmentId}(#{direction})?;speed={maxBaseSpeed}`\n\
        \nThe individual parts are:\n* segmentId: The identifier of the referenced\
        \ topology segment inside the catalog, example: `here:cm:segment:207551710`\n\
        * direction (optional): Either '*' for bidirectional (default), '+' for positive\
        \ direction, or '-' for negative direction\n* maxBaseSpeed: New value in m/s\
        \ of baseSpeed on segment\n\nExample of a parameter value excluding two segments:\n\
        `here:cm:segment:207551710#+;speed=10,here:cm:segment:76771992;speed=1`\n\n\
        **Notes**:\n- It does not increase default baseSpeed on segment. If the value\
        \ is greater than the default base speed, then such penalty will have no effect.\n\
        - Minimum valid value for speed is 1\n- Using segments with a modified base\
        \ speed does not trigger any notifications\n- Maximum number of penalized\
        \ segments in one request cannot be greater than 1000.\n  \"penalized segments\"\
        \ refer to segments that have a restrictions on maximum baseSpeed with `maxSpeedOnSegment`\n\
        \  or avoided with `avoid[segments]`\n- In case the same segment is penalized\
        \ multiple times through values provided in the query string and/or the POST\
        \ body, \n  then the most restrictive value will be applied.\n"
    MaxSpeedOnSegmentPost:
      type: array
      description: "Segments with restrictions on maximum `baseSpeed`.\n\nFor the\
        \ general description of the functionality please refer to the `maxSpeedOnSegment`\
        \ parameter of the\nquery string.\n\nPassing parameters in the POST body is\
        \ suggested when the length of the parameters exceeds the\nlimitation of the\
        \ GET request.\n\nExample of a parameter value excluding two segments:\n```\n\
        [\n  {\n    \"segment\": \"here:cm:segment:207551710#+\",\n    \"speed\":\
        \ 10\n  },\n  {\n    \"segment\": \"here:cm:segment:76771992\",\n    \"speed\"\
        : 1\n  }\n]\n```\n\n**Notes**: \n- Maximum number of penalized segments in\
        \ one request cannot be greater than 1000.\n  \"penalized segments\" refer\
        \ to segments that have a restrictions on maximum baseSpeed with `maxSpeedOnSegment`\n\
        \  or avoided with `avoid[segments]`.\n- In case the same segment is penalized\
        \ multiple times through values provided in the query string and/or the POST\
        \ body, \n  then the most restrictive value will be applied.\n"
      items:
        $ref: '#/components/schemas/MaxSpeedOnSegmentPost_inner'
    NoticeSeverity:
      type: string
      description: |
        Describes the impact a notice has on the resource to which the notice is attached.
        * critical - The notice must not be ignored, even if the type of notice is not known to the user. Any associated resource (e.g., route section) must not be used without further evaluation.
        * info - The notice is for informative purposes, but does not affect usability of the route.
      enum:
      - critical
      - info
    ParkingLotPlaceType:
      type: string
      description: "Extensible enum: `parkAndRide` `...`  \nCurrently possible values\
        \ are:\n\n* `parkAndRide` - this parking lot is of type \"Park and Ride\"\
        ,\n  such as it is a parking specifically designed to allow transition between\
        \ car and transit.\n"
      x-extensible-enum:
      - parkAndRide
    PartialTime:
      pattern: "^[012]\\d:[0-5]\\d:[0-6]\\d(\\.\\d+)?$"
      type: string
      description: "**RFC 3339**, section 5.6 as defined by `partial-time`."
      example: 08:30:00
    PaymentMethod:
      type: string
      description: "Extensible enum: `cash` `bankCard` `creditCard` `passSubscription`\
        \ `transponder` `videoToll` `cashExact` `travelCard` `...`  \nRecognized methods\
        \ of payment.\n"
      x-extensible-enum:
      - cash
      - bankCard
      - creditCard
      - passSubscription
      - transponder
      - videoToll
      - cashExact
      - travelCard
    PedestrianSpeed:
      maximum: 2
      minimum: 0.5
      type: number
      description: Pedestrian speed in meters per second
      default: 1
    Polyline:
      type: string
      description: "Line string in [Flexible Polyline](https://github.com/heremaps/flexible-polyline)\
        \ format. Coordinates are in the WGS84 coordinate system, including `Elevation`\
        \ (if present)."
      example: A05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e
    RailwayCrossing:
      type: string
      description: "Extensible enum: `protected` `unprotected` `unknown` `...`  \n\
        Type of railway crossing.\n"
      x-extensible-enum:
      - protected
      - unprotected
      - unknown
    RefReplacements:
      type: object
      additionalProperties:
        type: string
      description: |
        Dictionary of placeholders to replacement strings for the compact representation of map entity references.
    ReroutingMode:
      type: string
      description: |
        Defines what kind of additional route calculation should be done.

        * `none` - Cuts off route before the current position. Updates dynamic attributes of the
        route after the current position. If the current position, i.e., the new `origin`, is defined and is
        outside of the original route then the request will fail. If both `origin` and
        `lastTraveledSectionIndex` or `traveledDistanceOnLastSection` are provided then
        `lastTraveledSectionIndex` and `traveledDistanceOnLastSection` will be applied first, and
        then `origin` will be matched to the part of the route that's left. This is the default behavior.
        * `returnToRoute` - Same as `none` if current position is on the route. If the current
        position is not on the original route then a new route to the destination will be
        calculated, starting from the current position. The new route will try to preserve the shape
        of the original route, if possible. If a new optimal route is found before a route back to
        the original route then the new route will be returned.
      enum:
      - none
      - returnToRoute
    Return:
      type: string
      description: |
        Defines which attributes are included in the response as part of data representation of a
        `Route` or `Section`.

        * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
           Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
        * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
        * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
        * `summary` - Include summary for the section.
        * `travelSummary` - Include summary for the travel portion of the section.
        * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
        * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
           **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
        * `typicalDuration` - Include route duration under typical traffic conditions.
        * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
        * `routeHandle` - Encode calculated route and return a handle which can be used with
          `routes/{routeHandle}` to decode the route at a later point in time.
        * `passthrough` - Include information on passthrough via waypoints in the section.
        * `incidents` - Include a list of all incidents applicable to each section.
           Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
           Incidents are localized to the requested language.
        * `routingZones` - Include information about routing zones each section goes through.
        * `truckRoadTypes` - Include information about road types each section goes through.
        * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
          parameters such as vehicle dimensions in the query,
          e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
          If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

          **Note**:
            - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
            Therefore the request will return the most "typical" toll cost for the parameters provided.
            - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
        * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
        * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
        * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

        The following restrictions apply when specifying the `return` parameter:

        * If `actions` is requested, then `polyline` must also be requested as well.
        * If `instructions` is requested, then `actions` must also be requested as well.
        * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
        * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
      enum:
      - polyline
      - actions
      - instructions
      - summary
      - travelSummary
      - mlDuration
      - typicalDuration
      - turnByTurnActions
      - elevation
      - routeHandle
      - passthrough
      - incidents
      - routingZones
      - truckRoadTypes
      - tolls
      - routeLabels
      - potentialTimeDependentViolations
      - noThroughRestrictions
    RoadInfoType:
      type: string
      description: "Type of the road (rural, urban, highway)"
      default: urban
      enum:
      - rural
      - urban
      - highway
    RoundaboutAngle:
      maximum: 360
      minimum: -360
      type: number
      description: |
        The degree measure of the arc traversed from the roundabout entrance to the exit of the maneuver.

        Available only for exit roundabout actions. Positive values indicate an exit angle
        for a right-hand side driving roundabout and negative values indicate an exit angle
        for a left-hand side driving roundabout.
      format: double
      example: 204.83
    RouterMode:
      type: string
      description: Mode of transport to be used for route calculation.
      enum:
      - car
      - truck
      - pedestrian
      - bicycle
      - scooter
      - taxi
      - bus
      - privateBus
    RoutingMode:
      type: string
      description: |
        Specifies which optimization is applied during the calculation.

        * `fast`: Route calculation from start to destination optimized by travel time. In many
          cases, the route returned by `fast` mode may not be the route with the fastest
          possible travel time. For example, the routing service may favor a route that remains on
          a highway, even if a faster travel time can be achieved by taking a detour or shortcut
          through an inconvenient side road.
        * `short`: Route calculation from start to destination disregarding any speed information.
          In this mode, the distance of the route is minimized, while keeping the route sensible.
          This includes, for example, penalizing turns. Because of that, the resulting route will
          not necessarily be the one with minimal distance.

        Notes:
        * The following Transport modes only support `fast` routingMode
          - `bicycle`
          - `bus`
          - `pedestrian`
          - `privateBus`
          - `scooter`
          - `taxi`
      default: fast
      enum:
      - fast
      - short
    RoutingZoneReference:
      type: string
      description: |
        A reference to a routing zone in HMC.

        The standard representation of a routing zone reference has the following structure:
        `{catalogHrn}:{catalogVersion}:({layerId})?:{tileId}:{zoneId}`

        The individual parts are:
        * `catalogHrn`: The HERE Resource Name that identifies the source catalog of the routing zone, example: `hrn:here:data::olp-here:rib-2`
        * `catalogVersion`: The catalog version
        * `layerId` (optional): The layer inside the catalog where the routing zone is located, example: `environmental-zones`
        * `tileId`: The HERE tile key of the partition/tile where the routing zone is located in the given version of the catalog
        * `zoneId`: The identifier of the referenced routing zone within the catalog, example: `here:cm:envzone:3455277`

        Example of a reference to an environmental zone in standard form:
        `hrn:here:data::olp-here:rib-2:1557:environmental-zones:all:here:cm:envzone:3455277`

        In order to reduce response size, routing zone references can also be provided in a compact representation.
        In compact form, parts of a reference are replaced by placeholders, which can be resolved using the `refReplacements` dictionary in the parent section.
        The placeholder format is ```\$\d+``` and needs to be surrounded by colons or string start/end. It can be captured with the following regular expression: ```(^|:)\$\d+(:|$)``` .

        Example of the aforementioned environmental zone reference in compact form: `$0:$1:3455277`
        With the corresponding `refReplacements`:
        ```
        "refReplacements": {
          "0": "hrn:here:data::olp-here:rib-2:1557",
          "1": "environmental-zones:all:here:cm:envzone"
        }
        ```
    Scooter:
      type: object
      properties:
        allowHighway:
          type: boolean
          description: "Specifies whether the scooter is allowed on the highway or\
            \ not. This parameter is optional. If not provided, the scooter is not\
            \ allowed to use the highway by default. There is a similar parameter\
            \ avoid[features]=controlledAccessHighway to disallow highway usage. avoid[features]\
            \ takes precedence, so if this parameter is also used, scooters are not\
            \ allowed to use highways even if `allowHighway` is set to `true`."
          default: false
      description: Scooter-specific parameters
    SegmentRef:
      type: string
      description: |
        A reference to the HMC topology segment used in this span.

        The standard representation of a segment reference has the following structure:
        {catalogHrn}:{catalogVersion}:({layerId})?:{tileId}:{segmentId}(#{direction}({startOffset}..{endOffset})?)?

        The individual parts are:
        * catalogHrn: The HERE Resource Name that identifies the source catalog of the segment, example: hrn:here:data::olp-here:rib-2
        * catalogVersion: The catalog version
        * layerId (optional): The layer inside the catalog where the segment can be found, example: topology-geometry
        * tileId: The HERE tile key of the partition/tile where the segment is located in the given version of the catalog. This can be on a lower level than the actual segment is stored at (for example, the provided tile ID can be on level 14, despite topology-geometry partitions being tiled at level 12). The level of a HERE tile key is indicated by the position of the highest set bit in binary representation. Since the HERE tile key represents a morton code of the x and y portion of the Tile ID, the level 12 tile ID can be retrieved from the level 14 tile ID by removing the 4 least significant bits (or 2 bits per level) or 1 hexadecimal digit. For example, the level 14 tile 377894441 is included in the level 12 tile 23618402 (377894441<sub>10</sub> = 16863629<sub>16</sub> &rightarrow; 1686362<sub>16</sub> = 23618402<sub>10</sub>)
        * segmentId: The identifier of the referenced topology segment inside the catalog, example: here:cm:segment:84905195
        * direction (optional): Either '*' for undirected or bidirectional, '+' for positive direction, '-' for negative direction, or '?' for unknown direction (not used by the routing service)
        * startOffset/endOffset (optional): The start- and end offset are non-negative numbers between 0 and 1, representing the start and end of the referenced range using a proportion of the length of the segment. 0 represents the start and 1 the end of the segment, relative to the indicated direction (or positive direction in case of undirected segments). Example: 0.7..1

        Example of a segment reference in standard representation:
        hrn:here:data::olp-here:rib-2:1363::377894441:here:cm:segment:84905195#+0.7..1

        The segment references can also be provided in a compact representation, to reduce the response size. In the compact representation, some parts are replaced by placeholders, which can be resolved using the refReplacements dictionary in the parent section.
        The placeholder format is ```\$\d+``` and needs to be surrounded by colons or string start/end. It can be captured with the following regular expression: ```(^|:)\$\d+(:|$)/``` .

        Example of the segment reference previously mentioned in compact representation:
        $0:377894441:$1:84905195#+0.7..1
        With the corresponding refReplacements:
        "refReplacements": {
          "0": "hrn:here:data::olp-here:rib-2:1363:",
          "1": "here:cm:segment"
        }
    Spans:
      type: string
      enum:
      - walkAttributes
      - streetAttributes
      - carAttributes
      - truckAttributes
      - scooterAttributes
      - names
      - length
      - duration
      - baseDuration
      - typicalDuration
      - countryCode
      - stateCode
      - functionalClass
      - routeNumbers
      - speedLimit
      - maxSpeed
      - dynamicSpeedInfo
      - segmentId
      - segmentRef
      - consumption
      - routingZones
      - truckRoadTypes
      - notices
      - incidents
      - tollSystems
      - gates
      - railwayCrossings
      - noThroughRestrictions
    Speed:
      minimum: 0
      type: number
      description: Speed in meters per second
    StateCode:
      maxLength: 3
      minLength: 1
      type: string
      description: |
        The second part of an ISO-3166-2 code (e.g., `TX` from `USA-TX`) consists of up to three alphanumeric characters.
        It is used to identify the principal subdivisions (e.g., provinces or states) of a country in conjunction with a CountryCode

        Note: State codes may not be available in some countries.
    StreetAttributes:
      type: string
      description: "Extensible enum: `rightDrivingSide` `dirtRoad` `tunnel` `bridge`\
        \ `ramp` `motorway` `roundabout` `underConstruction` `dividedRoad` `privateRoad`\
        \ `controlledAccessHighway` `builtUpArea` `...`  \n`StreetAttributes` is applied\
        \ to a span of a route section and describes attribute flags of a street.\
        \ The following flags can be assigned:\n* `rightDrivingSide`: Vehicles must\
        \ drive on the right-hand side of the road in this part of the route.\n* `dirtRoad`:\
        \ This part of the route has an unpaved surface, such as a gravel or dirt\
        \ road.\n* `tunnel`: This part of the route passes through a tunnel.\n* `bridge`:\
        \ This part of the route crosses a bridge.\n* `ramp`: This part of the route\
        \ is a ramp, typically connecting to or from highways.\n* `motorway`: This\
        \ part of the route is a controlled access road, typically a highway with\
        \ motorway signage.\n* `roundabout`: This part of the route includes a roundabout.\n\
        * `underConstruction`: This part of the route is currently under construction.\n\
        * `dividedRoad`: This part of the route uses a road with a physical or legal\
        \ divider in the middle, separating opposing traffic flows.\n* `privateRoad`:\
        \ This part of the route uses a privately owned road.\n* `controlledAccessHighway`:\
        \ This part of the route is either a controlled access road, limited access\
        \ road, or both.\n* `builtUpArea`: This part of the route most likely passes\
        \ through a built-up area.\n\nAs it is possible that new street attributes\
        \ are supported in the future, unknown street attributes should be ignored.\n"
      x-extensible-enum:
      - rightDrivingSide
      - dirtRoad
      - tunnel
      - bridge
      - ramp
      - motorway
      - roundabout
      - underConstruction
      - dividedRoad
      - privateRoad
      - controlledAccessHighway
      - builtUpArea
    Taxi:
      type: object
      properties:
        allowDriveThroughTaxiRoads:
          type: boolean
          description: |
            Specifies if a vehicle is allowed to drive through taxi-only roads and lanes. Even if
            this option is set to `false`, the vehicle is still allowed on taxi-only roads at the
            start of the route and at the destination.
          default: true
      description: Taxi-specific parameters
    Time:
      type: string
      description: "**RFC 3339**, section 5.6 as defined by either `date-time` or\
        \ `date-only` 'T' `partial-time` (ie no time-offset)."
      format: date-time
    TimeDomain:
      type: string
      description: |
        Specifies date and time period during which the restriction applies. Value is a string in the Time
        Domain format. Time Domain is part of the GDF (Geographic Data Files) specification, which is an ISO standard.
        Current standard is GDF 5.1 which is [ISO 20524-1:2020](https://www.iso.org/standard/68244.html).

        For a detailed description of the Time Domain specification and usage in routing services, please refer to
        the documentation available in the [Time Domain](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/time-domain.html) page of the Developer Guide.
      example: "-(d1){w1}(d3){d1}"
    TimeRestrictedWeekdays:
      type: string
      enum:
      - mo
      - tu
      - we
      - th
      - fr
      - sa
      - su
    TimeWithAny:
      type: string
      description: |
        Specifies the time either as

        * "**RFC 3339**, section 5.6 as defined by either `date-time` or `date-only` 'T'
        `partial-time` (ie no time-offset)", or
        * the special value `any` which stand for unspecified time
    TollSystem:
      type: object
      properties:
        id:
          type: integer
          description: |
            The internal identification of this toll system. It will be replaced in the future by an HRN (HERE Resource Name) identifier.
          deprecated: true
        name:
          type: string
          description: |
            The name of this toll system
      description: |
        Information about a toll system collecting payments on the route.
    Tolls:
      type: object
      properties:
        transponders:
          type: string
          description: |
            Certain toll systems allow users to pay for the usage of the corresponding tollroads using transponders.
            As the price that the user pays with a transponder could be different from other payment methods for accessing the same toll roads
            this  is provided to allow the user to specify the transponders that they have.
            If a toll system requires a certain transponder to access it and the user states that they have it,
            the price for payment with transponders will be used when reporting fare prices
            and for summaries, if required by the `tolls[summaries]` parameter.

            The value of the parameter is a comma-separated list of transponder systems that the user has. Alternatively,
            the user can also specify `all` as a list element to state they have all required transponders along any potential route.

            **Note**: Currently, the only valid value is `all`.
        vignettes:
          type: string
          description: |
            This parameter allows the user to specify for which toll roads the user has valid vignettes.
            If a road requires a certain vignette and the user states that they have it, no notices will be
            given regarding the requirement to have it.

            The value of the parameter is a comma-separated list of vignettes that the user has. Alternatively,
            the user can also specify `all` as a list element to state they have all required vignettes along any potential route.

            No toll costs information will be returned for a given road requiring a vignette if the user states
            they already have it, as no further payment is necessary. If `tolls` are requested for spans, the toll
            sections for these types of toll systems are still reported, nevertheless.

            **Note**: Currently, the only valid value is `all`.
        summaries:
          type: array
          description: "Items extensible enum: `total` `tollSystem` `country` `...`\
            \  \nThis parameter allows the user to specify criteria for tolls aggregation.\n\
            Multiple values may be requested at once.\nToll aggregation is performed\
            \ at the section level only.\n\nPossible values are:\n  - `total`: the\
            \ user wants a single value summarizing the tolls to be paid in the section.\n\
            \    This summary criterion requires that a `currency` has been passed\
            \ as a parameter, to group\n    multi-currency roads together, even if\
            \ the route would traverse roads that use only one currency;\n    see\
            \ `currency` parameter.\n  - `tollSystem`: toll costs are aggregated per\
            \ toll system.\n  - `country`: toll costs are aggregated per country.\n\
            \nNote that any toll instance may have multiple prices, depending on factors\
            \ such as time of day,\npayment methods, etc. that are not available in\
            \ the request. As a result,\nthe most economical value is selected for\
            \ summary calculation, so summaries should be considered\ninformative\
            \ only.\n"
          items:
            type: string
            x-extensible-enum:
            - total
            - tollSystem
            - country
        vehicleCategory:
          type: string
          description: "Extensible enum: `minibus` `...`  \nDefines special toll vehicle\
            \ types. Usual types like car or truck are determined from transport mode.\n\
            \n| category  | Description |\n| --------- | ------- |\n| minibus | Commercial\
            \ buses with a seating capacity of 16-25 passengers (NA) or a small bus\
            \ that is used to transport a maximum of 15 passengers. Can be used only\
            \ with transport mode `car` |\n\n**NOTE:** It can be extended by other\
            \ vehicle categories in the future.\n"
          x-extensible-enum:
          - minibus
        emissionType:
          type: string
          description: |
            Defines the emission types and CO2 emission classes as defined by the toll operator.
            The emission types defined are based on the Emission standards. Emission types are only published when the toll cost is defined based on emission type classes.

            ## Format

            Format: `EmissionType[CO2EmissionClass]`

            `EmissionType` is specified as `euro6`, `euro5`, etc. Allowed values are `[euro1, euro2, euro3, euro4, euro5, euro6, euroEev]`.

            `CO2EmissionClass` is optional and is specified as `;co2class=1`, `;co2class=2`, etc. Allowed values for `co2class` are `[1, 2, 3, 4, 5]`.

            ## Examples:

            Only toll emission type (euro6), without CO2 emission class: `euro6`

            Toll emission type (euro6) with CO2 emission class (class1): `euro6;co2class=1`

            **NOTES:**
            * This parameter is not compatible with EV routing. When EV routing is used (i.e., any `ev` namespace parameter is specified in the request or `vehicle[engineType]=electric` is specified), the appropriate emission type (Electric Vehicle) is used.
            * For cases other than EV routing: when not specified, `EmissionType` defaults to `euro5`. If `EmissionType` is provided without a `co2class`, then `co2class` defaults to `1`.
            * Providing only a `CO2EmissionClass` without an `EmissionType` is not supported, i.e. `euro6;co2class=1` is valid but `co2class=1` is invalid.
            * Providing an invalid combination of `EmissionType` and `CO2EmissionClass` as input may result in unexpected tolls.
          example: euro6
      description: |
        Vehicle-independent options that may affect route toll calculation as well as options
        affecting the output of the tolls, such as summaries.

        Since this parameter controls behaviour related to tolls in the return part of the response,
        use of this parameter requires `return=tolls` to be selected.
    Traffic:
      type: object
      properties:
        overrideFlowDuration:
          type: integer
          description: |
            Duration in seconds for which flow traffic event would be considered valid. While flow
            traffic event is valid it will be used over the historical traffic data.

            **Note**: Flow traffic represents congestion not caused by any long-term incidents.
            State of the flow traffic often changes fast. The farther away from the current time we
            move, the less precise current flow traffic data will be and the more precise historical
            traffic data becomes. That's why it's advised not to use this parameter unless you know
            what you want to achieve and use the default behavior which is almost always better.
        mode:
          type: string
          description: |
            Defines what traffic data should be used for route shape and travel duration calculation.

            * `default`: Traffic data is considered.
            *    - If `departureTime=any` then only long-term closures will be considered.
            *    - If `departureTime` is not equal to `any` then all traffic data will be taken into account.
            * `disabled`: All traffic data, including long term closures, is ignored.
          default: default
          enum:
          - default
          - disabled
      description: Traffic specific parameters.
    TrafficIncidentCriticality:
      type: string
      description: |
        Describes the impact an incident has on the route.
        * critical - The part of the route the incident affects is not usable.
        * major - Major impact on duration, e.g. stop and go
        * minor - Minor impact on duration, e.g. traffic jam
        * low - Very little impact on duration, e.g. slightly increased traffic
      enum:
      - critical
      - major
      - minor
      - low
    TrafficIncidentType:
      type: string
      description: "Extensible enum: `accident` `congestion` `construction` `disabledVehicle`\
        \ `massTransit` `plannedEvent` `roadHazard` `roadClosure` `weather` `laneRestriction`\
        \ `other` `...`  \nAn open list of possible incident causes / types.\nNote:\
        \ Since new types are expected to appear, it is important to check for unknown\
        \ types when parsing this value.\n"
      x-extensible-enum:
      - accident
      - congestion
      - construction
      - disabledVehicle
      - massTransit
      - plannedEvent
      - roadHazard
      - roadClosure
      - weather
      - laneRestriction
      - other
    TrailerCountRange:
      type: object
      properties:
        from:
          minimum: 0
          type: integer
          description: Inclusive minimum of trailer count.
          format: int32
        to:
          minimum: 0
          type: integer
          description: "Inclusive maximum of trailer count. If not set, the maximum\
            \ trailer count is unbounded."
          format: int32
      description: Constrains the restriction to vehicles with the number of trailers
        within the specified range.
    TransitIncidentEffect:
      type: string
      description: "Extensible enum: `cancelledService` `reducedService` `additionalService`\
        \ `modifiedService` `delays` `detour` `stopMoved` `other` `...`  \nAn open\
        \ list of possible incident effects.\nNote: Since new types are expected to\
        \ appear, it is important to check for unknown types when parsing this value.\n"
      x-extensible-enum:
      - cancelledService
      - reducedService
      - additionalService
      - modifiedService
      - delays
      - detour
      - stopMoved
      - other
    TransitIncidentType:
      type: string
      description: "Extensible enum: `technicalProblem` `strike` `demonstration` `accident`\
        \ `holiday` `weather` `maintenance` `construction` `policeActivity` `medicalEmergency`\
        \ `other` `...`  \nAn open list of possible incident causes / types.\nNote:\
        \ Since new types are expected to appear, it is important to check for unknown\
        \ types when parsing this value.\n"
      x-extensible-enum:
      - technicalProblem
      - strike
      - demonstration
      - accident
      - holiday
      - weather
      - maintenance
      - construction
      - policeActivity
      - medicalEmergency
      - other
    TransitStopAttributes:
      type: string
      description: "Extensible enum: `noEntry` `noExit` `...`  \nAttributes of a stop.\n\
        \n* `noEntry`: The transport cannot be entered at the stop.\n* `noExit`: The\
        \ transport cannot be exited at the stop.\n"
      x-extensible-enum:
      - noEntry
      - noExit
    TransponderSystem:
      type: object
      properties:
        system:
          type: string
          description: Transponder system name.
      description: Transponder system for which a fare is applicable.
    TruckAxleCountRange:
      type: object
      properties:
        from:
          minimum: 2
          type: integer
          description: Inclusive minimum of axle count.
          format: int32
        to:
          minimum: 2
          type: integer
          description: "Inclusive maximum of axle count. If not set, the maximum axle\
            \ count is unbounded."
          format: int32
      description: Constrains the restriction to trucks with the number of axles within
        the specified range.
    TruckType:
      type: string
      description: |
        Specifies the type of the truck

        * `Straight`: A truck on a single frame with a permanently attached cargo area.
        * `Tractor`: A towing vehicle that can pull one or more semi-trailers (also known as a semi-truck).
      deprecated: true
      enum:
      - Straight
      - Tractor
    TunnelCategory:
      type: string
      description: |
        Specifies the tunnel category used to restrict the transport of specific goods.
      enum:
      - B
      - C
      - D
      - E
    TurnActionDirection:
      type: string
      description: Direction of the turn. `middle` is only used by the `keep` action.
      enum:
      - middle
      - right
      - left
    TurnActionSeverity:
      type: string
      description: |
        Tightness of the turn. Optional in the `turn` action, unused by other actions.

        * `light`: indicates making a light turn
        * `quite`: indicates making a regular turn
        * `heavy`: indicates making a heavy turn
      enum:
      - light
      - quite
      - heavy
    TurnAngle:
      maximum: 180
      minimum: -180
      type: number
      description: |
        The angle of the turn expressed in degrees.

        It is available only for turn-by-turn actions. A positive number indicates a clockwise angle.
      format: double
      example: -132.28
    Units:
      type: string
      description: "Units of measurement used, for example, in guidance instructions.\
        \ The default is `metric`."
      enum:
      - metric
      - imperial
    Uri:
      type: string
      description: An URL address that links to a particular resource.
      format: uri
      example: https://url.address.com/resource
    VehicleRestrictionMaxWeight:
      type: object
      properties:
        value:
          minimum: 0
          type: integer
          format: int32
        type:
          type: string
          description: "Extensible enum: `empty` `gross` `current` `unknown` `...`\
            \  \nRepresents the specific type of the maximum permitted weight restriction.\n\
            * `empty`: Restriction is for empty weight of the vehicle combination.\n\
            * `gross`: Restriction is for gross weight.\n* `current`: Restriction\
            \ is for current weight.\n* `unknown`: Restriction may apply to gross\
            \ or current weight. Specific `type` data for the restriction is not available.\n\
            \n**NOTES:**\n* A restriction of type `unknown` may change to `gross`\
            \ or `current` when data becomes available in future.\n* A restriction\
            \ of type `gross` or `current` may also change to a different type if\
            \ actual regulation changes.\n"
          x-extensible-enum:
          - empty
          - gross
          - current
          - unknown
      description: |
        Contains the maximum permitted weight, specified in kilograms, along with the specific type of the maximum permitted weight restriction.
    VehicleType:
      type: string
      description: |
        Specifies the type of the vehicle

        * `StraightTruck`: A truck on a single frame with a permanently attached cargo area. **Note:**
        default value when truck routing mode is used.
        * `Tractor`: A towing vehicle that can pull one or more semi-trailers (also known as a semi-truck).

        **Limitations:** only valid for `transportMode=truck`.
      enum:
      - StraightTruck
      - Tractor
    WalkAttributes:
      type: string
      description: "Extensible enum: `stairs` `park` `indoor` `open` `noThrough` `tollRoad`\
        \ `...`  \nWalkAttributes are applied to a span of a route section and describe\
        \ walk-related attribute\nflags.\n\n* `stairs`: This part of the route is\
        \ using stairs.\n* `park`: This part of the route is located inside a park.\n\
        * `indoor`: This part of the route is located inside a venue.\n* `open`: This\
        \ part of the route is open to walking.\n* `noThrough`: This part of the route\
        \ can only be traversed if origin, destination or any via waypoint is located\
        \ there.\n* `tollRoad`: This part of the route is restricted with a fee (or\
        \ toll).\n"
      x-extensible-enum:
      - stairs
      - park
      - indoor
      - open
      - noThrough
      - tollRoad
    Waypoint:
      type: string
      description: |
        A location defining an origin, destination or via point for a route or an isoline.

        Format: `Place[WaypointOptions]`

        * Place: `{lat},{lng}[PlaceOptions]`
        * PlaceOptions: `;option1=value1;option2=value2...`
        * WaypointOptions: `!option1=value1!option2=value2...`

        A waypoint consists of:
        * Exactly one place
        * Optional settings for the place
        * Optional settings for the waypoint itself

        Supported place options:
        * `course`: int, degrees clock-wise from north. Indicates the desired direction from the place. For example, `90` indicating `east`. Often combined with `radius` and/or `minCourseDistance`. This parameter takes preference over `matchSideOfStreet`.
        * `sideOfStreetHint`: `{lat},{lng}`. Indicates the side of the street that should be used. For example, if the location is to the left of the street, the router will prefer using that side in case the street has dividers. For example, `52.511496,13.304140;sideOfStreetHint=52.512149,13.304076` indicates that the `north` side of the street should be preferred. This options is required, if `matchSideOfStreet` is set to `always`. Option cannot be combined with `radius`, `radiusPenalty` or `snapRadius`.
        * `displayLocation`: `{lat},{lng}`. Indicates the physical location of the POI. It is different from the originalLocation and location which are generally expected to be on the navigable road network, i.e., on segments.
        * `uTurnPermission`: enum `[allow, avoid]`. Specifies the U-Turn Permission mode at the stop-over waypoint. If unspecified, the permission will be determined by the global setting, avoid[features]=uTurns. This feature is not supported for pass-through waypoints and U-Turns are generally avoided in that case.
          + `allow` : Allow making a U-Turn at this stop-over waypoint
          + `avoid` : Avoid making a U-Turn at this stop-over waypoint
        * `matchSideOfStreet`: enum `[always, onlyIfDivided]`. Specifies how the location set by `sideOfStreetHint` should be handled. Requires `sideOfStreetHint` to be specified as well. Note the exception above when combined with `course`.
          + `always` : Always prefer the given side of street.
          + `onlyIfDivided`: Only prefer using side of street set by `sideOfStreetHint` in case the street has dividers. This is the default behavior.
        * `nameHint`: string. Causes the router to look for the place with the most similar name. The typical examples include: `North` being used to differentiate between interstates `I66 North` and `I66 South`, `Downtown Avenue` being used to correctly select a residental street.
        * `radius`: int, meters. Sets the radius within which all locations are considered equally eligible for selection as waypoints. Typical use cases include scenarios with imprecise coordinates or user input provided on low resolution map displays. The value is capped at 200 meters. Setting a higher value doesn't return an error. Can't be used with `snapRadius`.
        * `snapRadius`: int, meters. Sets the radius within which waypoints are matched to the most "significant" place. Candidates for matching are sorted in the order of significance which is based on the visibility on a zoomed-out map. A highway is considered more significant than a national road, while a national road is more significant than a city road. Typical use case - selecting waypoints on a  zoomed-out view of a map on a drag-and-drop interface, where only significant roads are visible. A big enough radius allows to match waypoints to such roads. Can't be used with `radius` or `radiusPenalty` parameters.
        * `radiusPenalty`: int, percentage 0-10000. Penalty as percentage: Used in conjunction with the `radius` parameter. Router will match the waypoint within the specified radius and apply a penalty to candidates based on their air distance to the waypoint. This penalty is proportional to the given percentage, where 100 is just the cost of the air distance, and 200 is twice the cost of the air distance. The penalty must be chosen so that, when multiplied by the radius, the result is less than or equal to 7200. Regardless, only values up to and including 10000 will be accepted. This means that a maximum penalty of 3600% is allowed for a radius of 200m, 7200% for 100m and 10000% for 72m and less. Higher values will result in an error response. `radiusPenalty` cannot be combined with `snapRadius`. **Alpha**: This parameter is in development. It may not be stable and is subject to change.

        * `minCourseDistance`: int, meters. Instructs the routing service to try to find a route that avoids actions for the indicated distance. For example, if the origin is determined by a moving vehicle, the user might not have time to react to early actions. Values greater than 2000 meters will be capped at 2000 meters.
        * `segmentIdHint`: string. Causes the router to try and match to the specified segment. Waypoint coordinates need to be on the segment, otherwise waypoint will be matched ignoring the segment hint. This parameter can be used when the waypoint is too close to more than one segment to force matching to a specific one.
        * `onRoadThreshold`: int, meters. allows specifying a distance within which the waypoint could be considered as being on a highway/bridge/tunnel/sliproad. Within this threshold, the attributes of the segments do not impact the matching. Outside the threshold only segments which aren't one of highway/bridge/tunnel/sliproad can be matched.

        Supported waypoint options:
        * `stopDuration`: desired duration for the stop, in seconds.
           `stopDuration` must be less than 50000 if `ev[makeReachable]` is set to `true`.
            Note: The limit is currently for EV specific requests (`ev[makeReachable]=true`) but might be extended to waypoints in general in the future.
        * `passThrough`: boolean. Asks the router to avoid the following during route calculation:
          + Introducing a stop at the waypoint.
          + Splitting the route into sections.
          + Changing the direction of travel.

        Following scenarios are not supported for `passThrough` parameter:
          + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.
          + Setting `passThrough=true` for `origin` or `destination` of a route.
          The default value is `false`.
        * `charging`: Structured string denoting a user-planned charging stop.

            Format: `charging=(power=<value>;current=<value>;voltage=<value>;supplyType=<value>;minDuration=<value>;maxDuration=<value>)`.

            The properties `power`, `current`, `voltage` and `supplyType` denote the characteristics of the chosen compatible connector at the station. These are all required.
            `minDuration` and `maxDuration` set the time bounds for the charging time. At least one of them is required. For most use cases we recommend to provide at least `minDuration`.
            The following are the specifications for the properties:
            + `power`:        value in kW, type: number. Rated power of the connector.
            + `voltage`:      value in V, type: number. Rated voltage of the connector.
            + `current`:      value in A, type: number. Rated current of the connector.
            + `supplyType`:   one of {"acSingle", "acThree", "dc"} for 1-phase AC, 3-phase AC and DC respectively, type: string.
            + `minDuration`:  value in seconds, type: int. Minimum time the user expects to charge at the station, including `chargingSetupDuration`.
            + `maxDuration`:  value in seconds, type: int. Maximum time the user plans to charge at the station, including `chargingSetupDuration`.

            For a user-planned charging stop, the following properties of the `ev` parameter are also required (see documentation for the `ev` parameter):
            + `initialCharge`
            + `maxCharge`
            + `chargingCurve`

              *Notes*:
              * This option is only supported for /v8/routes endpoint.
              * This option is not supported for pass-through waypoints.
              * If `makeReachable=true` and `minDuration` is not provided (or if `minDuration=0`), route calculation may suggest not to charge on this station, for example,
                if a better station is available in the vicinity.
              * If `stopDuration` is provided then the total time at the stop is the higher of (`stopDuration`, `chargingSetupDuration` + `chargingDuration`).
              * If charging for `minDuration` would charge above `maxCharge`, the time spent charging is capped by `maxCharge`.
              * If `stopDuration` or `minDuration` exceed `chargingSetupDuration` + `chargingDuration`, the `waiting` post action duration is set to the remaining time.
              * If `makeReachable=true` is not set, the target charge is `maxChargeAfterChargingStation`, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.
              * In getRoutesByHandle requests, the target charge from the original route response is used, unless the charging time would be outside of the specified duration range.
                In such case, the nearest valid value is used.
    WeightPerAxleGroup:
      type: string
      description: |
        Specifies the weights of different axle groups, such as single and tandem axles.

        This allows specification of axle weights in a more fine-grained way than `weightPerAxle`. This
        is relevant in countries with signs and regulations that specify different limits for different
        axle groups, such as the USA and Sweden.

        All axle group weights are evaluated against their respective axle group restrictions and against
        generic axle weight restrictions. This means that the provided tandem axle group weight is
        compared with all tandem axle group weight restrictions and all generic axle weight restrictions.
        The same is true for single, triple, quad, and quint axle groups.

        Format: `AxleGroup:Weight[,AxleGroup2:Weight2]...`

        Currently, allowed axle-groups are:
          * `single`
          * `tandem`
          * `triple`
          * `quad`
          * `quint`

        Weights are specified in kilograms (kg) and represent the total weight of the axle-group.

        **Note:** `weightPerAxleGroup` and `weightPerAxle` are incompatible.

        **Limitations:** only valid when `transportMode` is one of (`truck`, `bus`, `privateBus`).
      example: "single:11000,tandem:18000"
    WheelchairAccessibility:
      type: string
      description: |
        Defines accessibility for people with a disability and who use a wheelchair.

        * `unknown` - Information is not available.
        * `yes` - Full unrestricted accessibility.
        * `limited` - Accessibility is limited, not everywhere or require assistance.
        * `no` - No accessibility.
      default: unknown
      enum:
      - unknown
      - "yes"
      - limited
      - "no"
    Agency:
      required:
      - id
      - name
      type: object
      properties:
        id:
          type: string
          description: |
            Unique code of the agency. Specifies if the same agency is used on different sections of the same route.

            **NOTE**: The given ID is only valid within the context of the response it is in.
        name:
          type: string
          description: Human readable name of the owner of the transport service.
        website:
          description: Link to the agency's website.
          allOf:
          - $ref: '#/components/schemas/Uri'
      description: Contains information about a particular agency.
    Avoid:
      type: object
      properties:
        features:
          type: string
          description: |
            A comma-separated list of features that routes should avoid.

            * `seasonalClosure`
            * `tollRoad`: This option avoids roads that have an applicable toll.
            * `controlledAccessHighway`
            * `ferry`
            * `carShuttleTrain`
            * `tunnel`
            * `dirtRoad`
            * `difficultTurns`: This option avoids difficult turns, sharp turns and U-turns on multi-digitized roads, intersections and stopover-type waypoints. It is only supported for the `truck` transport mode.
              **Disclaimer: This parameter is currently in beta release. Depending on your location and vehicle type, the outcome might not be according to the expectations. Please test the behavior of this feature for your use case before enabling it.**
            * `uTurns`: This option avoids U-turns on multi-digitized roads, intersections, stopover-type waypoints. U-turns on mini roundabouts (roundabouts with a small turn radius, which are difficult for long vehicles to navigate) are avoided when `transportMode = truck`. This option is not supported for pedestrian, bicycle and scooter transport modes.

            **Notes**
              - It may not always be possible to find a route which avoids the requested feature. A route may not be returned, or one may be returned with a critical notice.
              - Using `avoid[features]=tollRoad` does not optimize the route to reduce the overall toll costs.
              - Using `avoid[features]=tollRoad` is not recommended for large vehicles, e.g., trucks or buses. Even if a route is suggested, it may use smaller roads, where driving such vehicles is not convenient or safe.
              - Using `avoid[features]=difficultTurns` together with `avoid[features]=controlledAccessHighway` or `avoid[features]=tollRoads` is not recommended, as it may lead to routes which could include difficult turns.
        areas:
          $ref: '#/components/schemas/Areas'
        segments:
          type: string
          description: |
            A comma separated list of segment identifiers that routes should avoid going through.

            Each entry has the following structure:
            `{segmentId}(#{direction})?`

            The individual parts are:
            * segmentId: The identifier of the referenced topology segment inside the catalog, example: `here:cm:segment:207551710`
            * direction (optional): Either '*' for bidirectional (default), '+' for positive direction, or '-' for negative direction

            Example of a parameter value excluding two segments:
            `here:cm:segment:207551710#+,here:cm:segment:76771992#*`

            **Note**: Maximum number of penalized segments in one request should not be greater than 1000.
                      "Penalized segments" refers to segments that either have a restriction on maximum baseSpeed with `maxSpeedOnSegment`
                      or avoided with `avoid[segments]`
        zoneCategories:
          type: string
          description: |
            Specifies a list of categories of zones which routes should avoid going through.

            Format: `Categories[ZoneCategoryOptions]`

            * Categories: `{cat1},{cat2}...`
              A comma separated list of zone categories.
            * ZoneCategoriesOptions (optional): `;option1=value1;options2=value2...`
              A list of options for zone categories in `KEY=VALUE` form.

            Supported zone category options:
              * exceptZoneIds: A comma-separated list of zone identifiers, which should not be taken into account for evaluation of zone categories to avoid.

            Supported zone categories:
              * `vignette`
              * `congestionPricing`
              * `environmental`

            **Note**: Zones that don't apply to the current vehicle aren't avoided.
            Time-dependent zones are avoided only during the validity period.

            Example of zone categories avoidance:
            `avoid[zoneCategories]=environmental,vignette`

            Example of zone categories avoidance with exceptions:
            `avoid[zoneCategories]=environmental,vignette;exceptZoneIds=here:cm:envzone:3`
        zoneIdentifiers:
          type: string
          description: |
            A comma separated list containing identifiers of zones that routes should avoid going through.

            **Note**: Zones specified by id in this manner are avoided even if their conditions don't apply to the current vehicle.
            Time-dependent zones are avoided by id even outside of the validity period.

            Example of an identifier referencing an environmental zone:
            `here:cm:envzone:2`
        truckRoadTypes:
          type: string
          description: |
            A comma-separated list of truck road type identifiers to be avoided.

            A truck road type is an identifier associated with roads that have additional regulations applied by local administration for traversal by heavy vehicles like trucks.
            For example, the BK Bearing Class regulations in Sweden, and ET categories in Mexico.
            Identifiers for supported truck road types are specified in HERE Map Content
            [TruckRoadType](https://www.here.com/docs/bundle/map-content-schema-data-specification/page/topics_schema/truckroadtypeattribute.html).

            Example: `avoid[truckRoadTypes]=BK1,BK2,BK3,BK4`
          example: "BK1,BK2,BK3,BK4"
        tollTransponders:
          type: string
          description: |
            Specifies that routes should avoid roads where the specified toll transponders are the only payment method.

            The value of the parameter is a comma-separated list of transponder systems that the user has. Alternatively,
            the user can also specify `all` as a list element to state they have all required transponders along any potential route.

            **Note**: Currently, the only valid value is `all`.
            Example: `avoid[tollTransponders]=all`
    BaseAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
      description: An action to be performed between sections or during a section.
    BaseSummary:
      required:
      - duration
      - length
      type: object
      properties:
        duration:
          $ref: '#/components/schemas/Duration'
        length:
          $ref: '#/components/schemas/Distance'
        baseDuration:
          description: |
            Duration of this span (in seconds) ignoring time-aware information.

            For pedestrian mode, the reported time is currently equal to that in `duration`.
          allOf:
          - $ref: '#/components/schemas/Duration'
      description: Total value of key attributes for a route section.
    ChargingConnectorAttributes:
      required:
      - connectorType
      - power
      - supplyType
      type: object
      properties:
        power:
          type: number
          description: Power supplied by the suggested connector in kW.
        current:
          type: number
          description: Current of the suggested connector in Amperes.
        voltage:
          type: number
          description: Voltage of the suggested connector in Volts.
        supplyType:
          description: |
            Supply type of the suggested connector.
          allOf:
          - $ref: '#/components/schemas/ChargingSupplyType'
        connectorType:
          description: Suggested connector for charging at this station
          allOf:
          - $ref: '#/components/schemas/ChargingConnectorType'
      description: Details of the connector that is suggested to be used in the section's
        `postAction` for charging.
    CorridorArea:
      required:
      - polyline
      - radius
      - type
      type: object
      properties:
        type:
          type: string
          example: corridor
        polyline:
          maxItems: 100
          minItems: 2
          type: array
          description: List of coordinates defining polyline.
          items:
            $ref: '#/components/schemas/Coordinate'
        radius:
          maximum: 1000
          minimum: 1
          type: number
          description: The width in meters of the corridor determines the outline
            of the polygon.
      description: A polyline with a specified radius in meters that defines an area.
    DynamicSpeedInfo:
      required:
      - baseSpeed
      - trafficSpeed
      - turnTime
      type: object
      properties:
        trafficSpeed:
          description: |
            Estimated speed (in meters per second) of a vehicle on the road-segment, taking into account traffic-related constraints.
            **Note:** Will be the same as `baseSpeed` if `traffic[mode]=disabled` is specified.
          allOf:
          - $ref: '#/components/schemas/Speed'
        baseSpeed:
          description: Estimated speed (in meters per second) without considering
            any traffic-related constraints.
          allOf:
          - $ref: '#/components/schemas/Speed'
        turnTime:
          description: |
            Estimate of the time (in seconds) it takes to turn from this span into the next. It takes into account both traffic conditions and the specific transport-mode.
          allOf:
          - $ref: '#/components/schemas/Duration'
      description: |
        Describes dynamic speed information, such as traffic speed, estimated speed without traffic, and turn time.
    EVPhysicalModel:
      required:
      - driveEfficiency
      - recuperationEfficiency
      type: object
      properties:
        driveEfficiency:
          maximum: 1
          minimum: 0.1
          type: number
          description: |
            The proportion of the energy drawn from the battery that is used to move the vehicle. (This is to factor in energy losses through heat in the motors, for example.)
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        recuperationEfficiency:
          maximum: 1
          minimum: 0
          type: number
          description: |
            The proportion of the energy gained when braking or going downhill that can be recuperated and restored as battery charge.
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        auxiliaryPowerConsumption:
          minimum: 0
          type: number
          description: |
            Power (in W) consumed by the vehicle's auxiliary systems (for example, air conditioning, lights).

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        airDensity:
          maximum: 2.0
          minimum: 0.5
          type: number
          description: |
            The density of air (in kg/m³) used for calculating aerodynamic drag.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
          default: 1.225
        initialCharge:
          maximum: 1000
          minimum: 0
          type: number
          description: |
            Charge level of the vehicle's battery at the start of the route (in kWh).
            Value must be less than or equal to the value of `maxCharge`.
        maxCharge:
          maximum: 1200
          minimum: 0
          type: number
          description: |
            Total capacity of the vehicle's battery (in kWh).
        chargingCurve:
          type: string
          description: |
            Function curve describing the maximum battery charging rate (in kW) at a given charge level (in kWh).

            The format of the string is a comma-separated list of numbers, as follows:

            ```
            <CHARGE_0>,<RATE_0>,<CHARGE_1>,<RATE_1>,...,<RATE_N>,<CHARGE_N>
            ```

            where charge values are strictly increasing, non-negative floating-point values in units
            of (kWh), and rate values are positive floating point values in units of (kW).

            Charge values must cover the entire range of `[0, maxChargeAfterChargingStation`]. The
            charging curve is piecewise constant, e.g., for any charge in the range `[CHARGE_0,
            CHARGE_1)`, the value of the function is `RATE_0`.

            Maximum value of rate must not be greater than 2000 kW. The values of charge in the curve are only validated up to the value of `maxChargeAfterChargingStation` since values outside this range are not used.
            Minimum value of rate must not be less than 7kW. The values of charge in the curve are only validated up to the value of `maxChargeAfterChargingStation` since values outside this range are not used.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts and uses the charging curve to evaluate the most efficent range of
            charging. For example, if the rate of charging is high at lower levels of battery, but slows down significantly after charging a little, stopping
            often and charging less, but quicker, at each station might be better for the overall route.
            Because batteries lose charging speed with use, providing a charging curve for the
            exact battery would give more accurate charging time estimate than providing a
            generic curve for all batteries of one type.
          example: "0,207,28.761,207,29.011,173,43.493,173,43.743,145,51.209,145,51.459,113,56.120,113,56.370,87,80.0,10"
        maxChargingVoltage:
          maximum: 2000
          minimum: 0
          type: number
          description: |
            Maximum charging voltage supported by the vehicle's battery (in Volt).
        maxChargingCurrent:
          maximum: 2000
          minimum: 0
          type: number
          description: |
            Maximum charging current supported by the vehicle's battery (in Ampere).
        maxChargeAfterChargingStation:
          minimum: 0
          type: number
          description: |
            Maximum charge to which the battery should be charged at a charging station (in kWh).
            Value must be less than or equal to the value of `maxCharge`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts so charging at a charging station does not happen strictly to the value of
            this parameter. Instead, the algorithm attempts to leave every station with
            different charge levels, and only the best possible combination of charging stations
            and target charge will form the final route.

            For example, if there is a fast but not reachable charging station on the route,
            the algorithm prefers first to charge at a slower station, but only to a level that enables it
            to reach the fast station. This way it calculates the best possible combination of driving
            and charging parts.
        minChargeAtChargingStation:
          minimum: 0
          type: number
          description: |
            Minimum charge when arriving at a charging station (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts so visiting a charging station is planned not when the remaining charge is close
            to the value of this parameter but when it is part of the best possible charging
            plan for the given route.

            For example, it might prefer charging a still half-full battery at the fast charging station because
            there are only slower stations later on the route and the remaining charge is not
            enough to reach the destination without charging at all.
        minChargeAtFirstChargingStation:
          minimum: 0
          type: number
          description: |
            Minimum charge when arriving at first charging station (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            This overrides `minChargeAtChargingStation` for the first charging station. If not specified, `minChargeAtChargingStation`
            will be used for all charging stations, including the first one.

            This is usually used when the current charge is too low to reach a charging station within `minChargeAtChargingStation` limits.
        minChargeAtDestination:
          minimum: 0
          type: number
          description: |
            Minimum charge at the final route destination (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts while making sure that the actual value of the charge at the destination would be close to the
            value of this parameter. I.e., the resulting value is expected to be bigger
            than this parameter's value by no more than 10% of the battery capacity.
        chargingSetupDuration:
          maximum: 1800
          minimum: 0
          type: integer
          description: |
            Time spent (in seconds) after arriving at a charging station but before actually charging
            (for example, time spent for payment processing).
          format: int32
        maxChargingDuration:
          minimum: 1800
          type: integer
          description: |
            Maximum time spent (in seconds) at a charging station unless otherwise specified in a user-introduced charging waypoint. Charging waypoint may
            specify max or min duration, both of which can be higher. (see documentation for the `via` parameter)
          format: int32
        connectorTypes:
          type: string
          description: |
            Comma-separated list of connector types that are compatible with the vehicle. If `makeReachable` is set to `true`,
            then only stations with any of these connector types will be evaluated as a potential charging stop.
            For stations with multiple compatible connectors, the charging time is based on the connector type with the highest power rating among them.

            Currently supported connector types are:
              * `iec62196Type1Combo`:  Type 1 Combo connector, commonly called "CCS1"
              * `iec62196Type2Combo`:  Type 2 Combo connector, commonly called "CCS2"
              * `chademo`: CHAdeMO connector
              * `tesla`: Tesla connector
              * `gbtDc`: Guobiao GB/T 20234.3 DC connector
          example: "iec62196Type1Combo,chademo"
        maxPowerAtLowVoltage:
          minimum: 0
          type: number
          description: |
            The maximum power (in kW) at which a vehicle can charge given these conditions:
            * The charging station connector's maximum supply voltage < 800 V.
            * The vehicle's `maxChargingVoltage` >= 800 V.

            The `consumablePower` at a station is then taken to be the lower of `maxPowerAtLowVoltage` and the charging station's available power.
          default: 45
      description: Specifies parameters required for calculation of energy consumption
        for electric vehicles using physical model.
    Exclude:
      type: object
      properties:
        countries:
          type: string
          description: |
            A comma separated list of three-letter country codes (ISO-3166-1 alpha-3 code) that
            routes will exclude.
            - Format: `{country1}[,country2][,country...]`
              + `{country}` - Country code according to (ISO-3166-1 alpha-3)
            - Example: `CZE,SVK` - exclude Czechia and Slovakia from routing.

            Note - Exclude countries guarantees exclusion, but doesn't guarantee finding a route.
        states:
          type: string
          description: |
            A pipe separated list of country-aggregated state codes.

            - Format: `{country1}:{state1.1}[,state1.2][,state1.3]...[|{country2}:{state2.1}[,state2.2]]...`
              + `{country}` - Country code according to (ISO-3166-1 alpha-3)
              + `{state}`   - State code part according to (ISO 3166-2)
            - Examples:
              + `USA:NY,PA`       - exclude USA's New York and Pennsylvania states
              + `USA:NY,PA|CAN:QC`- exclude USA's New York, Pennsylvania states and Canada's Quebec province
            - Notes:
              + Exclude states guarantees exclusion, but doesn't guarantee finding a route.
              + Some countries don't have the state code data available for them, so the states in those countries won't be excluded.
        areas:
          $ref: '#/components/schemas/Areas'
      description: Options to exclude strictly during the route calculation.
    ExitInfo:
      type: object
      properties:
        number:
          type: array
          description: Number of the exit (e.g. '18')
          items:
            $ref: '#/components/schemas/LocalizedString'
      description: Exit information attached to an offset action
      example:
        exit:
          number:
          - value: "15"
            language: de
    FarePass:
      type: object
      properties:
        returnJourney:
          type: boolean
          description: This pass includes the fare for the return journey.
        validityPeriod:
          $ref: '#/components/schemas/FarePassValidityPeriod'
        travels:
          type: integer
          description: This pass allows for the specified number of travels.
        transfers:
          type: integer
          description: "Indicates if transfers are permitted with this pass, and if\
            \ so, how many."
        seniorPass:
          type: boolean
          description: This pass is valid only if presented by a senior person.
      description: "Specifies whether this `Fare` is a multi-travel pass, and its\
        \ characteristics"
    HazardousGoodsRestrictionArray:
      type: array
      description: Provides a list of all hazardous goods that are restricted during
        the trip.
      example:
      - gas
      - flammable
      items:
        $ref: '#/components/schemas/HazardousGoodsRestriction'
    HealthResponseFailSchema:
      type: object
      properties:
        status:
          type: string
          description: |
            Health status of the service:

            * `ok` - the service is operating normally
            * `fail` - the service is currently encountering a failure
          enum:
          - fail
      description: Returns the health of the service
    HealthResponseOKSchema:
      type: object
      properties:
        status:
          type: string
          description: |
            Health status of the service:

            * `ok` - the service is operating normally
            * `fail` - the service is currently encountering a failure
          enum:
          - ok
      description: Returns the health of the service
    LicensePlateRestriction:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/LicensePlateRestrictionType'
        forbiddenCharacters:
          type: array
          description: |
            A list of restricted characters in the vehicle license plate.

            The `type` property indicates which character of the vehicle license plate is considered for matching.
            The condition is met if that character matches any of the characters in the `forbiddenCharacters` array.

            For example, if `type` is set to `lastCharacter` and `forbiddenCharacters` is set to `["7", "8"]` then the condition is met if the last character
            of the vehicle license plate is either 7 or 8.
          example:
          - "1"
          - "3"
          - "5"
          - "7"
          - "9"
          items:
            maxLength: 1
            minLength: 1
            type: string
      description: Contains details of the violated license plate restriction.
    LocalizedRouteNumber:
      required:
      - value
      type: object
      properties:
        value:
          type: string
          description: String written in the language specified in the language property.
        language:
          type: string
          description: Language in BCP47 format
        direction:
          type: string
          description: |
            This property indicates the official directional identifier assigned to highways. Use direction on sign in conjunction with official name or route number.
            For example, for route guidance, use "US-101 S" and not just "US-101" when appropriate.

            Note that the official direction is not necessarily the travel direction. For example, US-101 through the city of Sunnyvale is physically located East to West.
            However, the official direction on sign is North/South.
          enum:
          - north
          - south
          - east
          - west
        routeType:
          maximum: 6
          minimum: 1
          type: integer
          description: |
            Specifies route type for different route element. These values must be used in conjunction with a separate HERE data product: Country Profile Road Signs.
            One of the usage example for this property is it affects how the road shield will be rendered, i.e.
            this route type might change the shape, color and the font of the road shield.
            Related examples for different countries can be found [here](https://en.wikipedia.org/wiki/Highway_shield).
            Possible values are from 1 to 6. But if some countries add extra route type in the future, this range could change as well.
      description: Represents a route number in specific language with optional cardinal
        direction and route level.
      example:
        value: US-101
        language: en
        direction: south
        routeType: 1
    MatchTraceVia:
      required:
      - index
      type: object
      properties:
        index:
          minimum: 1
          type: integer
          description: Index of the corresponding trace point
        stopDuration:
          description: "Desired duration for the stop, in seconds"
          allOf:
          - $ref: '#/components/schemas/Duration'
      description: Via waypoint in the middle of route
    Notice:
      required:
      - code
      type: object
      properties:
        title:
          type: string
          description: Human-readable notice description.
          example: No route found
        code:
          type: string
          description: Notice code.
          example: noRouteFound
        severity:
          $ref: '#/components/schemas/NoticeSeverity'
        details:
          type: array
          description: Additional details about the notice
          items:
            $ref: '#/components/schemas/BaseNoticeDetail'
      description: A notice contains important notifications.
    PedestrianMode:
      type: string
      description: "Extensible enum: `pedestrian` `...`  \nPedestrian mode of transport.\n\
        \nSince the supported pedestrian modes may be extended in the future, the\
        \ pedestrian mode should be hidden when an unknown mode is encountered.\n"
      default: pedestrian
      x-extensible-enum:
      - pedestrian
    PolygonArea:
      required:
      - outer
      - type
      type: object
      properties:
        type:
          type: string
          example: polygon
        outer:
          maxItems: 100
          minItems: 3
          type: array
          description: List of coordinates defining the outline of the polygon.
          items:
            $ref: '#/components/schemas/Coordinate'
      description: |
        A polygon defined as a list of coordinates.

        The polygon is automatically closed, so repeating the first vertex is not required. Self-intersecting polygons are not supported.
    Rerouting:
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/ReroutingMode'
        lastTraveledSectionIndex:
          type: integer
          description: |
            Can be used to indicate the index of the last traveled route section on multi-section
            routes. The traveled part of the route won't be reused.

            If the last traveled section is specified and the current position, i.e., the new
            `origin`, is provided, it is expected to be on the last traveled section. If it is
            not on the last traveled section, it is treated as not on the route, triggering
            return to route, if enabled, to the waypoint at the end of the last traveled section.

            If the last traveled section index is not specified, the current position can be
            matched to any section of the route. In this case the route will continue to the
            next waypoint after the current position, i.e., the new `origin`. If the current
            position is not on the route, return to route, if enabled, will by default return
            to the waypoint at the end of the first section.
        traveledDistanceOnLastSection:
          type: integer
          description: |
            Offset in meter to the last visited position on the route section defined by the `lastTraveledSectionIndex`.
          default: 0
      description: |
        Rerouting parameters allow to request a new route calculation based on the route handle.

        All attributes are optional.
      example:
        $ref: '#/components/examples/ReroutingExample'
    RouteLabel:
      type: object
      properties:
        label_type:
          type: string
          enum:
          - Name
          - RouteNumber
        name:
          $ref: '#/components/schemas/LocalizedString'
      description: |
        Road name or route number distinguishing a route from other alternatives.
    RoutingErrorResponse:
      required:
      - action
      - cause
      - code
      - correlationId
      - status
      - title
      type: object
      properties:
        title:
          type: string
          description: Human-readable error description
          example: Input data failed validation
        status:
          type: integer
          description: HTTP status code
          example: 400
        code:
          type: string
          description: |
            Machine readable service error code.

            All error codes of this service start with "`E605`". The last three digits describe a specific error. Provide this error code when contacting support.

            **NOTE:** Please note that the list of possible error codes could be extended in the future. The client application is expected to handle such a case gracefully.

            | Code      | Reason  |
            | --------- | ------- |
            | `E60500X` | Malformed query. Typically due to invalid values such as `transportMode=spaceShuttle` or missing required fields. Check the error message for details. |
            | `E605010` | Invalid combination of vehicle options and transport mode. |
            | `E605011` | Invalid combination of avoid feature `difficultTurns` or `uTurns` and transport mode. Check `avoid` for details. |
            | `E605012` | Invalid combination of transport mode and routing mode. Check `routingMode` for a list of supported combinations. |
            | `E605013` | Invalid return options. Check `return` for valid combinations of values. |
            | `E605014` | Invalid language code. Check `lang` for details on how valid language codes look. |
            | `E605015` | Too many alternatives. Check `alternatives` for the maximum number of alternatives allowed. |
            | `E605016` | Invalid country code. Check `countries` under `Exclude`. |
            | `E605017` | `spans` contains a value whose dependency has not been requested |
            | `E605018` | Invalid combination of departure and arrival time |
            | `E605019` | `truck[weightPerAxle]` and `truck[weightPerAxleGroup]` are incompatible |
            | `E605020` | Invalid combination of `radius` and `snapRadius`  |
            | `E605021` | Invalid Combination of `vehicle[occupancy]`/`allow[hot]`/`allow[hov]` and `vehicle[hovOccupancy]`  |
            | `E605022` | `radius` * `radiusPenalty` / 100 must not exceed 7200  |
            | `E605023` | Invalid combination of `radiusPenalty` and `snapRadius` |
            | `E605024` | `vehicle[currentWeight]` or `vehicle[grossWeight]` exceeds limit for given `transportMode`. |
            | `E605025` | Invalid state code. Check `states` under `Exclude` |
            | `E605026` | Invalid country code. Check `states` under `Exclude` |
            | `E605027` | Ev parameters cannot be used with the specified transportMode. |
            | `E605028` | Fuel parameters cannot be used with the specified transportMode. |
            | `E605029` | State code not available in map data. Check `states` under `Exclude` |
            | `E605030` | Invalid EV options. Check `ev` for details. |
            | `E605032` | Invalid transport mode for speed cap, check `vehicle[speedCap]` for details. |
            | `E605033` | Invalid combination of scooter and transport mode. Check `scooter` for valid scooter transport modes. |
            | `E605034` | Invalid Speed Cap, check `vehicle[speedCap]` or `vehicle[speedCapPerFc]` for details. |
            | `E605035` | MLDuration is not supported with `vehicle[speedCap]` and `vehicle[speedCapPerFc]` parameter. |
            | `E605036` | Consumption parameters are not supported for combination of EV and Fuel-based vehicle. Check `ev` or `fuel` for details. |
            | `E605037` | Invalid Fuel options. Check `fuel` for details. |
            | `E605039` | Invalid combination of driver schedule and transport mode. |
            | `E605040` | Invalid combination of `ev[makeReachable]` and `transportMode`. Check `ev` for details. |
            | `E605041` | Invalid combination of `ev[makeReachable]` and `routingMode`. Check `ev` for details. |
            | `E605043` | Invalid combination of `ev[makeReachable]` and `avoid` options. Check `ev` for details. |
            | `E605047` | Invalid combination of `ev[makeReachable]` and `arrivalTime`. Check `ev` for details. |
            | `E605048` | Invalid combination of avoid feature `difficultTurns` and truck category `lightTruck`. |
            | `E605052` | Invalid number of trace points. Check `MatchTrace` for the minimum and maximum number of trace points allowed. |
            | `E605053` | Invalid Match trace via. Check `via` in `MatchTrace` for valid indexes. |
            | `E605054` | Too many avoid areas. Check `areas` for the maximum number of avoid areas allowed. |
            | `E605055` | Invalid trailer axle count. |
            | `E605056` | Too many avoid polygons. Check `areas[polygon]` for the maximum number of polygons allowed. |
            | `E605057` | Too many vertices in the polygon. Check `areas[polygon]` for the maximum number of vertices allowed. |
            | `E605058` | Not enough vertices in the polygon. Check `areas[polygon]` for the minimum number of vertices allowed. |
            | `E605059` | Polygon is self-intersecting. Check `areas[polygon]`. |
            | `E605060` | Invalid trace point. Check `lat` value must be between -90 and 90 and `lng` value must be between -180 and 180. |
            | `E605064` | Invalid transport mode for speed cap per Functional Class, check `vehicle[speedCapPerFc]` for details. |
            | `E605075` | Invalid customizationIndex. |
            | `E605076` | Too many charging stations to exclude. Check `ev[excludeChargingStations]` for maximum number of charging stations allowed. |
            | `E605077` | `rerouting[lastTraveledSectionIndex]` is out of range. |
            | `E605101` | Credentials not allowed for calculating routes in Japan. |
            | `E605201` | RouteHandle not valid (anymore). (Re-)calculate route to retrieve new handle. |
            | `E605204` | Invalid combination of EV and driver schedule. |
            | `E605301` | Pedestrian options are only supported for transport mode `pedestrian`. |
            | `E605302` | Routing zones is not supported for transport mode `pedestrian`. |
            | `E605303` | Avoiding routing zones is not supported for transport mode `pedestrian`. |
            | `E605304` | Avoiding truck road types is not supported for transport mode `pedestrian`. |
            | `E605400` | Customization not supported. |
            | `E6055XX` | Internal server error. |
          example: E605001
        cause:
          type: string
          description: Human-readable explanation for the error
          example: The input data in question does not comply with validation rules
        action:
          type: string
          description: Human-readable description of the action that can be taken
            to correct the error
          example: Request a valid id
        correlationId:
          type: string
          description: Auto-generated id that univocally identifies the request
          example: 4199533b-6290-41db-8d79-edf4f4019a74
      description: Response in case of error
    RoutingZone:
      type: object
      properties:
        ref:
          $ref: '#/components/schemas/RoutingZoneReference'
        type:
          type: string
          description: "Extensible enum: `environmental` `vignette` `...`  \nThe type\
            \ of the routing zone. A routing zone is defined based on an underlying\
            \ feature/resource.\nThe standard representation of a routing zone reference\
            \ is `{catalogHrn}:{catalogVersion}:({layerId})?:{tileId}:{zoneId}` (refer\
            \ to `RoutingZoneReference` description in this document for details).\n\
            `{zoneId}` represents the identifier of the underlying feature/resource\
            \ within the catalog, in the `\"domain:system:type:id\"` format.\nThis\
            \ attribute corresponds to the `\"domain:system:type\"` portion of the\
            \ identifier.\nE.g. `type=environmental` corresponds to the `\"here:cm:envzone\"\
            ` portion of the identifiers of all environmental zones within a catalog.\n\
            \nTo further distinguish between the sub-categories of the `type` (if\
            \ applicable) use the `category` attribute.\n\nNOTE: To maintain legacy\
            \ support `type=vignette` is not renamed but corresponds to the `\"here:cm:tollsystem\"\
            ` portion of the identifier for all toll cost features.\n"
          x-extensible-enum:
          - environmental
          - vignette
        name:
          type: string
          description: The routing zone's name.
        category:
          type: string
          description: "Extensible enum: `environmental` `vignette` `congestionPricing`\
            \ `...`  \nThe category of the routing zone. Corresponds to the sub-category\
            \ (if applicable) of the feature/resource defining a routing zone, e.g.\
            \ `vignette` and `congestionPricing` sub-categories of the toll cost features.\n"
          x-extensible-enum:
          - environmental
          - vignette
          - congestionPricing
      description: Information about a routing zone.
    SignpostLabelText:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/LocalizedString'
      description: Text on a signpost label.
    TollCollectionLocation:
      required:
      - location
      type: object
      properties:
        name:
          type: string
          description: |
            A descriptive name of the location.
        location:
          $ref: '#/components/schemas/Location'
      description: |
        Refers to the physical location where the toll is collected. This can include various structures such as toll booths, transponder readers, or number-plate cameras.
        It's important to note that certain toll collection methods, such as vignettes, do not have specific toll collection locations associated with them, and therefore this element
        will not be present at all.

        The value of this property is a `Location` that specifies the coordinates of the payment location.
    TrafficIncident:
      type: object
      properties:
        description:
          type: string
          description: A human readable description of the incident
          example: closed due to roadworks
        type:
          $ref: '#/components/schemas/TrafficIncidentType'
        criticality:
          $ref: '#/components/schemas/TrafficIncidentCriticality'
        validFrom:
          $ref: '#/components/schemas/Time'
        validUntil:
          $ref: '#/components/schemas/Time'
        id:
          type: string
          description: |
            Traffic Incident unique identifier,

            Example of an incident identifier in standard representation:
            here:traffic:incident:1000155780078589348

            Id usage:
            Incident details can be queried from the traffic service. See
            [this tutorial](https://www.here.com/docs/bundle/traffic-api-developer-guide-v7/page/topics/use-cases/incidents-by-id.html).

            **Notice**:
            In most cases, the ID comes from a third party incident supplier.
            This means that once an incident has expired, the ID might be reused
      description: |
        An incident describes a temporary event on the road network.
        It typically refers to a real world incident (accident, road construction, weather condition, etc.)
        on a street or street segment
    TransitIncident:
      required:
      - effect
      - type
      type: object
      properties:
        summary:
          type: string
          description: A human readable summary of the incident
          example: The subway is closed each night between 1 AM and 5 AM.
        description:
          type: string
          description: A human readable description of the incident
          example: The subway is closed each night between 1 AM and 5 AM while we
            clean our trains and stations. We are running extra bus service overnight.
        type:
          $ref: '#/components/schemas/TransitIncidentType'
        effect:
          $ref: '#/components/schemas/TransitIncidentEffect'
        validFrom:
          $ref: '#/components/schemas/Time'
        validUntil:
          $ref: '#/components/schemas/Time'
        url:
          description: Link to the original incident published at the agency website
          allOf:
          - $ref: '#/components/schemas/Uri'
      description: |
        An incident describes disruptions on the transit network.
        Disruptions scale from delays to service cancellations.
    TransitMode:
      title: Modes
      type: string
      description: "Extensible enum: `highSpeedTrain` `intercityTrain` `interRegionalTrain`\
        \ `regionalTrain` `cityTrain` `bus` `ferry` `subway` `lightRail` `privateBus`\
        \ `inclined` `aerial` `busRapid` `monorail` `carShuttleTrain` `flight` `spaceship`\
        \ `...`  \nTransit mode of transport in the route response\n"
      x-extensible-enum:
      - highSpeedTrain
      - intercityTrain
      - interRegionalTrain
      - regionalTrain
      - cityTrain
      - bus
      - ferry
      - subway
      - lightRail
      - privateBus
      - inclined
      - aerial
      - busRapid
      - monorail
      - carShuttleTrain
      - flight
      - spaceship
    TruckTypeWithDefault:
      type: string
      description: |
        Specifies the type of the truck

        * `Straight`: A truck on a single frame with a permanently attached cargo area.
        * `Tractor`: A towing vehicle that can pull one or more semi-trailers (also known as a semi-truck).
      deprecated: true
      default: Straight
      enum:
      - Straight
      - Tractor
    VehicleMode:
      type: string
      description: "Extensible enum: `car` `truck` `bicycle` `scooter` `taxi` `bus`\
        \ `privateBus` `...`  \nVehicle mode of transport.\n\nSince the supported\
        \ vehicle modes may be extended in the future, the vehicle mode should be\
        \ hidden when an unknown mode is encountered.\n"
      default: car
      x-extensible-enum:
      - car
      - truck
      - bicycle
      - scooter
      - taxi
      - bus
      - privateBus
    VersionResponse:
      required:
      - apiVersion
      type: object
      properties:
        apiVersion:
          type: string
          description: The current version of the API.
          example: 8.18.0
        serviceVersion:
          type: string
          description: The current version of the service.
          example: 2022-12-15-b706cc8c-9057409
        dataVersions:
          type: array
          description: Returns the versions of data sets used by the service.
          items:
            $ref: '#/components/schemas/DataVersion'
      description: Returns the versions of the service components.
    ViaNoticeDetail:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - via
        index:
          minimum: 0
          type: integer
          description: "Index of the via waypoint not matched. When the destination\
            \ waypoint was not matched, no `via` detail is returned."
      description: Details about via waypoint.
    ViolatedChargingStationOpeningHours:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - violatedOpeningHours
        opening_hours:
          description: |
            Information about the opening time intervals of the selected charging station.
          allOf:
          - $ref: '#/components/schemas/TimeDomain'
      description: |
        A charging stop was planned at the destination of this section, but the `postActions` would not be completed within the opening hours.
    ViolatedTransportMode:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - violatedTransportMode
      description: |
        Contains details about the violated transport mode on this road, such as trucks being generally forbidden.
    ViolatedTruckRoadType:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - truckRoadType
        truckRoadType:
          type: string
          description: The truck road type causing this violation.
      description: |
        Contains details about the violated truck road type on this road.
    WebLink:
      required:
      - id
      - text
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the web link. It is used to deduplicate
            links defined in multiple sections.
        href:
          $ref: '#/components/schemas/Uri'
        text:
          type: string
          description: Text describing the url address (e.g. The example website).
        hrefText:
          type: string
          description: |
            The interactive (or clickable) portion of the text. If not present (default), the entire content of the text attribute will be considered.
      description: The URL address to an external resource.
    AccessPointPlace:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Location name
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - accessPoint
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
        wheelchairAccessible:
          description: |
            Information about accessibility for people with a disability and who use a wheelchair.

            * `unknown` - Accessibility information is not available.
            * `yes` - Access point is wheelchair accessible.
            * `limited` - Accessibility is limited or assistance is required.
            * `no` - No accessible path from the access point to platforms.
          allOf:
          - $ref: '#/components/schemas/WheelchairAccessibility'
      description: Access point to a venue/station
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    Area:
      description: |
        Area specified by boundingBoxes or polygons (as encoded polyline or as list of geopts ) or corridor area.

        Notes:
        * Maximum count of avoided and excluded polygons and corridors is 20.
        * Maximum total count of avoided and excluded bounding boxes, polygons, corridors, including exceptions, is 250.
      discriminator:
        propertyName: type
        mapping:
          boundingBox: '#/components/schemas/BoundingBoxArea'
          polygon: '#/components/schemas/PolygonArea'
          encodedPolygon: '#/components/schemas/EncodedPolygonArea'
          corridor: '#/components/schemas/CorridorArea'
          encodedCorridor: '#/components/schemas/EncodedCorridorArea'
      oneOf:
      - $ref: '#/components/schemas/BoundingBoxArea'
      - $ref: '#/components/schemas/PolygonArea'
      - $ref: '#/components/schemas/EncodedPolygonArea'
      - $ref: '#/components/schemas/CorridorArea'
      - $ref: '#/components/schemas/EncodedCorridorArea'
    Attribution:
      required:
      - id
      - text
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the web link. It is used to deduplicate
            links defined in multiple sections.
        href:
          $ref: '#/components/schemas/Uri'
        text:
          type: string
          description: Text describing the url address (e.g. The example website).
        hrefText:
          type: string
          description: |
            The interactive (or clickable) portion of the text. If not present (default), the entire content of the text attribute will be considered.
        type:
          $ref: '#/components/schemas/AttributionLinkType'
      description: The URL address to an external resource.
    BoardAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - board
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
      description: An action to board a ferry.
    ChargingAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - charging
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        consumablePower:
          type: number
          description: |
            Maximum charging power (in kW) available to the vehicle, based on the properties of the charging
            station and the vehicle.
        arrivalCharge:
          type: number
          description: |
            Estimated vehicle battery charge before this action (in kWh).
        targetCharge:
          type: number
          description: |
            Level to which vehicle battery should be charged by this action (in kWh).
      description: |
        An action to charge the vehicle.
    ChargingSetupAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - chargingSetup
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
      description: |
        An action to prepare for vehicle charging. Represents the time spent setting up for charging (e.g., payment processing), independent
        of the time required to actually charge the vehicle.
    ChargingStationPlace:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Human readable name of this charging station
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - chargingStation
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
        id:
          type: string
          description: Identifier of this charging station
        attributes:
          $ref: '#/components/schemas/ChargingConnectorAttributes'
        brand:
          $ref: '#/components/schemas/ChargingStationBrand'
        chargePointOperator:
          $ref: '#/components/schemas/ChargePointOperator'
        matchingEMobilityServiceProviders:
          type: array
          description: |
            List of matched E-Mobility Service Providers.
            Populated only when `ev[eMobilityServiceProviderPreferences]` parameter was
            passed in query.

            **Note**:
            * This list reflects the subset of E-Mobility Service Providers supported by the charging station, from the list specified in the request parameter `ev[eMobilityServiceProviderPreferences]`.
          items:
            $ref: '#/components/schemas/EMobilityServiceProvider'
      description: A charging station
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    DeboardAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - deboard
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
      description: An action to disembark a ferry.
    DockingStationPlace:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Location name
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - dockingStation
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
      description: A place represents a docking station for rented vehicles.
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    EVEmpiricalModel:
      required:
      - freeFlowSpeedTable
      type: object
      properties:
        freeFlowSpeedTable:
          allOf:
          - $ref: '#/components/schemas/ConsumptionSpeedTable'
        trafficSpeedTable:
          description: |
            Function curve specifying consumption rate at a given traffic-reduced speed on a flat stretch of road.

            See `freeFlowSpeedTable` for a description of the string format.
          allOf:
          - $ref: '#/components/schemas/ConsumptionSpeedTable'
        ascent:
          minimum: 0
          type: number
          description: |
            Rate of energy consumed per meter rise in elevation (in Wh/m, i.e., Watt-hours per meter).
        descent:
          minimum: 0
          type: number
          description: |
            Rate of energy recovered per meter fall in elevation (in Wh/m, i.e., Watt-hours per meter).
        auxiliaryConsumption:
          minimum: 0
          type: number
          description: |
            Rate of energy (in Wh/s) consumed by the vehicle's auxiliary systems (for example, air conditioning, lights).
            The value represents the number of Watt-hours consumed per second of travel.
        initialCharge:
          maximum: 1000
          minimum: 0
          type: number
          description: |
            Charge level of the vehicle's battery at the start of the route (in kWh).
            Value must be less than or equal to the value of `maxCharge`.
        maxCharge:
          maximum: 1200
          minimum: 0
          type: number
          description: |
            Total capacity of the vehicle's battery (in kWh).
        chargingCurve:
          type: string
          description: |
            Function curve describing the maximum battery charging rate (in kW) at a given charge level (in kWh).

            The format of the string is a comma-separated list of numbers, as follows:

            ```
            <CHARGE_0>,<RATE_0>,<CHARGE_1>,<RATE_1>,...,<RATE_N>,<CHARGE_N>
            ```

            where charge values are strictly increasing, non-negative floating-point values in units
            of (kWh), and rate values are positive floating point values in units of (kW).

            Charge values must cover the entire range of `[0, maxChargeAfterChargingStation`]. The
            charging curve is piecewise constant, e.g., for any charge in the range `[CHARGE_0,
            CHARGE_1)`, the value of the function is `RATE_0`.

            Maximum value of rate must not be greater than 2000 kW. The values of charge in the curve are only validated up to the value of `maxChargeAfterChargingStation` since values outside this range are not used.
            Minimum value of rate must not be less than 7kW. The values of charge in the curve are only validated up to the value of `maxChargeAfterChargingStation` since values outside this range are not used.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts and uses the charging curve to evaluate the most efficent range of
            charging. For example, if the rate of charging is high at lower levels of battery, but slows down significantly after charging a little, stopping
            often and charging less, but quicker, at each station might be better for the overall route.
            Because batteries lose charging speed with use, providing a charging curve for the
            exact battery would give more accurate charging time estimate than providing a
            generic curve for all batteries of one type.
          example: "0,207,28.761,207,29.011,173,43.493,173,43.743,145,51.209,145,51.459,113,56.120,113,56.370,87,80.0,10"
        maxChargingVoltage:
          maximum: 2000
          minimum: 0
          type: number
          description: |
            Maximum charging voltage supported by the vehicle's battery (in Volt).
        maxChargingCurrent:
          maximum: 2000
          minimum: 0
          type: number
          description: |
            Maximum charging current supported by the vehicle's battery (in Ampere).
        maxChargeAfterChargingStation:
          minimum: 0
          type: number
          description: |
            Maximum charge to which the battery should be charged at a charging station (in kWh).
            Value must be less than or equal to the value of `maxCharge`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts so charging at a charging station does not happen strictly to the value of
            this parameter. Instead, the algorithm attempts to leave every station with
            different charge levels, and only the best possible combination of charging stations
            and target charge will form the final route.

            For example, if there is a fast but not reachable charging station on the route,
            the algorithm prefers first to charge at a slower station, but only to a level that enables it
            to reach the fast station. This way it calculates the best possible combination of driving
            and charging parts.
        minChargeAtChargingStation:
          minimum: 0
          type: number
          description: |
            Minimum charge when arriving at a charging station (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts so visiting a charging station is planned not when the remaining charge is close
            to the value of this parameter but when it is part of the best possible charging
            plan for the given route.

            For example, it might prefer charging a still half-full battery at the fast charging station because
            there are only slower stations later on the route and the remaining charge is not
            enough to reach the destination without charging at all.
        minChargeAtFirstChargingStation:
          minimum: 0
          type: number
          description: |
            Minimum charge when arriving at first charging station (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            This overrides `minChargeAtChargingStation` for the first charging station. If not specified, `minChargeAtChargingStation`
            will be used for all charging stations, including the first one.

            This is usually used when the current charge is too low to reach a charging station within `minChargeAtChargingStation` limits.
        minChargeAtDestination:
          minimum: 0
          type: number
          description: |
            Minimum charge at the final route destination (in kWh).
            Value must be less than the value of `maxChargeAfterChargingStation`.

            The algorithm calculates a route as the best possible combination of driving and charging
            parts while making sure that the actual value of the charge at the destination would be close to the
            value of this parameter. I.e., the resulting value is expected to be bigger
            than this parameter's value by no more than 10% of the battery capacity.
        chargingSetupDuration:
          maximum: 1800
          minimum: 0
          type: integer
          description: |
            Time spent (in seconds) after arriving at a charging station but before actually charging
            (for example, time spent for payment processing).
          format: int32
        maxChargingDuration:
          minimum: 1800
          type: integer
          description: |
            Maximum time spent (in seconds) at a charging station unless otherwise specified in a user-introduced charging waypoint. Charging waypoint may
            specify max or min duration, both of which can be higher. (see documentation for the `via` parameter)
          format: int32
        connectorTypes:
          type: string
          description: |
            Comma-separated list of connector types that are compatible with the vehicle. If `makeReachable` is set to `true`,
            then only stations with any of these connector types will be evaluated as a potential charging stop.
            For stations with multiple compatible connectors, the charging time is based on the connector type with the highest power rating among them.

            Currently supported connector types are:
              * `iec62196Type1Combo`:  Type 1 Combo connector, commonly called "CCS1"
              * `iec62196Type2Combo`:  Type 2 Combo connector, commonly called "CCS2"
              * `chademo`: CHAdeMO connector
              * `tesla`: Tesla connector
              * `gbtDc`: Guobiao GB/T 20234.3 DC connector
          example: "iec62196Type1Combo,chademo"
        maxPowerAtLowVoltage:
          minimum: 0
          type: number
          description: |
            The maximum power (in kW) at which a vehicle can charge given these conditions:
            * The charging station connector's maximum supply voltage < 800 V.
            * The vehicle's `maxChargingVoltage` >= 800 V.

            The `consumablePower` at a station is then taken to be the lower of `maxPowerAtLowVoltage` and the charging station's available power.
          default: 45
      description: Specifies parameters required for calculation of energy consumption
        for electric vehicles using the Empirical model.
    ForbiddenHazardousGoods:
      oneOf:
      - $ref: '#/components/schemas/HazardousGoodsRestrictionAny'
      - $ref: '#/components/schemas/HazardousGoodsRestrictionArray'
    Fuel:
      required:
      - type
      type: object
      properties:
        type:
          description: |
            Vehicle fuel type (diesel, petrol, lpg, etc.) required for calculation of consumption and CO2 emission for fuel-based vehicles. Also used for toll calculation (if provided) when `vehicle[engineType] is internalCombustion`
          allOf:
          - $ref: '#/components/schemas/FuelType'
        freeFlowSpeedTable:
          allOf:
          - $ref: '#/components/schemas/ConsumptionSpeedTable'
        trafficSpeedTable:
          description: |
            Function curve specifying consumption rate at a given traffic-reduced speed on a flat stretch of road.

            See `freeFlowSpeedTable` for a description of the string format.
          allOf:
          - $ref: '#/components/schemas/ConsumptionSpeedTable'
        additionalConsumption:
          minimum: 0
          type: number
          description: |
            Rate of fuel (in ml/s for diesel, petrol & LPG, gm/s for CNG) consumed by the vehicle for any other reason
            additional to fuel consumption for speed.
        ascent:
          minimum: 0
          type: number
          description: |
            Rate of fuel consumed per meter rise in elevation (in ml/m for diesel, petrol & LPG, gm/m for CNG).
      description: |
        **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

        Fuel parameters to be used for calculating consumption and related CO2 emission, and toll calculation.

        The following attributes are required for calculating consumption:
          * `type`
          * `freeFlowSpeedTable`

        The following attribute is needed for fuel specific toll calculation (if not provided default toll instead of fuel specific toll will be returned):
          * `type`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
    MatchTrace:
      required:
      - trace
      type: object
      properties:
        trace:
          maxItems: 50000
          minItems: 2
          type: array
          items:
            $ref: '#/components/schemas/MatchTracePoint'
        via:
          type: array
          items:
            $ref: '#/components/schemas/MatchTraceVia'
      description: Trace file with points and path match parameters
      example:
        trace:
        - lat: 52.0
          lng: 13.1
        - lat: 52.1
          lng: 13.2
        - lat: 52.2
          lng: 13.3
        via:
        - index: 1
    PedestrianNotice:
      required:
      - code
      type: object
      properties:
        title:
          type: string
          description: Human-readable notice description.
          example: Violated avoid tunnel
        code:
          type: string
          description: "Extensible enum: `simplePolyline` `pedestrianOptionViolated`\
            \ `violatedAvoidTunnel` `violatedAvoidDirtRoad` `violatedBlockedRoad`\
            \ `...`  \nCurrently known codes (non-exhaustive: this list could be extended\
            \ for new situations):\n\n| Code      | Description  | Severity |\n| ---------\
            \ | ------- | ------- |\n| simplePolyline | An accurate polyline is not\
            \ available for this section. The returned polyline has been generated\
            \ from departure and arrival places | info |\n| pedestrianOptionViolated\
            \ | This section violates the parameter `pedestrian[speed]` or `pedestrian[maxDistance]`\
            \ | critical |\n| violatedAvoidTunnel | Route did not manage to avoid\
            \ user preference | critical |\n| violatedAvoidDirtRoad | Route did not\
            \ manage to avoid user preference | critical |\n| violatedBlockedRoad\
            \ | Route uses roads that are blocked due to `avoid[areas]` or `avoid[segments]`.\
            \ | critical |\n"
          example: violatedAvoidTunnel
          x-extensible-enum:
          - simplePolyline
          - pedestrianOptionViolated
          - violatedAvoidTunnel
          - violatedAvoidDirtRoad
          - violatedBlockedRoad
        severity:
          $ref: '#/components/schemas/NoticeSeverity'
        details:
          type: array
          description: Additional details about the notice
          items:
            $ref: '#/components/schemas/BaseNoticeDetail'
      description: A notice contains important notifications.
    PedestrianSpan:
      type: object
      properties:
        offset:
          minimum: 0
          type: integer
          description: |
            Offset of a coordinate in the section's polyline.
          format: int32
        length:
          description: |
            Length of the span.
          allOf:
          - $ref: '#/components/schemas/Distance'
        duration:
          description: Duration of the span.
          allOf:
          - $ref: '#/components/schemas/Duration'
        streetAttributes:
          type: array
          description: |
            `StreetAttributes` is applied to a span of a route section and describes attribute flags of a street.
            * `rightDrivingSide`: Do vehicles have to drive on the right-hand side of the road or the left-hand side.
            * `dirtRoad`: This part of the route has an un-paved surface.
            * `tunnel`: This part of the route is a tunnel.
            * `bridge`: This part of the route is a bridge.
            * `ramp`: This part of the route is a ramp (usually connecting to/from/between highways).
            * `motorway`: This part of the route is a controlled access road (usually highways with motorway sign).
            * `roundabout`: This part of the route is a roundabout.
            * `underConstruction`: This part of the route is under construction.
            * `dividedRoad`: This part of the route uses a road with a physical or legal divider in the middle.
            * `privateRoad`: This part of the route uses a privately owned road.
            * `controlledAccessHighway`: This part of the route is a either controlled access or limited access road or both.
            * `builtUpArea`: This part of the route most likely passes through a built-up area.

            As it is possible that new street attributes are supported in the future, unknown street attributes should be ignored.
          items:
            $ref: '#/components/schemas/StreetAttributes'
        walkAttributes:
          type: array
          description: |
            Accessibility and walk-related attribute flags.

            * `stairs`: This part of the route is a staircase.
            * `park`: This part of the route is in a park.
            * `indoor`: This part of the route is inside a venue.
            * `open`: This part of the route is open to walking.
            * `noThrough`: This part of the route can only be traversed if origin, destination or any via waypoint is located there.
            * `tollRoad`: Access to this part of the route is restricted with a fee (or toll).

            As it is possible that new attributes are supported in the future, unknown attributes should be ignored.
          items:
            $ref: '#/components/schemas/WalkAttributes'
        carAttributes:
          type: array
          description: |
            Car specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describes access flags of a street.
            * `open`:  A part of the route that is open to cars.
            * `noThrough`:  A part of the route that can only be traversed if origin, destination or any via waypoint is located there.
            * `tollRoad`: Access to this part of the route is restricted with a fee (or toll).

            As it is possible that new access attributes are supported in the future, unknown access attributes should be ignored.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        truckAttributes:
          type: array
          description: |
            Truck specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describes access flags of a street.
            * `open`: This part of the route is open to trucks.
            * `noThrough`: This part of the route can only be traversed if origin, destination or any via waypoint is located there.
            * `tollRoad`: This part of the route is restricted with a fee (or toll).

            As it is possible that new access attributes are supported in the future, unknown access attributes should be ignored.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        scooterAttributes:
          type: array
          description: |
            Scooter specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describes access flags of a street.
            * `open`: This part of the route is open to scooters.

            As it is possible that new access attributes are supported in the future, unknown access attributes should be ignored.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        names:
          type: array
          description: Designated name for the span (e.g. a street name or a transport
            name)
          items:
            $ref: '#/components/schemas/LocalizedString'
        routeNumbers:
          type: array
          description: Designated route name or number of the span (e.g. 'M25')
          items:
            $ref: '#/components/schemas/LocalizedRouteNumber'
        countryCode:
          $ref: '#/components/schemas/CountryCode'
        stateCode:
          $ref: '#/components/schemas/StateCode'
        functionalClass:
          $ref: '#/components/schemas/FunctionalClass'
        speedLimit:
          description: |
            **NOTE:** Attribute speedLimit is deprecated. Use maxSpeed instead.
          allOf:
          - $ref: '#/components/schemas/Speed'
        maxSpeed:
          $ref: '#/components/schemas/MaxSpeed'
        dynamicSpeedInfo:
          $ref: '#/components/schemas/DynamicSpeedInfo'
        segmentId:
          type: string
          description: |
            **NOTE:** Attribute segmentId is deprecated. Use segmentRef instead.

            The directed topology segment id including prefix (e.g '+here:cm:segment:').

            The id consists of two parts.
            * The direction ('+' or '-')
            * followed by the topology segment id (a unique identifier within the HERE platform catalogs).

            The direction specifies whether the route is using the segment in its canonical direction ('+' aka traveling along the geometry's direction), or against it ('-' aka traveling against the geometry's direction).
          deprecated: true
        segmentRef:
          $ref: '#/components/schemas/SegmentRef'
        baseDuration:
          description: |
            Duration of this span (in seconds) ignoring time-aware information.

            For pedestrian mode, the reported time is currently equal to that in `duration`.
          allOf:
          - $ref: '#/components/schemas/Duration'
        typicalDuration:
          description: |
            Duration of this span (in seconds) under typical traffic conditions.

            For pedestrian mode, the reported time is currently equal to that in `duration`.
          allOf:
          - $ref: '#/components/schemas/Duration'
        incidents:
          type: array
          description: |
            A list of indices into the incident array of the parent section.
            References all incidents that apply to the span.
          items:
            type: integer
      description: |
        Span attached to a `Section` describing pedestrian content.
    PedestrianSummary:
      required:
      - duration
      - length
      type: object
      properties:
        duration:
          $ref: '#/components/schemas/Duration'
        length:
          $ref: '#/components/schemas/Distance'
        baseDuration:
          description: |
            Duration (in seconds) ignoring time-aware information.

            For pedestrian mode, the reported time is currently equal to that in `duration`.
          allOf:
          - $ref: '#/components/schemas/Duration'
      description: Total value of key attributes for a route section.
    PedestrianTransport:
      required:
      - mode
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/PedestrianMode'
        name:
          type: string
          description: "Name of the transport, e.g., the name of a ferry or train."
      description: Information about a transport
    Place:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Location name
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - place
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
      description: A place represents a generic location relevant for the route.
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    RangePrice:
      required:
      - currency
      - maximum
      - minimum
      - type
      type: object
      properties:
        type:
          type: string
          description: |
            Type of price represented by this object. The API customer is responsible for correctly visualizing
            the pricing model. As it is possible to extend the supported price types in the future,
            the price information should be hidden when an unknown type is encountered.

            Available price types are:

              * `value` - A single value.
              * `range` - A range value that includes a minimum and maximum price.
        estimated:
          type: boolean
          description: "Attribute value is `true` if the fare price is estimated,\
            \ `false` if it is an exact value."
          default: false
        currency:
          type: string
          description: Local currency of the price compliant to ISO 4217
        unit:
          description: |
            When set, the price is paid for a specific duration.

            Examples:
              * `"unit": 3600` - price for one hour
              * `"unit": 28800` - price for 8 hours
              * `"unit": 86400` - price for one day
          allOf:
          - $ref: '#/components/schemas/Duration'
        minimum:
          type: number
          description: Minimum price
        maximum:
          type: number
          description: Maximum price
    RoadInfo:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/RoadInfoType'
        name:
          type: array
          description: |
            Name of the road

            If the road has multiple names, each name will be a separate entry in the array.
            The road names can be in multiple languages. If a preferred language was provided,
            and names in that language are available, they will be prioritized in the array.
            Otherwise the default name of the street is prioritized.
          items:
            $ref: '#/components/schemas/LocalizedString'
        number:
          type: array
          description: Route name or number (e.g. 'M25')
          items:
            $ref: '#/components/schemas/LocalizedRouteNumber'
        toward:
          type: array
          description: Names of destinations on sign which can be reached when going
            in that direction
          items:
            $ref: '#/components/schemas/LocalizedString'
      description: Road information attached to an offset action
      example:
        fennstrasse:
          type: street
          name:
          - value: Fennstraße
            language: de
          number:
          - value: B96
            language: de
          toward:
          - value: Reinickendorf
            language: de
    RouteResponseNoticeDetail:
      description: Details attached to notices in route response.
      discriminator:
        propertyName: type
        mapping:
          via: '#/components/schemas/ViaNoticeDetail'
      oneOf:
      - $ref: '#/components/schemas/ViaNoticeDetail'
    Routing403ErrorResponseSchema:
      type: object
      anyOf:
      - $ref: '#/components/schemas/AuthErrorResponseSchema'
      - $ref: '#/components/schemas/RoutingErrorResponse'
    SignpostLabelRouteNumber:
      type: object
      properties:
        routeNumber:
          $ref: '#/components/schemas/LocalizedRouteNumber'
      description: |
        Route number on a signpost label. The `routeType` property of the LocalizedRouteNumber is always null at the moment for SignpostLabel, because the data is currently not available.
    SinglePrice:
      required:
      - currency
      - type
      - value
      type: object
      properties:
        type:
          type: string
          description: |
            Type of price represented by this object. The API customer is responsible for correctly visualizing
            the pricing model. As it is possible to extend the supported price types in the future,
            the price information should be hidden when an unknown type is encountered.

            Available price types are:

              * `value` - A single value.
              * `range` - A range value that includes a minimum and maximum price.
        estimated:
          type: boolean
          description: "Attribute value is `true` if the fare price is estimated,\
            \ `false` if it is an exact value."
          default: false
        currency:
          type: string
          description: Local currency of the price compliant to ISO 4217
        unit:
          description: |
            When set, the price is paid for a specific duration.

            Examples:
              * `"unit": 3600` - price for one hour
              * `"unit": 28800` - price for 8 hours
              * `"unit": 86400` - price for one day
          allOf:
          - $ref: '#/components/schemas/Duration'
        value:
          type: number
          description: The price value
    StationPlace:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Location name
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - station
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
        id:
          type: string
          description: Identifier of this station
        platform:
          type: string
          description: Platform name or number for the departure.
        code:
          type: string
          description: Short text or a number that identifies the place for riders.
        wheelchairAccessible:
          description: |
            Information about accessibility for people with a disability and who use a wheelchair.

            * `unknown` - Accessibility information is not available.
            * `yes` - There exists some accessible path from outside the station to the specific stop/platform.
            * `limited` - Accessibility is limited or assistance is required.
            * `no` - There exists no accessible path from outside the station to the specific stop/platform.
          allOf:
          - $ref: '#/components/schemas/WheelchairAccessibility'
      description: A station
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    TransitSpan:
      type: object
      properties:
        offset:
          minimum: 0
          type: integer
          description: |
            Offset of a coordinate in the section's polyline.
          format: int32
        length:
          description: |
            Length of the span.
          allOf:
          - $ref: '#/components/schemas/Distance'
        duration:
          description: Duration of the span.
          allOf:
          - $ref: '#/components/schemas/Duration'
        countryCode:
          $ref: '#/components/schemas/CountryCode'
        stateCode:
          $ref: '#/components/schemas/StateCode'
        names:
          type: array
          description: Designated name for the span (e.g. a street name or a transport
            name)
          items:
            $ref: '#/components/schemas/LocalizedString'
        segmentId:
          type: string
          description: |
            **NOTE:** Attribute segmentId is deprecated. Use segmentRef instead.

            The directed topology segment id including prefix (e.g '+here:cm:segment:').

            The id consists of two parts.
            * The direction ('+' or '-')
            * followed by the topology segment id (a unique identifier within the HERE platform catalogs).

            The direction specifies whether the route is using the segment in its canonical direction ('+' aka traveling along the geometry's direction), or against it ('-' aka traveling against the geometry's direction).

            This attribute will not appear for HERE Public Transit v8 and HERE Intermodal Routing v8 requests
          deprecated: true
        segmentRef:
          $ref: '#/components/schemas/SegmentRef'
        notices:
          type: array
          description: |
            A list of indexes into the notices array of the parent section.
            References all notices that apply to the span.
          items:
            type: integer
      description: |
        Contains information attached to a contiguous part of a `Section`. The information may be
        attached along different dimensions of a section which are geometry (spatial), distance or
        time.

        A section, if it uses spans, has an optional attribute `spans` which is an array of
        extended `Span` types.

        The attributes of a span which should be returned in the response are
        configured by a request parameter.

        Use this type as a base for any span extension for sections that provide spans.
    TransitTransport:
      required:
      - mode
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/TransitMode'
        name:
          type: string
          description: Transit line name
          example: U2
        headsign:
          type: string
          description: Transit line headsign
        category:
          type: string
          description: "Human readable transport category (such as Bus, Gondola, Tram,\
            \ Train, ...)"
          example: Train
        color:
          description: Color of the transport polyline and background for the transport
            name.
          allOf:
          - $ref: '#/components/schemas/Color'
        textColor:
          description: Color of the transport name.
          allOf:
          - $ref: '#/components/schemas/Color'
        shortName:
          type: string
          description: Short name of a transit line.
          example: U2
        longName:
          type: string
          description: Long name of a transit line.
          example: Pankow - Ruhleben
      description: Transit transport information.
    Truck:
      type: object
      properties:
        shippedHazardousGoods:
          type: string
          description: |
            Hazardous goods restrictions refer to the limitations and regulations imposed on the transportation of specific types of hazardous materials during a trip.

            A comma-separated list of hazardous goods being shipped in the vehicle. The following values are possible:

            * `explosive`: Materials that are capable of causing an explosion.
            * `gas`: Gas (definition varies from country to country). For details, check [here](https://en.wikipedia.org/wiki/HAZMAT_Class_2_Gases).
            * `flammable`: Materials that are easily ignited and capable of catching fire.
            * `combustible`: Materials that have the potential to burn or catch fire.
            * `organic`: Materials derived from living organisms or containing carbon compounds.
            * `poison`: Substances that can cause harm or death when ingested, inhaled, or absorbed.
            * `radioactive`: Materials that emit radiation and pose potential health risks.
            * `corrosive`: Substances that can cause damage or destruction through chemical reactions.
            * `poisonousInhalation`: Materials that are toxic when inhaled.
            * `harmfulToWater`: Materials that can cause pollution or harm to water bodies.
            * `other`: Other types of hazardous materials not covered by the above categories.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          example: "explosive,gas,flammable"
        grossWeight:
          minimum: 0
          type: integer
          description: |
            Gross vehicle weight, including trailers and shipped goods when loaded at capacity, specified in kilograms.

            If unspecified, it will default to currentWeight. If neither parameter has a value specified, it will default to 0.

            **Notes:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 4250 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 7550 kg.
          format: int32
        currentWeight:
          minimum: 0
          type: integer
          description: |
            Current vehicle weight, including trailers and shipped goods currently loaded, specified in kilograms.

            If unspecified, it will default to grossWeight. If neither parameter has a value specified, it will default to 0.

            **Notes:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 5000 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 8500 kg.
            * A route request with `currentWeight` above `grossWeight` may result in non-compliant or invalid routes.
          format: int32
        emptyWeight:
          minimum: 0
          type: integer
          description: |
            Empty weight of the vehicle combination ready to be driven, including necessary fluids and equipment
            determined by the local regulations, specified in kilograms.

            **Note:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 4250 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 7550 kg.
          format: int32
        weightPerAxle:
          minimum: 0
          type: integer
          description: |
            Heaviest vehicle weight-per-axle, specified in kilograms.

            Heaviest weight-per-axle, regardless of axle-type or axle-group. It is evaluated against
            all axle-weight restrictions, including single-axle and tandem-axle weight restrictions.
            It is useful if differences between axle types, like tandem and triple axles, are not
            relevant. This is the case in many countries, since they don't distinguish between these
            different axle groups on signs and in regulations.

            More fine-grained axle weight input is possible with `weightPerAxleGroup`.

            **Note:** `weightPerAxleGroup` and `weightPerAxle` are incompatible.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        weightPerAxleGroup:
          $ref: '#/components/schemas/WeightPerAxleGroup'
        height:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Vehicle height, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        width:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Vehicle width, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        length:
          maximum: 30000
          minimum: 0
          type: integer
          description: |
            Vehicle length, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        kpraLength:
          minimum: 0
          type: integer
          description: |
            Kingpin to rear axle length, in centimeters.

            **NOTE:** Currently, the KPRA restrictions are only present in California and Idaho.

            **Note:** Supported in `truck`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        payloadCapacity:
          minimum: 0
          type: integer
          description: |
            Allowed payload capacity, including trailers, specified in kilograms.

            **Note:** Supported in `truck`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        tunnelCategory:
          description: |
            Specifies the [cargo tunnel restriction code](https://adrbook.com/en/2017/ADR/8.6.3). Route will pass only through tunnels of less restrictive categories.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          allOf:
          - $ref: '#/components/schemas/TunnelCategory'
        axleCount:
          maximum: 255
          minimum: 2
          type: integer
          description: |
            Specifies the total number of axles the vehicle has, i.e., axles on the base vehicle and any attached trailers.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        trailerAxleCount:
          minimum: 1
          type: integer
          description: |
            Specifies the total number of axles across all the trailers attached to the vehicle.
            This number is included in `axleCount`, hence `trailerAxleCount` must be strictly less than `axleCount`.
            `trailerCount` must be non-zero.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
          format: int32
        tiresCount:
          maximum: 255
          minimum: 1
          type: integer
          description: |
            Specifies the total number of tires the vehicle has, i.e., the tires on the base vehicle and any attached trailers.
          format: int32
        category:
          type: string
          description: |
            Specifies the category of the vehicle. The supported values are:

            * `undefined`: The vehicle category is undefined, and no special considerations are taken into
              account. Vehicle routing will proceed as normal.
            * `lightTruck`: The vehicle is a truck light enough to be classified more as a car than as a truck.
              This exempts it from many legal restrictions for normal trucks. However, restrictions related to the physical dimensions of the truck or its cargo still apply.

              For more details, refer to [Truck categories](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/truck-routing.html#truck-categories).

              **Note:** Supported only in `truck` transport mode.
          default: undefined
          enum:
          - undefined
          - lightTruck
        trailerCount:
          maximum: 255
          minimum: 0
          type: integer
          description: |
            The number of trailers attached to the vehicle.

            Maximum value when used with `transportMode=car` or `transportMode=taxi` is 1.

            **Limitations:** Considered for route calculation when `transportMode` is one of (`truck`, `bus`, `privateBus`). Considered for route calculation for restrictions, but not for speed limits, when `transportMode` is `car` or `taxi`.
          format: int32
          default: 0
        hovOccupancy:
          minimum: 1
          type: integer
          description: |
            **Note**: This parameter is deprecated, `vehicle[occupancy]` and `allow[hov]` should be used instead.
            The number of occupants in the vehicle, defined as individuals occupying a seat with a restraint device.
            This value affects the ability of the router to use HOV (High-Occupancy Vehicles) restricted lanes.

            Limitations:
              * Any value over 1 is interpreted as the ability to use any HOV lane, including those restricted to 3+ passengers.
          deprecated: true
          default: 1
        licensePlate:
          type: string
          description: |
            Specifies the information about the vehicle's license plate number.
            This information is used to evaluate whether certain vehicle restrictions in environmental zones apply.
            Currently, only the last character of the license plate can be provided.

            Format: `lastCharacter:{character}`

            Example: `lastCharacter:2`
        speedCap:
          maximum: 70.0
          minimum: 1.0
          type: number
          description: |
            Specifies the maximum speed, in meters per second (m/s), that the user wishes not to exceed.
            This parameter affects the route's estimated time of arrival (ETA) and consumption calculation.

            Limitations:
              * valid for following transport modes: `car`, `truck`, `scooter`, `taxi`, `bus`, and `privateBus`

            Notes:
              * Car and Truck mode updates route ETA.
              * Scooter mode updates route optimization and ETA.
              * Resulting ETA can not be decreased by this parameter.
        speedCapPerFc:
          type: string
          description: |
            A comma separated list of speeds in meters per second (m/s) specifying the maximum speed per FC (Functional Class, as defined in the `FunctionalClass` schema) that the user wishes not to exceed.
            The list can have up to 5 entries, corresponding to FC 1 to FC 5. Empty entries indicate that no speed cap is specified for the corresponding FC.
            This parameter affects the route's estimated time of arrival (ETA) and consumption calculation.

            Limitations:
              * valid for following transport modes: `car`, `truck`

            Values limitations:
              * minimum: 1.00
              * maximum: 70.00

            Examples:
              * `vehicle[speedCapPerFc]=65,50.5,40,30,10` - specify limits for all FCs
              * `vehicle[speedCapPerFc]=65,50.5,,30,10` - specify limits for all FCs except for FC 3
              * `vehicle[speedCapPerFc]=65,50.5,40` - specify limits for FC 1, 2 and 3

            Notes:
              * Resulting ETA can not be decreased by this parameter.
              * vehicle[speedCapPerFc] and vehicle[speedCap] may be used in combination. For FCs where both values are specified, the minimum value is used.
        engineSizeCc:
          maximum: 2000
          minimum: 0
          type: integer
          description: |
            Specifies the engine size of the vehicle in cubic centimeters.
            Currently, the value is used only in scooter mode.
            This parameter is utilized to determine if the scooter can be classified as a moped.
            Scooters with an engine size less than 51cc are considered mopeds.
            **Alpha**: This API is in development. It may not be stable and is subject to change. It may have no impact on response.
        occupancy:
          minimum: 1
          type: integer
          description: |
            The number of occupants on the vehicle, defined as individuals occupying a seat.
            This value affects the ability of the router to use HOV (High-Occupancy Vehicles) restricted lanes. If not set and `allow[hov]=true` is set, then occupancy requirements for all HOV conditions are considered to be met.
            This parameter also affects scooter occupancy restrictions. If not set, occupancy restrictions for scooters are ignored.

            The parameter is also used for calculating the toll cost, in cases where the toll-cost for the vehicle depends on the passenger count. If not set, occupancy of 1 is assumed for toll calculation.

            **Note:**: This parameter can't be used with 'vehicle[hovOccupancy]'.
        engineType:
          type: string
          description: |
            Specifies the engine type of the vehicle.

            **Limitations:**  Currently this parameter is used only for toll calculation. It may be used at any point for route calculation (for example, to automatically avoid environmental zones).

            **Note:**
              * If engineType is specified as `internalCombustion`, valid `fuel[type]` should also be provided to get fuel specific toll. If `fuel[type]` is not provided, default toll without considering `fuel[type]` will be returned.
              * If `ev` or `fuel` namespace parameters are provided with an incompatible `engineType` (e.g. engineType=internalCombustion is provided along with `ev` namespace parameters) then `ev` namespace will override `engineType` and incompatible `engineType` will be ignored for toll, consumption, and emission computations.
          enum:
          - electric
          - pluginHybrid
          - internalCombustion
        heightAboveFirstAxle:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Height of the vehicle above its first axle, in centimeters.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
          format: int32
        frontalArea:
          maximum: 50
          minimum: 0.5
          type: number
          description: |
            Frontal area represents the total cross section area of the vehicle as viewed from the front, specified in square meters. Physical consumption model is using this value in combination with `airDragCoefficient` to calculate the consumption caused by air resistance.
            **Note:** This attribute, or both `width` and `height`, is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        rollingResistanceCoefficient:
          maximum: 0.5
          minimum: 0.001
          exclusiveMinimum: true
          type: number
          description: |
            Rolling resistance refers to the resistance experienced by your vehicle tire as it rolls over a surface. The main causes of this resistance are tire deformation, wing drag, and friction with the ground. The coefficient of rolling resistance is a numerical value indicating the severity of this factor.
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        airDragCoefficient:
          maximum: 1.0
          minimum: 0.1
          exclusiveMinimum: true
          type: number
          description: |
            The drag coefficient of an vehicle defines the way the vehicle is expected to pass through the surrounding air. More streamlined vehicles are more aerodynamic and therefore have smaller drag coefficient.
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        commercial:
          type: boolean
          description: |
            Specifies whether the vehicle is a commercial or a non-commercial vehicle.

            If left unspecified, the toll cost best fitting the vehicle profile is reported, irrespective of commercial use.

            **Note:** supported in `car`, `truck`, `bus`, `privateBus` and `taxi`.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
        type:
          $ref: '#/components/schemas/TruckTypeWithDefault'
      description: Vehicle-specific parameters
      deprecated: true
    Vehicle:
      type: object
      properties:
        shippedHazardousGoods:
          type: string
          description: |
            Hazardous goods restrictions refer to the limitations and regulations imposed on the transportation of specific types of hazardous materials during a trip.

            A comma-separated list of hazardous goods being shipped in the vehicle. The following values are possible:

            * `explosive`: Materials that are capable of causing an explosion.
            * `gas`: Gas (definition varies from country to country). For details, check [here](https://en.wikipedia.org/wiki/HAZMAT_Class_2_Gases).
            * `flammable`: Materials that are easily ignited and capable of catching fire.
            * `combustible`: Materials that have the potential to burn or catch fire.
            * `organic`: Materials derived from living organisms or containing carbon compounds.
            * `poison`: Substances that can cause harm or death when ingested, inhaled, or absorbed.
            * `radioactive`: Materials that emit radiation and pose potential health risks.
            * `corrosive`: Substances that can cause damage or destruction through chemical reactions.
            * `poisonousInhalation`: Materials that are toxic when inhaled.
            * `harmfulToWater`: Materials that can cause pollution or harm to water bodies.
            * `other`: Other types of hazardous materials not covered by the above categories.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          example: "explosive,gas,flammable"
        grossWeight:
          minimum: 0
          type: integer
          description: |
            Gross vehicle weight, including trailers and shipped goods when loaded at capacity, specified in kilograms.

            If unspecified, it will default to currentWeight. If neither parameter has a value specified, it will default to 0.

            **Notes:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 4250 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 7550 kg.
          format: int32
        currentWeight:
          minimum: 0
          type: integer
          description: |
            Current vehicle weight, including trailers and shipped goods currently loaded, specified in kilograms.

            If unspecified, it will default to grossWeight. If neither parameter has a value specified, it will default to 0.

            **Notes:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 5000 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 8500 kg.
            * A route request with `currentWeight` above `grossWeight` may result in non-compliant or invalid routes.
          format: int32
        emptyWeight:
          minimum: 0
          type: integer
          description: |
            Empty weight of the vehicle combination ready to be driven, including necessary fluids and equipment
            determined by the local regulations, specified in kilograms.

            **Note:**
            * Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
            * Maximum weight for a car or taxi _without_ a trailer is 4250 kg.
            * Maximum weight for a car or taxi _with_ a trailer is 7550 kg.
          format: int32
        weightPerAxle:
          minimum: 0
          type: integer
          description: |
            Heaviest vehicle weight-per-axle, specified in kilograms.

            Heaviest weight-per-axle, regardless of axle-type or axle-group. It is evaluated against
            all axle-weight restrictions, including single-axle and tandem-axle weight restrictions.
            It is useful if differences between axle types, like tandem and triple axles, are not
            relevant. This is the case in many countries, since they don't distinguish between these
            different axle groups on signs and in regulations.

            More fine-grained axle weight input is possible with `weightPerAxleGroup`.

            **Note:** `weightPerAxleGroup` and `weightPerAxle` are incompatible.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        weightPerAxleGroup:
          $ref: '#/components/schemas/WeightPerAxleGroup'
        height:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Vehicle height, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        width:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Vehicle width, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        length:
          maximum: 30000
          minimum: 0
          type: integer
          description: |
            Vehicle length, specified in centimeters.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        kpraLength:
          minimum: 0
          type: integer
          description: |
            Kingpin to rear axle length, in centimeters.

            **NOTE:** Currently, the KPRA restrictions are only present in California and Idaho.

            **Note:** Supported in `truck`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        payloadCapacity:
          minimum: 0
          type: integer
          description: |
            Allowed payload capacity, including trailers, specified in kilograms.

            **Note:** Supported in `truck`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        tunnelCategory:
          description: |
            Specifies the [cargo tunnel restriction code](https://adrbook.com/en/2017/ADR/8.6.3). Route will pass only through tunnels of less restrictive categories.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          allOf:
          - $ref: '#/components/schemas/TunnelCategory'
        axleCount:
          maximum: 255
          minimum: 2
          type: integer
          description: |
            Specifies the total number of axles the vehicle has, i.e., axles on the base vehicle and any attached trailers.

            **Note:** Supported in `truck`, `bus`, `privateBus`, `car` (Beta), `taxi` (Beta) transport modes.
          format: int32
        trailerAxleCount:
          minimum: 1
          type: integer
          description: |
            Specifies the total number of axles across all the trailers attached to the vehicle.
            This number is included in `axleCount`, hence `trailerAxleCount` must be strictly less than `axleCount`.
            `trailerCount` must be non-zero.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
          format: int32
        tiresCount:
          maximum: 255
          minimum: 1
          type: integer
          description: |
            Specifies the total number of tires the vehicle has, i.e., the tires on the base vehicle and any attached trailers.
          format: int32
        category:
          type: string
          description: |
            Specifies the category of the vehicle. The supported values are:

            * `undefined`: The vehicle category is undefined, and no special considerations are taken into
              account. Vehicle routing will proceed as normal.
            * `lightTruck`: The vehicle is a truck light enough to be classified more as a car than as a truck.
              This exempts it from many legal restrictions for normal trucks. However, restrictions related to the physical dimensions of the truck or its cargo still apply.

              For more details, refer to [Truck categories](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/truck-routing.html#truck-categories).

              **Note:** Supported only in `truck` transport mode.
          default: undefined
          enum:
          - undefined
          - lightTruck
        trailerCount:
          maximum: 255
          minimum: 0
          type: integer
          description: |
            The number of trailers attached to the vehicle.

            Maximum value when used with `transportMode=car` or `transportMode=taxi` is 1.

            **Limitations:** Considered for route calculation when `transportMode` is one of (`truck`, `bus`, `privateBus`). Considered for route calculation for restrictions, but not for speed limits, when `transportMode` is `car` or `taxi`.
          format: int32
          default: 0
        hovOccupancy:
          minimum: 1
          type: integer
          description: |
            **Note**: This parameter is deprecated, `vehicle[occupancy]` and `allow[hov]` should be used instead.
            The number of occupants in the vehicle, defined as individuals occupying a seat with a restraint device.
            This value affects the ability of the router to use HOV (High-Occupancy Vehicles) restricted lanes.

            Limitations:
              * Any value over 1 is interpreted as the ability to use any HOV lane, including those restricted to 3+ passengers.
          deprecated: true
          default: 1
        licensePlate:
          type: string
          description: |
            Specifies the information about the vehicle's license plate number.
            This information is used to evaluate whether certain vehicle restrictions in environmental zones apply.
            Currently, only the last character of the license plate can be provided.

            Format: `lastCharacter:{character}`

            Example: `lastCharacter:2`
        speedCap:
          maximum: 70.0
          minimum: 1.0
          type: number
          description: |
            Specifies the maximum speed, in meters per second (m/s), that the user wishes not to exceed.
            This parameter affects the route's estimated time of arrival (ETA) and consumption calculation.

            Limitations:
              * valid for following transport modes: `car`, `truck`, `scooter`, `taxi`, `bus`, and `privateBus`

            Notes:
              * Car and Truck mode updates route ETA.
              * Scooter mode updates route optimization and ETA.
              * Resulting ETA can not be decreased by this parameter.
        speedCapPerFc:
          type: string
          description: |
            A comma separated list of speeds in meters per second (m/s) specifying the maximum speed per FC (Functional Class, as defined in the `FunctionalClass` schema) that the user wishes not to exceed.
            The list can have up to 5 entries, corresponding to FC 1 to FC 5. Empty entries indicate that no speed cap is specified for the corresponding FC.
            This parameter affects the route's estimated time of arrival (ETA) and consumption calculation.

            Limitations:
              * valid for following transport modes: `car`, `truck`

            Values limitations:
              * minimum: 1.00
              * maximum: 70.00

            Examples:
              * `vehicle[speedCapPerFc]=65,50.5,40,30,10` - specify limits for all FCs
              * `vehicle[speedCapPerFc]=65,50.5,,30,10` - specify limits for all FCs except for FC 3
              * `vehicle[speedCapPerFc]=65,50.5,40` - specify limits for FC 1, 2 and 3

            Notes:
              * Resulting ETA can not be decreased by this parameter.
              * vehicle[speedCapPerFc] and vehicle[speedCap] may be used in combination. For FCs where both values are specified, the minimum value is used.
        engineSizeCc:
          maximum: 2000
          minimum: 0
          type: integer
          description: |
            Specifies the engine size of the vehicle in cubic centimeters.
            Currently, the value is used only in scooter mode.
            This parameter is utilized to determine if the scooter can be classified as a moped.
            Scooters with an engine size less than 51cc are considered mopeds.
            **Alpha**: This API is in development. It may not be stable and is subject to change. It may have no impact on response.
        occupancy:
          minimum: 1
          type: integer
          description: |
            The number of occupants on the vehicle, defined as individuals occupying a seat.
            This value affects the ability of the router to use HOV (High-Occupancy Vehicles) restricted lanes. If not set and `allow[hov]=true` is set, then occupancy requirements for all HOV conditions are considered to be met.
            This parameter also affects scooter occupancy restrictions. If not set, occupancy restrictions for scooters are ignored.

            The parameter is also used for calculating the toll cost, in cases where the toll-cost for the vehicle depends on the passenger count. If not set, occupancy of 1 is assumed for toll calculation.

            **Note:**: This parameter can't be used with 'vehicle[hovOccupancy]'.
        engineType:
          type: string
          description: |
            Specifies the engine type of the vehicle.

            **Limitations:**  Currently this parameter is used only for toll calculation. It may be used at any point for route calculation (for example, to automatically avoid environmental zones).

            **Note:**
              * If engineType is specified as `internalCombustion`, valid `fuel[type]` should also be provided to get fuel specific toll. If `fuel[type]` is not provided, default toll without considering `fuel[type]` will be returned.
              * If `ev` or `fuel` namespace parameters are provided with an incompatible `engineType` (e.g. engineType=internalCombustion is provided along with `ev` namespace parameters) then `ev` namespace will override `engineType` and incompatible `engineType` will be ignored for toll, consumption, and emission computations.
          enum:
          - electric
          - pluginHybrid
          - internalCombustion
        heightAboveFirstAxle:
          maximum: 5000
          minimum: 0
          type: integer
          description: |
            Height of the vehicle above its first axle, in centimeters.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
          format: int32
        frontalArea:
          maximum: 50
          minimum: 0.5
          type: number
          description: |
            Frontal area represents the total cross section area of the vehicle as viewed from the front, specified in square meters. Physical consumption model is using this value in combination with `airDragCoefficient` to calculate the consumption caused by air resistance.
            **Note:** This attribute, or both `width` and `height`, is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        rollingResistanceCoefficient:
          maximum: 0.5
          minimum: 0.001
          exclusiveMinimum: true
          type: number
          description: |
            Rolling resistance refers to the resistance experienced by your vehicle tire as it rolls over a surface. The main causes of this resistance are tire deformation, wing drag, and friction with the ground. The coefficient of rolling resistance is a numerical value indicating the severity of this factor.
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        airDragCoefficient:
          maximum: 1.0
          minimum: 0.1
          exclusiveMinimum: true
          type: number
          description: |
            The drag coefficient of an vehicle defines the way the vehicle is expected to pass through the surrounding air. More streamlined vehicles are more aerodynamic and therefore have smaller drag coefficient.
            **Note:** This attribute is required when using the physical model `consumptionModel=physical` for EV consumption.

            **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        commercial:
          type: boolean
          description: |
            Specifies whether the vehicle is a commercial or a non-commercial vehicle.

            If left unspecified, the toll cost best fitting the vehicle profile is reported, irrespective of commercial use.

            **Note:** supported in `car`, `truck`, `bus`, `privateBus` and `taxi`.

            **Note:** This parameter is currently used only for the calculation of tolls in regions where it is applicable.
        type:
          $ref: '#/components/schemas/VehicleType'
      description: Vehicle-specific parameters
    VehicleSpan:
      type: object
      properties:
        offset:
          minimum: 0
          type: integer
          description: |
            Offset of a coordinate in the section's polyline.
          format: int32
        length:
          description: |
            Length of the span.
          allOf:
          - $ref: '#/components/schemas/Distance'
        duration:
          description: Duration of the span.
          allOf:
          - $ref: '#/components/schemas/Duration'
        streetAttributes:
          type: array
          description: |
            `StreetAttributes` is applied to a span of a route section and describes attribute flags of a street. The following flags can be assigned:
            * `rightDrivingSide`: Vehicles must drive on the right-hand side of the road in this part of the route.
            * `dirtRoad`: This part of the route has an unpaved surface, such as a gravel or dirt road.
            * `tunnel`: This part of the route passes through a tunnel.
            * `bridge`: This part of the route crosses a bridge.
            * `ramp`: This part of the route is a ramp, typically connecting to or from highways.
            * `motorway`: This part of the route is a controlled access road, typically a highway with motorway signage.
            * `roundabout`: This part of the route includes a roundabout.
            * `underConstruction`: This part of the route is currently under construction.
            * `dividedRoad`: This part of the route uses a road with a physical or legal divider in the middle, separating opposing traffic flows.
            * `privateRoad`: This part of the route uses a privately owned road.
            * `controlledAccessHighway`: This part of the route is either a controlled access road, limited access road, or both.
            * `builtUpArea`: This part of the route most likely passes through a built-up area.

            It is possible that new street-attributes may be supported in the future. When encountering unknown street-attributes, e.g., in the software parser, it is recommended to ignore them.
          items:
            $ref: '#/components/schemas/StreetAttributes'
        walkAttributes:
          type: array
          description: |
            The following attribute flags are used to describe accessibility and walk-related features along a route:

            * `stairs`: This part of the route includes a staircase that needs to be climbed or descended.
            * `park`: This part of the route is located within a park or park-like area.
            * `indoor`: This part of the route is inside a venue or building.
            * `open`: This part of the route is open and accessible for walking.
            * `noThrough`: This part of the route can only be traversed if the origin, destination, or any via waypoint is located there. In other words, it is not a through-route.
            * `tollRoad`: Access to this part of the route is restricted and requires the payment of a fee or toll.

            It is possible that new street-attributes may be supported in the future. When encountering unknown street-attributes, e.g., in the software parser, it is recommended to ignore them.
          items:
            $ref: '#/components/schemas/WalkAttributes'
        carAttributes:
          type: array
          description: |
            Car-specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describe access flags specific to cars. The following flags can be assigned:
            * `open`: This part of the route is open and accessible to cars.
            * `noThrough`: This part of the route can only be traversed by cars if the origin, destination, or any via waypoint is located there. It is not a through-route for cars.
            * `tollRoad`: This part of the route is a toll road, which means access is restricted for cars and requires the payment of a fee or toll.

            It is possible that new street-attributes may be supported in the future. When encountering unknown street-attributes, e.g., in the software parser, it is recommended to ignore them.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        truckAttributes:
          type: array
          description: |
            Truck-specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describe access flags specific to trucks. These flags indicate the accessibility and restrictions for trucks along the route. The following flags can be assigned:
            * `open`: This part of the route is open and accessible to trucks.
            * `noThrough`: That this part of the route can only be traversed by trucks if the origin, destination, or any via waypoint is located there. It is not a through-route for trucks.
            * `tollRoad`: This part of the route is a toll road, which means access is restricted for trucks and requires the payment of a fee or toll.

            It is possible that new street-attributes may be supported in the future. When encountering unknown street-attributes, e.g., in the software parser, it is recommended to ignore them.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        scooterAttributes:
          type: array
          description: |
            Scooter-specific `AccessAttributes`.

            `AccessAttributes` is applied to a span of a route section and describe access flags specific to scooters. These flags indicate the accessibility of streets for scooters along the route. The following flag can be assigned:
            * `open`: Indicates that this part of the route is open and accessible to scooters.

            It is possible that new street-attributes may be supported in the future. When encountering unknown street-attributes, e.g., in the software parser, it is recommended to ignore them.
          items:
            $ref: '#/components/schemas/AccessAttributes'
        tollSystems:
          type: array
          description: |
            The toll systems applicable to specific spans are described using an array of reference indexes. These indexes correspond to the `tollSystems` array in the enclosing section. Please note that toll information is not static and can vary based on factors such as transport-mode, time-of-day, etc. Therefore, the tolls applicable to a span may change in similar requests.
          items:
            type: integer
        names:
          type: array
          description: "Designated name for the span, e.g., a street name or a transport\
            \ name."
          items:
            $ref: '#/components/schemas/LocalizedString'
        routeNumbers:
          type: array
          description: "Designated route name or number of the span, e.g., 'M25')"
          items:
            $ref: '#/components/schemas/LocalizedRouteNumber'
        countryCode:
          $ref: '#/components/schemas/CountryCode'
        stateCode:
          $ref: '#/components/schemas/StateCode'
        functionalClass:
          $ref: '#/components/schemas/FunctionalClass'
        speedLimit:
          description: |
            **NOTE:** The attribute `speedLimit` is deprecated and should be replaced with `maxSpeed`.
          allOf:
          - $ref: '#/components/schemas/Speed'
        maxSpeed:
          $ref: '#/components/schemas/MaxSpeed'
        dynamicSpeedInfo:
          $ref: '#/components/schemas/DynamicSpeedInfo'
        segmentId:
          type: string
          description: |2

            **NOTE:** The attribute `segmentId` is deprecated and should be replaced with `segmentRef`.

            The directed topology segment id, including prefix, e.g., '+here:cm:segment:'. The id consists of two parts
            * The direction, represented by either '+' or '-'.
            * The topology segment id (a unique identifier within the HERE platform catalogs).

            The direction specifies whether the route is using the segment in its canonical direction ('+' also known as traveling along the geometry's direction), or against it ('-' also known as traveling against the geometry's direction).
          deprecated: true
        segmentRef:
          $ref: '#/components/schemas/SegmentRef'
        consumption:
          description: |
            The estimated net energy or fuel consumption along a span of the route is provided based on the `consumptionType` of the section. The value represents either net energy consumption or fuel consumption. Here are the units used for different vehicle types:
            * For electric vehicles (EVs): The energy consumption is measured in kilowatt-hours (kWh). This indicates the amount of energy consumed by the EV while traversing the specific span.
            * For fuel-based vehicles: Depending on the fuel type, the fuel consumption is measured in liters (for diesel, petrol vehicles, and vehicles using liquefied petroleum gas (LPG)), and in kilograms (for vehicles using compressed natural gas (CNG)).
          allOf:
          - $ref: '#/components/schemas/Consumption'
        baseDuration:
          description: |
            The duration of this span, specified in seconds, without taking time-aware information into account.

            Dynamic traffic information is not considered. The duration is calculated using average free-flow speeds based on historical traffic, without taking into account the current traffic conditions.

            The actual duration of the route section may be lower than `baseDuration` in some cases, e.g. if `trafficSpeed` is greater than `baseSpeed`.
          allOf:
          - $ref: '#/components/schemas/Duration'
        typicalDuration:
          description: |
            The duration of this span, specified in seconds, under typical traffic conditions.

            Dynamic traffic information is not considered. Instead, the duration is calculated using speeds that are typical for the given time of day/day of week, based on historical traffic data.

            **Note:** Will be the same as `baseDuration` if `traffic[mode]=disabled` is specified.
          allOf:
          - $ref: '#/components/schemas/Duration'
        incidents:
          type: array
          description: |
            A list of indexes into the incident array of the parent section.
            References all incidents that apply to the span.
            This requires `incidents` to be specified as part of the `return` parameter.
          items:
            type: integer
        intersectionIncidents:
          type: array
          description: |
            A list of indexes in the incident array of the parent section.
            References all incidents that block movement through the intersection at the end of this span.
            This requires `incidents` to be specified in `return` and `spans` parameters.
          items:
            type: integer
        routingZones:
          type: array
          description: |
            A list of indexes into the routing zone array of the parent section.
            References all applicable routing zones to the span.
          items:
            type: integer
        truckRoadTypes:
          type: array
          description: A list of indexes into the truck road types array of the parent
            section. References all applicable truck road types to the span.
          items:
            type: integer
        gate:
          description: Indication that a gate is present at the end of this span.
          allOf:
          - $ref: '#/components/schemas/Gate'
        railwayCrossing:
          description: Indication that a railway crossing is present at the end of
            this span.
          allOf:
          - $ref: '#/components/schemas/RailwayCrossing'
        notices:
          type: array
          description: |
            A list of indexes into the notices array of the parent section.
            References all notices that apply to the span.

            Depending on the notice type the notice might apply to the whole span, or only at the end of the span. Notices that only apply at the end of the span are:

            | Code      | Description  |
            | --------- | ------- |
            | violatedTurnRestriction | A restricted turn is performed at the end of the span |
            | violatedAvoidDifficultTurns | A difficult turn is performed at the end of the span |
            | violatedAvoidUTurns | A U-turn is performed at the end of the span |
            | violatedEmergencyGate | An emergency gate is crossed at the end of the span |
          items:
            type: integer
        noThroughRestrictions:
          type: array
          description: |
            A list of indexes into the `noThroughRestrictions` array of the parent section.
            References all `noThroughRestrictions` that apply to the span.
          items:
            type: integer
      description: |
        Span attached to a `Section` that describes the vehicle content.
    VehicleTransport:
      required:
      - mode
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/VehicleMode'
        name:
          type: string
          description: "Name of the transport, e.g., the name of a ferry or train."
        currentWeight:
          type: integer
          description: |
            Contains the value of `vehicle[currentWeight]` used for the section.
            Value expressed in kilograms.
            If `currentWeightChange` was specified for any of the via waypoints, the value is updated for the remaining sections.
          format: int32
      description: Information about a transport
    ViolatedZoneReference:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - zoneReference
        routingZoneRef:
          $ref: '#/components/schemas/RoutingZoneReference'
        timeDependent:
          type: boolean
          description: Indicates if the violation is time-dependent
        restrictedTimes:
          $ref: '#/components/schemas/TimeDomain'
        licensePlateRestriction:
          $ref: '#/components/schemas/LicensePlateRestriction'
        maxWeight:
          $ref: '#/components/schemas/VehicleRestrictionMaxWeight'
      description: |
        Provides details about the zone associated with `violatedZoneRestriction` and
        the violated restriction conditions that were evaluated against parameter values
        set in the routing request (such as vehicle properties).

        The restriction is violated only if all of the conditions present are met.
    WaitAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - wait
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
      description: |
        A wait operation to be performed at or during a specific portion of a section.
    WebLinkWithDeviceType:
      required:
      - id
      - text
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the web link. It is used to deduplicate
            links defined in multiple sections.
        href:
          $ref: '#/components/schemas/Uri'
        text:
          type: string
          description: Text describing the url address (e.g. The example website).
        hrefText:
          type: string
          description: |
            The interactive (or clickable) portion of the text. If not present (default), the entire content of the text attribute will be considered.
        deviceType:
          type: string
          description: "Extensible enum: `web` `ios` `android` `...`  \nDevice type\
            \ for which the link is intended\n"
          x-extensible-enum:
          - web
          - ios
          - android
      description: The URL address to an external resource.
    EVConsumption:
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.
      oneOf:
      - $ref: '#/components/schemas/EVEmpiricalModel'
      - $ref: '#/components/schemas/EVPhysicalModel'
    FarePrice:
      description: Price of a fare
      discriminator:
        propertyName: type
        mapping:
          value: '#/components/schemas/SinglePrice'
          range: '#/components/schemas/RangePrice'
      oneOf:
      - $ref: '#/components/schemas/SinglePrice'
      - $ref: '#/components/schemas/RangePrice'
    Passthrough:
      required:
      - place
      type: object
      properties:
        place:
          $ref: '#/components/schemas/Place'
        offset:
          type: number
          description: Passthrough offsets are the coordinate index in the polyline.
      description: Describes a location and time the section is passing through.
    PedestrianPostAction:
      discriminator:
        propertyName: action
        mapping:
          wait: '#/components/schemas/WaitAction'
          deboard: '#/components/schemas/DeboardAction'
      oneOf:
      - $ref: '#/components/schemas/WaitAction'
      - $ref: '#/components/schemas/DeboardAction'
    RouteResponseNotice:
      required:
      - code
      type: object
      properties:
        title:
          type: string
          description: Human-readable notice description.
          example: No route found
        code:
          type: string
          description: "Extensible enum: `noRouteFound` `failedRouteHandleCreation`\
            \ `cancelled` `routeCalculationFailed` `couldNotMatchOrigin` `couldNotMatchDestination`\
            \ `noReachableChargingStationsFound` `violatedTransportModeInRouteHandleDecoding`\
            \ `unknownError` `routeLengthLimitExceeded` `avoidSegmentsInvalidId` `avoidZonesInvalidId`\
            \ `avoidTruckRoadTypesInvalidId` `returnToRoute` `importFailed` `importSplitRoute`\
            \ `brandDoesNotExist` `unknownParameter` `mainLanguageNotFound` `avoidOptionsWithMakeReachableLimitation`\
            \ `currentWeightChangeNoCurrentWeight` `currentWeightChangeNoGrossWeight`\
            \ `...`  \nCurrently known codes (non-exhaustive: this list could be extended\
            \ for new error situations):\n\n| Code      | Description  | Severity\
            \ |\n| --------- | ------- | ------- |\n| noRouteFound | No Route was\
            \ found | critical |\n| failedRouteHandleCreation | No RouteHandle was\
            \ created | critical |\n| cancelled | Calculation took too long and was\
            \ cancelled | critical |\n| routeCalculationFailed | Calculation did not\
            \ succeed | critical |\n| couldNotMatchOrigin | Origin waypoint could\
            \ not be matched | critical |\n| couldNotMatchDestination | Destination\
            \ waypoint could not be matched | critical |\n| noReachableChargingStationsFound\
            \ | Initial charge is not enough to reach any known charging stations\
            \ | critical |\n| violatedTransportModeInRouteHandleDecoding | Route handle\
            \ decoding failed due to forbidden segments for the specified transport\
            \ mode | critical |\n| unknownError | No detailed error cause has been\
            \ determined | critical |\n| routeLengthLimitExceeded | Distance between\
            \ waypoints is too large for current options | critical |\n| avoidSegmentsInvalidId\
            \ | The provided segment ID was not found | info |\n| avoidZonesInvalidId\
            \ | The provided zone ID was not found | info |\n| avoidTruckRoadTypesInvalidId\
            \ | The provided truck road type id was not found | info |\n| returnToRoute\
            \ | Applicable only to requests with route handle provided. Current route\
            \ position was not on the original route. New route was calculated from\
            \ the current position to the destination. Old route may have been reused.\
            \ | info |\n| importFailed | No route section was found for imported waypoints\
            \ | critical |\n| importSplitRoute | Not all trace points were matched\
            \ | info |\n| brandDoesNotExist | Preferred charging station brand does\
            \ not exist | info |\n| unknownParameter | The provided parameter is unknown\
            \ | info |\n| mainLanguageNotFound | The first language in the list of\
            \ preferred languages is not supported. | info |\n| avoidOptionsWithMakeReachableLimitation\
            \ | Avoiding toll or controlledAccessHighway with makeReachable is supported\
            \ only for trucks up to 7.5 tons. | critical |\n| currentWeightChangeNoCurrentWeight\
            \ | Route handle contains `currentWeightChange` but missing vehicle[currentWeight].\
            \ `currentWeight` will not be evaluated. | info |\n| currentWeightChangeNoGrossWeight\
            \ | Route handle contains `currentWeightChange` but missing vehicle[grossWeight].\
            \ Vehicle restrictions based on gross weight will not be evaluated. |\
            \ info |\n"
          example: noRouteFound
          x-extensible-enum:
          - noRouteFound
          - failedRouteHandleCreation
          - cancelled
          - routeCalculationFailed
          - couldNotMatchOrigin
          - couldNotMatchDestination
          - noReachableChargingStationsFound
          - violatedTransportModeInRouteHandleDecoding
          - unknownError
          - routeLengthLimitExceeded
          - avoidSegmentsInvalidId
          - avoidZonesInvalidId
          - avoidTruckRoadTypesInvalidId
          - returnToRoute
          - importFailed
          - importSplitRoute
          - brandDoesNotExist
          - unknownParameter
          - mainLanguageNotFound
          - avoidOptionsWithMakeReachableLimitation
          - currentWeightChangeNoCurrentWeight
          - currentWeightChangeNoGrossWeight
        severity:
          $ref: '#/components/schemas/NoticeSeverity'
        details:
          type: array
          description: Additional details about the notice
          items:
            $ref: '#/components/schemas/RouteResponseNoticeDetail'
      description: A notice contains important notifications.
      example:
        $ref: '#/components/examples/routeResponseNoticeExample'
    SignpostLabel:
      description: |
        Label on a signpost.
      anyOf:
      - $ref: '#/components/schemas/SignpostLabelText'
      - $ref: '#/components/schemas/SignpostLabelRouteNumber'
    TimeRestrictedPrice:
      required:
      - currency
      - type
      - value
      type: object
      properties:
        type:
          type: string
          description: |
            Type of price represented by this object. The API customer is responsible for correctly visualizing
            the pricing model. As it is possible to extend the supported price types in the future,
            the price information should be hidden when an unknown type is encountered.

            Available price types are:

              * `restricted` - A single price value valid for a specific time or duration
        estimated:
          type: boolean
          description: "Attribute value is `true` if the fare price is estimated,\
            \ `false` if it is an exact value."
          default: false
        currency:
          type: string
          description: Local currency of the price compliant to ISO 4217
        unit:
          description: |
            When set, the price is paid for a specific duration.

            Examples:
              * `"unit": 3600` - price for one hour
              * `"unit": 28800` - price for 8 hours
              * `"unit": 86400` - price for one day
          allOf:
          - $ref: '#/components/schemas/Duration'
        value:
          type: number
          description: The price value
        days:
          type: array
          description: This price applies only for the selected days
          example:
          - sa
          - su
          items:
            $ref: '#/components/schemas/TimeRestrictedWeekdays'
        minDuration:
          description: The price applies if the duration is more or equal to `minDuration`
          example: 1801
          allOf:
          - $ref: '#/components/schemas/Duration'
        maxDuration:
          description: The price applies if the duration is less or equal to `maxDuration`
          example: 3600
          allOf:
          - $ref: '#/components/schemas/Duration'
        fromTime:
          description: The price applies from this time of the day
          allOf:
          - $ref: '#/components/schemas/PartialTime'
        toTime:
          description: The price applies until this time of the day
          allOf:
          - $ref: '#/components/schemas/PartialTime'
    TransitDeparturePlace:
      description: Departure/arrival location
      discriminator:
        propertyName: type
        mapping:
          place: '#/components/schemas/Place'
          station: '#/components/schemas/StationPlace'
      oneOf:
      - $ref: '#/components/schemas/Place'
      - $ref: '#/components/schemas/StationPlace'
    TransitPostAction:
      discriminator:
        propertyName: action
        mapping:
          deboard: '#/components/schemas/DeboardAction'
      oneOf:
      - $ref: '#/components/schemas/DeboardAction'
    TransitPreAction:
      description: An action that must be done prior to `departure`.
      discriminator:
        propertyName: action
        mapping:
          board: '#/components/schemas/BoardAction'
      oneOf:
      - $ref: '#/components/schemas/BoardAction'
    VehiclePostAction:
      description: Action attached to a vehicle section that must be done after `arrival`.
      discriminator:
        propertyName: action
        mapping:
          chargingSetup: '#/components/schemas/ChargingSetupAction'
          charging: '#/components/schemas/ChargingAction'
          deboard: '#/components/schemas/DeboardAction'
          wait: '#/components/schemas/WaitAction'
      oneOf:
      - $ref: '#/components/schemas/ChargingSetupAction'
      - $ref: '#/components/schemas/ChargingAction'
      - $ref: '#/components/schemas/DeboardAction'
      - $ref: '#/components/schemas/WaitAction'
    VehicleRestriction:
      required:
      - type
      type: object
      properties:
        title:
          type: string
          description: Detail title
        cause:
          type: string
          description: Cause of the notice
        type:
          type: string
          description: |
            Detail type. Each type of detail might contain extra attributes.

            **NOTE:** The list of possible detail types may be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - restriction
        forbiddenHazardousGoods:
          description: |
            Hazardous goods restrictions applied during the trip.

            This condition is met when the vehicle's shippedHazardousGoods
            contains any of the items in the specified array.

            This property can either be "any" or a list of all forbidden hazardous goods.
          allOf:
          - $ref: '#/components/schemas/ForbiddenHazardousGoods'
        maxWeight:
          allOf:
          - $ref: '#/components/schemas/VehicleRestrictionMaxWeight'
        maxGrossWeight:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted weight, specified in kilograms.
            This condition is met when the vehicle's weight exceeds the specified value.

            **NOTE:** This attribute is deprecated, use `maxWeight` instead. It is redundant and is present because of backward compatibility reasons.
          format: int32
          deprecated: true
        maxWeightPerAxle:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted weight per axle, specified in kilograms.

            This condition is met when the vehicle's `weightPerAxle` exceeds the specified value.
          format: int32
        maxAxleGroupWeight:
          description: |
            Contains the maximum permitted weight for an axle-group.

            This condition is triggered when the vehicle's `weightPerAxleGroup` exceeds this value.
          allOf:
          - $ref: '#/components/schemas/AxleGroupWeight'
        maxHeight:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted height, specified in centimeters.

            This condition is met when the vehicle's `height` exceeds the specified value.
          format: int32
        maxWidth:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted width, specified in centimeters.

            This condition is met when the vehicle's `width` exceeds the specified value.
          format: int32
        maxLength:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted length, specified in centimeters.

            This condition is met when the vehicle's `length` exceeds the specified value.
          format: int32
        maxTiresCount:
          minimum: 0
          type: integer
          description: |
            Contains the maximum number of permitted tires.

            This condition is met when the vehicle's `tiresCount` exceeds the specified value.
          format: int32
        axleCount:
          description: |
            Constrains the restriction to trucks with the number of axles within the specified range.

            This condition is met when the vehicle's `axleCount` is within the specified range.
          allOf:
          - $ref: '#/components/schemas/TruckAxleCountRange'
        tunnelCategory:
          description: |
            Specifies the tunnel category used to restrict the transport of specific goods.

            This condition is met when the value exceeds the tunnel category specified
            by the vehicle's `tunnelCategory`
          allOf:
          - $ref: '#/components/schemas/TunnelCategory'
        timeDependent:
          type: boolean
          description: |
            Indicates that the restriction depends on time.
        truckType:
          description: |
            Constrains the restriction to a specific type of vehicle.

            This condition is met if the `vehicle[type]` request parameter matches the specified value.
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/TruckType'
        vehicleType:
          description: |
            Constrains the restriction to a specific type of vehicle.

            This condition is met if the `vehicle[type]` request parameter matches this value.
          allOf:
          - $ref: '#/components/schemas/VehicleType'
        trailerCount:
          description: |
            Constrains the restriction to trucks with the number of axles within the specified range.

            This condition is met when the vehicle's `trailerCount` is within the specified range.
          allOf:
          - $ref: '#/components/schemas/TrailerCountRange'
        maxEngineSizeCC:
          minimum: 0
          type: integer
          description: |
            Contains the maximum permitted size of the engine, specified in cubic centimeters.

            This condition is met when the vehicle's `engineSizeCC` exceeds the specified value.
          format: int32
        minEngineSizeCC:
          minimum: 0
          type: integer
          description: |
            Contains the minimum permitted size of the engine, specified in cubic centimeters.

            This condition is met when the vehicle's `engineSizeCC' is less than the specified value.
          format: int32
        maxOccupancy:
          minimum: 1
          type: integer
          description: |
            Contains the maximum permitted occupancy.

            This condition is met when the vehicle's `occupancy` exceeds the specified value.
          format: int32
        minOccupancy:
          minimum: 1
          type: integer
          description: |
            Contains the minimum permitted occupancy.

            This condition is met when the vehicle's `occupancy` is less than the specified value.
          format: int32
        restrictedTimes:
          $ref: '#/components/schemas/TimeDomain'
        maxKpraLength:
          minimum: 0
          type: integer
          description: |
            Contains max permitted kingpin to rear axle length, in centimeters.

            This condition is met when the vehicle's `kpraLength` exceeds this value.
          format: int32
        maxPayloadCapacity:
          minimum: 0
          type: integer
          description: |
            Contains the maximum allowed payload capacity, specified in kilograms.

            This condition is met when the vehicle's `payloadCapacity` exceeds the specified value.
          format: int32
        unconditional:
          type: boolean
          description: Restriction applies unconditionally.
          default: false
      description: |
        Provides details about the violated restriction and the violated restriction
        conditions that were evaluated against parameter values set in the routing
        request (such as vehicle properties).

        The restriction is violated only if all of the conditions present are met.
      example:
        $ref: '#/components/examples/restrictionExample'
    BoundingBoxAreaWithExceptions:
      required:
      - east
      - north
      - south
      - type
      - west
      type: object
      properties:
        type:
          type: string
          example: boundingBox
        north:
          maximum: 90
          minimum: -90
          type: number
          description: Latitude in WGS-84 degrees of the northern boundary of the
            box.
          example: 30.0
        south:
          maximum: 90
          minimum: -90
          type: number
          description: Latitude in WGS-84 degrees of the southern boundary of the
            box.
          example: 30.0
        east:
          maximum: 180
          minimum: -180
          type: number
          description: Longitude in WGS-84 degrees of the eastern boundary of the
            box
          example: 30.0
        west:
          maximum: 180
          minimum: -180
          type: number
          description: Longitude in WGS-84 degrees of the western boundary of the
            box.
          example: 30.0
        exceptions:
          minItems: 0
          type: array
          description: Optional list of areas to exclude from avoidance.
          items:
            $ref: '#/components/schemas/Area'
      description: |
        A bounding box defined by two longitudes and two latitudes.
        Can be expanded to include excepted areas that are excluded from the current bounding box area.
    CorridorAreaWithExceptions:
      required:
      - polyline
      - radius
      - type
      type: object
      properties:
        type:
          type: string
          example: corridor
        polyline:
          maxItems: 100
          minItems: 2
          type: array
          description: List of coordinates defining polyline.
          items:
            $ref: '#/components/schemas/Coordinate'
        radius:
          maximum: 1000
          minimum: 1
          type: number
          description: The width in meters of the corridor determines the outline
            of the polygon.
        exceptions:
          minItems: 0
          type: array
          description: Optional list of areas to exclude from avoidance.
          items:
            $ref: '#/components/schemas/Area'
      description: |
        A polyline with a specified radius in meters that defines an area.
        Can be expanded to include excepted areas that are excluded from the current corridor area.
    EV:
      type: object
      properties:
        makeReachable:
          type: boolean
          description: |
            When set to `true`, the router ensures that the calculated route is reachable within the given constraints
            (i.e., `minChargeAtChargingStation`, `minChargeAtDestination`). If necessary, charging stations are added to the route
            to achieve reachability.

            The following conditions must be met in order to enable this option:
            * `routingMode=fast`
            * `transportMode=car` or `transportMode=truck` (Beta)

            Support for this feature with `transportMode=truck` is currently in beta release, with the following limitations:
            * `avoid[features]=controlledAccessHighway` and `avoid[features]=tollRoad` in combination with `transportMode=truck` are supported only for `vehicle[grossWeight]` up to 7500 kg.
            * Trucks above 4200 kg are limited to following countries:
              - Germany
              - Netherlands
              - Belgium
              - Luxembourg
              - Denmark
              - Sweden
              - Switzerland
              - Austria
              - Liechtenstein

              This is mainly because the coverage of charging station data for trucks is limited outside of these countries.
            * For trucks up to 7500 kg the coverage of charging stations can be improved by including car charging stations by specifying `ev[allowCarChargingStations]=true`. This will also enable routing in countries other than the ones listed above.
            * Quality of the resulting routes and performance of the calculation is not guaranteed.

            **Note**:
            * When setting avoid[areas] option, the route calculation may fail if route has to take significant detour to avoid them.
        preferredBrands:
          type: string
          description: |
            Comma-separated list of charging station brand IDs. If `makeReachable` is set to `true`, then charging stations from the specified brands
            will be preferred as potential charging stops, even if this makes the total route duration (travel time plus charging time) longer (up to 15 minutes per charging stop).

            **Note**:
            * `preferredBrands`, `preferredChargePointOperators` and `eMobilityServiceProviderPreferences` are mutually exclusive
            * this parameter is deprecated use `preferredChargePointOperators` instead
          deprecated: true
        excludeChargingStations:
          type: string
          description: |
            Comma-separated list of charging station IDs. ID values can be found in the Routing API response. See `ChargingStationPlace.id`.
            These charging stations are to be excluded during EV route calculations, even if no other charging stations are reachable.
            Adding this parameter might result in `noReachableChargingStationsFound` response.
            More information about charging stations can be found in the [EV routing](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/ev-routing.html) section of the Developer Guide.
            **Note**: Maximum number of charging station IDs supported in one request is 10.
          example: "276u33dc1rxhv-aGVyZS1ldjplY29tb3ZlbWVudDo5MTk5ODEzNjE,276u33dbk5e2h-aGVyZS1ldjplY29tb3ZlbWVudDo5NDMwNzkyMzA"
        preferredChargePointOperators:
          type: string
          description: |
            Comma-separated list of charge-point-operator IDs. If `makeReachable` is set to `true`, then charging station
            with one of provided charge-point-operators will be preferred as potential charging stop, even if this makes the total route
            duration (travel time plus charging time) longer (up to 15 minutes per charging stop).

            **Note**:
            * `preferredBrands`, `preferredChargePointOperators` and `eMobilityServiceProviderPreferences` are mutually exclusive
        eMobilityServiceProviderPreferences:
          type: string
          description: |
            Specifies a comma-separated list of E-Mobility Service Providers with their associated preference levels.
            These settings are used to prefer charging stations that support the specified E-Mobility Service Provider(s).
            Single E-Mobility Service Provider preference is comprised of semicolon-separated E-Mobility Service Provider ID and
            associated preference level. The list of eMobility Service Providers is available from the [HERE EV Charge Points API v2](https://www.here.com/docs/bundle/ev-charge-points-api-developer-guide/page/topics/resource-roamings.html).

            ## Format: `{emobility-service-provider-id};preference={preference-level}[,{emobility-service-provider-id};preference={preference-level}]...`

            ## Supported E-Mobility Service Provider IDs

            * A valid E-Mobility Service Provider ID
            * `default`: special value to be used in place of an id, to model default behavior when a station doesn't support any of the specified E-Mobility Service Providers.
              The preference level passed with `default` is applied to such stations. This value must be lowest of all preferences.
              If a `default` preference level is not specified, the value `exclude` is applied to the stations under this category.


            ## Supported preference levels

            *`high`: Stations that support E-Mobility Service Providers with `high` preference level are preferred over all other stations. At least one Provider must be specified with this level.
            * `medium`: Stations supporting E-Mobility Service Providers with `medium` preference level are considered only in case the vehicle cannot reach stations supporting Providers with `high` level.
            * `low`: Stations supporting only E-Mobility Service Providers with `low` preference level are preferred the least and such stations are considered only in case the vehicle cannot reach stations that support Providers with `high` or `medium` level.
            * `exclude`: Can only be used as the `default` preference level. When `exclude` is the `default`, stations that are not assigned a higher preference are never considered.

            ## Using restricted stations

            Stations which have restricted access are not normally considered in the route calculation. However, stations which are restricted to "brand only" will be considered if their E-Mobility Service Provider is specified in this parameter with a preference value other than "exclude".

            **Notes**:
            * Maximum number of E-Mobility Service Providers in preferences is limited to 10
            * `preferredBrands`, `preferredChargePointOperators` and `eMobilityServiceProviderPreferences` are mutually exclusive
          example: "ev[eMobilityServiceProviderPreferences]=default;preference=low,79c4c474-19a2-11ee-880e-42010aa40002;preference=high,2d6754b0-cca5-11ed-ade1-42010aa40002;preference=medium"
        allowCarChargingStations:
          type: boolean
          description: |
            When set to `true`, and when `ev[makeReachable]=true` and `transportMode=truck`, charging at stations that are open for cars is allowed, even when the station is not explicitly open for trucks. This feature can be used, for example, for lighter trucks, like vans, which are small enough to access car chargers.
            This option is applicable only if `vehicle[grossWeight]` is set to less than 7500 kg. If `vehicle[grossWeight]` is not provided, `vehicle[currentWeight]` is considered instead. If the applicable weight exceeds 7500 kg, an error is returned.
          default: false
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

        The following properties are additionally required for the router to automatically enhance the route with charging stops
        * `makeReachable` set to `true`
        * `chargingCurve`
        * `connectorTypes`
        * `maxChargeAfterChargingStation`
      oneOf:
      - $ref: '#/components/schemas/EVEmpiricalModel'
      - $ref: '#/components/schemas/EVPhysicalModel'
    EVRouteHandle:
      type: object
      properties:
        eMobilityServiceProviderPreferences:
          type: string
          description: |
            Specifies a comma-separated list of E-Mobility Service Providers with their associated preference levels.
            These settings are used to prefer or exclude charging stations supporting specified set of E-Mobility Service Provider(s).
            Single E-Mobility Service Provider preference is comprised of semicolon-separated E-Mobility Service Provider ID and
            associated preference level. The list of eMobility Service Providers is available from the [HERE EV Charge Points API v2](https://www.here.com/docs/bundle/ev-charge-points-api-developer-guide/page/topics/resource-roamings.html).

            ## Format: `{emobility-service-provider-id;preference=preference-level[,emobility-service-provider-id;preference=preference-level]...}`

            ## Supported E-Mobility Service Provider IDs

            * A valid E-Mobility Service Provider ID
            * `default`: special value to be used in place of id, to model default behavior when a station doesn't support any of the provided E-Mobility Service Providers.
              The preference level passed with `default` is applied to such stations.
              If not specified then preference level `exclude` is applied, which means that stations not supporting any of the provided E-Mobility Service Providers are not considered for charging stop.
              Check example section for the usage.


            ## Supported preference levels

            * `high`: specifies that E-Mobility Service Provider ID passed along is preferred the most. Stations supporting
              E-Mobility Service Providers with high preference level are chosen over all other stations.
            * `medium`: Stations supporting E-Mobility Service Providers in this preference setting are taken into consideration only in case the vehicle cannot reach stations supporting
              E-Mobility Service Providers with high preference.
            * `low`: Stations supporting only low preference level E-Mobility Service Providers are preferred the least and such stations
              are chosen only in case the vehicle cannot reach stations that support E-Mobility Service Providers with high or medium preference.
            * `exclude`: stations that only support E-Mobility Service Providers with this preference level are never selected as a charging stop.

            ## Using restricted stations

            Stations which have restricted access are not normally considered in the route calculation. However, stations which are restricted to "brand only" will be considered if their E-Mobility Service Provider is specified in this parameter with a preference value other than "exclude".

            **Notes**:
            * Maximum number of E-Mobility Service Providers in preferences is limited to 10
            * In routeHandle request this affects only value of matchingEMobilityServiceProviders in the response. The route is not affected in any way.
              For convenience the format of the parameter is same as in route calculation request.
          example: "ev[eMobilityServiceProviderPreferences]=default;preference=low,79c4c474-19a2-11ee-880e-42010aa40002;preference=high,2d6754b0-cca5-11ed-ade1-42010aa40002;preference=medium"
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.
      oneOf:
      - $ref: '#/components/schemas/EVEmpiricalModel'
      - $ref: '#/components/schemas/EVPhysicalModel'
    EncodedCorridorAreaWithExceptions:
      required:
      - polyline
      - radius
      - type
      type: object
      properties:
        type:
          type: string
          example: encodedCorridor
        polyline:
          type: string
          description: |
            [Flexible Polyline](https://github.com/heremaps/flexible-polyline) that defines a supporting structure for a corridor.
            Notes:
            * Support only 2D polyline (without `elevation` specified).
            * Minimum count of vertices in polyline is 2.
            * Maximum count of vertices in polyline is 100.
          example: BFoz5xJ67i1B1B7PzIhaxL7Y
        radius:
          maximum: 1000
          minimum: 1
          type: number
          description: The width in meters of the corridor determines the outline
            of the polygon.
        exceptions:
          minItems: 0
          type: array
          description: Optional list of areas to exclude from avoidance.
          items:
            $ref: '#/components/schemas/Area'
      description: |
        A polygon defined as a [Flexible Polyline](https://github.com/heremaps/flexible-polyline) encoded string
        and with a specified radius that defines an area.
        Can be expanded to include excepted areas that are excluded from the current corridor area.
    EncodedPolygonAreaWithExceptions:
      required:
      - outer
      - type
      type: object
      properties:
        type:
          type: string
          example: encodedPolygon
        outer:
          type: string
          description: |
            [Flexible Polyline](https://github.com/heremaps/flexible-polyline) that defines the outline of the polygon.
            Notes:
            * Support only 2D polyline (without `elevation` specified).
            * Minimum count of vertices in polygon is 3.
            * Maximum count of vertices in polygon is 16.
          example: BFoz5xJ67i1B1B7PzIhaxL7Y
        exceptions:
          minItems: 0
          type: array
          description: Optional list of areas to exclude from avoidance.
          items:
            $ref: '#/components/schemas/Area'
      description: |
        A polygon defined as a [Flexible Polyline](https://github.com/heremaps/flexible-polyline) encoded string.
        Can be expanded to include excepted areas that are excluded from the current polygon area.
    Fare:
      required:
      - id
      - name
      - price
      type: object
      properties:
        id:
          type: string
          description: Unique Fare id. Used to deduplicate fares that apply to multiple
            sections
        name:
          type: string
          description: Name of a fare
        price:
          $ref: '#/components/schemas/FarePrice'
        convertedPrice:
          $ref: '#/components/schemas/FarePrice'
        reason:
          type: string
          description: "Extensible enum: `ride` `parking` `toll` `...`  \nReason for\
            \ the cost described in this `Fare` element.\n"
          default: ride
          x-extensible-enum:
          - ride
          - parking
          - toll
        paymentMethods:
          minItems: 1
          uniqueItems: true
          type: array
          description: |
            Specifies the payment methods for which this fare is valid.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        pass:
          $ref: '#/components/schemas/FarePass'
        applicableTimes:
          type: string
          description: |
            Specifies the time domain when this fare is valid. If this field is missing, it means the fare is always valid.

            For a detailed description of the Time Domain specification and usage in routing services, please refer to
            the documentation available in the [Time Domain](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/time-domain.html) page.
          allOf:
          - $ref: '#/components/schemas/TimeDomain'
        transponders:
          type: array
          description: List of transponder systems for which this fare is applicable.
            Only available for transponder payment method
          items:
            $ref: '#/components/schemas/TransponderSystem'
      description: |
        "`Fare` type contains information about a single fare or ticket needed for this section of the route."

        **NOTE**: Fares information support will be available soon.
    ParkingLotPlace:
      required:
      - location
      - type
      type: object
      properties:
        name:
          type: string
          description: Location name
        waypoint:
          minimum: 0
          type: integer
          description: |
            If present, this place corresponds to the `via` in the request with the same index.

            Example:

            If the request contains `via=<a>&via=<b>`
            * the place corresponding to `<a>` in the response will have `waypoint: 0`
            * the place corresponding to `<b>` in the response will have `waypoint: 1`.

            Notes:
            * `waypoint` is not present for `origin` and `destination` places. `origin` and `destination` waypoints can be trivially identified in the response as the `departure` of the first section and the `arrival` of the final section, respectively.
            * `waypoint` is not present for any stops that are added automatically by the router.
        type:
          type: string
          description: |
            Place type. Each place type can have extra attributes.

            **NOTE:** The list of possible place types could be extended in the future.
            The client application is expected to handle such a case gracefully.
          enum:
          - parkingLot
        location:
          description: |
            The position of this location

            This position was used in route calculation. It may be different to the original position provided in the request.
          allOf:
          - $ref: '#/components/schemas/Location'
        originalLocation:
          description: "If present, the original position of this location provided\
            \ in the request."
          allOf:
          - $ref: '#/components/schemas/Location'
        displayLocation:
          description: "If present, the display position of this location provided\
            \ in the request or that of the auto-added waypoint. This is different\
            \ from the originalLocation and location which are generally expected\
            \ to be on the navigable road network, i.e., on segments. This coordinate,\
            \ for example, is the location of the POI as shown by the pin on a map."
          allOf:
          - $ref: '#/components/schemas/Location'
        sideOfStreet:
          type: string
          description: |
            Location of the waypoint or destination, relative to the driving direction on the street/road.

            **NOTE:** Based on the original waypoint position and `sideOfStreetHint` waypoint property.
             - If `sideOfStreetHint` property is specified, it takes priority in determining the side of street in the response.
             - Nothing is returned in the response in case the side of street is ambiguous (too close to the street),
               or if the position is too far from the street.

            * 'left`: The left side of the street in relation to the driving direction of the route.
            * `right`: The right side of the street in relation to the driving direction of the route.
          enum:
          - left
          - right
        id:
          type: string
          description: Identifier of this parking lot
        attributes:
          type: array
          description: Attributes of a parking lot.
          items:
            $ref: '#/components/schemas/ParkingLotPlaceType'
        rates:
          type: array
          description: |
            List of possible parking rates for this facility. Different rates can apply depending on the day, time of the day or parking duration.
          items:
            $ref: '#/components/schemas/TimeRestrictedPrice'
      description: A parking lot
      example:
        type: place
        location:
          lat: 50.339167
          lng: 18.93
    PolygonAreaWithExceptions:
      required:
      - outer
      - type
      type: object
      properties:
        type:
          type: string
          example: polygon
        outer:
          maxItems: 100
          minItems: 3
          type: array
          description: List of coordinates defining the outline of the polygon.
          items:
            $ref: '#/components/schemas/Coordinate'
        exceptions:
          minItems: 0
          type: array
          description: Optional list of areas to exclude from avoidance.
          items:
            $ref: '#/components/schemas/Area'
      description: |
        A polygon defined as a list of coordinates.
        Self-intersecting polygons are not supported.
        Can be expanded to include excepted areas that are excluded from the current polygon area.
    SignpostInfo:
      required:
      - labels
      type: object
      properties:
        labels:
          type: array
          description: |
            Part of a signpost representing particular direction or destination.
          items:
            $ref: '#/components/schemas/SignpostLabel'
      description: |
        Signpost information attached to an offset action.
      example:
        $ref: '#/components/examples/routeResponseManeuverSignpostInfoExample'
    TollCountrySummary:
      type: object
      properties:
        countryCode:
          $ref: '#/components/schemas/CountryCode'
        price:
          $ref: '#/components/schemas/FarePrice'
    TollSystemSummary:
      type: object
      properties:
        tollSystem:
          type: integer
          description: |
            Reference index into the `tollSystems` array of the containing section.
        price:
          $ref: '#/components/schemas/FarePrice'
    TransitDeparture:
      required:
      - place
      type: object
      properties:
        time:
          description: "Expected time of departure of the event. Format is **RFC 3339**,\
            \ section 5.6 as defined by `date-time`."
          allOf:
          - $ref: '#/components/schemas/Time'
        place:
          $ref: '#/components/schemas/TransitDeparturePlace'
        charge:
          type: number
          description: |
            Vehicle battery charge, specified in kilowatt-hours (kWh).
            **NOTE:** This is only returned in ferry sections when a vehicle route requests battery consumption.
      description: Transit departure
    TransitNoticeDetail:
      description: Details attached to notices in vehicle section.
      discriminator:
        propertyName: type
        mapping:
          restriction: '#/components/schemas/VehicleRestriction'
          violatedTransportMode: '#/components/schemas/ViolatedTransportMode'
      oneOf:
      - $ref: '#/components/schemas/VehicleRestriction'
      - $ref: '#/components/schemas/ViolatedTransportMode'
    VehicleNoticeDetail:
      description: Details attached to notices in vehicle section.
      discriminator:
        propertyName: type
        mapping:
          restriction: '#/components/schemas/VehicleRestriction'
          violatedTransportMode: '#/components/schemas/ViolatedTransportMode'
          truckRoadType: '#/components/schemas/ViolatedTruckRoadType'
          zoneReference: '#/components/schemas/ViolatedZoneReference'
          violatedOpeningHours: '#/components/schemas/ViolatedChargingStationOpeningHours'
      oneOf:
      - $ref: '#/components/schemas/VehicleRestriction'
      - $ref: '#/components/schemas/ViolatedTransportMode'
      - $ref: '#/components/schemas/ViolatedTruckRoadType'
      - $ref: '#/components/schemas/ViolatedZoneReference'
      - $ref: '#/components/schemas/ViolatedChargingStationOpeningHours'
    AreaPost:
      description: |
        Defines an explicit area to avoid/exclude when calculating the routes.
        Area specified by boundingBoxes or polygons (as encoded polyline or as list of geopoints) or corridor area.
        Can be expanded to include excepted areas that are excluded from the current avoidance.

        Notes:
        * Maximum count of avoided and excluded polygons and corridors is 20.
        * Maximum total count of avoided and excluded bounding boxes, polygons, corridors, including exceptions, is 250.
      discriminator:
        propertyName: type
        mapping:
          boundingBox: '#/components/schemas/BoundingBoxAreaWithExceptions'
          polygon: '#/components/schemas/PolygonAreaWithExceptions'
          encodedPolygon: '#/components/schemas/EncodedPolygonAreaWithExceptions'
          corridor: '#/components/schemas/CorridorAreaWithExceptions'
          encodedCorridor: '#/components/schemas/EncodedCorridorAreaWithExceptions'
      oneOf:
      - $ref: '#/components/schemas/BoundingBoxAreaWithExceptions'
      - $ref: '#/components/schemas/PolygonAreaWithExceptions'
      - $ref: '#/components/schemas/EncodedPolygonAreaWithExceptions'
      - $ref: '#/components/schemas/CorridorAreaWithExceptions'
      - $ref: '#/components/schemas/EncodedCorridorAreaWithExceptions'
    OffsetAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
      description: |
        An action to be performed at or during a specific portion of a section.
    PedestrianPlace:
      description: Place used in pedestrian routing
      discriminator:
        propertyName: type
        mapping:
          place: '#/components/schemas/Place'
          station: '#/components/schemas/StationPlace'
          accessPoint: '#/components/schemas/AccessPointPlace'
          parkingLot: '#/components/schemas/ParkingLotPlace'
          chargingStation: '#/components/schemas/ChargingStationPlace'
          dockingStation: '#/components/schemas/DockingStationPlace'
      oneOf:
      - $ref: '#/components/schemas/Place'
      - $ref: '#/components/schemas/StationPlace'
      - $ref: '#/components/schemas/AccessPointPlace'
      - $ref: '#/components/schemas/ParkingLotPlace'
      - $ref: '#/components/schemas/ChargingStationPlace'
      - $ref: '#/components/schemas/DockingStationPlace'
    TollFare:
      required:
      - id
      - name
      - price
      type: object
      properties:
        id:
          type: string
          description: Unique Fare id. Used to deduplicate fares that apply to multiple
            sections
        name:
          type: string
          description: |
            Name of a toll fare.

            **NOTE** This property is deprecated. A toll fare represents one of the various fares linked to the route section
            toll cost(`TollCost`) and for a toll cost associated with a single toll system the fare name is same as the
            toll system name. But for a toll cost associated with multiple toll systems this parameter will return the name of
            only one toll system. To get the names of all the toll systems associated with a toll cost use `TollCost.tollSystems`.
          deprecated: true
        price:
          $ref: '#/components/schemas/FarePrice'
        convertedPrice:
          $ref: '#/components/schemas/FarePrice'
        reason:
          type: string
          description: "Extensible enum: `ride` `parking` `toll` `...`  \nReason for\
            \ the cost described in this `Fare` element.\n"
          default: ride
          x-extensible-enum:
          - ride
          - parking
          - toll
        paymentMethods:
          minItems: 1
          uniqueItems: true
          type: array
          description: |
            Specifies the payment methods for which this fare is valid.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        pass:
          $ref: '#/components/schemas/FarePass'
        applicableTimes:
          type: string
          description: |
            Specifies the time domain when this fare is valid. If this field is missing, it means the fare is always valid.

            For a detailed description of the Time Domain specification and usage in routing services, please refer to
            the documentation available in the [Time Domain](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/time-domain.html) page.
          allOf:
          - $ref: '#/components/schemas/TimeDomain'
        transponders:
          type: array
          description: List of transponder systems for which this fare is applicable.
            Only available for transponder payment method
          items:
            $ref: '#/components/schemas/TransponderSystem'
      description: |
        Contains information about a single toll fare needed for this section of the route.
    TollSummary:
      type: object
      properties:
        total:
          description: |
            Represents the overall sum of toll fees for the entire route or section. It provides the aggregated amount of toll charges without further breakdown.
          allOf:
          - $ref: '#/components/schemas/FarePrice'
        totalBySystem:
          type: array
          description: |
            Categorizes toll fees based on the different toll systems applicable along the route or section. Each toll system has its own set of charges and payment rules. The summary provides a breakdown of toll costs for each individual toll system encountered.
          items:
            $ref: '#/components/schemas/TollSystemSummary'
        totalByCountry:
          type: array
          description: |
            Groups toll fees based on the countries traversed during the route or section. It provides a breakdown of toll charges specific to each country.
          items:
            $ref: '#/components/schemas/TollCountrySummary'
      description: |
        The summary of the tolls grouped by criteria (total, per system, per country).
    TransitNotice:
      required:
      - code
      type: object
      properties:
        title:
          type: string
          description: Human-readable notice description.
          example: No schedule
        code:
          type: string
          description: "Extensible enum: `noSchedule` `noIntermediate` `unwantedMode`\
            \ `scheduledTimes` `simplePolyline` `violatedAvoidFerry` `violatedAvoidRailFerry`\
            \ `seasonalClosure` `currentWeightNegative` `travelTimeExceedsDriverWorkHours`\
            \ `vehicleRestriction` `...`  \nCurrently known codes (non-exhaustive:\
            \ this list could be extended for new situations):\n\n| Code      | Description\
            \  | Severity |\n| --------- | ------- | ------- |\n| noSchedule | A timetable\
            \ schedule is not available for the transit line in this section, and\
            \ only the run frequency is available. As a result, departure/arrival\
            \ times are approximated | info |\n| noIntermediate | Information about\
            \ intermediate stops is not available for this transit line | info |\n\
            | unwantedMode | This section contains a transport mode that was explicitly\
            \ disabled. Mode filtering is not available in this area | info |\n| scheduledTimes\
            \ | The times returned on this section are the scheduled times even though\
            \ delay information are available | info |\n| simplePolyline | An accurate\
            \ polyline is not available for this section. The returned polyline has\
            \ been generated from departure and arrival places | info |\n| violatedAvoidFerry\
            \ | Route did not manage to avoid user preference | critical |\n| violatedAvoidRailFerry\
            \ | Route did not manage to avoid user preference | critical |\n| seasonalClosure\
            \ | Route goes through seasonal closure | info |\n| currentWeightNegative\
            \ | `vehicle[currentWeight]` is negative after applying `currentWeightChange`\
            \ at a via waypoint. | critical |\n| travelTimeExceedsDriverWorkHours\
            \ | The route travelTime exceeds drive time sequence provided in `driver[schedule]`\
            \ parameter | critical |\n\n\nThe codes listed below can appear as info\
            \ notices when the request contains `return=potentialTimeDependentViolations`.\n\
            The resulting info notices are not violations on the current route but\
            \ could be violations if the arrival time\nat these restrictions differs\
            \ from the calculated time.\nFor example, an info notice for a `vehicleRestriction`\
            \ could indicate that your vehicle is not currently violating any restriction\
            \ but,\nIf the journey is delayed by an hour, the vehicle would not be\
            \ allowed on part of the route because there is a time-dependent restriction\
            \ active at that time.\n\nCodes for potential time-dependent restriction\
            \ violations are (non-exhaustive: can be extended for new situations):\n\
            \n| Code      | Description  | Severity |\n| --------- | ------- | -------\
            \ |\n| vehicleRestriction | Route potentially uses a road that is forbidden\
            \ for the given vehicle profile | info |\n"
          example: noSchedule
          x-extensible-enum:
          - noSchedule
          - noIntermediate
          - unwantedMode
          - scheduledTimes
          - simplePolyline
          - violatedAvoidFerry
          - violatedAvoidRailFerry
          - seasonalClosure
          - currentWeightNegative
          - travelTimeExceedsDriverWorkHours
          - vehicleRestriction
        severity:
          $ref: '#/components/schemas/NoticeSeverity'
        details:
          type: array
          description: Additional details about the notice
          items:
            $ref: '#/components/schemas/TransitNoticeDetail'
      description: A notice contains important notifications.
    TransitStop:
      required:
      - departure
      type: object
      properties:
        departure:
          $ref: '#/components/schemas/TransitDeparture'
        duration:
          type: integer
          description: Stop duration. If not set the vehicle departs as soon as people
            are on board.
          example: 198
          default: 0
        transport:
          description: |
            Information about transit transport changes. If set, the vehicle changes its transit transport information,
            like name, color, headsign etc, on this stop.
          allOf:
          - $ref: '#/components/schemas/TransitTransport'
        offset:
          type: integer
          description: The position of the stop on the polyline.
        attributes:
          type: array
          description: |
            **NOTE:** As it is possible that new attributes are supported in the future, unknown attributes should be ignored.
          items:
            $ref: '#/components/schemas/TransitStopAttributes'
      description: A transit stop of the route
    VehicleNotice:
      required:
      - code
      type: object
      properties:
        title:
          type: string
          description: Human-readable notice description.
          example: Violated avoid toll road
        code:
          type: string
          description: "Extensible enum: `violatedAvoidControlledAccessHighway` `violatedAvoidTollRoad`\
            \ `violatedAvoidTunnel` `violatedAvoidDirtRoad` `violatedBlockedRoad`\
            \ `violatedStartDirection` `violatedCarpool` `violatedTurnRestriction`\
            \ `violatedVehicleRestriction` `violatedZoneRestriction` `violatedAvoidDifficultTurns`\
            \ `violatedAvoidUTurns` `violatedEmergencyGate` `violatedAvoidSeasonalClosure`\
            \ `violatedAvoidTollTransponder` `violatedAvoidTruckRoadType` `seasonalClosure`\
            \ `tollTransponder` `mlDurationUnavailable` `simplePolyline` `tollsDataUnavailable`\
            \ `tollsDataTemporarilyUnavailable` `chargingStopNotNeeded` `violatedChargingStationOpeningHours`\
            \ `violatedMinChargeAtDestination` `violatedMinChargeAtFirstChargingStation`\
            \ `violatedMinChargeAtChargingStation` `outOfCharge` `currentWeightNegative`\
            \ `currentWeightExceedsLimit` `travelTimeExceedsDriverWorkHours` `carpool`\
            \ `turnRestriction` `vehicleRestriction` `zoneRestriction` `avoidTollRoad`\
            \ `targetChargeNotAchievable` `violatedChargingStationTransportMode` `violatedChargingStationVehicleRestrictions`\
            \ `...`  \nCurrently known codes (non-exhaustive: this list could be extended\
            \ for new situations):\n\n| Code      | Description  | Severity |\n| ---------\
            \ | ------- | ------- |\n| violatedAvoidControlledAccessHighway | Route\
            \ did not manage to avoid user preference. | critical |\n| violatedAvoidTollRoad\
            \ | Route did not manage to avoid user preference. | critical |\n| violatedAvoidTunnel\
            \ | Route did not manage to avoid user preference. | critical |\n| violatedAvoidDirtRoad\
            \ | Route did not manage to avoid user preference. | critical |\n| violatedBlockedRoad\
            \ | Route uses roads that are blocked, due to traffic incidents, `avoid[areas]`,\
            \ or `avoid[segments]`. | critical |\n| violatedStartDirection | The starting\
            \ direction of the route differs from the value set in the `course` parameter\
            \ of the waypoint. | critical |\n| violatedCarpool | Route did not manage\
            \ to avoid user preference. | critical |\n| violatedTurnRestriction |\
            \ Route requires performing a time-restricted maneuver at a time when\
            \ it's prohibited. | critical |\n| violatedVehicleRestriction | Route\
            \ uses a road which is forbidden for the given vehicle profile. | critical\
            \ |\n| violatedZoneRestriction | Route uses a road in a user-specified\
            \ avoidance zone, such as the London Low Emission Zone. | critical |\n\
            | violatedAvoidDifficultTurns | Route did not manage to avoid user preference.|\
            \ critical |\n| violatedAvoidUTurns | Route did not manage to avoid user\
            \ preference. | critical |\n| violatedEmergencyGate | Route goes through\
            \ an emergency gate. | critical |\n| violatedAvoidSeasonalClosure | Route\
            \ did not manage to avoid a seasonal closure.| critical |\n| violatedAvoidTollTransponder\
            \ | Route did not manage to avoid a toll booth that requires a transponder.\
            \ | critical |\n| violatedAvoidTruckRoadType | Route did not manage to\
            \ avoid truck road type. | critical |\n| seasonalClosure | Route goes\
            \ through a seasonal closure. | info |\n| tollTransponder | Route goes\
            \ through a toll booth that requires a transponder. | info |\n| mlDurationUnavailable\
            \ | Machine learning duration was requested but is not available for this\
            \ section. | info |\n| simplePolyline | An accurate polyline is not available\
            \ for this section. The returned polyline has been generated from departure\
            \ and arrival places. | info |\n| tollsDataUnavailable | Tolls data was\
            \ requested but could not be calculated for this section. | info |\n|\
            \ tollsDataTemporarilyUnavailable | Tolls data was requested but is temporarily\
            \ unavailable. | info |\n| chargingStopNotNeeded | A charging stop was\
            \ planned at the destination of this section, but it is no longer needed\
            \ (getRoutesByHandle requests only). | info |\n| violatedChargingStationOpeningHours\
            \ | A charging stop was planned at the destination of this section, but\
            \ the `postActions` would not be completed within the opening hours. |\
            \ critical |\n| violatedMinChargeAtDestination | The `arrival.charge`\
            \ at the destination is lower than the `minChargeAtDestination`. | info\
            \ |\n| violatedMinChargeAtFirstChargingStation | The `arrival.charge`\
            \ on the first charging stop is lower than the `minChargeAtFirstChargingStation`.\
            \ | info |\n| violatedMinChargeAtChargingStation | The `arrival.charge`\
            \ on a charging station stop is lower than the `minChargeAtChargingStation`.\
            \ This can be on the first charging stop if `minChargeAtFirstChargingStation`\
            \ is not specified. | info |\n| outOfCharge | The charge of the EV drops\
            \ below 0 along the section. | info |\n| currentWeightNegative | `vehicle[currentWeight]`\
            \ is negative after applying `currentWeightChange` at a via waypoint.\
            \ | critical |\n| currentWeightExceedsLimit | `vehicle[currentWeight]`\
            \ exceeds limit for given `transportMode`. | critical |\n| travelTimeExceedsDriverWorkHours\
            \ | The route travelTime exceeds drive time sequence provided in `driver[schedule]`\
            \ parameter. | critical |\n| targetChargeNotAchievable | `ev[MaxChargingDuration]`\
            \ too short to achieve required charging level. | info |\n| violatedChargingStationTransportMode\
            \ | Provided `transportMode` is not permitted at the charging station\
            \ | critical |\n| violatedChargingStationVehicleRestrictions | One or\
            \ more vehicle attributes exceed the permitted vehicle limits of the charging\
            \ station | critical |\n\n\nThe codes listed below can appear as info\
            \ notices when the request contains `return=potentialTimeDependentViolations`.\n\
            The resulting info notices are not violations on the current route but\
            \ could be violations if the arrival time\nat these restrictions differs\
            \ from the calculated time.\nFor example, an info notice for a `vehicleRestriction`\
            \ could indicate that while your vehicle is not currently violating any\
            \ restriction.\nHowever, if the journey is delayed by an hour the vehicle\
            \ would not be allowed on part of the route because there is a time-dependent\
            \ restriction active at that time.\n\nCodes for potential time dependent\
            \ restriction violations are (non-exhaustive: can be extended for new\
            \ situations):\n\n| Code      | Description  | Severity |\n| ---------\
            \ | ------- | ------- |\n| carpool | Route potentially uses a carpool\
            \ only road when not allowed. | info |\n| turnRestriction | Route potentially\
            \ uses a time-restricted turn when not allowed. | info |\n| vehicleRestriction\
            \ | Route potentially uses a road that is forbidden for the given vehicle\
            \ profile. | info |\n| zoneRestriction | Route uses a road that is potentially\
            \ part of restricted routing zones. | info |\n| avoidTollRoad | Route\
            \ uses a road that potentially is a toll road. **Note:** This is not currently\
            \ supported and will not be returned, but the enum value is retained for\
            \ backwards-compatibility purposes. | info |\n"
          example: violatedAvoidTollRoad
          x-extensible-enum:
          - violatedAvoidControlledAccessHighway
          - violatedAvoidTollRoad
          - violatedAvoidTunnel
          - violatedAvoidDirtRoad
          - violatedBlockedRoad
          - violatedStartDirection
          - violatedCarpool
          - violatedTurnRestriction
          - violatedVehicleRestriction
          - violatedZoneRestriction
          - violatedAvoidDifficultTurns
          - violatedAvoidUTurns
          - violatedEmergencyGate
          - violatedAvoidSeasonalClosure
          - violatedAvoidTollTransponder
          - violatedAvoidTruckRoadType
          - seasonalClosure
          - tollTransponder
          - mlDurationUnavailable
          - simplePolyline
          - tollsDataUnavailable
          - tollsDataTemporarilyUnavailable
          - chargingStopNotNeeded
          - violatedChargingStationOpeningHours
          - violatedMinChargeAtDestination
          - violatedMinChargeAtFirstChargingStation
          - violatedMinChargeAtChargingStation
          - outOfCharge
          - currentWeightNegative
          - currentWeightExceedsLimit
          - travelTimeExceedsDriverWorkHours
          - carpool
          - turnRestriction
          - vehicleRestriction
          - zoneRestriction
          - avoidTollRoad
          - targetChargeNotAchievable
          - violatedChargingStationTransportMode
          - violatedChargingStationVehicleRestrictions
        severity:
          $ref: '#/components/schemas/NoticeSeverity'
        details:
          type: array
          description: Additional details about the notice
          items:
            $ref: '#/components/schemas/VehicleNoticeDetail'
      description: A notice contains important notifications.
      example:
        $ref: '#/components/examples/noticeWithRestrictionsExample'
    VehiclePlace:
      description: Place used in vehicle routing.
      discriminator:
        propertyName: type
        mapping:
          place: '#/components/schemas/Place'
          station: '#/components/schemas/StationPlace'
          accessPoint: '#/components/schemas/AccessPointPlace'
          parkingLot: '#/components/schemas/ParkingLotPlace'
          chargingStation: '#/components/schemas/ChargingStationPlace'
          dockingStation: '#/components/schemas/DockingStationPlace'
      oneOf:
      - $ref: '#/components/schemas/Place'
      - $ref: '#/components/schemas/StationPlace'
      - $ref: '#/components/schemas/AccessPointPlace'
      - $ref: '#/components/schemas/ParkingLotPlace'
      - $ref: '#/components/schemas/ChargingStationPlace'
      - $ref: '#/components/schemas/DockingStationPlace'
    AreasPost:
      maxItems: 250
      type: array
      description: |
        List of user-defined areas that routes should avoid/exclude going through.

        Notes:
        * Maximum count of avoided and excluded polygons and corridors is 20.
        * Maximum total count of avoided and excluded bounding boxes, polygons, corridors, including exceptions, is 250.
      example:
        areas:
        - type: polygon
          outer:
          - lat: 52.514414
            lng: 13.384685
          - lat: 52.514414
            lng: 13.393568
          - lat: 52.512403
            lng: 13.393568
          - lat: 52.512403
            lng: 13.384685
        - type: encodedPolygon
          outer: BG8mnlkD6-9wZAmrR19DAAlrR
        - type: boundingBox
          west: 1.1
          south: 2.2
          east: 3.3
          north: 4.4
          exceptions:
          - type: polygon
            outer:
            - lat: 52.514414
              lng: 13.384685
            - lat: 52.514414
              lng: 13.393568
            - lat: 52.512403
              lng: 13.393568
            - lat: 52.512403
              lng: 13.384685
          - type: encodedPolygon
            outer: BG8mnlkD6-9wZAmrR19DAAlrR
      items:
        $ref: '#/components/schemas/AreaPost'
    ArriveAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - arrive
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
      description: |
        An arrival maneuver to be performed at or during a specific portion of a section.
    ContinueAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - continue
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
        intersectionName:
          type: array
          description: "Name of the intersection where the turn takes place, if available."
          items:
            $ref: '#/components/schemas/LocalizedString'
      description: |
        A continue operation to be performed at or during a specific portion of a section.
    DepartAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - depart
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
      description: |
        A departure maneuver to be performed at or during a specific portion of a section.
    ExitAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - exit
          - roundaboutExit
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
        intersectionName:
          type: array
          description: "Name of the intersection where the turn takes place, if available."
          items:
            $ref: '#/components/schemas/LocalizedString'
        direction:
          description: |
            Note that the direction of a turn has a special meaning for "roundaboutEnter": It indicates the direction in which one drives around the roundabout (left for left-hand-side driving countries, right for right-hand-side ones).
          allOf:
          - $ref: '#/components/schemas/TurnActionDirection'
        severity:
          $ref: '#/components/schemas/TurnActionSeverity'
        turnAngle:
          $ref: '#/components/schemas/TurnAngle'
        exit:
          maximum: 12
          minimum: 1
          type: integer
          description: Which exit to take next.
          default: 1
        roundaboutAngle:
          $ref: '#/components/schemas/RoundaboutAngle'
      description: |
        An action to leave a highway or roundabout.

        * `exit`: exit maneuver, such as "Take the left exit to"
        * `roundaboutExit`: roundabout exit maneuver, such as "Take the third exit of the roundabout onto"
    PedestrianDeparture:
      required:
      - place
      type: object
      properties:
        time:
          description: "Expected time of departure of the event. Format is **RFC 3339**,\
            \ section 5.6 as defined by `date-time`."
          allOf:
          - $ref: '#/components/schemas/Time'
        place:
          $ref: '#/components/schemas/PedestrianPlace'
      description: Departure of pedestrian
    TollCost:
      required:
      - fares
      - tollSystem
      - tollSystemRef
      type: object
      properties:
        tollSystem:
          type: string
          description: |
            The name of the toll system collecting the toll.

            **NOTE** This property is deprecated. For a toll cost associated with multiple toll systems this parameter will
            return only one toll system name. Use `tollSystems` property to get all the systems.
          deprecated: true
        tollSystemRef:
          type: integer
          description: |
            Reference index of the affected toll system in the `tollSystems` array.

            **NOTE** This property is deprecated. For a toll cost associated with multiple systems this parameter will return only one system. Use `tollSystems` property to get all the systems.
          deprecated: true
        tollSystems:
          type: array
          description: |
            Reference indices of the associated toll system(s). These indices correspond to the `tollSystems` array in the enclosing section.

            A toll cost may be associated with multiple systems. For details, refer to this Developer Guide [tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-multiple-systems.html).
          items:
            type: integer
        countryCode:
          $ref: '#/components/schemas/CountryCode'
        tollCollectionLocations:
          type: array
          description: |
            The toll places represent the location(s) where the fare is collected. For tolls measured by distance, both the entry and exit toll locations are returned. It's important to note that while both entry and exit toll locations are provided, the payment is typically made at only one of these places, which is usually the exit toll location.
          items:
            $ref: '#/components/schemas/TollCollectionLocation'
        fares:
          type: array
          description: |
            The list of possible `Fare`s represents the various fares that may apply for the tolls. The specific fares can vary based on factors such as the time of day, payment method, and vehicle characteristics.

            **Note**: The router presents the relevant fare options based on the original query, on a best effort basis.
            The `Fare` object for tolls will always be of type `SinglePrice`, indicating a single price for the toll.
          items:
            $ref: '#/components/schemas/TollFare'
      description: |
        Information for a single toll payment.
    TurnAction:
      required:
      - action
      - duration
      type: object
      properties:
        action:
          type: string
          description: |
            The type of the action.

            **NOTE:** The list of possible actions may be extended in the future. The client application should handle such a case gracefully.
          enum:
          - turn
          - ramp
          - roundaboutPass
          - roundaboutEnter
          - uTurn
          - enterHighway
          - keep
          - continueHighway
        duration:
          description: "Estimated duration of this action (in seconds). Actions last\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Duration'
        instruction:
          type: string
          description: Description of the action (e.g. Turn left onto Minna St.).
        offset:
          type: integer
          description: Offset of a coordinate in the section's polyline.
        length:
          description: "Estimated length of this action (in meters). Actions extend\
            \ until the next action, or the end of the route in case of the last one."
          allOf:
          - $ref: '#/components/schemas/Distance'
        currentRoad:
          description: Attributes of the current road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        nextRoad:
          description: Attributes of the next road
          allOf:
          - $ref: '#/components/schemas/RoadInfo'
        exitSign:
          description: Attributes of the road exit
          allOf:
          - $ref: '#/components/schemas/ExitInfo'
        signpost:
          description: "Signpost information of the action, provided for turn by turn\
            \ actions only"
          allOf:
          - $ref: '#/components/schemas/SignpostInfo'
        intersectionName:
          type: array
          description: "Name of the intersection where the turn takes place, if available."
          items:
            $ref: '#/components/schemas/LocalizedString'
        direction:
          description: |
            Note that the direction of a turn has a special meaning for "roundaboutEnter": It indicates the direction in which one drives around the roundabout (left for left-hand-side driving countries, right for right-hand-side ones).
          allOf:
          - $ref: '#/components/schemas/TurnActionDirection'
        severity:
          $ref: '#/components/schemas/TurnActionSeverity'
        turnAngle:
          $ref: '#/components/schemas/TurnAngle'
      description: |
        An action in which a direction change is made.
        * `turn`: turn maneuver, such as "Make a sharp right turn at"
        * `ramp`: ramp maneuver, such as "Take the left ramp onto"
        * `roundaboutPass`: Going straight on a roundabout maneuver
        * `roundaboutEnter`: Arriving at a destination roundabout maneuver
        * `uTurn`: u-turn maneuver, such as "Make a right U-turn at"
        * `enterHighway`: a maneuver to enter a highway, used for turn-by-turn guidance only
        * `keep`: a maneuver following a fork, such as "Take the middle fork onto"
        * `continueHighway`: a maneuver to continue on a highway
    VehicleDeparture:
      required:
      - place
      type: object
      properties:
        time:
          description: "Expected time of departure of the event. Format is **RFC 3339**,\
            \ section 5.6 as defined by `date-time`."
          allOf:
          - $ref: '#/components/schemas/Time'
        place:
          $ref: '#/components/schemas/VehiclePlace'
        charge:
          type: number
          description: "Vehicle battery charge, specified in kilowatt-hours (kWh)."
      description: Describe a departure or arrival location and time.
    VehicleSummary:
      required:
      - duration
      - length
      type: object
      properties:
        duration:
          $ref: '#/components/schemas/Duration'
        length:
          $ref: '#/components/schemas/Distance'
        baseDuration:
          description: |
            The duration, specified in seconds, without taking time-aware information into account.

            Dynamic traffic information is not considered. The duration is calculated using average free-flow speeds based on historical traffic, without taking into account the current traffic conditions.

            The actual duration of the route section may be lower than `baseDuration` in some cases, e.g. if `trafficSpeed` is greater than `baseSpeed`.
          allOf:
          - $ref: '#/components/schemas/Duration'
        consumption:
          description: |
            The estimated net energy or fuel consumption along a span of the route is provided based on the `consumptionType` of the section. The value represents either net energy consumption or fuel consumption. Here are the units used for different vehicle types:
            * For electric vehicles (EVs): The energy consumption is measured in kilowatt-hours (kWh). This indicates the amount of energy consumed by the EV while traversing the specific span.
            * For fuel-based vehicles: Depending on the fuel type, the fuel consumption is measured in liters (for diesel, petrol vehicles, and vehicles using liquefied petroleum gas (LPG)), and in kilograms (for vehicles using compressed natural gas (CNG)).
          allOf:
          - $ref: '#/components/schemas/Consumption'
        typicalDuration:
          description: |
            The duration, specified in seconds, under typical traffic conditions.

            Dynamic traffic information is not considered. Instead, the duration is calculated using speeds that are typical for the given time of day/day of week, based on historical traffic data.
          allOf:
          - $ref: '#/components/schemas/Duration'
        mlDuration:
          description: |
            The duration, specified in seconds, based on the region-specific machine learning model.

            `mlDuration` is calculated for each route section of the route.
            If a section of the route is not supported, `mlDuration` will not be present in the summary of that section. Instead, a notice with the reason will be provided.
            `mlDuration` is only calculated for the entire section. The sum of span durations is not equivalent to `mlDuration`.
            **Limitations:**
              * Only valid for `transportMode=car` or `transportMode=taxi`.
              * Only valid for `traffic[mode]=default`.
              * Invalid for `departureTime=any`.
              * Invalid when `arrivalTime` is specified.
          allOf:
          - $ref: '#/components/schemas/Duration'
        tolls:
          description: |
            The summary of tolls to be paid for this section of the route, grouped according to the criteria specified in the `tolls` parameter.
            This element is included in the response if at least one grouping criteria was requested.
          allOf:
          - $ref: '#/components/schemas/TollSummary'
        co2Emission:
          description: |
            Estimation of the carbon dioxide emission for the given route section. Unit is kilograms with precision to three decimal places.

            Definitions:

            * Total Emission (Well-to-Wheel) = Production Emission (Well-to-Tank) + Operational Emission (Tank-to-Wheel)
            * CO2 Equivalent Emission (CO2e for CH4, N2O, etc.) = Gas Emission * Global Warming Potential (GWP)

            **Notes:**

            * This value represents the operational (tank-to-wheel) carbon dioxide emission.
            * This value represents only the carbon dioxide emission and does not represent the carbon dioxide equivalent emission for other gases or particulates.
            * This value is calculated based on `fuel[type]`, the `consumption` for the given route section and the `fuel emission factor` provided in this document. The calculation does not adhere to any other standards (e.g. ISO 14083, etc.).
            * `co2Emission` is only returned for `fuel` based vehicle.

            Emission factors for different fuel types:

            * `diesel`: Diesel. Emission is 2.697 kg of CO2 from each combusted liter of fuel.
            * `petrol`: Petrol/gasoline. Emission is 2.319 kg of CO2 from each combusted liter of fuel.
            * `lpg`: LPG. Emission is 1.5 kg of CO2 from each combusted liter of fuel.
            * `cng`: CNG. Emission is 2.529 kg of CO2 from each combusted kilogram of fuel.
            * `lng`: LNG. Emission is 1.189 kg of CO2 from each combusted liter of fuel.
            * `ethanol`: Ethanol (100%). Emission is 1.519 kg of CO2 from each combusted liter of fuel.
            * `propane`: Propane. Emission is 1.511 kg of CO2 from each combusted liter of fuel.
            * `hydrogen`: Hydrogen (emission for production is not considered). Emission is 0 kg of CO2 from each combusted liter of fuel.

            Source for Emission Factors:
            * [Table(2) Mobile Combustion (CO2) - Emission Factors for Greenhouse Gas Inventories (2024): EPA GHG Emission Factors Hub](https://www.epa.gov/climateleadership/ghg-emission-factors-hub)
            * Some data may be from a previous year if data is not available for 2024.
          allOf:
          - $ref: '#/components/schemas/CO2Emission'
      description: Total value of key attributes for a route section.
    VehicleTravelSummary:
      required:
      - duration
      - length
      type: object
      properties:
        duration:
          $ref: '#/components/schemas/Duration'
        length:
          $ref: '#/components/schemas/Distance'
        baseDuration:
          description: |
            The duration, specified in seconds, without taking time-aware information into account.

            Dynamic traffic information is not considered. The duration is calculated using average free-flow speeds based on historical traffic, without taking into account the current traffic conditions.

            The actual duration of the route section may be lower than `baseDuration` in some cases, e.g. if `trafficSpeed` is greater than `baseSpeed`.
          allOf:
          - $ref: '#/components/schemas/Duration'
        consumption:
          description: |
            The estimated net energy or fuel consumption for the travel only. It is based on the `consumptionType` of the section. The value represents either net energy consumption or fuel consumption. Here are the units used for different vehicle types:
            * For electric vehicles (EVs): The energy consumption is measured in kilowatt-hours (kWh) and does not include any charging at stations.
            * For fuel-based vehicles: Depending on the fuel type, the fuel consumption is measured in liters (for diesel, petrol vehicles, and vehicles using liquefied petroleum gas (LPG)), and in kilograms (for vehicles using compressed natural gas (CNG)).
          allOf:
          - $ref: '#/components/schemas/Consumption'
        typicalDuration:
          description: |
            The duration, specified in seconds, under typical traffic conditions.

            Dynamic traffic information is not considered. Instead, the duration is calculated using speeds that are typical for the given time of day/day of week, based on historical traffic data.
          allOf:
          - $ref: '#/components/schemas/Duration'
        mlDuration:
          description: |
            The duration, specified in seconds, based on the region-specific machine learning model.

            `mlDuration` is calculated for each route section of the route.
            If a section of the route is not supported, `mlDuration` will not be present in the summary of that section. Instead, a notice with the reason will be provided.
            `mlDuration` is only calculated for the entire section. The sum of span durations is not equivalent to `mlDuration`.
            **Limitations:**
              * Only valid for `transportMode=car` or `transportMode=taxi`.
              * Only valid for `traffic[mode]=default`.
              * Invalid for `departureTime=any`.
              * Invalid when `arrivalTime` is specified.
          allOf:
          - $ref: '#/components/schemas/Duration'
        tolls:
          description: |
            The summary of tolls to be paid for this section of the route, grouped according to the criteria specified in the `tolls` parameter.
            This element is included in the response if at least one grouping criteria was requested.
          allOf:
          - $ref: '#/components/schemas/TollSummary'
        co2Emission:
          description: |
            Estimation of the carbon dioxide emission for the given route section. Unit is kilograms with precision to three decimal places.

            Definitions:

            * Total Emission (Well-to-Wheel) = Production Emission (Well-to-Tank) + Operational Emission (Tank-to-Wheel)
            * CO2 Equivalent Emission (CO2e for CH4, N2O, etc.) = Gas Emission * Global Warming Potential (GWP)

            **Notes:**

            * This value represents the operational (tank-to-wheel) carbon dioxide emission.
            * This value represents only the carbon dioxide emission and does not represent the carbon dioxide equivalent emission for other gases or particulates.
            * This value is calculated based on `fuel[type]`, the `consumption` for the given route section and the `fuel emission factor` provided in this document. The calculation does not adhere to any other standards (e.g. ISO 14083, etc.).
            * `co2Emission` is only returned for `fuel` based vehicle.

            Emission factors for different fuel types:

            * `diesel`: Diesel. Emission is 2.697 kg of CO2 from each combusted liter of fuel.
            * `petrol`: Petrol/gasoline. Emission is 2.319 kg of CO2 from each combusted liter of fuel.
            * `lpg`: LPG. Emission is 1.5 kg of CO2 from each combusted liter of fuel.
            * `cng`: CNG. Emission is 2.529 kg of CO2 from each combusted kilogram of fuel.
            * `lng`: LNG. Emission is 1.189 kg of CO2 from each combusted liter of fuel.
            * `ethanol`: Ethanol (100%). Emission is 1.519 kg of CO2 from each combusted liter of fuel.
            * `propane`: Propane. Emission is 1.511 kg of CO2 from each combusted liter of fuel.
            * `hydrogen`: Hydrogen (emission for production is not considered). Emission is 0 kg of CO2 from each combusted liter of fuel.

            Source for Emission Factors:
            * [Table(2) Mobile Combustion (CO2) - Emission Factors for Greenhouse Gas Inventories (2024): EPA GHG Emission Factors Hub](https://www.epa.gov/climateleadership/ghg-emission-factors-hub)
            * Some data may be from a previous year if data is not available for 2024.
          allOf:
          - $ref: '#/components/schemas/CO2Emission'
      description: Total value of key attributes for a route section.
    AvoidPost:
      type: object
      properties:
        segments:
          type: array
          description: |
            An array of segment identifiers that routes will avoid going through.

            Each entry has the following structure:
            `{segmentId}(#{direction})?`

            The individual parts are:
            * segmentId: The identifier of the referenced topology segment inside the catalog, example: `here:cm:segment:207551710`
            * direction (optional): Either '*' for bidirectional (default), '+' for positive direction, or '-' for negative direction

            Example of a parameter value excluding two segments:
            `["here:cm:segment:207551710#+", "here:cm:segment:76771992#*"]`

            **Note**: Maximum number of penalized segments in one request should not be greater than 1000.
                      "Penalized segments" refers to segments that have a restriction on maximum baseSpeed with `maxSpeedOnSegment`
                      or avoided with `avoid[segments]`
          items:
            type: string
        areas:
          $ref: '#/components/schemas/AreasPost'
      description: |
        Avoid routes that violate certain features of road network or that go through
        user-specified geographical bounding boxes.

        For the general description of the functionality please refer to the `avoid` parameter of the
        query string.

        Passing parameters in the POST body is suggested when the length of the parameters exceeds the
        limitation of the GET request.
    ExcludePost:
      type: object
      properties:
        areas:
          $ref: '#/components/schemas/AreasPost'
      description: |
        User-specified properties that need to be strictly excluded during route calculation.

        For the general description of the functionality please refer to the `exclude` parameter of the
        query string.

        Passing parameters in the POST body is suggested when the length of the parameters exceeds the
        limitation of the GET request.
    PedestrianAction:
      description: Action attached to a pedestrian section.
      discriminator:
        propertyName: action
        mapping:
          depart: '#/components/schemas/DepartAction'
          arrive: '#/components/schemas/ArriveAction'
          continue: '#/components/schemas/ContinueAction'
          ramp: '#/components/schemas/TurnAction'
          exit: '#/components/schemas/ExitAction'
          roundaboutPass: '#/components/schemas/TurnAction'
          roundaboutEnter: '#/components/schemas/TurnAction'
          roundaboutExit: '#/components/schemas/TurnAction'
          uTurn: '#/components/schemas/TurnAction'
          turn: '#/components/schemas/TurnAction'
          keep: '#/components/schemas/TurnAction'
      oneOf:
      - $ref: '#/components/schemas/DepartAction'
      - $ref: '#/components/schemas/ArriveAction'
      - $ref: '#/components/schemas/ContinueAction'
      - $ref: '#/components/schemas/ExitAction'
      - $ref: '#/components/schemas/TurnAction'
    TransitAction:
      description: Action attached to a transit section.
      discriminator:
        propertyName: action
        mapping:
          depart: '#/components/schemas/DepartAction'
          arrive: '#/components/schemas/ArriveAction'
          continue: '#/components/schemas/ContinueAction'
      oneOf:
      - $ref: '#/components/schemas/DepartAction'
      - $ref: '#/components/schemas/ArriveAction'
      - $ref: '#/components/schemas/ContinueAction'
    VehicleAction:
      description: Action attached to a vehicle section.
      discriminator:
        propertyName: action
        mapping:
          depart: '#/components/schemas/DepartAction'
          arrive: '#/components/schemas/ArriveAction'
          continue: '#/components/schemas/ContinueAction'
          ramp: '#/components/schemas/TurnAction'
          exit: '#/components/schemas/ExitAction'
          roundaboutPass: '#/components/schemas/TurnAction'
          roundaboutEnter: '#/components/schemas/TurnAction'
          roundaboutExit: '#/components/schemas/TurnAction'
          uTurn: '#/components/schemas/TurnAction'
          turn: '#/components/schemas/TurnAction'
          keep: '#/components/schemas/TurnAction'
          enterHighway: '#/components/schemas/TurnAction'
          continueHighway: '#/components/schemas/TurnAction'
      oneOf:
      - $ref: '#/components/schemas/DepartAction'
      - $ref: '#/components/schemas/ArriveAction'
      - $ref: '#/components/schemas/ContinueAction'
      - $ref: '#/components/schemas/ExitAction'
      - $ref: '#/components/schemas/TurnAction'
    CalculateRoutesPostParameters:
      type: object
      properties:
        avoid:
          $ref: '#/components/schemas/AvoidPost'
        exclude:
          $ref: '#/components/schemas/ExcludePost'
        ev:
          $ref: '#/components/schemas/EVPost'
        maxSpeedOnSegment:
          $ref: '#/components/schemas/MaxSpeedOnSegmentPost'
      description: Parameters of the POST body for route calculation
    GetRoutesByHandlePostParameters:
      type: object
      properties:
        avoid:
          $ref: '#/components/schemas/AvoidPost'
        exclude:
          $ref: '#/components/schemas/ExcludePost'
        maxSpeedOnSegment:
          $ref: '#/components/schemas/MaxSpeedOnSegmentPost'
      description: Parameters of the POST body for get route by handle
    PedestrianSection:
      required:
      - arrival
      - departure
      - id
      - transport
      - type
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the section
        type:
          type: string
          description: Section type used by the client to identify what extension
            to the BaseSection are available.
          enum:
          - pedestrian
        preActions:
          type: array
          description: Actions that must be done prior to `departure`.
          items:
            $ref: '#/components/schemas/BaseAction'
        actions:
          type: array
          description: |
            Actions to be performed at or during a specific portion of a section.

            Action offsets are the coordinate index in the polyline.

            *NOTE:* currentRoad and nextRoad are not populated for actions.
          items:
            $ref: '#/components/schemas/PedestrianAction'
        language:
          type: string
          description: "Language of the localized strings in the section, if any,\
            \ in BCP47 format."
        postActions:
          type: array
          description: Actions that must be done after `arrival`.
          items:
            $ref: '#/components/schemas/PedestrianPostAction'
        turnByTurnActions:
          type: array
          description: "Actions for turn by turn guidance during the travel portion\
            \ of the section, i.e., between `departure` and `arrival`."
          items:
            $ref: '#/components/schemas/OffsetAction'
        departure:
          $ref: '#/components/schemas/PedestrianDeparture'
        arrival:
          $ref: '#/components/schemas/PedestrianDeparture'
        passthrough:
          type: array
          description: |
            List of via waypoints this section is passing through.

            Each via waypoint of the request that is a `passThrough=true` waypoint, appears as a
            `Passthrough` in the response. It appears in the section that starts with the closest
            non-passthrough via specified before it or origin.

            The passthrough vias appear in this list in the order they are traversed. They are
            traversed in the order they are specified in the request.
          items:
            $ref: '#/components/schemas/Passthrough'
        summary:
          description: |
            Total value of key attributes (e.g. duration, length) summed up for the entire section, including `preActions`, `postActions`,
            and the travel portion of the section.
          allOf:
          - $ref: '#/components/schemas/PedestrianSummary'
        travelSummary:
          description: |
            Total value of key attributes (e.g., duration, length) summed up for just the travel portion of the section,
            between `departure` and `arrival`. `preActions` and `postActions` are excluded.
          allOf:
          - $ref: '#/components/schemas/BaseSummary'
        polyline:
          $ref: '#/components/schemas/Polyline'
        notices:
          type: array
          description: |
            Contains a list of issues related to this section of the route.
          items:
            $ref: '#/components/schemas/PedestrianNotice'
        transport:
          $ref: '#/components/schemas/PedestrianTransport'
        spans:
          type: array
          description: |
            Spans attached to a `Section` describing pedestrian content.
          items:
            $ref: '#/components/schemas/PedestrianSpan'
        refReplacements:
          $ref: '#/components/schemas/RefReplacements'
      description: Represent a section of a route
    TransitSection:
      required:
      - arrival
      - departure
      - id
      - type
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the section
        type:
          type: string
          description: Section type used by the client to identify what extension
            to the BaseSection are available.
          enum:
          - transit
        preActions:
          type: array
          description: Actions that must be done prior to `departure`.
          items:
            $ref: '#/components/schemas/TransitPreAction'
        actions:
          type: array
          description: |
            Actions that must be done during the travel portion of the section.

            Action offsets represent the coordinate index in the polyline.

            *NOTE:* currentRoad and nextRoad are not populated for actions.
          items:
            $ref: '#/components/schemas/TransitAction'
        language:
          type: string
          description: "Language of the localized strings in the section, if any,\
            \ in BCP47 format."
        postActions:
          type: array
          description: Actions that must be done after `arrival`.
          items:
            $ref: '#/components/schemas/TransitPostAction'
        turnByTurnActions:
          type: array
          description: "Actions for turn by turn guidance during the travel portion\
            \ of the section, i.e., between `departure` and `arrival`."
          items:
            $ref: '#/components/schemas/DepartAction'
        departure:
          $ref: '#/components/schemas/TransitDeparture'
        arrival:
          $ref: '#/components/schemas/TransitDeparture'
        passthrough:
          type: array
          description: |
            List of via waypoints this section is passing through.

            Each via waypoint of the request that is a `passThrough=true` waypoint, appears as a
            `Passthrough` in the response. It appears in the section that starts with the closest
            non-passthrough via specified before it or origin.

            The passthrough vias appear in this list in the order they are traversed. They are
            traversed in the order they are specified in the request.
          items:
            $ref: '#/components/schemas/Passthrough'
        summary:
          description: |
            Total value of key attributes (e.g., duration, length) summed up for the entire section, including `preActions`, `postActions`,
            and the travel portion of the section.
          allOf:
          - $ref: '#/components/schemas/BaseSummary'
        travelSummary:
          description: |
            Total value of key attributes (e.g., duration, length) summed up for just the travel portion of the section,
            between `departure` and `arrival`. `preActions` and `postActions` are excluded.
          allOf:
          - $ref: '#/components/schemas/BaseSummary'
        polyline:
          $ref: '#/components/schemas/Polyline'
        notices:
          type: array
          description: |
            Contains a list of issues related to this section of the route.
          items:
            $ref: '#/components/schemas/TransitNotice'
        bookingLinks:
          type: array
          description: Links to external ticket booking services
          items:
            $ref: '#/components/schemas/WebLinkWithDeviceType'
        transport:
          $ref: '#/components/schemas/TransitTransport'
        intermediateStops:
          type: array
          description: |
            Intermediate stops between departure and destination of the transit line. It can be missing if this information is not available or not requested.
          items:
            $ref: '#/components/schemas/TransitStop'
        agency:
          $ref: '#/components/schemas/Agency'
        attributions:
          type: array
          description: List of required attributions to display.
          items:
            $ref: '#/components/schemas/Attribution'
        fares:
          type: array
          description: |
            "List of tickets to pay for this section of the route"

            **NOTE**: Fares information support will be available soon.
          items:
            $ref: '#/components/schemas/Fare'
        booking:
          description: |
            **NOTE:** Attribute booking is deprecated. Please, use bookingLinks instead of it.
          deprecated: true
          allOf:
          - $ref: '#/components/schemas/WebLink'
        spans:
          type: array
          description: |
            Span attached to a `Section` describing transit content.
          items:
            $ref: '#/components/schemas/TransitSpan'
        refReplacements:
          $ref: '#/components/schemas/RefReplacements'
        incidents:
          type: array
          description: A list of all incidents that apply to the section.
          items:
            $ref: '#/components/schemas/TransitIncident'
      description: "A section of the route. It contains departure, arrival, and route\
        \ information."
    VehicleSection:
      required:
      - arrival
      - departure
      - id
      - transport
      - type
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the section
        type:
          type: string
          description: Section type used by the client to identify what extension
            to the BaseSection are available.
          enum:
          - vehicle
        preActions:
          type: array
          description: Actions that must be done prior to `departure`.
          items:
            $ref: '#/components/schemas/BaseAction'
        actions:
          type: array
          description: |
            Actions to be performed at or during a specific portion of a section.

            Action offsets represent the coordinate index in the polyline.

            *NOTE:* The following attributes are valid for turnByTurnActions only and are not populated for actions
              * currentRoad
              * nextRoad
              * exitSign
              * signPost
              * intersectionName
              * turnAngle
          items:
            $ref: '#/components/schemas/VehicleAction'
        language:
          type: string
          description: "Language of the localized strings in the section, if any,\
            \ in BCP47 format."
        postActions:
          type: array
          description: Actions that must be done after `arrival`.
          items:
            $ref: '#/components/schemas/VehiclePostAction'
        turnByTurnActions:
          type: array
          description: |
            Turn-by-turn guidance actions.

            Action offsets represent the coordinate index in the polyline.
          items:
            $ref: '#/components/schemas/VehicleAction'
        departure:
          $ref: '#/components/schemas/VehicleDeparture'
        arrival:
          $ref: '#/components/schemas/VehicleDeparture'
        passthrough:
          type: array
          description: |
            List of via waypoints this section is passing through.

            Each via waypoint of the request that is a `passThrough=true` waypoint, appears as a
            `Passthrough` in the response. It appears in the section that starts with the closest
            non-passthrough via specified before it or origin.

            The passthrough vias appear in this list in the order they are traversed. They are
            traversed in the order they are specified in the request.
          items:
            $ref: '#/components/schemas/Passthrough'
        summary:
          description: |
            The total value of key attributes, such as duration, length, and consumption, summed up for the entire section, including `preActions`, `postActions`, and the travel portion of the section.
          allOf:
          - $ref: '#/components/schemas/VehicleSummary'
        travelSummary:
          description: |
            The total value of key attributes, such as duration, length, and consumption, summed up only for the travel portion of the section,
            between `departure` and `arrival`. `preActions` and `postActions` are excluded.
          allOf:
          - $ref: '#/components/schemas/VehicleTravelSummary'
        polyline:
          $ref: '#/components/schemas/Polyline'
        notices:
          type: array
          description: |
            Contains a list of issues related to this section of the route.

            Notices must be carefully evaluated and, if deemed necessary, the route section should be discarded accordingly.
            In particular, the user should be aware that new notice codes may be added at any time. If an unrecognized
            notice code appears with a `critical` severity level, the route section must be discarded.
            Please refer to the `code` attribute for possible values.
          items:
            $ref: '#/components/schemas/VehicleNotice'
        spans:
          type: array
          description: |
            Spans attached to a `Section` describing vehicle content.
          items:
            $ref: '#/components/schemas/VehicleSpan'
        routingZones:
          type: array
          description: |
            A list of routing zones that are applicable to the section.

            Elements of this list will be referenced by indexes within the `span` attribute of the section.
          items:
            $ref: '#/components/schemas/RoutingZone'
        truckRoadTypes:
          type: array
          description: |
            A list of truck road types that are applicable to the section.

            Elements of this list will be referenced by indexes within the `span` attribute of the section.

            A truck road type is an identifier associated with roads that have additional regulations applied by local administration for
            traversal by heavy vehicles like trucks. For example, the BK Bearing Class regulations in Sweden, and ET categories in Mexico.
            The identifiers of supported truck road types are specified at HERE Map Content
            [TruckRoadType](https://www.here.com/docs/bundle/map-content-schema-data-specification/page/topics_schema/truckroadtypeattribute.html).

            These names should be provided when avoiding a certain truck road type.
          items:
            type: string
        incidents:
          type: array
          description: A list of all incidents that apply to the section.
          items:
            $ref: '#/components/schemas/TrafficIncident'
        refReplacements:
          $ref: '#/components/schemas/RefReplacements'
        tollSystems:
          type: array
          description: |
            An array of toll authorities that collect payments for the use of (part of) the specified section of the route.
          items:
            $ref: '#/components/schemas/TollSystem'
        tolls:
          type: array
          description: |
            Detail of tolls to be paid for traversing the specified section.
          items:
            $ref: '#/components/schemas/TollCost'
        consumptionType:
          description: Vehicle energy or fuel consumption type.
          allOf:
          - $ref: '#/components/schemas/ConsumptionType'
        noThroughRestrictions:
          type: array
          description: |
            A list of all rules that restrict movement through the area without there being an
            origin, destination, or `via` waypoint inside of it. Only restrictions applicable
            to the vehicle for which the route was requested are returned.
          items:
            $ref: '#/components/schemas/VehicleRestriction'
        transport:
          $ref: '#/components/schemas/VehicleTransport'
      description: Represent a section of a route
    RouterSection:
      description: |
        One of the possible sections that can be part of the Router route.

        `TransitSection` is only used for ferries and car shuttles.
      discriminator:
        propertyName: type
        mapping:
          vehicle: '#/components/schemas/VehicleSection'
          pedestrian: '#/components/schemas/PedestrianSection'
          transit: '#/components/schemas/TransitSection'
      oneOf:
      - $ref: '#/components/schemas/VehicleSection'
      - $ref: '#/components/schemas/PedestrianSection'
      - $ref: '#/components/schemas/TransitSection'
    RouterRoute:
      required:
      - id
      - sections
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the route
        notices:
          type: array
          description: Contains a list of issues encountered during the processing
            of this response.
          items:
            $ref: '#/components/schemas/Notice'
        sections:
          type: array
          description: |
            An ordered list of vehicle, transit, and pedestrian sections making up the route.
          items:
            $ref: '#/components/schemas/RouterSection'
        routeLabels:
          maxItems: 2
          minItems: 0
          type: array
          description: |
            Contains a list of the most important names and route numbers on this route that differentiate it from other alternatives.
            These names are used to make labels for the main and alternative routes, like "route1 via A4,D10", "route2 via D11,5"
            The generated list is expected to be unique for each route in response (but it's not guaranteed)
          items:
            $ref: '#/components/schemas/RouteLabel'
        routeHandle:
          type: string
          description: |
            Opaque handle of the calculated route.

            A handle encodes the calculated route. The route can be decoded from a handle at a
            later point in time as long as the service uses the same map data which was used
            during encoding.

            To request a handle set the `routeHandle` flag in `return` parameter. If a handle is
            requested, but fails to be calculated for any reason, then the `routeHandle` property is
            not available in the response. The rest of the route is intact.
      description: |
        A basic route. Includes personal vehicles as car, truck, etc... For all modes, cf. `transportMode`.
    RouterRouteResponse:
      required:
      - routes
      type: object
      properties:
        notices:
          type: array
          description: |
            Contains a list of issues related to this route calculation.
            Please refer to the `code` attribute for possible values.
          items:
            $ref: '#/components/schemas/RouteResponseNotice'
        routes:
          type: array
          description: List of possible routes
          items:
            $ref: '#/components/schemas/RouterRoute'
      description: Returns a list of routes.
    MaxSpeedOnSegmentPost_inner:
      type: object
      properties:
        segment:
          type: string
          description: |
            Identifier of the segment with restrictions on maximum `baseSpeed`.

            Each entry has the following structure:
            `{segmentId}(#{direction})?`
        speed:
          maximum: 70.0
          minimum: 1
          type: number
          description: |
            Maximum `baseSpeed` on segment in m/s.
  responses:
    "401ErrorResponseWithRequestID":
      description: API response in case of unauthorized access.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AuthErrorResponseSchema'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/401errorResponseExample'
    "500ErrorResponseWithRequestID":
      description: API response in case of internal server error.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/500errorResponseExample'
    "502ErrorResponseWithRequestID":
      description: API response in case of bad gateway.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/502errorResponseExample'
    "503ErrorResponseWithRequestID":
      description: API response in case of service unavailable.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/503errorResponseExample'
    "504ErrorResponseWithRequestID":
      description: API response in case of gateway timeout.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/504errorResponseExample'
    HealthResponseFailWithRequestID:
      description: API response in case of failure.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HealthResponseFailSchema'
        text/plain:
          schema:
            type: string
    HealthResponseOkWithRequestID:
      description: API response in case of success.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HealthResponseOKSchema'
    InternalServerErrorRoutesResponse:
      description: Internal server error
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RoutingErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/500RoutingErrorResponseExample'
    InvalidRoutesRequestResponse:
      description: |
        Failure to parse the request, caused by, for example, invalid parameter values such as
        `transportMode=spaceShuttle` or `alternatives=999`.

        Note that route calculation errors aren't considered failures. Cf. `RouterRouteResponse`
        for details on route calculation errors.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RoutingErrorResponse'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/400RoutingErrorResponseExample'
    OpenApiResponseOk:
      description: API specification in OpenAPI 3 format
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/x-yaml:
          schema:
            type: string
        text/x-yaml:
          schema:
            type: string
    RoutesResponseOk:
      description: Routes API response in case of success
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RouterRouteResponse'
          examples:
            routeResponseExample:
              $ref: '#/components/examples/routeResponseExample'
            evRouteResponseExample:
              $ref: '#/components/examples/evRouteResponseExample'
    Routing403ErrorResponse:
      description: |
        Not allowed, such as trying to calculate routes in Japan without having necessary
        permissions.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Routing403ErrorResponseSchema'
          examples:
            errorResponseExample:
              $ref: '#/components/examples/403RoutingErrorResponseExample'
    VersionResponseOkWithRequestID:
      description: API response in case of success.
      headers:
        X-Correlation-Id:
          $ref: '#/components/headers/X-Correlation-Id'
        X-Request-Id:
          $ref: '#/components/headers/X-Request-Id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/VersionResponse'
          examples:
            versionResponseOkExample:
              $ref: '#/components/examples/VersionResponseOkExample'
  parameters:
    allow:
      name: allow
      in: query
      description: Explicitly allow features that require users to opt in.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Allow'
    alternatives:
      name: alternatives
      in: query
      description: Number of alternative routes to return aside from the optimal route.
      required: false
      style: form
      explode: true
      schema:
        maximum: 6
        minimum: 0
        type: integer
        default: 0
    arrivalTime:
      name: arrivalTime
      in: query
      description: |
        Specifies the time of arrival as defined by either `date-time` or `full-date` `T` `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).
        The requested time is converted to the local time at destination. When the optional timezone offset is
        not specified, time is assumed to be local.
        All `Time` values in the response are returned in the timezone of each location.

        Note : The following features do not support the arrivalTime parameter:
        * EV Routing
        * Route Handle
        * Route Import
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Time'
    avoid:
      name: avoid
      in: query
      description: |
        Avoid roads that violate certain features of road network or that go through
        user-specified areas, segments, or zones.

        Note that if the origin, destination, or any via is in an avoided area or on an avoided
        feature, a route is produced that violates the avoid restriction. In such a case, the
        route is trying to minimize the violation of the avoid restrictions and can therefore
        include large deviations from a route that is calculated without these avoid
        restrictions.

        It is also possible that the produced route violates the avoid restriction in between
        waypoints, if no other route is possible or too hard to find. One such example is
        requesting a route to an island that is only reachable with ferries while specifying
        `avoid[features]=ferry`.

        When using avoid features, it's not guaranteed to get alternatives. Further, they can even
        cause the route calculation to fail, if no route is possible or too hard to find.
      required: false
      style: deepObject
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Avoid'
      examples:
        features:
          summary: Avoid specific features like `tunnel' or `ferry`
          value:
            features: "tunnel,ferry"
        area:
          summary: Avoid a specific geographical bounding box
          value:
            areas: "bbox:13.082,52.416,13.628,52.626"
        areas:
          summary: Avoid multiple geographical bounding boxes using `|` as element
            separator
          value:
            areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
        complete:
          summary: Avoid both features and geographical bounding boxes
          value:
            features: "tollRoad,tunnel&avoid[areas]=bbox:13.082,52.416,13.628,52.626"
        segment:
          summary: Avoid a segment using its identifier
          value:
            segments: here:cm:segment:207551710
        segmentsWithDirection:
          summary: "Avoid two segments using their identifiers, also specifying the\
            \ direction"
          value:
            segments: "here:cm:segment:207551710#+,here:cm:segment:76771992#*"
        zones:
          summary: Avoid multiple environmental zones using identifiers
          value:
            zoneIdentifiers: "here:cm:envzone:2,here:cm:envzone:3"
        zoneCategory:
          summary: Avoid all environmental zones
          value:
            zoneCategories: environmental
        zoneCategoryWithException:
          summary: Avoid all environmental zones except a specific one
          value:
            zoneCategories: environmental;exceptZoneIds=here:cm:envzone:2
        truckRoadTypes:
          summary: Avoid the specified truck road types
          value:
            truckRoadTypes: "BK1,BK2,BK3,BK4"
        tollTransponders:
          summary: Avoid all toll transponders
          value:
            tollTransponders: all
    billingTag:
      name: billingTag
      in: query
      description: |
        A list of up to six billing tags, separated by the `+` sign.

        This parameter provides a way to track your platform usage.
        For details, refer to the Cost Management Developer Guide section on [Billing Tags](https://www.here.com/docs/bundle/cost-management-developer-guide/page/topics/tutorial-billing-tags.html)
      required: false
      style: form
      explode: true
      schema:
        pattern: "^(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])(\\+(?![_-])[A-Za-z0-9_-]{4,16}(?<![_-])){0,5}$"
        type: string
        example: ABCD+EFGH
    consumptionModel:
      name: consumptionModel
      in: query
      description: |
        Specifies which of the EV consumption models is being used. See the `ev` parameter for details on the models.

        * `empirical`
        * `physical`

        **Alpha**: Physical consumption model is in development. It may not be stable and is subject to change.
      required: false
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/ConsumptionModel'
    currency:
      name: currency
      in: query
      description: |
        Currency code compliant to ISO 4217.
        Costs for the calculated route will be returned using this currency.

        If not provided, the router will specify it.
        On a best-effort basis, the router will try to specify the costs in the local currency.
      required: false
      style: form
      explode: true
      schema:
        type: string
    customizations:
      name: customizations
      in: query
      description: |
        Specifies a list of customizations to be used. The data provided by these customizations either
        replaces or augments the standard HERE map data. The provided credentials must authorize access
        to all of the customizations specified.

        **Alpha**: This API is in development. It may not be stable and is subject to change.
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/CustomizationHRN'
    departureTimeWithAny:
      name: departureTime
      in: query
      description: |
        Specifies the time of departure as defined by either `date-time` or `full-date` `T`
        `partial-time` in `RFC 3339`, section 5.6 (for example, `2019-06-24T01:23:45`).

        The requested time is converted to local time at origin. When the optional timezone offset
        is not specified, time is assumed to be local. The special value `any` can be used to
        indicate that time should not be taken into account during routing. If neither
        `departureTime` or `arrivalTime` are specified, current time at departure place will be
        used. All time values in the response are returned in the timezone of each location.

        **Note**: Only long-term traffic incidents will be used if `departureTime=any` and
        `traffic[mode]=default` or no `traffic[mode]` are specified.
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/TimeWithAny'
    destination:
      name: destination
      in: query
      description: |
        A location defining the destination of the trip.

        For a description of the format and options for this parameter, please refer to the description of
        the `origin` parameter.

        `destination` supports the same options as the `origin` parameter, with the following exceptions:

        ## Additional waypoint options:

        * `stopDuration`: desired duration for the stop, in seconds. The section arriving at this
          via waypoint will have a `wait` post action reflecting the stopping time. The
          subsequent section will start at the arrival time of the former section + stop
          duration.
      required: true
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Waypoint'
      examples:
        coordinate:
          summary: A simple WGS84 coordinate
          value: "51.611571,11.351608"
        side:
          summary: Populating sideOfStreetHint in addition to location to avoid ending
            on the wrong side of the street
          value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
        course:
          summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
            of a moving vehicle
          value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
        name:
          summary: Setting nameHint to avoid matching to the wrong location
          value: "52.510319,13.285616;nameHint=Kaiserdamm"
        duration:
          summary: Addition a stopDuration for an intermediate stop
          value: "51.611571,11.351608!stopDuration=600"
        displayLocation:
          summary: This coordinate is the location of the POI as shown by the pin
            on a map.
          value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
    driver:
      name: driver
      in: query
      description: |
        Driver parameters to be used for calculating routes with automatically added
        rest stops.
      required: false
      style: deepObject
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Driver'
    ev:
      name: ev
      in: query
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

        The following properties are additionally required for the router to automatically enhance the route with charging stops
        * `makeReachable` set to `true`
        * `chargingCurve`
        * `connectorTypes`
        * `maxChargeAfterChargingStation`
      required: false
      style: deepObject
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/EV'
      examples:
        physicalModelExample:
          summary: Typical physical model values.
          value:
            driveEfficiency: 0.8
            recuperationEfficiency: 0.7
    evRouteHandle:
      name: ev
      in: query
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.
      required: false
      style: deepObject
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/EVRouteHandle'
    evRouteImport:
      name: ev
      in: query
      description: |
        EV properties to be used for calculating consumption.

        There are two consumption models (`empirical`, `physical`). Set the `consumptionModel` parameter to choose which model to use.

        Required `empirical` model properties:
        * `freeFlowSpeedTable`

        Required `physical` model properties:
        * `driveEfficiency`
        * `recuperationEfficiency`

        When using the physical model, certain properties of the `vehicle` parameter are also required (see documentation for the `vehicle` parameter for more details):
        * `rollingResistanceCoefficient`
        * `airDragCoefficient`
        * `currentWeight`
        * `frontalArea` or combination of `width` and `height`

        The following `ev` properties are additionally required in order to calculate State-of-Charge along the route:
        * `initialCharge`
        * `maxCharge`

        Route reachability based on State-of-Charge will be evaluated for the following constraints, if additionally provided,
        * `minChargeAtDestination`
        * `minChargeAtFirstChargingStation`
        * `minChargeAtChargingStation`

        The following properties are additionally required in order to calculate charging at charging station waypoints (see documentation for `via` parameter)
        * `chargingCurve`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * EV parameters are not supported in combination with pedestrian and bicycle `transportMode`.

        **Note**: Route import does not support adding charging stations, therefore the following related parameters are ignored:
        * chargingCurve
        * maxChargingVoltage
        * maxChargingCurrent
        * maxChargeAfterChargingStation
        * minChargeAtChargingStation
        * minChargeAtFirstChargingStation
        * chargingSetupDuration
        * connectorTypes
      required: false
      style: deepObject
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/EVConsumption'
    exclude:
      name: exclude
      in: query
      description: |
        Defines properties which will be strictly excluded from route calculation.

        Note - Exclude options guarantees exclusion, but doesn't guarantee
        finding a route.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Exclude'
      examples:
        country:
          summary: Exclude the country of Switzerland from the route calculation
          value:
            countries: CHE
        countries:
          summary: Exclude both the country of Switzerland and the country of Austria
            from the route calculation
          value:
            countries: "CHE,AUT"
        state:
          summary: Exclude DC state of USA from the route calculation
          value:
            states: USA:DC
        states:
          summary: Exclude both states DC and TX of USA from the route calculation
          value:
            states: "USA:DC,TX"
        states_multicountry:
          summary: "Exclude both states DC, TX of USA and AL state of Canada from\
            \ the route calculation"
          value:
            states: "USA:DC,TX|CAN:AL"
        area:
          summary: Exclude a specific geographical bounding box
          value:
            areas: "bbox:13.082,52.416,13.628,52.626"
        areas:
          summary: Exclude multiple geographical bounding boxes using `|` as element
            separator
          value:
            areas: "bbox:13.3127778,52.5106221,13.3495852,52.5255681|bbox:13.3958343,52.5171209,13.4286456,52.5405511"
    fuel:
      name: fuel
      in: query
      description: |
        **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**

        Fuel parameters to be used for calculating consumption and related CO2 emission.

        The following attributes are required for calculating consumption:
          * `type`
          * `freeFlowSpeedTable`

        **Notes**:
        * Hybrid vehicles (EV + Other fuel types) are not supported. Consumption properties are not supported for combination of `ev` and `fuel` vehicles.
        * Fuel parameters are not supported in combination with pedestrian and bicycle `transportMode`.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Fuel'
    lang:
      name: lang
      in: query
      description: |
        Specifies the list of preferred languages of the response.
        The first supported language from the list will be used for for the response if available.
        The next languages are used as fallbacks if the first one is not available.
        Additionally, some more fallback logic is applied if no language is available, like generalizing the requested language code.
        The value should comply with the [IETF BCP 47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
        A list of supported languages for the routing service, as well as more information on the language fallback logic, can be found in the [Developer Guide](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/concepts/languages.html).

        Note: If the first language in the list is not supported exactly, an info notification will be generated with code `mainLanguageNotFound`.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          type: string
        default:
        - en-US
      example: "zh-tw,en-gb,en-us"
    maxSpeedOnSegment:
      name: maxSpeedOnSegment
      in: query
      description: |
        Specify new base speed for segment by value. Affects route selection and the ETA. Cannot increase base speed on segment.
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/MaxSpeedOnSegment'
      examples:
        speed:
          summary: Setting new base speed on segment
          value:
            speed: here:cm:segment:76771992#*;speed=42
    origin:
      name: origin
      in: query
      description: |
        A location defining the origin of the trip.

        ## Format

        Format: `Place[WaypointOptions]`

        * Place: `{lat},{lng}[PlaceOptions]`
        * PlaceOptions: `;option1=<value1>;option2=<value2>...`
        * WaypointOptions: `!option1=<value1>!option2=<value2>...`

        A waypoint consists of:

        * Exactly one place
        * Optional settings for the place
        * Optional settings for the waypoint itself

        ## Supported place options

        * `course`: int, degrees clock-wise from north. Indicating desired direction at the place.
          E.g. `90` indicating `east`. Often combined with `radius` and/or `minCourseDistance`
        * `sideOfStreetHint`: `{lat},{lng}`. Indicating the side of the street that should be
          used. E.g. if the location is to the left of the street, the router will prefer using
          that side in case the street has dividers. E.g.
          `52.511496,13.304140;sideOfStreetHint=52.512149,13.304076` indicates that the `north`
          side of the street should be preferred. This option is required, if `matchSideOfStreet`
          is set to `always`.
          Option cannot be combined with `radius`, `radiusPenalty` or `snapRadius`.
        * `displayLocation`: `{lat},{lng}`. Indicates the location on the map where this POI is to be displayed. This attribute is passed through to the `displayLocation` attribute in the corresponding `Place` object in the output.
        * `uTurnPermission`: enum `[allow, avoid]`. Specifies the U-Turn Permission mode at the stop-over waypoint. If unspecified, the permission will be determined by the global setting, avoid[features]=uTurns. This feature is not supported for pass-through waypoints and U-Turns are generally avoided in that case.
          + `allow` : Allow making a U-Turn at this stop-over waypoint
          + `avoid` : Avoid making a U-Turn at this stop-over waypoint
        * `matchSideOfStreet`: enum `[always, onlyIfDivided]`. Specifies how the location set by
          `sideOfStreetHint` should be handled. Requires `sideOfStreetHint` to be specified as
          well.
          + `always` : Always prefer the given side of street.
          + `onlyIfDivided`: Only prefer using side of street set by `sideOfStreetHint` in case
            the street has dividers. This is the default behavior.
        * `nameHint`: string. Causes the router to look for the place with the most similar name.
          The typical examples include: `North` being used to differentiate between
          interstates `I66 North` and `I66 South`, `Downtown Avenue` being used to correctly
          select a residental street.

          Empty string values are ignored.
        * `radius`: int, meters. Asks the router to consider all places within the given radius as
          potential candidates for route calculation. This can be either because it is not
          important which place is used, or because it is unknown. Radiuses wider than 200 meters are
          not supported.
          Option cannot be combined with `snapRadius`.
        * `radiusPenalty`: int, percentage 0-10000. Penalty as percentage: Used in conjunction with the `radius`
          parameter. Router will match the waypoint within the specified radius and apply a penalty to candidates
          based on their air distance to the waypoint. This penalty is proportional to the given percentage,
          where 100 is just the cost of the air distance, and 200 is twice the cost of the air distance. The penalty
          must be chosen so that, when multiplied by the radius, the result is less than or equal to 7200.
          Regardless, only values up to and including 10000 will be accepted. This means that a maximum penalty
          of 3600% is allowed for a radius of 200m, 7200% for 100m and 10000% for 72m and less.
          Higher values will result in an error response. `radiusPenalty` cannot be combined with `snapRadius`.
          **Alpha**: This parameter is in development. It may not be stable and is subject to change.
        * `snapRadius`: int, meters. Instructs the router to match the waypoint, within the specified radius,
          to the most "significant" road. In contrast to the regular `radius` parameter, `snapRadius` sorts potential
          candidates in order of "significance". For example, a highway is more significant on a zoomed-out map than
          a national road, a national road is more significant than a city road, etc. Hence, `snapRadius` cannot be
          combined with `radius` or `radiusPenalty` parameters. The typical use case for `snapRadius` is when selecting a waypoint on a
          zoomed-out view of a map on a drag-and-drop interface. The expectation on such UIs is that only roads that
          are visible at that zoom level are considered for matching and a large snapRadius would enable that.
        * `minCourseDistance`: int, meters. Instructs the routing service to try to find a route that avoids actions for the indicated distance.
          For example, if the origin is determined by a moving vehicle, the user might not have time to react to early actions.
          Values greater than 2000 meters will be capped at 2000 meters.
        * `customizationIndex`: int. Specifies the zero-based index into the list of customizations
          specified in the `customizations` parameter. The customization at that index must be an
          Extension Map.
          Providing a `customizationIndex` indicates the this waypoint is located within that
          Extension Map.
          **Alpha**: This customization API parameter is in development. It may not be stable and is subject to change.
        * `segmentIdHint`: string. Causes the router to try and match to the specified segment.
          Waypoint coordinates need to be on the segment, otherwise waypoint will be matched ignoring the segment hint
          This parameter can be used when the waypoint is too close to more than one segment to force matching to a specific one.
        * `onRoadThreshold`: int, meters. allows specifying a distance within which
          the waypoint could be considered as being on a highway/bridge/tunnel/sliproad.
          Within this threshold, the attributes of the segments do not impact the matching.
          Outside the threshold only segments which aren't one of highway/bridge/tunnel/sliproad can be matched.

        ## Notes

        * `origin` currently does not support any WaypointOptions. They are available for `via` and `destination` waypoints.
        * Non-structural reserved characters in options' values need to be properly percent-encoded.
          Please refer to the Developer Guide for more details.
      required: true
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Waypoint'
      examples:
        coordinate:
          summary: A simple WGS84 coordinate
          value: "51.611571,11.351608"
        side:
          summary: Populating sideOfStreetHint in addition to location to avoid ending
            on the wrong side of the street
          value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
        course:
          summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
            of a moving vehicle
          value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
        name:
          summary: Setting nameHint to avoid matching to the wrong location
          value: "52.510319,13.285616;nameHint=Kaiserdamm"
        displayLocation:
          summary: This coordinate is the location of the POI as shown by the pin
            on a map.
          value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
    pedestrianSpeed:
      name: "pedestrian[speed]"
      in: query
      description: |
        Walking speed in meters per second. Influences the duration of walking segments along the route.
      required: false
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/PedestrianSpeed'
    rerouting:
      name: rerouting
      in: query
      description: |
        Rerouting parameters allow to request a new route calculation based on the route handle.

        All attributes are optional.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Rerouting'
    return:
      name: return
      in: query
      description: |
        Defines which attributes are included in the response as part of data representation of a
        `Route` or `Section`.

        * `polyline` - Polyline for the route in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) Encoding.
           Either a 2D polyline (without `elevation` specified), or a 3D polyline with the 3rd dimension type `Elevation` (with `elevation` specified), using the WGS84 coordinate system.
        * `actions` - Actions (such as maneuvers or tasks) that must be taken to complete the section.
        * `instructions` - Include instructions in returned actions. Instructions are localized to the requested language.
        * `summary` - Include summary for the section.
        * `travelSummary` - Include summary for the travel portion of the section.
        * `turnByTurnActions` - Include all information necessary to support turn by turn guidance to complete the section.
        * `mlDuration` - Use a region-specific machine learning model to calculate route duration.
           **Disclaimer: This parameter is currently in beta release, and is therefore subject to breaking changes.**
        * `typicalDuration` - Include route duration under typical traffic conditions.
        * `elevation` - Include WGS84 elevation information in coordinate and geometry types. See e.g. `polyline` or `location`.
        * `routeHandle` - Encode calculated route and return a handle which can be used with
          `routes/{routeHandle}` to decode the route at a later point in time.
        * `passthrough` - Include information on passthrough via waypoints in the section.
        * `incidents` - Include a list of all incidents applicable to each section.
           Returned incidents may be referenced by `incidents` and/or `intersectionIncidents` span parameters.
           Incidents are localized to the requested language.
        * `routingZones` - Include information about routing zones each section goes through.
        * `truckRoadTypes` - Include information about road types each section goes through.
        * `tolls` - Include information about the tolls to be paid, per section, according to the `tolls` parameter and other toll-influencing
          parameters such as vehicle dimensions in the query,
          e.g `transportMode`, `vehicle[hovOccupancy]`, vehicle[height]. Check the Developer Guide for tutorials on the topic.
          If tolls cannot be calculated for a section, it will contain the `tollsDataUnavailable` notice code.

          **Note**:
            - Toll requests support `car` dimensions such as atypical car height and weight, trailers, axle count and vehicle fuel type. However extreme parameter combinations may result in tolls being returned for a different vehicle type (for example, a car with 6 axles will most likely result in truck tolls).
            Therefore the request will return the most "typical" toll cost for the parameters provided.
            - Tolls are not available in route import service. See [this tutorial](https://www.here.com/docs/bundle/routing-api-developer-guide-v8/page/tutorials/tolls-routeimport.html) for information on how to request tolls when using route import.
        * `routeLabels` - Include a list of the most important names and route numbers on this route that differentiate it from other alternatives
        * `potentialTimeDependentViolations` - Include info notices for potential time-dependent violations in the sections that match the current vehicle profile, but are not violating the restricted times for the calculated route.
        * `noThroughRestrictions` - Include information about the parts of the route that are not allowed to be driven through, i.e. route can only start, end, or have an intermediate `via` waypoint here.

        The following restrictions apply when specifying the `return` parameter:

        * If `actions` is requested, then `polyline` must also be requested as well.
        * If `instructions` is requested, then `actions` must also be requested as well.
        * If `turnByTurnActions` is requested, then `polyline` must also be requested as well.
        * If at least one attribute is requested within the `spans` parameter, then `polyline` must be request as well
      required: false
      style: form
      explode: false
      schema:
        uniqueItems: true
        type: array
        items:
          $ref: '#/components/schemas/Return'
    routeHandle:
      name: routeHandle
      in: path
      description: |
        Route handle returned from a previous route calculation.

        See `return` parameter of `/routes` endpoint for more information.
      required: true
      style: simple
      explode: false
      schema:
        type: string
    routeHandleOrigin:
      name: origin
      in: query
      description: |
        A location defining the origin of the trip. The origin has to be located along the
        previously calculated route.

        For a description of the format and options for this parameter, please refer to the description of
        the `origin` parameter in `Calculate routes via GET`.

        This parameter supports the same options as the `origin` parameter in `Calculate routes via GET`,
        with the following exceptions:

        ## Notes

        * `minCourseDistance`: While this parameter can be provided for compatibility reasons,
          it will not affect the result of a getRoutesByHandle request.
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        $ref: '#/components/schemas/Waypoint'
      examples:
        coordinate:
          summary: A simple WGS84 coordinate
          value: "51.611571,11.351608"
        side:
          summary: Populating sideOfStreetHint in addition to location to avoid ending
            on the wrong side of the street
          value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
        course:
          summary: Setting course/radius an uncertain GPS coordinate of a moving vehicle
          value: "51.611571,11.351608;course=170;radius=20"
        name:
          summary: Setting nameHint to avoid matching to the wrong location
          value: "52.510319,13.285616;nameHint=Kaiserdamm"
        displayLocation:
          summary: This coordinate is the location of the POI as shown by the pin
            on a map.
          value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
    routingMode:
      name: routingMode
      in: query
      description: |
        Specifies which optimization is applied during the calculation.

        * `fast`: Route calculation from start to destination optimized by travel time. In many
          cases, the route returned by `fast` mode may not be the route with the fastest
          possible travel time. For example, the routing service may favor a route that remains on
          a highway, even if a faster travel time can be achieved by taking a detour or shortcut
          through an inconvenient side road.
        * `short`: Route calculation from start to destination disregarding any speed information.
          In this mode, the distance of the route is minimized, while keeping the route sensible.
          This includes, for example, penalizing turns. Because of that, the resulting route will
          not necessarily be the one with minimal distance.

        Notes:
        * The following Transport modes only support `fast` routingMode
          - `bicycle`
          - `bus`
          - `pedestrian`
          - `privateBus`
          - `scooter`
          - `taxi`
      required: false
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/RoutingMode'
    scooter:
      name: scooter
      in: query
      description: |
        Scooter-specific parameters.
          * `allowHighway`: Specifies whether the scooter is allowed on highways or not. This parameter is optional.
            If not provided, the default is to avoid highways.
            There is a similar parameter avoid[features]=controlledAccessHighway to disallow highway usage.
            avoid[features] takes precedence, so if that parameter is also used, scooters are not allowed
            to use highways even if `allowHighway` is set to `true`.
            The following values are possible:
              * `true`: The scooter is allowed to use highways.
              * `false`: The scooter is not allowed to use highways.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Scooter'
    spans:
      name: spans
      in: query
      description: |
        Defines which map content attributes are included in the response spans. For example, `attributes,length` will enable the fields `attributes` and `length` in the route response.
        For more information about the `countryCode` field, see the [ISO standard](https://www.iso.org/obp/ui/#search).

        This parameter also requires that the `polyline` option is set within the `return` parameter.

        **NOTE:** Attribute speedLimit is deprecated, use maxSpeed instead. Attribute segmentId is deprecated, use segmentRef instead.
      required: false
      style: form
      explode: false
      schema:
        uniqueItems: true
        type: array
        items:
          $ref: '#/components/schemas/Spans'
    taxi:
      name: taxi
      in: query
      description: |
        Taxi-specific parameters.
          * `allowDriveThroughTaxiRoads`: Specifies if a vehicle is allowed to drive through
            taxi-only roads and lanes. Even if this option is set to `false`, the vehicle is still
            allowed on taxi-only roads at the start of the route and at the destination.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Taxi'
    tolls:
      name: tolls
      in: query
      description: |
        Defines properties which control toll calculation and reporting in the response.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Tolls'
    traffic:
      name: traffic
      in: query
      description: Traffic specific parameters.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Traffic'
    transportMode:
      name: transportMode
      in: query
      description: |
        Mode of transport to be used for the calculation of the route.

        Note:
        `bicycle`, `bus` and `privateBus` modes are currently provided as Beta, with limited functionality.
        Please refer to the Developer Guide for more details.
      required: true
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/RouterMode'
    truck:
      name: truck
      in: query
      description: |
        Truck-specific parameters.

        **NOTE:** The attribute `truck` is deprecated and should be replaced with `vehicle`.
      required: false
      deprecated: true
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Truck'
    units:
      name: units
      in: query
      description: |
        Units of measurement used in guidance instructions. The default is `metric`.
      required: false
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/Units'
    vehicle:
      name: vehicle
      in: query
      description: |
        Vehicle-specific parameters.
      required: false
      style: deepObject
      explode: true
      schema:
        $ref: '#/components/schemas/Vehicle'
    via:
      name: via
      in: query
      description: |
        A location defining a via waypoint.

        A via waypoint is a location between origin and destination. There are two types of via waypoints:
        * `passThrough=false` (default) : The route will stop at the via waypoint, creating a new route section.
        * `passThrough=true` : The route will pass through the via waypoint.

        Multiple waypoints can be specified by using multiple via parameters like
        `via=...&via=...`, in which case the route will traverse these waypoints sequentially in
        the order specified in the request.

        For a description of the format and options for this parameter, please refer to the description of
        the `origin` parameter.
        `via` supports the same options as the `origin` parameter, with the following exceptions:

        ## Additional waypoint options:
        * `stopDuration`: desired duration for the stop, in seconds.
        * `passThrough`: boolean. Default value is `false`.
           Setting to `true` asks the router to avoid the following during route calculation:
          + Introducing a stop at the waypoint.
          + Splitting the route into sections.
          + Changing the direction of travel.

          The following scenarios are not supported for `passThrough` parameter:
          + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.

        * `charging`: Structured string denoting a user-planned charging stop.

          Format: `charging=(power=<value>;current=<value>;voltage=<value>;supplyType=<value>;minDuration=<value>;maxDuration=<value>)`.

          The properties `power`, `current`, `voltage` and `supplyType` denote the characteristics of the chosen compatible connector at the station. These are all required.
          `minDuration` and `maxDuration` set the time bounds for the charging time. At least one of them is required. For most use cases we recommend to provide at least `minDuration`.
          The following are the specifications for the properties:
          + `power`:        value in kW, type: number. Rated power of the connector.
          + `voltage`:      value in V, type: number. Rated voltage of the connector.
          + `current`:      value in A, type: number. Rated current of the connector.
          + `supplyType`:   one of {"acSingle", "acThree", "dc"} for 1-phase AC, 3-phase AC and DC respectively, type: string.
          + `minDuration`:  value in seconds, type: int. Minimum time the user expects to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.
          + `maxDuration`:  value in seconds, type: int. Maximum time the user plans to charge at the station, including `chargingSetupDuration`. This value takes precedence over the global `maxChargingDuration`.

          For a user-planned charging stop, the following properties of the `ev` parameter are also required (see documentation for the `ev` parameter):
          * `initialCharge`
          * `maxCharge`
          * `chargingCurve`

          *Notes*:
            * This option is not supported for pass-through waypoints.
            * If `makeReachable=true` and `minDuration` is not provided (or if `minDuration=0`), route calculation may suggest not to charge on this station, for example,
              if a better station is available in the vicinity.
            * If `stopDuration` is provided then the total time at the stop is the higher of (`stopDuration`, `chargingSetupDuration` + `chargingDuration`).
            * If charging for `minDuration` would charge above `maxCharge`, the time spent charging is capped by `maxCharge`.
            * If `stopDuration` or `minDuration` exceed `chargingSetupDuration` + `chargingDuration`, the `waiting` post action duration is set to the remaining time.
            * If `makeReachable=true` is not set, the target charge is `maxChargeAfterChargingStation`, unless the charging time would be outside of the specified duration range.
              In such case, the nearest valid value is used.
            * In getRoutesByHandle requests, the target charge from the original route response is used, unless the charging time would be outside of the specified duration range.
              In such case, the nearest valid value is used.

        * `currentWeightChange`: Changes the value of `vehicle[currentWeight]` by this value. Enables the support of scenarios where the vehicle takes additional cargo or unloads its cargo along the route. Changes to the configuration of the vehicle, such as adding a trailer, aren't supported.
        Relative value in kilograms, beginning with either `+` or `-`. Available range: from -40000 to +40000 (inclusive).

           If this parameter is specified on any of the via waypoints or the request has the `vehicle[currentWeight]` set, the response contains the `currentWeight` value used for each section.

           When this parameter is provided, both `vehicle[currentWeight]` and `vehicle[grossWeight]` must also be provided.

           If the `currentWeight` value falls below 0 due to `currentWeightChange`, the system returns a critical violation notice, but a route is still calculated. The system returns notices only for negative values. Very low positive values are likely invalid, but don't trigger notices since they are greater than 0.

           The `currentWeightChange` value is stored in the `RouteHandle` at each waypoint and can't be changed in `RouteHandle` calculation requests.
      required: false
      style: form
      explode: true
      allowReserved: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/Waypoint'
      examples:
        coordinate:
          summary: A simple WGS84 coordinate
          value: "51.611571,11.351608"
        side:
          summary: Populating sideOfStreetHint in addition to location to avoid ending
            on the wrong side of the street
          value: "52.531052,13.384872;sideOfStreetHint=52.530941,13.384939;matchSideOfStreet=always"
        course:
          summary: Setting course/radius/minCourseDistance an uncertain GPS coordinate
            of a moving vehicle
          value: "51.611571,11.351608;course=170;radius=20;minCourseDistance=500"
        name:
          summary: Setting nameHint to avoid matching to the wrong location
          value: "52.510319,13.285616;nameHint=Kaiserdamm"
        duration:
          summary: Addition a stopDuration for an intermediate stop
          value: "51.611571,11.351608!stopDuration=600"
        pass-through:
          summary: Setting pass-through parameter to avoid possibly making a u-turn
            for a stop
          value: "51.611571,11.351608!passThrough=true"
        displayLocation:
          summary: This coordinate is the location of the POI as shown by the pin
            on a map.
          value: "52.52697,13.42500;displayLocation=52.51885,13.46237"
        currentWeightChange:
          summary: Adding a weight of 500 kg to the vehicle for the remainder of the
            route.
          value: "52.531052,13.384872!currentWeightChange=+500"
        charging:
          summary: Waypoint with a 100 kW charging station; charging at this station
            for at least 20 minutes.
          value: "51.611571,11.351608!charging=(power=100;current=250;voltage=400;supplyType=dc;minDuration=1200)"
    xRequestId:
      name: X-Request-ID
      in: header
      description: User-provided token that can be used to trace a request or a group
        of requests sent to the service.
      required: false
      style: simple
      explode: false
      schema:
        type: string
  examples:
    "400RoutingErrorResponseExample":
      value:
        title: Malformed request
        status: 400
        code: E605001
        cause: missing field `destination`
        action: ""
        correlationId: 4199533b-6290-41db-8d79-edf4f4019a74
    "401errorResponseExample":
      value:
        error: Unauthorized
        error_description: No credentials found
    "403RoutingErrorResponseExample":
      value:
        title: Not allowed
        status: 403
        code: E605101
        cause: Your credentials are not allowed to calculate routes in Japan
        action: Obtain credentials that allow you to calculate routes in Japan
        correlationId: 4199533b-6290-41db-8d79-edf4f4019a74
    "500RoutingErrorResponseExample":
      value:
        title: Internal server error
        status: 500
        code: E605500
        cause: ""
        action: ""
        correlationId: 4199533b-6290-41db-8d79-edf4f4019a74
    "500errorResponseExample":
      value:
        title: "failed with reason: internal server error"
        status: 500
        code: E600103
        cause: Internal Server Error
        action: ""
        correlationId: ""
    "502errorResponseExample":
      value:
        title: "failed with reason: bad gateway"
        status: 502
        code: E600002
        cause: Bad Gateway
        action: ""
        correlationId: ""
    "503errorResponseExample":
      value:
        title: "failed with reason: service unavailable"
        status: 503
        code: E600001
        cause: Service Unavailable
        action: ""
        correlationId: ""
    "504errorResponseExample":
      value:
        title: "failed with reason: gateway timeout"
        status: 504
        code: E600000
        cause: Gateway Timeout
        action: ""
        correlationId: ""
    ReroutingExample:
      value:
        mode: returnToRoute
        lastTraveledSectionIndex: 0
        traveledDistanceOnLastSection: 142
    VersionResponseOkExample:
      value:
      - apiVersion: 8.18.0
      - serviceVersion: 2022-12-15-b706cc8c-9057409
      - dataVersions:
        - name: traffic-feed
          version: 2023-01-31T14:41:36+00:00
        - name: hrn:here:data::olp-here:rib-2
          version: "4898"
        - name: hrn:here:data::olp-here:here-map-content-japan-2
          version: "65"
        - name: optimized-map-for-routing
          version: 2022.346.5.48
    calculateRoutesPostAvoidExample:
      value:
        avoid:
          segments:
          - here:cm:segment:85925921
          - here:cm:segment:79445268
          areas:
          - type: polygon
            outer:
            - lat: 52.514414
              lng: 13.384685
            - lat: 52.514414
              lng: 13.393568
            - lat: 52.512403
              lng: 13.393568
            - lat: 52.512403
              lng: 13.384685
          - type: encodedPolygon
            outer: BG8mnlkD6-9wZAmrR19DAAlrR
          - type: boundingBox
            west: 1.1
            south: 2.2
            east: 3.3
            north: 4.4
            exceptions:
            - type: polygon
              outer:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
            - type: encodedPolygon
              outer: BG8mnlkD6-9wZAmrR19DAAlrR
            - type: polygon
              outer:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
          - type: encodedPolygon
            outer: BG8mnlkD6-9wZAmrR19DAAlrR
            exceptions:
            - type: corridor
              polyline:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
              radius: 10
            - type: encodedCorridor
              polyline: BG8mnlkD6-9wZAmrR19DAAlrR
              radius: 15
    calculateRoutesPostEvExample:
      value:
        ev:
          preferredBrands:
          - 6e1a148e8ddf06f613599134197b7c1c
          - 6211c90a063d36429b599dda79ae85e3
    calculateRoutesPostExcludeExample:
      value:
        exclude:
          areas:
          - type: polygon
            outer:
            - lat: 52.514414
              lng: 13.384685
            - lat: 52.514414
              lng: 13.393568
            - lat: 52.512403
              lng: 13.393568
            - lat: 52.512403
              lng: 13.384685
          - type: corridor
            polyline:
            - lat: 52.514414
              lng: 13.384685
            - lat: 52.514414
              lng: 13.393568
            - lat: 52.512403
              lng: 13.393568
            - lat: 52.512403
              lng: 13.384685
            radius: 30
          - type: encodedPolygon
            outer: BG8mnlkD6-9wZAmrR19DAAlrR
          - type: boundingBox
            west: 1.1
            south: 2.2
            east: 3.3
            north: 4.4
            exceptions:
            - type: polygon
              outer:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
            - type: encodedPolygon
              outer: BG8mnlkD6-9wZAmrR19DAAlrR
            - type: polygon
              outer:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
          - type: encodedPolygon
            outer: BG8mnlkD6-9wZAmrR19DAAlrR
            exceptions:
            - type: corridor
              polyline:
              - lat: 52.514414
                lng: 13.384685
              - lat: 52.514414
                lng: 13.393568
              - lat: 52.512403
                lng: 13.393568
              - lat: 52.512403
                lng: 13.384685
              radius: 10
            - type: encodedCorridor
              polyline: BG8mnlkD6-9wZAmrR19DAAlrR
              radius: 15
    calculateRoutesPostMaxSpeedOnSegmentExample:
      value:
        maxSpeedOnSegment:
        - segment: here:cm:segment:207551710#+
          speed: 10
        - segment: here:cm:segment:76771992
          speed: 1
    evRouteResponseExample:
      value:
        routes:
        - id: a4ba8e3d-1c48-4850-a5c9-bc9d89e88e4f
          sections:
          - id: a40f342e-c60c-4236-8294-449d75bf070d
            type: vehicle
            postActions:
            - action: chargingSetup
              duration: 300
            - action: charging
              duration: 105
              consumablePower: 150
              arrivalCharge: 5.4335
              targetCharge: 9.365
            departure:
              time: 2023-09-27T14:38:19+02:00
              place:
                type: place
                location:
                  lat: 52.5271737
                  lng: 13.3865749
                  elv: 75
                originalLocation:
                  lat: 52.527211
                  lng: 13.3865009
                displayLocation:
                  lat: 52.5271737
                  lng: 13.3865749
              charge: 7
            arrival:
              time: 2023-09-27T14:44:44+02:00
              place:
                type: chargingStation
                location:
                  lat: 52.5364614
                  lng: 13.4065972
                  elv: 93
                displayLocation:
                  lat: 52.5364614
                  lng: 13.4065972
                id: 276u33dc5fquu-aGVyZS1ldjplY29tb3ZlbWVudDo5MjMzMTE2Mjg
                name: Allego DEALLEGO003423
                attributes:
                  power: 150
                  current: 400
                  voltage: 375
                  supplyType: dc
                  connectorType: iec62196Type2Combo
                brand:
                  hrn: 33f356bd26936af938cc8846bedc95f0
                  name: Allego
                chargePointOperator:
                  id: 1f0a8b4e-cca5-11ed-a5c2-42010aa40002
                  name: Allego
                matchingEMobilityServiceProviders:
                - id: 1f098f1e-cca5-11ed-b774-42010aa40002
                  name: Last Mile Solutions
                - id: 1f39ad02-cca5-11ed-9d1a-42010aa40002
                  name: Shell Recharge
                - id: 1f351b84-cca5-11ed-8155-42010aa40002
                  name: Plugsurfing
              charge: 5.4335
            transport:
              mode: car
    noticeWithRestrictionsExample:
      description: |
        Example of a notice indicating violation of a restriction that applies to vehicles
        over 12 tons and having between 2 and 4 axles (inclusive).
      value:
        title: Violated vehicle restriction.
        code: violatedVehicleRestriction
        severity: critical
        details:
        - cause: Route violates vehicle restriction
          type: restriction
          maxGrossWeight: 12000
          axleCount:
            from: 2
            to: 4
    restrictionExample:
      description: |
        Example modeling the following set of conditions that apply to one section of a road:
        * 12t weight
        * 3m height
        * forbidden transportation of gas
      value:
        type: restriction
        maxGrossWeight: 12000
        maxHeight: 300
        forbiddenHazardousGoods:
        - gas
    routeResponseExample:
      value:
        routes:
        - id: 1793a897-0843-4957-ab63-c61e0f13aff2
          sections:
          - id: c3e300ab-a880-4fab-9bb2-702355b2bf6b
            type: vehicle
            actions:
            - action: depart
              duration: 126
              instruction: Head toward Chausseestraße on Invalidenstraße. Go for 1.2
                km.
              offset: 0
            - action: arrive
              duration: 0
              instruction: Arrive at Invalidenstraße.
              offset: 78
            departure:
              time: 2019-12-05T15:15:56+01:00
              place:
                type: place
                location:
                  lat: 52.53100287169218
                  lng: 13.38464098982513
            arrival:
              time: 2019-12-05T15:18:02+01:00
              place:
                type: place
                location:
                  lat: 52.52639072947204
                  lng: 13.368653766810894
            summary:
              duration: 126
              length: 1200
              currentWeight: 2530
            polyline: BG2znmkDi89wZ9ChKAA1IvfAArH5cAArHvbAA1CrJAArF5SAAtP9yBAAT1E3E3QAA_BrH3M9sBAA_F5SAA3KlkBAA1EtNAApB_DAAhC1EAApB1I_D5OAA3ErPAApFtTAAtN_wBAA1GtVAA5U3lCAA_DhOAA3KliBAAtXjvCAArDtLAA1EhQAA1CrJAA_BrFAAvbl9CAAhIvZ_FtTrDtLAAV1I1CtNAA1E3QAArLnoB1G5YAAhGhSpBrFAAhC1GAA1FxT
            spans:
            - offset: 0
              names:
              - value: Invalidenstraße
                language: de
              length: 787
            - offset: 49
              names:
              - value: Invalidenstraße
                language: de
              - value: Sandkrugbrücke
                language: de
              length: 51
            - offset: 57
              names:
              - value: Invalidenstraße
                language: de
              length: 362
            transport:
              mode: car
    routeResponseManeuverSignpostInfoExample:
      value:
        labels:
        - name:
            value: San Jose
            language: en
          routeNumber:
            value: US-101
            language: en
            direction: south
        - name:
            value: San Francisco
            language: en
          routeNumber:
            value: US-101
            language: en
            direction: north
        - routeNumber:
            value: I-280
            language: en
    routeResponseNoticeExample:
      value:
        title: "Route calculation failed: Couldn't match origin."
        code: couldNotMatchOrigin
        severity: critical
  headers:
    X-Correlation-Id:
      description: Auto-generated id that univocally identifies the request.
      style: simple
      explode: false
      schema:
        type: string
      example: 4199533b-6290-41db-8d79-edf4f4019a74
    X-Request-Id:
      description: User-provided token that can be used to trace a request or a group
        of requests sent to the service.
      style: simple
      explode: false
      schema:
        type: string
      example: 8230d7ad-3f1c-4191-a8dd-f3c42026da89
  securitySchemes:
    ApiKey:
      type: apiKey
      description: |
        A key generated specifically to authenticate API requests. For more information
        on how to get an API key, see [Identity and Access Management Developer Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide).
      name: apiKey
      in: query
    Bearer:
      type: http
      description: |
        A token obtained from a separate endpoint using client credentials and an OAuth 1.0a HMAC-SHA256 signed request.
        For more information on how to get a bearer token, see the [Identity and Access Management Developer Guide](https://www.here.com/docs/bundle/identity-and-access-management-developer-guide).
      scheme: bearer
      bearerFormat: JWT
